You should watch me live: https://www.twitch.tv/Wirtual Main Channel: https://www.youtube.com/c/Wirtual Clips Channel: https://www.youtube.com/c/WirtualClips Twitter: https://www.twitter.com/Wirtual Edited by https://twitter.com/BassTTV_ Thumbnail by https://twitter.com/Danu_PNG #Wirtual #Trackmania #Bug
ADVERTISEMENT
"The server by default always trusts the client" Oh no...
Ah, as the old Developer joke goes: Bug: "Knock knock" Bug: "Race condition" Dev: "Who's there?"
I'd tell you a UDP joke but I'm not sure you'd get it.
I can't believe all Riolu had to do was set network to 1 instead of all that cheating.
"The server by default always trusts the client." With this intro to our tech exploits horror story, the only explanation to how Trackmania is not completely butchered by bots is that the community must be one of the most honest ones in the history of the world.
Main channel is long forgotten
To those asking "why does the server trust the client at all", here's me waffling about it: In normal game modes where you can just drive around the arena "alone" just as in singleplayer (time attack, rounds) it kinda makes sense to just trust the client, both for server performance reasons and to keep the run simulation as smooth for the player as possible. If I had to send my inputs to the server which then validates it, any packet loss can instantly kill your entire run, in comparison to shooter games where you just get teleported back a small distance. For cheating, Trackmania can always use replay validation based on recordings, and the server trusting the client stops as soon as you have player-to-player interaction or player-to-entity interactions (like moving items based on server time). This is also why playing with collisions on gets laggy very fast with an increasing player count. This really only becomes an issue because the gamemode (or the underlying code assigning which player has which progress in their race etc.) is on the server, and the desync makes you able to have the server be in a different state to your client, while having the task to keep track of checkpoints and restarting your run (there are actually a lot of things happening to restarting a run, killing the car is one part of it for example). I couldn't look at anything low level in the network code (yet), what I said in the video and here is based on my experience coding custom trackmania game modes and interacting with the checkpoint and respawning logic there, looking how that info needs to come in from the client as there is no physics simulation done on-server by default. If you want EVEN MORE technical discussion about this, I can recommend reading the article explaining server network settings: /en/dedicated-server/Usage/DedicatedConfig#playertrustclientsimu-truefalse
No way the racing game had a race condition
there are 3 hard things in programming 1. naming things 3. race conditions 2. cache invalidation 4. off by one errors
As the person who made the “Collect the Colors” map and watched this whole process unfold as a result, it’s honestly quite remarkable that it took this long for someone to figure out.
News just came in, riolu just started playing polytrack
Massive probs to the 3 individuals for using their knowledge to do good!
funny how granady said that if he uploads a video on this topic withing 7 months it'll still be before wirtual, and here we are 😭
Well, there's one set of maps this bug can't break Deep Dip supremacy
Yo that's me in the thumbnail ty wirtual 🖖nvm bro changed the thumbnail 🥀
nsgr's reaction is too funny, just that overwhelming feeling of 'how the hell is it that simple'
" And then I had this run " havent heard this in a while
i loved nsgr little technical explanation, especially the dreaded "oh noooooooo" at the beginning
Redbull really gave Wirtuals upload schedule wings
this is a suspense movie. spent the whole video worrying, “surely nadeo fixed this before he published the video. surely. oh god please tell me you didn’t unleash this knowledge on the world before nadeo fixed this. oh god”