Hacker News new | ask | show | jobs
by Dylan16807 2404 days ago
What do you mean by a serious server? Most MMO stuff could easily pick a player to handle the processing of their immediate area on a background thread. And the bandwidth requirements aren't that big either. Figuring out how to trust the processing is the biggest problem to solve, but that can be solved on a tiny simple server just as easily as on a serious server.
2 comments

> Most MMO stuff could easily pick a player to handle the processing of their immediate area on a background thread.

This is how you get cheating. Decentralized hosting can work (look at CoD for an example of a highly successful game that used end user systems as servers), but an MMO is probably one of the least trusting environments you can have.

It's not about immediate processing or anything, it's about having a trusted copy of the game state.

Further reading: Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization by Yahn W. Bernier: https://developer.valvesoftware.com/wiki/Latency_Compensatin...

Yeah I said that. But cheating vs. not cheating has nothing to do with needing a 'serious' server.

Edit: Okay I really need someone to explain why this particular comment got downvoted, I'm baffled.

Keep in mind MMOs have a persistent world. In CoD, meeting a cheater can ruin a 20min (? haven't played in a while) game session. In an MMO, it might screw up the entire economy. Thus off-loading authoritative work to clients is pretty much a no go.

To prevent clients from cheating, you have to run pretty much the entire game engine on the server. Sure, you can strip graphics, but not physics, cooldowns or inventory management. As an example: it sucks being killed by an enemy obviously behind a wall or in another room, so fired bullet should be checked against world geometry.

Pretending all this to be no big deal might be right for some specific (kind of) games, but generalizing it that much is... unrealistic at best.

Btw, dev time is valuable as well, so an overly engineered solution probably isn't a realistic option for many online games either.

Having a persistent world does not need a 'serious' server.

And I mentioned trust in my first post. It's a reason to use a server, but it's not a reason to use a 'serious' server.

None of these are reasons you couldn't use 40 tiny weak throwaway servers in place of 5 big serious servers.

> As an example: it sucks being killed by an enemy obviously behind a wall or in another room, so fired bullet should be checked against world geometry.

That sounds more like a shooter than an MMO. And a shooter instance definitely fits into a tiny 2-4 core server.

> dev time is valuable as well

Which is why so much software is single-threaded. And single-threaded software only needs one core.

(And the dev time for what I was talking about would be tiny, and it would save money overall. There are good reasons not to do it, but I don't think dev time is one of those good reasons.)

You’re arguing a nothing point here.

Either you’re not making your point correctly or you’re just wrong.

I made two AAA games with online components, the game servers are “serious” (40cores, 256GiB ram, 10G network) because they have to be to emulate physics, to run AI and to do raycasting of bullets (to detect shooting through walls which the clients tell us they can do if you’re cheating) etc. And /even our/ game worlds offloaded too much in the first game leading to huge issues with cheaters.[0]

And our gameserver is written in C++ with a lot of optimisation work.

[0]: https://www.theguardian.com/technology/2016/apr/26/hackers-c...

You need 40 cores to run one instance?

I just think that's pretty uncommon among games.

Maybe I'm wrong, but keep in mind that something like "an MMO" managed to work on the hardware that existed 15+ years ago and the underlying computational details have barely changed for many of them.

And something like Eve is single threaded.

I mean a server that can handle clients at scale. Certainly, it's possible to do this sort of thing in a more decentralized fashion, but the games that I'm aware of don't do this.
Plenty of MMO code is single threaded. And almost none of it needs much RAM. They may happen to put it on big servers because it's slightly cheaper to use big servers, but that could easily be configured to use tiny servers.

Handling a thousand people in the same spot can be done on any size of server, and most of the time you're looking at under a hundred.