Sauerworld Forum

Tesseract from a sauerbraten perspective

arCABAL

  • *
  • 11
  • +4/-0
Tesseract from a sauerbraten perspective
« on: September 18, 2018, 08:40:34 PM »
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.

Installation
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.

Code: [Select]
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:

Code: [Select]
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.

Code: [Select]
./tesseract_unix

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

/usr/share/applications/tesseract.desktop
Code: [Select]
[Desktop Entry]                                                                 
Name=Tesseract                                                                 
Exec=~/tesseract-nightly/tesseract_unix                     
Icon=~/tesseract-nightly/media/interface/cube.png                       
Type=Application

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.

Maps
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.php?repname=tesseract%2Fmain&path=%2Fbin_unix%2F&#a2375b276c8a6147a9a98ff49835f7c78
 
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:

Code: [Select]
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:
Code: [Select]
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.
Code: [Select]

// 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 ]]
bind 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 Edit: September 26, 2018, 06:11:45 PM by arCABAL »

Zoocata

  • **
  • 75
  • +5/-0
Re: Tesseract from a sauerbraten perspective
« Reply #1 on: September 24, 2018, 11:57:36 PM »
Nice guide, could maybe up the player-base a little bit. Unfortuntaely, Tesseract is an amazing concept ruined by boring mechanics, shitty execution, and horrible optimization.

If you thought Sauerbraten's mechanics and movement was lacking, just wait until you're twice as big, twice as slow, and only have 2 weapons.

Unless you're interested in map-making, don't bother downloading it. If you are interested in map-making, stick to editing in Sauerbraten where the maps you make could actually be useful.