Hacker News new | past | comments | ask | show | jobs | submit login

Do I get it wright - the reason to implement a custom protocol above udp instead of using tcp was the benefit to have a certain amount of packets that didn’t need to be acknowledged?



Packetloss with TCP creates unnecessary latency for games.

The OS TCP stack basically will show data in a sequential fashion to the userspace code, this greatly simplifies things like a HTTP stream but in a game it also means that even if 9 out of 10 packets have arrived, if the lost one is the first packet then we need to wait for another roundtrip or more before seeing all the packets because the first one still needs to be re-sent before anything is seen.

With UDP and custom handling you can just proceed to render and show everything as it shows up, asking for a re-send will at worst cause re-simulation in an engine like SS's but for most parts the player won't notice unless something significant was lost.

For those that played Quake 1 before Quake World the difference was staggering, a Q1 session would freeze on packet-losses when the client tried to catch up(hard when a significant portion of the bandwidth was already used on the modem) whilst QW mostly kept on trucking with some jerks (they probably made other improvements also).


re: other improvements, it was also common for mods to change behavior between netquake and quake world.

Specifically I remember team fortress's pyro secondary grenade in QW being just pulses of AOE damage instead of shooting more fire particles that needed tracked, and the soldier nail grenade .. doing something different to not have as many flying objects.


That makes a lot of sense. Thank you very much for your profound answer which helped me a lot expanding my knowledge.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: