Hacker News new | ask | show | jobs
by jfrunyon 1851 days ago
The delays, interpolation, etc. are a big problem in games like FPS, but I fail to see why they'd be a large problem in an MMO.

Why can't you just send the new position of other visible players, and then client-side play those characters' walking animations to the new position from their current (client-side) position? Unless the accuracy of another player's targeting is relevant why is there a problem with their position always being delayed by, say, a second?

2 comments

A good MMO typically isn't just a large number of players walking around and not interacting with one another.

Look at Eve Online; you have a spaceship, you travel around and shoot stuff (this is simplifying it, but that's a big part of it). Sometimes there are 100 or 1000 ships all involved in one battle; what do you have to deal with in that case? You need to send all ship data (model, loadout, customizations) to every client so they can load in the right assets. You need to track where each ship is (in 3d) and where it's going at any given time. You need to track what weapons are firing, and who they might hit (there are missiles, interception missiles, "bombs" with an explosion radius, lasers that hitscan, guns that have tracking projectiles, etc). You need to compute status effects that may change based on distance between given ships. You need to send all this data to each client regularly (every second at least).

This really adds up, both in compute and memory on the server and in amount of data that needs to be sent to each client. It gets difficult quickly. Let's say all the info above can be described in 1kb/ship/tick - you get up to the larger battles, which in Eve have hit 5000+ (rarely, yes) - and you're dealing with 5000kb/tick going to every one of those clients.

> A good MMO typically isn't just a large number of players walking around and not interacting with one another.

It is, though! In most games you're only actually interacting with one or a few people at a time - even if many more might be visible.

Part of it, of course, is that the existing MMOs are designed for small-group gameplay. But even outside MMOs - Minecraft, CoD, etc. - you're not ever going to interact with hundreds of players. A human can't manage that!

Eve runs into problems because it has large-scale PvP. That says almost nothing about PvE scenarios.

Eve online has a lot of self inflicted problems, like relaying on Python for speed sensitive code, running single threaded servers, allocating one CPU per solar system (small region around a star) instead of per grid, expanding Grids to ridiculous sizes instead of partitioning them into small microgrids with delayed group updates.

You really dont need to be send accurate per server tick information about a rocket hitting a ship 5000km away from you.

As I said, the game model changes things. One of the main issues in these discussions is that no one posts what they’re actually imagining of the MMO to be doing — and we end up talking past each other.

Anyways, with an FPS or Action RPG (anything where you can act/react quickly, then you expect your peers to do the same) low state/latency is absolutely vital.

With WoW style games you could probably get away with a LOT of interpolation before it becomes a problem (it’ll quickly become obvious as people get unnaturally tweened across the screen in straight lines, but that’s ok) largely because there’s really not much for you to be doing off-cool down anyways.

The main problem is that like RuneScape/Maplestory, in WoW supporting 200 players in the same spot doesn’t really do you anything (except for those group fights, where latency becomes important again) — towns are just glorified chat rooms, because what else are you going to do? You’re not pikmin requiring x/200 to proceed

VR chat it literally accepts that chat room aspect, and so it’s more than acceptable — it’s part of the fun

That is, you can change the gameplay to better support the issues relating to large groups. The bigger problem really is do you even want 20000 people in the same session? There’s not much to do in a crowd — in a real-world crowd you basically lose all autonomy and the crowd itself becomes the unit of autonomy with “a mind of its own”. Ultimately it’s a dumb goal to have in a non-competitive setting.

What you really want is 20000 people able to affect and manipulate the same “world” — the way we do in reality. We don’t look for everyone being there in front of you — we realize things have been changed by other people when we weren’t looking. You want object persistence and manipulation with a consistent world state, shared by thousands. Which is a much different problem — you want, really, a proper simulation.