Original Post — Direct link
over 5 years ago - /u/gtez - Direct link

Originally posted by derdotte

A transcription of /u/gtez ´s post:

The range of challenges in video games are so interesting - https://arstechnica.com/gaming/2019/05/war-stories-lucas-pope-and-what-almost-sunk-return-of-the-obra-dinn/
This weekend, I'm sitting here crushing my head on database capacity issues, queue management and psychology of waiting in line, the challenges of containerization of stateful services (game servers), and balancing spending time on QoL fixes against our next big content expansion.
Before folks read too deeply into that, we use FIFO for the login queue - it's the most fair. But we're still experimenting with the best way to express progress (Time didn't feel good, position feels better) in a world where accuracy is really tough.
In our queue for example, there's so many people and it moves very quickly, that by the time you ask you position, and we find out what it is and send it back to you, you've moved several spots already. Beyond that, we support some 'nice guy' features...
... such as disconnection support. So if you crash or disconnect in your first 3 hours of playing Dauntless, we let you back in, close to the front of the line. On top of that, there's a bunch of interesting trade-offs that are made...
The queue is the first line of defence of the live service. It needs to protect the game from being overrun. We need the queue to stand up to a MASSIVE number of requests per second, while sharing a single database. So that means we need to often reduce accuracy for speed...
This is especially true the further out you are. The longer the queue, the less often we ask that you check in on your position in line, and the number we give back is therefor less and less accurate. Conversely, the jumps in position are higher, so it feels like you're moving..
... faster the further out you are. There's some other interesting things that happen too. The queue lets you in, but we don't register the login back to the queue for several seconds, so the queue movement tends to be kinda 'batchy'...
... kinda like how at Bars the bouncers let folks in in groups of 10 or 15 vs 1 or 2 at a time....

Wow this got a lot longer than I thought it would.
lastly - there's one other really wild problem with queues. People leaving them. If you fail to phone home on during your window, we don't know if it's because your wifi had a blip, or maybe you suspended your console, or maybe you left...
So we need to add a lot of grace periods in there and that make the jumps super weird at times, and hard to give accurate positions in line. Also due to the 'gotta go fast' problem I mentioned above, we can't put a lot of complex logic.
The login queue, while not the biggest piece of software I've written for Dauntless, it is BY FAR the most complex in terms of design.

I don't work on the crazy shit like Matchmaking. @RSFlux wrote the latest iteration of that, and it's brilliant. He is a f**king wizard.

Hey that's me! I'm sorry for the ramble. I'm pretty damn tired and kinda just started typing....