nils-ost / TMNF-TimeAttackServer

A LAN-Party Challengeserver for Trackmania Nations Forever
GNU General Public License v3.0
4 stars 1 forks source link
challenge lan-party timeattack trackmania trackmania-nations trackmania-server

TMNF-TimeAttackServer

A LAN-Party time-challenge server for Trackmania Nations Forever

What TMNF-TAS is and how the idea was born

As I am loving Trackmania Nations Forever and got involved in LAN-Partys again, in the recent years, I decided to create this nice little project.

On the NLPT 2021 event I discovered it's not just me loving TMNF but a lot more people. At the same time it is hard to have all players racing agains eachother at the same time, as there is not just Trackmania been played on a LAN-Party.

But due to Trackmanias nature it is not really neccessary to have all players on one serer at the same time. It came to my mind the easiest solution would be to let everyone hunt for the best laptime whenever they like. A server running the whole time with a given challenge pool, recording every laptime and calculating global points for all players would be nice.

-- and thats exactly what TMNF-TAS is.

After I figured out how to talk to the Dedicated-Server via RPC it was just a matter of a few hours till I had a Python-Daemon that stored all laptimes inside a MongoDB. This technically allready covered all my goals. But then I thougt; a nice little wallboard would be good to have, where the players could see their results via a projector. And after that was done I fell down the rabbithole...
I added a Challenge-Ticker, a Challenge- and Players-List (both with all recorded data browsable), thumbnail generation, optional dowloadlinks for Challenges and Replays, selectable translation and even a Player-HUD that is capable of letting individual Players follow their live-progress whilst racing... and I guess more, that I just forgot :D

The technical perspective

Now you know what TMNF-TAS is capable of doing for the users (Players) but you might also be interested in how it's done under the hood.

And now, because a picture says more than 1000 words, here you have a drawing of TAS-Stack's architecture:

TMNF-TAS Architecture

Getting started

At this point I like to hightlight, that TMNF-TAS is not designed to be used on the internet, it's specific target is LAN-Partys and so for local networks.

On my website I prepared a page with some impressions of TMNF-TAS, just follow this link https://nijos.de/tmnf-timeattackserver/tmnf-tas-impressions/ to reach them.

If you now just like to try out TMNF-TAS, you need to do the following:

After your done you might type tas -s to check if all services of TAS-Stack are running. The frontend should now be available on port 80 (with HAproxy) or port 8000 (without HAproxy).
And thats just it, your TMNF-TAS instance is ready to be explored.

A lot more detailed installation instructions can be found here: docs/install.md and if you are interested in a configuration guide visit docs/configuration.md

At this point I like to highlight the new HotSeat-Mode that came with version 1.2.0. If you like to read more about it go to: docs/hotseatmode.md

And now have fun playing Trackmania Nations Forever ;)

Besides GitHub I'm also reachable on twitter @nils_ost if you have questions or like to get in touch with me.