17 ms·
Serious Sam handled massive amounts of enemies on 56k modem connections
- docandrew 2y agoSerious Sam was such a fun game - this was a really interesting write up too. I wish this kind of dedication to low latency and efficiency was more widespread.
- notnmeyer 2y agototally agree. it was revolutionary at the time for the number of enemies on the screen. even at the time the vibe was very much, “croteam knows what they’re doing”. really neat to be reading about this so many years later.
- nottorp 2y agoIt still is revolutionary. Serious Sam 4 still doesn't take itself seriously. Best money i've spent on a shooter since ... Serious Sam 3. I do miss the sledgehammer.
- corytheboyd 2y agoAgreed, have fond memories of the game! Just pure FUN for the sake of it! Really cool to read about the tech behind it so many years later, this is very well presented
- deleted 2y ago[deleted]
- kentonv 2y agoIsn't this exactly how Doom worked, long before Serious Sam? But Quake went a different direction, sending the client updates about every entity they could see. Which had some benefits (players don't have to be perfectly synchronized) but also drawbacks (bandwidth proportional to scene complexity).
- Renevith 2y agoThis is covered at the very end of the article, in the "Comparison with Doom and Quake" section. And yes, that's exactly the comparison and distinction the author draws, and they explain why Serious Sam would have opted for Doom-style networking (the notoriously high scene complexity).
- Thaxll 2y agoQuake is vastly superior because the server actually run the simulation, for Serious Sam the server is basically a dumb relay.
- Jare 2y agoIt's not so much "vastly superior", it is more fit for its intended design and context. And certainly more sophisticated.
- iforgotpassword 2y agoThe server still runs the simulation for serious Sam and would kick any client getting out of sync (e.g. because they're cheating).
- luag 2y agoThe kind of game where I believe I moved backwards more often than moving forward.
- danra 2y ago...and, IIRC, desparately grasping for generated ammo to pick up while making said retreat.
- tiku 2y agoHaha they even made a game about it, and its called "I hate running backwards". It's on Steam. I don't know if its from the same makers but it is in the Serious Sam universe.
- mablopoule 2y agoWell, you and Netrisca were together, while those thousands of enemies, they were alone.
- eps 2y agoAnd the gun that seemed to shoot a fraction of a second before you clicked the mouse button.
- mizzao 2y agoIs this the same idea as "1500 archers on a 28.8" for Age of Empires? https://www.gamedeveloper.com/programming/1500-archers-on-a-28-8-network-programming-in-age-of-empires-and-beyond https://www.gamedeveloper.com/programming/1500-archers-on-a-...
- forrestthewoods 2y agoYes. Both are “deterministic lockstep” systems. Many many games have used such a system over the years. Although it’s probably less common these days for a variety of reasons.
- LarsDu88 2y agoIs this due to the heterogeneity of client hardware?
- Thaxll 2y agoIndeed, imagine all the cpu / compiler / different platform, all must behave the same.
- nightowl_games 2y agoNot primarily. There were weirder CPUs in the past. Today's CPUs have largely converged on floating point operations. Basically just sin/cos/tan differ now. It's possible to write fully cross platform deterministic code today, but it's harder to do and uncommon in libraries. Writing state synchronization and using client side prediction is generally easier. Determinism is only necessary if there are bandwidth constraints.
- eru 2y agoAlso it's easier to cheat when your local client has all the data.
- meheleventyone 2y ago
- porphyra 2y agoCroteam is such a talented team of game developers. I really enjoyed the Talos Principle (1 and 2) and they were some of the early pioneers of a completely custom Vulkan game engine for the first game.
- itsboring 2y agoI just found out the Talos 2 DLC is out on Steam this Friday!
- siberianbot 2y agoI found devastating that in The Talos Principle 2 they had dropped their own engine and used Unreal Engine instead.
- itsboring 2y agoI found this disappointing too. I know they don’t have the resources to build their own equivalent of Nanite and such, but… On top of the performance issues, there were a number of things that actually looked so much better in the 2014 game. For example, the forcefields and water ripples.
- zbendefy 2y agoMe too. I think the main reason is that the lead render developer left, and switched to google to work on Stadia.
- HeadlessChild 2y agoOuch.
- nottorp 2y agoSo now that lead is looking for a job? :)
- robertlagrant 2y ago
- LarsDu88 2y agoAhh, I remember playing a PC Gamer demo of Serious Sam as a kid. Even back then it was considered a "throwback" game to the days of old-school DOOM and Quake. And now literally two decades have passed and its considered a classic in its own right.
- raggi 2y agoSerious Sam was always a killer LAN party game. Not necessarily because it was the sexiest title of the day, or what anyone had planned. Serious Sam won the LAN party because even when every other game died under some driver issue, thermal issue, update problem, whatever, you’d load Serious Sam and it would just work. This continued through the later series too, hell of someone’s machine was completely dead in the water it would also reliably split screen and handled input well enough for split peripherals. The systemic parts of the game were truly exceptional on the reliability axis.
- raggi 2y agoAlso, the many speaker sound of “aaaaaaaaaaaaah” was delightful
- m463 2y agoI remember getting through some battle and coming on a room FULL of ammo of every kind. First time, it was awesome. But gradually ammo caches started making me say "Yikes!"
- test1235 2y agonoone's mentioned the gargantuan size of the bosses! playing co-op, running with your mates across the plains, blasting rocket trails into the distant horizon across the gorgeous clear blue skies at the biggest boss you've ever seen, with the pumping music thumping the whole way through, while you're trying to fend off what feels like hundreds of mobs ... I don't think I've experienced anything of that scale and intensity since ... one of my greatest of all time
- m463 2y agolol, that's right! "Wait, that guys is taller than BUILDINGS!"
- account42 2y agoAlso every time you find a secret with some nice loot you just know that once you turn around it's going to spawn some more "presents" on you.
- givemeethekeys 2y agoStarseige Tribes was massive and ridiculously fun on a 56k connection.
- robertlagrant 2y agoTribes was brilliant. Skiing down procedural terrain (and watching other people ski up it), big maps, lots of players, in 1999.
- nickpeterson 2y agoTribes was an absolute riot. Teams keep trying to make new versions but none feel like they capture the pure magic of the original.
- hdjrldbrhrh 2y agoThe original is out there and free now. Though the community is gone :(
- ItsBob 2y agoQuite possibly my favourite game growing up (especially Tribes 2!) In fact, I downloaded Tribes 2 a while back and was playing against bots just a few months ago. The game is dated but it was still fun... in fact, I've often thought of trying to remake it in Unity or something! Maybe one day.
- cannonpr 2y agoI never liked tribes 2 being a tribes 1 addict. The jet sliding in 1 was a happy accident and the developers lost the original physics code that resulted in the sliding being a controllable skill. Tribes 2 had an utterly different movement sensation and a “press button to glide” mechanic that just killed the game for me.
- hammycheesy 2y agoThere is a whitepaper exploring similar netcode concepts that was written by the Tribes developers: https://www.gamedevs.org/uploads/tribes-networking-model.pdf https://www.gamedevs.org/uploads/tribes-networking-model.pdf
- michelledepeil 2y agoImpressive writeup. The deterministic aspect is not super popular anymore, I guess, but this entire post does make me wonder how the networking layer compares to a slightly more modern multiplayer game.
- jtolmar 2y agoIt's very common in RTS. StarCraft 1 and 2 also use rolling lockstep.
- meheleventyone 2y agoBoth those games are contemporaries of the Serious Sam series though. StarCraft came out three years before the first Serious Sam! But yeah fighting games and RTS games both commonly use deterministic sims.
- immortan 2y agoI was one the developers responsible for implementing the netcode on Serious Sam. We often slept under the desks in the offices at croteam after lurking usenet. One post in particular described the QuakeWorld prediction system which inspired us. That night we coded a simplistic mvp as a colleague (hi dan) tested it over an old 486 nix machine acting as a router that we could simulate lag with. This was well before the actual game was built around it
- k__ 2y agoAwesome. I loved that game. I was a huge fan of co-op games and shooters, but all my friends wanted to play Counter Strike all the time. With Serious Sam I could at least sometimes motivate them to play something I liked. Thanks for your service! :D
- robertlagrant 2y agoWhy did you make the guys with exploding heads who run at you and their scream gets louder as they approach? I can still hear them.
- Rinzler89 2y agoWhy wouldn't they? It's called great sound design. Games of the 90s and early 2000s put a lot of effort in that. See Thief the dark project. Sound design can bring more immersiveness than graphics alone. It's something forgotten in many games of today that keep beating the ray traced graphics horse
- namibj 2y agoSimilarly, Factorio's architecture transmits (almost; notable experience is rail planner) just input events, relying on a lock-step simulation core.
- robertlagrant 2y agoI would love to work on a lock-step thing like that one day. Seems such a satisfying (and testable) design constraint to work with.
- raxxorraxor 2y agoTheir friday facts are very worth reading, not just for people that play computer games, it is interesting for any developer. If I remember correctly they had issues with parts behaving slightly differently on different platforms, which then lead to sync issues in multiplayer. I have no experience here, but I guess the difficulty of such a strategy comes from ordering "events" in a game loop.
- chainingsolid 2y agoMore than just ordering! Most floating point logic in compilers cares about speed, precision, then reproducibility (optimization can/will cause debug vs release builds to give different results)... Then you have to control inputs to the sim, you didn't think of (memory allocator, network timing behavior, random number gen)
- Woshiwuja 2y agoEvery italian knows the game thanks to Zeb.
- deleted 2y ago[deleted]
- ipeev 2y agoTo be or not to be, this is a serious question.
- javaunsafe2019 2y agoDo 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?
- whizzter 2y agoPacketloss 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).
- javaunsafe2019 2y agoThat makes a lot of sense. Thank you very much for your profound answer which helped me a lot expanding my knowledge.
- semi 2y agore: 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.
- Demiurge 2y agoThat was a fun game, I loved the demo. I think some of the extrapolation might have also inspired optimizations made in CPMA mod for Quake3, which to this day, I think, has the best netcode of all games. You can actually compete with 100 ping, in it, which is completely unplayable in OSP or vanilla Q3. I don’t think any other game even attempts to be so optimized for competitive online FPS.
- tombert 2y agoI loaded up the original Serious Sam The First Encounter about a year ago, and that game never ceases to amaze me with how much they were able to squeeze out of relatively low-powered 2002 computers. I had it as a kid, and I had never seen so many enemies on the screen at once. Even now, the game mostly holds up pretty well and it still kind of impresses me.
- jasonvorhe 2y agoYeah, Doom Eternal struggles with like a dozen demons in one room and fps are immediately halved. It's such a pity. It's actually a decent game but if you can't keep somewhat consistent fps in a shooter game where every second counts, you'll just grind down the nerves and patience of your user base. I know many people love Doom Eternal and other shooters with similar issues. Maybe I'm just sensitive to these kinds of frustrations.
- tombert 2y agoGrand Theft Auto IV for the PC, in its initial release, would slow down pretty horribly if there was more than like four cars on the road. Even with a reasonably powerful computer, it was pretty bad to play (though updates did increase performance considerably). I remember when I first played it thinking "you know, Serious Sam came out like seven years ago on crappier hardware and it could handle way more stuff while maintaining a fast frame rate" It's obviously not apples to apples, the models in GTA IV are much more detailed, but it was still pretty disappointing to play initially. It's still my favorite GTA game, but I ended up playing through the 360 version my first time around.
- 0xbadcafebee 2y agoYet games with 10x the bandwidth struggle to support that many enemies. It only just occurred to me: an increase of technological resources actually has a reversing effect on the efficiency and creativity of computer science. As bandwidth, storage, memory and compute has gotten bigger, there is an inverse response in the software that makes it slower, more bloated, and less capable, per discrete unit of resource. Call it the Benjamin Button software design effect
- account42 2y agoYes, this is known as Wirth's law.
- MoOmer 2y agoBetter known colloquially as software bloat!
- shultays 2y agoDo you have a number for "that many enemies"? If article is giving one, I couldn't find it. There are plenty of modern games that is multiplayer and supports enemy numbers that I would consider "massive". Or massive number of players if that is that matters.
- albrewer 2y agoI played it last night. There would be maybe a couple dozen enemies on screen. Which, for a dial-up connection, is a massive amount to communicate about in real time. The fights are structured such that it feels like 5x that amount, though.
- debo_ 2y agoI only played Serious Sam for about 10 hours sometime around release, but to this day the long scream of the beheaded kamikaze will cause me immense physiological distress. https://www.youtube.com/watch?v=AA1avIlelTU https://www.youtube.com/watch?v=AA1avIlelTU
- jebarker 2y ago> without interpolation … It's kind of like playing a modern console exclusive. Ouch. It’s sad to see console gaming no longer be the place to go for highly tuned software.
- localfirst 2y agoCroatia is one of those countries i can't point out on the map but routinely churns out amazing innovation.
- brnt 2y agoAnyone else miss seriouszone?
- Tarragon 2y agoWe used deterministic game play to implement multiplayer on the GB Color port of Vigilante 8. The GBC Link Cable would pass 1 byte in each direction at the same time. It's a pair of shift registers filling each other up across the cable. The game was locked to the GBC's frame rate. There was a lot work to update the screen that had to happen in each (effectively) V-Blank and if it was missed the smooth scrolling stuttered. At multiplayer startup we passed our seed. To run it looked like this: On frame A it reads the controls, and packs them into a byte and puts that in the transfer buffer. The transfer occurs while it renders frame B. At the start of frame C it has the local controls encoded in the byte sent on frame A and it has the other side's controls in the byte received in frame B. It applies the controls to the game state and renders frame C. Local and remote controls are applied with one frame delay. There was no frame delay of the controls for local play so if you ever lost in multi-player feel free to blame lag and me specifically if you need to.
- HanClinto 2y agoI just bought this cart a few weeks ago (love the old GBC rumble carts!) and I was impressed that it had link-cable multiplayer. It's a really good game! Thank you for the technical note on the multiplayer implementation -- that's really cool!
- Tarragon 2y agoCOOL! I'm really happy to hear that.
- opyate 2y ago> But why do we see smooth movement and animation? > > Interpolation. Serious Engine interpolates between the current and the previous game tick based on time passed between. Try opening the in-game console (~ key) and typing this to see how the game looks and feels without interpolation: > > /net_bLerping=0 > > It's kind of like playing a modern console exclusive. That list bit made me spit my tea out, I laughed so hard. Great game. A staple of our LAN parties, what, 25-ish years ago now?