#1 2018-09-18 19:29:31


Tesseract from a sauerbraten perspective

Gerwin asked me to come and play tesseract so I decided to dig into it a little deeper this time and do a little guide on how to set things up for others, especially those used to sauerbraten.


As I see it, there are two distinct versions of tesseract right now: The initial release version from 2014, and the latest SVN development version. If you simply press the big download button (windows, linux, or mac) on tesseract.gg, you will download the initial 2014 version. This version has the binary executable program included so you can run it right away. No need to compile or install anything, but it is an older version of the game which is incompatible with the SVN development version.

The last time I played tesseract, there were only two servers. These used the newer protocol from the latest version (last update is from somewhere in 2018)
These servers only showed up if you used the lastest version of the game client, or maybe they showed greyed out as "newer protocol" in the server list. Either way, I could not enter them because of the protocol mismatch.

To get this latest development version, the easiest way I found is to download the latest tesseract-nightly.zip from the nightly SVN Builds link http://tesseract.pupskuchen.net/
This zip does include the 32 and 64 bit .exe binaries for windows but for linux (and I think also mac?) these are missing and need to be compiled still. I don't know how compiling on mac and windows works, but here is how to do it on linux:

First you need to install the required dependencies. In bin_unix/readme.txt is a list of needed software libraries. For convenience, I made a list of the corresponding names for all the APT packages which you can use on debian/ubuntu based systems.

sudo apt install libgl1-mesa-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libpng-dev libjpeg-dev zlib1g-dev

On other distros that don't use apt, these packages might have different names. Try tab autocompletion or google to find the right packages for your distro.

When you have those installed, go into the main directory and run:

make -C src install

After it finished compiling, in the bin_unix folder will be the executable ELF files tess_server, and tess_client.

You can then run the tesseract_unix script in the main directory to start the game client.


you probably want to create a .desktop file for this launch script, so that tesseract shows up in your applications menu

assuming you extracted tesseract-nightly to your home directory, you can use this .desktop file


[Desktop Entry]                                                                 

On linux, tesseract creates a .tesseract folder in the home directory, similar to the .sauerbraten folder.
If it works the same as for sauerbraten, this folder on mac and windows will probably be at:

On Windows 7 and 10 this is C:\Users\%username%\Documents\My Games\Tesseract
On an Apple Mac it is most likely macHD/users/%username%/library/Application Support/tesseract/

I now have these two separate incompatible versions installed. The SVN version has more content and more maps so that one is the preferable one to play but I also keep the 2014 initial edition because a lot of newcomers are simply downloading that version from the website and don't yet understand how to get the SVN version.


As the game is still pretty barebones, it only has a few maps and textures.
There are a lot more maps on the forum, but for convenience, I created a zip will a bunch of custom maps I got from Daemes, Ard, and Doko.
extract and merge it with ~/.tesseract/media

SVN Download

Before I found the nightly builds link, I tried downloading from the SVN. I'll keep this here for reference, but you don't need to do this if you just want to download and play the game.
I did however use this way to download and then compile the game on my vps, which now also hosts a tesseract server.

To download the svn repository. You can either download a zip from the webSVN and extract that
https://websvn.tuxfamily.org/listing.ph … 49835f7c78

or use an SVN client to download the SVN respository. When I tried downloading the full zip from the webSVN page it timed out a few times so I used these bash commands to download it instead:

sudo apt install subversion
mkdir tesseractsvn
cd tesseractsvn
svn checkout svn://svn.tuxfamily.org/svnroot/tesseract/main

The downloaded directory will not include any binary executables

Scripts and Binds

You have to create your autoexec.cfg in the config folder. I also put my other scripts in there. If you do it like that, you have to specify that folder in the exec lines in the autoexec like this:

exec config/binds.cfg

Everything in tesseract is just a little different than in sauerbraten. You can press F10 ingame to see the default binds. I couldn't get used to those so instead I made custom binds so that editing feels familiar like in sauerbraten.

The universaldelta function has a different name but works the same, /coop became /edit, and some bindable keys and the mouse buttons have different names that you have to use in bind commands.

Here are my binds, I included the script to hold tilde and scroll the mouse to change the floatspeed.

// binds.cfg by arCABAL
// tesseract binds to mimic sauerbraten behavior

/// change floatspeed by holding tilde key and scrolling mosue
floatspeedlist = [1 5 10 20 50 100 250 500 1000 2500 5000 10000]  //variable list length. values to scroll through can be added or removed
editbind "backquote" [ums_setmodifier chfloatspeed] // backquote is tilde key under escape.
bind "backquote" [ums_setmodifier chfloatspeed]
floatspeedlist_i = 6  // default floatspeed = 250
ums_delta_edit_chfloatspeed = [ 
    floatspeedlist_i = (min (max (+ $arg1 $floatspeedlist_i) 0) (- (listlen $floatspeedlist) 1))
    floatspeed (at $floatspeedlist $floatspeedlist_i)
    echo (concatword "floatspeed = " $floatspeed)
ums_delta_game_chfloatspeed = $ums_delta_edit_chfloatspeed       // makes it also work in spectatormode

editbind 0 [allfaces (= $allfaces 0); if (= $allfaces 0) [echo allfaces OFF] [echo allfaces ON]]
editbind lshift [toggleeditmovecut]

bind L [fullscreen (- 1 $fullscreen) ]
editbind J [gotosel]
editbind Z [undo]
bind O [if (= $spec 1)[spectator 0 ; spec = 0][spectator 1 ; spec = 1]]

editbind 5 [entediting (= $entediting 0); if (= $entediting 0) [echo entediting OFF] [echo entediting ON] ]     // enable/disable entity editing 
editbind 6 [entselsnap (= $entselsnap 0); if (= $entselsnap 0) [echo entselsnap OFF] [echo entselsnap ON] ]
editbind 7 [outline (= $outline 0); if (= $outline 0) [echo outline OFF] [echo outline ON]]
editbind 8 [wireframe (= $wireframe 0); if (= $wireframe 0) [echo wireframe OFF] [echo wireframe ON]]           // default bind: entity editing
bind 9 [ thirdperson (? (> $thirdperson 1) 0 (+ $thirdperson 1) ); thirdpersonside 0]

editbind period [selentedit]

bind "KP_PLUS" [conskip -5]
bind "KP_MINUS" [conskip 5]
bind "KP_ENTER" [conskip -1000]

// tap and hold to show scoreboard, double tap to keep open, tap again to hide.
bind tab [
    sleep 300 [
        showscoresdoubleclick = 0
    if $showscoresdoubleclick [
        toggleui scoreboard
    ]   [ 
        holdui scoreboard
        showscoresdoubleclick = 1


// make left shift to move stuff inside a selection behave the same as in sauerbraten
movecopy = 1  // initialise control variable 
shiftmove = [moving 1; if (= $movecopy 1) [copy; entcopy; delcube; delent] []; movecopy = 0; onrelease [movecopy = 1; moving 0; paste; entpaste ]]
editbind lshift [shiftmove]

I also tried some of my old sauerbraten scripts in tesseract.
My vcolor gradient script worked without any modification. The text generation script uses the pastebrush function which is called pasteprefab in tesseract. That was all that had to be changed for it to work.

Last edited by arCABAL (2018-09-26 17:14:55)


Board footer