Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

128 ticks per second servers. (And lo, suddenly the article's thesis is inherently clear.)

A "tick", or an update, is a single step forward in the game's state. UPS (as I'll call it from here) or tick rate is the frequency of those. So, 128 ticks/s == 128 updates per sec.

That's a high number. For comparison, Factorio is 60 UPS, and Minecraft is 20 UPS.

At first I imagined an FPS's state would be considerably smaller, which should support a higher tick rate. But I also forgot about fog of war & visibility (Factorio for example just trusts the clients), and needing to animate for hitbox detection. (Though I was curious if they're always animating players? I assume there'd be a big single rectangular bounding box or sphere, and only once a projectile is in that range, then animations occur. I assume they've thought of this & it just isn't in there. But then there was the note about not animating the "buy" portion, too…)



When Battlefield 4 launched it had terrible network performance. Battlefield 3 wasn't great but somehow BF4 was way worse. Turned out while clients sent updates to the server at 30 Hz, the server sent updates back only at 10 Hz[1].

This was the same as BF3, but there were also some issues with server load making things worse and high-ping compensation not working great.

After much pushback from players, including some great analysis by Battle(non)sense[2] that really got traction, the devs got the green light on improving the network code and worked a long time on that. In the end they got high-tickrate servers[3][4], up to 144Hz though I mostly played on 120Hz servers, along with a lot of other improvements.

The difference between a 120Hz server and a 30Hz was night and day for anyone who could tell the difference between the mouse and the keyboard. Problem was that by then the game was half-dead... but it was great for the 15 of us or so still playing it at that time.

[1]: https://www.reddit.com/r/battlefield_4/comments/1xtq4a/battl...

[2]: https://www.youtube.com/@BattleNonSense

[3]: https://www.reddit.com/r/battlefield_4/comments/35ci2r/120hz...

[4]: https://www.reddit.com/r/battlefield_4/comments/3my0re/high_...


Also for comparison, the Runescapes (both RS3 and Oldschool Runescape) have a 0.6 tick/second system (100 ticks/minute). It works rather well for these games, which I guess highlights that some games either a) can get away with high latencies depending on their gameplay mechanics, or b) will evolve gameplay mechanics based on the inherent limitations of their engines/these latencies. RS3 initially leaned into the 0.6s tick system (which is a remnant of its transitions from DeviousMUD to Runescape Classic to RS2) and eventually developed an ability-based combat system on top of what was previously a purely point-and-click combat system, whereas OSRS has evolved new mechanics that play into this 0.6s tick system and integrate seamlessly into the point-and-click combat system.

Having played both of these games for years (literally, years of logged-in in-game time), most FPS games with faster tick systems generally feel pretty fluid to me, to the point where I don't think I've ever noticed the tick system acting strange in an FPS beyond extreme network issues. The technical challenges that go into making this so are incredible, as outlined in TFA.


OSRS exists in a pretty fascinating place, mechanically.

High level PVP play is basically a turn-based-tactics game, with some moves (attacks or spells) taking more "ticks" than others, meaning there's a lot of bluffing and mind games in anticipating what your opponent will do next.


If you're really fast, you can even equip tank gear for your opponent's attack, then swap back to mage gear for your own. Very strong if you can pull it off consistently due to how paper thin mage robes are. Not sure how many other games are that...slow?

And yeah, a lot of people are quite predictable and easy to read. In fairness there are only a handful of things you could possibly do in a fight :-)


100ticks/minute is 1.666... ticks per second, not 0.6.


They're right, when they said 0.6s tick they mean there's a tick every 0.6 seconds.

It's important to some players because you can get some odd behaviour out of the game by starting multiple actions on the same tick or on the tick after you started a different action. It's ridiculous click intensive but you can get weird benefits like cutting the time to take an action short or get xp in 2 skills at once.


For those unfamiliar, the act of absuing the tick system to "stack" actions like this is called "tick manipulation". It's a relatively common practice among high-efficiency players and PKers (player killers, players who engage in PvP). Many players eventually come to use this mechanic in PvE regarding "hard food", "soft food", and potions. Typically, your character is limited to one action per tick, but due to engine limitations and quirks, multiple actions can be performed in the same tick that would, out of "correct" order, take multiple ticks. A great example of this is eating a piece of hard food, eating a piece of soft food, and drinking a dose of a potion in the same tick. Out of order, this isn't possible and your character is limited to healing once per tick. Done in the correct order, your character may heal three times in a single tick.

RS3 has almost seemingly leaned into this quirk of the engine, causing many high level activities to top out around 250-300 actions per minute (2.5-3x the tick rate of the game itself, as measured by keypresses in some streamers' software setup; this doesnt include mouse interactions). These extra actions include swapping weapons, casting spells, swapping gear, using items, eating food and consuming potions, changing prayers (character effects/buffs), and movement. Gameplay becomes incredibly complex due to the nuances of the engines interpretation of actions, despite the limited temporal fidelity of actions. These actions become so rhythmic in fact, that many players will play 100 or 200 BPM music as they play to subconsciously sync their actions to the game engine.


Whoops, bit of a slip there. It is 100 ticks per minute, or 1 tick every 0.6 seconds. I was wrong in the first description there.


Client update was measured to be 73, not quite matching the 128 server tick and update rate. Maybe it changed in the last 5 years. CSGO private servers also ran with 128 tick rate.

https://www.youtube.com/watch?v=ftC1Rpi8mtg


OSRS plays on 0.6 TPS... or 100 ticks per minute kind of funny how different that is.


No, OSRS is 100 ticks per minute which gives 0.6 second ticks, which rounds to 1.667 ticks per second.


Eve Online probably wins the slowest tickrate award with its whopping 1 tick per second.


IIRC it gets even slower during massive battles where there are hundreds/thousands of players on the same server and area

https://wiki.eveuniversity.org/Time_dilation


I thought EVE was (near?-)tickless but with all interaction subject to substantial cool down timers that limit input frequency into the core?


Yup. As a plugin dev it has its weird quirks but it's quite amazing how the entire time runs at that speed


OSRS players hate when they have to actually play the game. They just want to click the screen every 10 minutes while playing something else.


...what? the game is full of highly technical and demanding challenges which require "tick-perfect" inputs 2-5x per 0.6s game tick.


OSRS is a rhythm game. Fight me.


I don't think anyone would fight you on that. Inferno cheat plugins looked like 100 bpm Guitar Hero back in the day.


me_irl


> I assume there'd be a big single rectangular bounding box or sphere, and only once a projectile is in that range, then animations occur.

Now that's a fun one to think about. Hitscan attacks are just vectors right? So would there be some perf benefit to doing that initial intersection check with a less-detailed hitbox, then running the higher res animated check if the initial one reports back as "Yeah, this one could potentially intersect"? Or is the check itself expensive enough that it's faster to just run it once at full resolution?

Either way, this stuff is engineering catnip.


This is the basis for basically every physics engine in some form of another. Collision is divided into the "broad phase" pruning step that typically uses the bounding box of an object and a "narrow phase" collision detection step that uses the more detailed collision primitives


also how raytracing works with bounding volume hierarchies

and how occlusion culling worked with BSP trees in Quake if I remember correctly as well


And Fortnite is allegedly 30 ticks per second.


Apex Legends is at 20 IIRC (My memory is from 2-3 years back on this one tho)

CSGO was at 64 for the standard servers and 128 for Faceit (IIRC CS2 is doing some dynamic tick schenanigans unless they changed back on that)

Overwatch is I think at 60


CS2 is mostly 64 tick from what I understand. The "sub-tick" stuff is timestamping actions that happen on a local frame before the next tick. So in theory the client feels perfectly responsive and the server can adjust for the delta between your frame and the tick.

In practice it seems to have been an implementation nightmare because they've regularly shipped both bugs and fixes for the "sub-tick" system.

The netcode in CS2 is generally much worse than CSGO or other source games. The game transmits way more data for each tick and they disabled snapshot buffering by default. Meaning that way more players are experiencing jank when their network inevitably drops packets.


That's very interesting. The CS2 netcode always felt a little brittle and janky to me, but I could never pin point exactly what was causing the issues. Especially since other games mostly run fine for me.

I also remember reading a few posts about their new subtick system but never put two and two together. Hopefully they keep refining it.


Worth noting that part of the packet size appears to be due to animation data, which they’ve begun the process of transitioning to a more efficient system. [0]

With that being said: totally agree on the netcode.

[0]: https://old.reddit.com/r/GlobalOffensive/comments/1fwgd59/an...


It's actually incredible how CSGO was such a great game and it's been replaced (not deprecated, replaced!) by CS2 which is still inferior over 2 years after the launch.


CS2 while still has some rough edge, i think it's fine. I don't have any complaint with it, and i has been day 1 player.(but just casual)


CS2 is 64 tick under the hood, with interpolation between the ticks. In the beta, server operators could modify the tick rate by patching the server binary, but when that revealed inconsistencies (which was meant to be avoided with the "subtick" system), they hard coded the client side tick rate to 64 [0].

[0]: https://twitter.com/thexpaw/status/1702277004656050220


Apex being 20 explains so much about that game. Half the time I would be firing right on target and watch my shots go thru


Its strange Apex is 20 ticks… it is often as fasr as FPS get. Is it because of number of players at same map that is a lot higher than in other games?


Fortnite has to handle 100 players on the same process, very different from 128hz @10players max.


BF3 & 4 had 64 player maps with tick rates over 100hz in the end. Yes it wasn't the default but they still existed.


Nowadays it's more like 20 players and 80 bots, so a lot less networking stuff going on, and the bot AI is so basic that I doubt it has a significant impact on server performance unless it's very badly implemented.


As long as some games (e.g. tournaments, ranked unreal) need to be mostly human, the software still needs to be able to handle it.

But it wouldn’t surprise me too much if those use a higher tier of hardware.


Also assumes that the bots coexist on the server. My first thought would just be to connect them like any other client, with compute of their own so the server doesn't even know it's a bot.


AI is more expensive than a regular player.


In my experience you can do reasonable bots cheaper than sending network updates to a regular player. Thats just straight up, but you can also tick their logic way less than every update if you want. Even more way-less if nobody is near them or spectating them.

Also some stuff you might want to calculate for them to use to make decisions can be shared among all bots.


As I aluded to in my post, how expensive the AI is depends entirely on how complex and optimized is. Remember that the process of encoding and sending packets to a client and receiving/decoding/processing the client's packets in turn is completely skipped for bots.

Fortnite bots are very barebones and are only capable of performing a handful of simple tasks in repetitive ways. It's entirely plausible that the code responsible for governing their actions is fast enough to be less expensive than networking a real player.


An advantage to bots is that the server can trust them. It doesn't need to do any verification of input since it can trust that they aren't cheating (except they probably are...).


That's not an excuse to give up on performance. The map is also much bigger which spreads people out.


That's like saying Valorant have given up on performance at only 128 ticks for 10 players.


And a few more players.


I'm completely speculating here:

I think for FPSes, the server relies on the client for many of the computationally intensive things, like fog of war, collision detection, line of sight and so on. This is why cheating like wall hacks are even possible in the first place: The client has the total game state locally, and knowing where to look for and extract this game state allows the cheater to know the location of every player on the map.

If the server did not reveal the location of other players to the client until the server determined that the client and opponents are within line of sight, then many types of cheating would basically be impossible.


Both CS2 and Valorant use fog of war, and so does LoL and Dota 2. It works because they have simple geometry in their maps, mostly straight corridors, 90 degree turns so it has blocking walls in all directions. They still have to start sending player information before they get to the corner to avoid pop in effects, so they'll use the map geometry and then adjust the fog of war mesh.

Open world games or if you have complex geometry like buildings with windows and such it's not really worth the effort to implement its useless in most areas of the map.

Sending all to all clients is the simplest and easiest implementation, all other options are much harder to implement and adds a lot of load on the server, especially if you have more players than 10.


Fallout 76, for example, lets you see where other players are facing/looking at, or where are they pointing their guns even if they don't fire. The models are animated according to the input of their users.

I don't think its ticks per second are great, because the game is known for significant lag when more than a dozen of players are in the same place shooting at things.


20-30 is believed commonly by the Fallout 76 community.


Lag is different than ‘unloaded’ ticks per second.


A better comparison would be another shooter. Counter strike has had 128 tick servers for a decade.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

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

Search: