Live data from Hacker News

Valorant's 128-Tick Servers (2020)

technology.riotgames.com

131–136 of 136 posts

Re: Valorant's 128-Tick Servers (2020)

#131
post #45

Earlier quoted context omitted.

In the case of Call of Duty: Black Ops 1. Thee matchmaking + leaderboards system was implemented by DemonWare (3rd party) in Erlang. Erlang actually has good enough performance for many types of multiplayer games. Though you are correct that it may not cut it for fast paced twitch shooters. Well...I'm not exactly sure about that. You can offload lots of expensive physics computations to NIF's. In my game the most exp…

The biggest hurdle to a game server written entire on the BEAM is the GC. GC pauses just take too much time, and when you need to get out (for example) 120 updates per second, you can't afford it. Even offloading stuff to C or C++ does not save you, because you either have to use the GC, do a copy, or both. Game servers typically use very cheap memory allocation techniques like arenas and utilize DOD. It's not uncomm…

Good point. Yeah I guess it wouldn't cut it for any fast-paced twitch shooter. Especially with a 120 update per second deadline. A non-deterministic GC pause could have disastorous effects, especially in a tense shootout. I don't know much about GC theory but the GC in BEAM is per process and heap-based? I'm not sure exactly what that entails, but can you not structure the main simulation process to take advantage of this fact?

I find myself interested in developing multi-player simulations with more flexible deadlines. My MMO runs at 10 ticks. And its not twitch-based. So the main simulation process can have pauses and it wouldn't have a big impact on gameplay. Though this has never occurred.

As long as: (tick process time) + (send update to clients) + (gc pause) Btw what does DOD mean? Is it Data on Demand? Since my game is persistent I can't reset arrays at some match end state. So I store things either in maps on the main server process or I store it in the dedicated client process state (can only be updated via server process).

Re: Valorant's 128-Tick Servers (2020)

#132
post #82

Earlier quoted context omitted.

Browser game don't need performance, I'm talking about AAA online games here, which 99% are built in c++ and the rest in c#.

> Browser game don't need performance Mobile users will hate you when your game drains their battery much faster than it should. > I'm talking about AAA online games here, which 99% are built in c++ and the rest in c#. It still doesn't apply. There's absolutely nothing stopping you from having a server written in Java with a game client written in C#, C++, or whatever. I'm really curious why you think client and serv…

Because games are built with engines, and you're not going to re-implement all the simulation / systems in a different engine or language. Why would you? A gameserver is basically a game client stripped from rendering with a bit more logic.

I'm talking real time games here, not an .io game over websocket/json.

Re: Valorant's 128-Tick Servers (2020)

#133

Earlier quoted context omitted.

If you look at their own stats, they says that for a server that host 150 games, at any given time, they have around 50 games that are in the buy phase. I don't know how long game rounds last, but if you tell me that you have 60s only locked in that state, that means that the playable game round last around 2 minutes. And anyway, that you will spend on average 1/3 of your time not playing when you came to play. Numbe…

Unless you've played Valorant or CS then I don't think it's possible for me explain, in words, the context you are missing. This game has lots of downtime for the player. For example, a round lasts 100 seconds (then if the bomb is planted, 45 seconds until the bomb explodes). If you die early in the round, you are dead until the start of the next round. Worst case, thats 2 full minutes of downtime for a single player…

It's nothing new. CS but a lot of others are like that. Still, the more years pass since CS, the more you have to wait in the lobby or pre/post gaming. It's not the same when you are in the game even dead. Something happens, the game is running, you can follow what is happening as a ghost.

Re: Valorant's 128-Tick Servers (2020)

#134
post #79
post #69

Earlier quoted context omitted.

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.

AI is more expensive than a regular player.

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.

Re: Valorant's 128-Tick Servers (2020)

#135

Earlier quoted context omitted.

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.6…

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 :-)

Re: Valorant's 128-Tick Servers (2020)

#136
post #77

Earlier quoted context omitted.

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.

Post reply on HN