Live data from Hacker News

Ask HN: What is the ops architecture like for AAA multiplayer game servers?

news.ycombinator.com

41–50 of 82 posts

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#41
post #27
post #6

This question sounds like it's pointed directly at me. However, I can only speak for one AAA gaming company, and my team operate a bit differently than most in the company. My team operates the infrastructure for "Tom Clancy's The Division" video game series (1&2). Most of the programming approach is spent on doing the cheapest (in terms of CPU) possible thing, everything is C++ Things like: matchmaking will happen i…

What's your take on using AWS Flexmatch & GameLift for matchmaking and autoscaling? Do you see any trouble spots in their approach?

If they can do all of their matchmaking on a single box, doesn't seem like it's a big pain point.

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#42

Halo 4 and 5 use a project developed “in house” at Microsoft called Orleans. Roughly speaking it is similar to Akka. It’s an actor based distributed system which attempts to hide the implementation of distributed networking. In essence, each match and each player get their own “network attached“ object (a “grain” in Orleans terms.) So: var player = new Player(123); is actually instantiated _somewhere_ on the network…

> which attempts to hide the implementation of distributed networking

To be fair, this is precisely what Akka doesn't do, often citing A Note on Distributed Computing (1994) which explains why that approach is problematic.

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#44

Halo 4 and 5 use a project developed “in house” at Microsoft called Orleans. Roughly speaking it is similar to Akka. It’s an actor based distributed system which attempts to hide the implementation of distributed networking. In essence, each match and each player get their own “network attached“ object (a “grain” in Orleans terms.) So: var player = new Player(123); is actually instantiated _somewhere_ on the network…

This is so sick. Wonder what was done for Halo

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#45

Not related, but relatable. I often wonder between Games and Enterprise Software, who has a more complex backend architecture? At the outset, it seems like Games are complex as hell, in the sense that when a gamer shoots another gamer dead, there has to be freeing and re-allocation of processes/ resources, and with tens or hundreds of persons playing the same game over the internet , both the gaming architecture and…

It is a very different kind of complexity. Games are super complex in a very limited set of boundaries (the entirely virtual world of that single game) and have very rigid timing requirements, but usually the requirements to a "released" game don't change that much anymore. Enterprise apps usually implement stuff that seems simple (buy some item in a web shop), but gets complex due to a nearly boundless world which makes it necessary for them to interact with nearly every other system out there (which also changes all the time after release, just like the requirements to our app do). Thus the complexity of enterprise apps usually can be found in their interfaces to other systems (including humans) and in the way in which the app handles requirement changes over time, while the complexity of games is found in the simulation of their specific game world (including graphical representation of that world). It's like games are introverts while enterprise apps are extroverts.

If you want to explode the complexity of each of these "classes" of applications, just add the thing that makes the other class difficult to the requirement:

- A game that allows players in its world to interact tightly with an entirely different game world (like "really different", with entirely different rules and game play) which also evolves independently over time and on an uncontrollable schedule

- An Enterprise app that implements super complex processes with thousands of different moving parts, modeled out into extreme detail and without the possibility to resort to "this is handled organizationally"

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#46
post #30
post #10

Earlier quoted context omitted.

Real reasons for: * One platform to develop on; back-end coders tend to go back and forth between client and server programming. * Faster iterations. (just hit F5 in visual studio) * IOCP Stupid reasons for: * Old IT Director denied the use of virtualisation software. (mac address randomisation wasn't great and it caused a switch crash if two people had the same mac) * Windows licenses are really cheap compared to de…

Does io_uring change the equation a little?

Yes, but I can't talk about future developments.

sufficed to say: my job is getting easier in future (thanks mostly to Stadia)

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#47
post #10

Earlier quoted context omitted.

Real reasons for: * One platform to develop on; back-end coders tend to go back and forth between client and server programming. * Faster iterations. (just hit F5 in visual studio) * IOCP Stupid reasons for: * Old IT Director denied the use of virtualisation software. (mac address randomisation wasn't great and it caused a switch crash if two people had the same mac) * Windows licenses are really cheap compared to de…

I no longer do windows development, but I miss it. It's strengths are greater than you portray. The C# / .NET libraries are really beautiful and well thought out. I most often program in Python, and while the Python language is more concise and elegant than C#, the Python libraries are not nearly as well organized and consistent as C# / .NET. Java libraries are better than Python but worse than C#, and the Java langu…

I share your high regard for C# and the .NET libraries but not your disdain for Java. Java the programming language is pretty ugly but the JVM is robust and there are other languages which compile down to Java bytecode. In your "scrappy startup" scenario I would pick Scala or Clojure long before Python, mainly because I'm skeptical of the idea of using a dynamically typed programming language for large-scale backend development - for human scalability reasons, not performance ones. Personally I'd also have to pass on Windows even in the AAA bigcorp scenario, because I prefer the tooling and open ecosystem around Linux and epoll isn't that much worse than IOCP.

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#48
post #46
post #30

Earlier quoted context omitted.

Does io_uring change the equation a little?

Yes, but I can't talk about future developments. sufficed to say: my job is getting easier in future (thanks mostly to Stadia)

Kinda surprised to see some one say a positive thing about Stadia. I did a fair amount of network programming back when I was in the industry and I just don't see how it can work.

I see enough congestion on just the local 2.4Ghz spectrum out here it doesn't really matter how fast the data center is. Without some form of dead reckoning you don't have much room for error.

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#49

Earlier quoted context omitted.

I no longer do windows development, but I miss it. It's strengths are greater than you portray. The C# / .NET libraries are really beautiful and well thought out. I most often program in Python, and while the Python language is more concise and elegant than C#, the Python libraries are not nearly as well organized and consistent as C# / .NET. Java libraries are better than Python but worse than C#, and the Java langu…

I was an exclusive Microsoft developer for a little over 20 years. It wasn’t until I started doing cloud deployments - like the original poster implied - that I started avoiding Windows as often as I could. Once you add Windows to the mix, everything gets worse - startup time, resource requirements, automation, snd costs. Luckily, you can do C# without having to use Windows with .Net Core.

Ooh, you may be the perfect person to ask a question that I've been wondering about. Is .NET Core on Linux viable yet for serious use? I've done some tinkering with it and gotten a project working on MacOS but I did the development in Visual Studio on Windows. Is it realistic to do your development in Rider, with the open source version of msbuild for CI, and have it perform reasonably on Linux in production, without ever paying Microsoft anything?

Re: Ask HN: What is the ops architecture like for AAA multiplayer game servers?

#50

Not related, but relatable. I often wonder between Games and Enterprise Software, who has a more complex backend architecture? At the outset, it seems like Games are complex as hell, in the sense that when a gamer shoots another gamer dead, there has to be freeing and re-allocation of processes/ resources, and with tens or hundreds of persons playing the same game over the internet , both the gaming architecture and…

I always think about how game programming must be so much more hardcore than business stuff in general.. Even the menu interfaces are all so custom & etc while in web & business it takes us so much even for generic stuff lol but then again in general the teams are much more specialized and probably better staffed in qty
Post reply on HN