14 ms·
The TRIBES Engine Networking Model (2009) [pdf]
- stronglikedan 10y agoWhile the details of this paper are above my head, I can say that, having spent years playing Tribes II, it was one of the smoothest online multiplayer experiences I've ever witnessed. At the time, it seemed very ahead of its time, compared to other online multiplayer games of the era.
- caconym_ 10y agoI've actually thought about Tribes a lot recently, what with the kerfuffle over hitboxes/tickrate in Overwatch, the architectural issues with The Division (bad game), and general netcode angst these days. I remember the Tribes experience being buttery smooth and precise, even with the high speeds, long distances, and general reliance on physical projectiles rather than hitscan weapons.
- stronglikedan 10y agoAnd even on relatively slow internet connections, like four players in one room on a 1.5Mbps DSL connection!
- gherkin0 10y agoThat may be part of the reason why it was so good. In 1998, they had to make it playable on 56k modems, and a lot of those optimizations probably transferred over to smooth play over better connections. Now there are fewer incentives to optimize to that degree...
- justin66 10y ago> I remember the Tribes experience being buttery smooth and precise, even with the high speeds, long distances, and general reliance on physical projectiles rather than hitscan weapons. I would think hitscan weapons would make keeping things visibly smooth and in sync harder rather than easier.
- kreeves 10y agoObligatory "Shazbot!" So was the Ghost Stream Manager meant to also help combat packet loss? Or is it more simply a form of "Game state redundancy"? I'm speaking out of wheelhouse here. I'm always a bit fascinated by these write-ups because so much has to happen in such a small window.
- BFatts 10y agoThe ghost stream manager was responsible for sending ghost representations of objects. They weren't full objects, but contained the properties or a subset of properties. All of the code was accessible as the Garage Games Torque engine.
- xenihn 10y agoTribes 1 remains my favorite FPS experience to this day.
- aaron-lebo 10y agoIt still blows my mind that Tribes came out in 1998. That was a game with vehicles, easy modding (Tribes Football, RPG, Shifter, Renegades, anyone?), incredible mechanics (skiing), massive maps, recordable gameplay, a very active competitive community (OGL, 5150, players like Natural), And it was very playable on a 56k with some servers supporting 64+ players. Frankly, it puts a lot of titles with massive budgets, dev teams, and 18 years of learning to shame. Thank you Dynamix.
- digi_owl 10y agoBest i can tell, most of the dev team and budget is dedicated to the art side of the game. Meaning maps, models, sound etc. And 18 years of learning? Sorry but most of the people and companies from back then are long gone. Best i can tell there are very few game development courses out there, and fewer still focus on the network plumbing.
- buzzybee 10y agoThe difference is substantial: There are books describing some standard practices now, third-party engines will at least include some basic networking functionality, and every worthwhile book on engines will at least mention what you need to do to reasonably support multiplayer. At the time that Tribes was developed, none of that reference material existed yet - you had to do your engineering from scratch, and there were plenty of major releases that shipped a multiplayer that was essentially broken or only viable on LAN - no Internet play, server browsers, or matchmaking. Today it's more common for multiplayer to only be broken in a limited set of ways, instead of "we are hacking away at a fundamentally wrong architecture for this problem".
- ShroudedNight 10y ago>Today it's more common for multiplayer to only be broken in a limited set of ways, instead of "we are hacking away at a fundamentally wrong architecture for this problem". While true generally, that doesn't preclude us from some epic failures. My understanding is that The Division implemented client-authoritative simulation and is now in a hopeless battle against those that would modify their client for an advantage...
- deleted 10y ago[deleted]
- stevehawk 10y agohmm.. a Ben Garney post and a TRIBES engine post.. is there a Dynamic/GarageGames data dump going on ? :-)
- deleted 10y ago[deleted]
- sosuke 10y agoI saw it in one of the video conferencing posts he had. It was too good not to highlight!
- deleted 10y ago[deleted]
- stevebmark 10y agoPart of why Tribes was such an incredible experience was it had 64 player servers. The maps were constant chaos. Haven't quite experienced anything like that since.
- mey 10y agoPlanetSide and PlanetSide 2. While hard to get into, when platoon level operations are at their best it's something I've yet to experience in another game. I expect Eve would be the other example, but with time dilation and combat mechanics, the game is more strategic than tactical in my understanding.
- stincity 10y agoPS2 still going strong? I thought they were combining server populations to help increase the size of each remaining server.
- ECrownofFire 10y agoIt just recently had a major update so people can build their own bases and stuff now.
- stincity 10y agoInteresting, maybe I should get back into it.
- musha68k 10y agoPlanetside 2 IMHO is the best Starsiege Tribes yet.
- 15155 10y agoPlanetSide was by far the most unique shooter I've played. Easily my favorite game, to date. The level of camaraderie, intensity, found in large outfit/platoon fights was unparalleled. PlanetSide 2 can't compare. It's really a shame that the game had to go downhill like it did. SOE has a habit of killing incredible games.
- silverlight 10y agoRandom but related: does anyone know of a good library (in C#, Javascript, or really anything higher-level than C preferably) that implements this? By "this" I mean a UDP-based system capable of sending both "it's stale when it's sent" data that can be dropped if it's lost and "this must be delivered" messages that will be re-sent if not delivered? I would need it for a Unity project, so if it's Unity-ready already that would be great, but honestly at this point I'm willing to just take what's out there as a starting point and work with it. I did find this: https://community.unity.com/t5/Asset-Store/Open-Source-UdpKit-a-networking-library-for-NET-Mono-Unity/td-p/1553191 https://community.unity.com/t5/Asset-Store/Open-Source-UdpKi... but it's apparently unsupported now and the author has moved on to other things. There are some other packages on the Unity Asset Store but most of them are focused around Unity-to-Unity communication, and I'm looking for something more generic (since my architecture is actually Unity-to-NodeJS currently).
- doctorpangloss 10y agoThe Unity team plans to release a C# package for UNET low level API after the release of 5.4.0. I would caution that while it's extremely straightforward to implement those two QoS channels, you would be essentially reimplementing LLAPI and all its quirks, including queue management for a single threaded architecture. If you are building something for mobile, consider the state of UDP support over AT&T, Verizon, T-Mobile and Sprint. It's poor. You will be reimplementing so much of LLAPI and Unity's relay servers that it may be more effective to port from NodeJS to Unity and run headless.
- corysama 10y agohttp://enet.bespin.org/ http://enet.bespin.org/ is C. But, it implements reliable|unreliable packet-based messages over UDP. You can have multiple "channels" active in a single connection. Each channel can independently pick a mode. Packet retries in a reliable channel do not delay packets in another channel.
- silverlight 10y agoCool, that looks perfect. Thanks!
- ook 10y agoFor anyone interested in game networking the Quake 3 Network model was covered by Fabien Sanglard in this great blog post: http://fabiensanglard.net/quake3/network.php http://fabiensanglard.net/quake3/network.php
- ook 10y agoAnd Glenn Fieldler has an excellent series of articles on his blog: http://gafferongames.com/networking-for-game-programmers/ http://gafferongames.com/networking-for-game-programmers/ http://gafferongames.com/building-a-game-network-protocol/ http://gafferongames.com/building-a-game-network-protocol/ http://gafferongames.com/networked-physics/introduction-to-networked-physics/ http://gafferongames.com/networked-physics/introduction-to-n...
- Terr_ 10y agoAdding on to the emerging link-dump, here's some interesting stuff for the Source engine (TF2, CS:GO, etc.) which goes into their latency-compensation mechanics: https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking https://developer.valvesoftware.com/wiki/Source_Multiplayer_... https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization https://developer.valvesoftware.com/wiki/Latency_Compensatin...
- newobj 10y agoThis paper come out in some form MUCH earlier than 2009. I was implementing its idea in my own engine in ... I dunno, 2003? Or earlier?
- superkuh 10y agoWell, Tribes was released in 1998.
- wangchow 10y agoIf interested in their networking model, check out the derivative Torque Game engines on github: https://github.com/garagegames https://github.com/garagegames
- squeaky-clean 10y agoOh man this brings me back (and I'm probably not old enough to be allowed to say that)! My first real start with game development, and well serious coding, was using the Torque Game Engine, which is the Tribes II engine. I saved up my money to buy a license for Torque 1.5 (it was $150 I believe and I was in high school), because at the time it was the only game engine which 1) Had source code access, 2) Wasn't insanely expensive for a hobbyist, 3) Was fully functional by itself. The engine overall was pretty amazing, of course it had it's warts. I still remember the networking code pretty well. I played with the physics part of the engine quite a lot and rewrote and modded it a few times. I usually wanted networking in my experiments, so I learned a lot about that part of the engine as well. I don't play with gamedev anymore, and probably wouldn't use Torque if I did, but I really miss it and the community it had. I still check in on it once a year or so, and there was a blog post recently thanking many community members from the past, and my old username was on the list :') I'm looking through my old forum posts now, wow was I annoying for a few years! For anyone who wants to look, the latest version of the engine is now MIT licensed [0]. It's been through 2 major versions, and seems like they've simplified the inheritance, so I'm not sure how much is still intact, but netObject looks a lot like I remember. I would recommend redding the comments in the header file for a good overview of how it works. [1] [0] https://github.com/GarageGames/Torque3D https://github.com/GarageGames/Torque3D [1] https://github.com/GarageGames/Torque3D/blob/bacf0cde2af17ab6f25c7effe0308035f164d54e/Engine/source/sim/netObject.h#L57 https://github.com/GarageGames/Torque3D/blob/bacf0cde2af17ab...
- ramses0 10y agoLook for TNL (Torque Networking Library) and "Zap!", a demo game which served as an example usage of this libary. http://opentnl.sourceforge.net/doxydocs/ http://opentnl.sourceforge.net/doxydocs/ https://sourceforge.net/projects/opentnl/files/Zap/ https://sourceforge.net/projects/opentnl/files/Zap/
- davesque 10y agoDefinitely played the crap out of Tribes 2. I remember at the time it came out, I was so astounded by the smoothness of the gameplay and the sheer variety of tactics and options that I almost didn't believe it was possible. To support as many players as it did and deliver that level of experience over the internet technologies of the day was incredible. Also, for me, the game basically came out of nowhere. I missed out on Starsiege: Tribes and had never heard of the developer before Tribes 2. "Get the enemy--shazbot."
- orware 10y agoSlightly off topic, but still related to Tribes...I remember purchasing Starsiege back during this time (if I remember correctly it and the original Tribes were released around the same time, along with Half-Life). I never played the original Earthsiege I and II titles, but Starsiege was super cool for me as a kid, and it wasn't even really because I got to pass the game (it was kind of difficult for me at that age so it probably wasn't until ten years later that I actually played it again from the beginning and passed it). The main thing I loved about the game was the big backstory book that was included with the game that really outlined the whole thing for you and gave you a pretty cool connection with the characters (looking back it was like a mix between The Matrix and the Terminator franchises in terms of story). I'm not a movie director but occasionally I still find myself thinking about what a cool movie it would make and wish a new game for it would be released (since the last attempt got *nixed). Tribes was cool too, don't get me wrong, and I played a fair amount of it too (though by 26.4 kbps connection kind of hurt my online play, lol), but compared to the more story driven Starsiege, I never got into it nearly as much.
- orware 10y agoI thought the last section was pretty funny: "Acknowledgments Though several of the ideas presented here are unique to TRIBES, others have been assimilated from other sources over countless years of reading and the authors, being too lazy to research their sources, would like to thank everyone in one sentence."
- impostervt 10y agoThis game ate my life in college. My friends and I founded tribalwar.com in late 1999, and I spent the next 3 years learning how to code websites. I was never that great at the game, but the skills I learned coding websites led to my first professional job.
- atonse 10y agoThis whole thread was a walk down memory lane. It also consumed my life in late high school and college. Thanks for tribalwar. It was my HN before HN, and my slashdot before slashdot. Lots of hours spent on that site. I was Zoidberg in the community.
- Duhck 10y agoAs a devoted member of TribalWar (thanks so much!) / avid T1 player, its awesome to see you on HN! My handle was Duhck :) Tribes was... magical. Tight knit player community, active modding community, amazing map design and tournament play. Team Rabbit, Arena, and 10v10 CTF consumed the majority of my time from '98-'06