View Issue Details
|ID||Project||Category||Date Submitted||Last Update|
|0005258||AVWW||Suggestion - Multiplayer||Dec 4, 2011 5:10 pm||Dec 5, 2011 3:46 pm|
|Fixed in Version|
|Summary||0005258: 'The Multiverse Thing'|
|Description||Okay, I get that you are having difficulty with latency and such things, and any AVWW with multiplayer is great. However, intentionally coding in syncing issues which were in certain other games (mainly Lost Planet 2) because they were badly coded just seems like a bad way to go.|
Now, I'm not just saying this from the perspective of 'desyncs are bad', which incidently they are, but even ignoring the fact that it would destroy the immersion, and a fair bit of the enjoyment of the game, it will also damage the gameplay itself. Let's have an example. You're fighting a boss with a friend, but due to the intentional lack of syncing, you are each fighting it on opposite sides of the boss chamber. Due to this, you won't be able to see what the other player is casting. Not seeing what your friend is casting means that you won't know what resistances the boss is building up, or how to deal the most damage etc.
Ideally, I would suggest that you invest the time now to make this work without latency issues, because guranteed that if you do, the game will be much better off for it later. However, if all else fails, at least consider leaving an option in the multiplayer, allowing people to select whether they wish to play with lower quality gameplay, but higher performance or with potential latency issues, depending on their network connection. That way, people can decide for themselves.
I truly do hope that you do correct this issue, because if you do not, me and pretty much everyone I know will have wasted our money. I don't say that because it's a bad game (we all love the game), but simply because we've already been through this scenario with Lost Planet 2, and as I said, having those kinds of desync issues simply destroys all enjoyment we could get from the game.
|Tags||No tags attached.|
|Internal Weight||Discussion Only|
First: there's been a fair bit of feedback like yours, and I'm certainly thinking it over. I think you (and the others) have a point about the current model not really delivering a satisfying experience.
But: even upon examining all the examples I've seen given of games that "do it right", none of them are actually trying to accomplish the same gameplay goals we are, and are simply getting around the same basic constraints by compromising a different thing (the game simply waits until everyone's in sync like AIW, the game lets monsters and projectiles jump around like Terraria, never having fast-moving skillshots like WoW [I think], etc). And this is the reason for the decision to switch to the positions-diverge model: no other model would let us deliver a _playable_ (to say nothing of satisfying) multiplayer experience _at all_. It was either that or cut multiplayer as a feature. Which I suppose is still a possibility but only if we really can't find any satisfactory way.
Currently I'm thinking through some other approaches to how the monsters move that could be more server-centric and thus the monster positions wouldn't actually diverge much at all on the clients. I'm thinking we might just be able to squeak by on that one. The problem is that it probably won't be compatible with some of the existing singleplayer monster behaviors. Which is another reason we went with the model we did: we didn't want to reshape singleplayer to fit the constraints of multiplayer, we just wanted to add multiplayer. In the end we probably can't have it both ways.
Yep, I really think it's this general sort of model or to cut multiplayer entirely. The alternative wasn't satisfying in any way, not because we didn't code it right, but because of the simple technical constraints of the Internet. A latency of 1000ms makes an FPS game really unenjoyably laggy, right? Well, 100ms of latency with a game like AVWW (or Tyrian, or Raptor, or whatever) has the same sort of effect as 1000ms+ of latency in a typical FPS.
There just aren't any other sorts of games that require pixel precision and also which have multiplayer. If anyone else has a single example of such a game where anyone made it work, that would be great. By "pixel precision," I mean where there are one or two pixels of difference that can mean the difference between a hit and a miss, and where players are trying to dodge represented-in-the-gameworld projectiles, and where the speeds of both the projectiles and the players are such that 200ms of movement could equate to dozens or hundreds (in some cases thousands) of pixels of movement.
That's why a sync model is fundamentally impossible here or with any other shmup: even if you have the best possible Internet connection in the world, still too much time goes by between the client hearing from the server (and vice-versa). This game moves _fast_.
It's true that we could do something vaguely along the lines of what Keith is taking about with trying to make all monster behaviors server-synced, but then what you wind up with are:
1. Monsters which react too slowly and which can't dodge your projectiles because of the latency stuff mentioned above.
2. Monsters which react too slowly in general, and thus fall off cliffs and such routinely, thanks to getting knocked back or whatever else and not having time to compensate.
3. Monsters which can only attack one player at once, particularly if they are melee, which sounds good in some respects but which is actually a balance nightmare.
It's possible that there might be some sort of middle ground there, but I really think that's going to lead to a mess and an experience which is hugely inferior to solo play. I'm open to suggestions, but "make it work like an FPS" is kind of missing the point.
Reading through the posts by some other players on the forum at the moment, I'm really shocked by what is considered to be an acceptable ping these days. It used to be that a lot of folks seemed to get out of joint when their ping as 500ms and things were a bit iffy. Now it sounds like people are trained that if their ping is 200ms they should be expecting major jumping around.
That's something that we can really work with a lot more easily; I'd not expected that sort of shift in player mentalities since I'd last been very involved in a game that used an action model rather than an RTS one.
I will say that the really good thing about our current model is that it is ridiculously hybrid, meaning that it's somewhat more straightforward to switch some parts of it around without having to redo everything.
||There's not really anything specifically actionable in this ticket. I think it's a valid discussion, and should therefore stay open. But since there are not yet any specific things to do with this one, I'll leave it as discussion.|
The reason most people can play with 200ms ping in shooters without much of a problem is the mind-bendingly clever tricks that can be played to hide the lag. The valve developer wiki has an excellent description of the techniques they use to fight lag in the source engine. (not posting this to 'educate' Arcen, I know you guys will have already seen this, I link so other commenters can appreciate how complex this problem is)
Shadow mentioned Lost Planet 2 - That game had the exact problems that AVWW is going to have, and it made certain parts of the game almost unplayable. On one players screen, the player is huddled in a corner defending themselves from a mech. On player 2s screen, the player is chasing the mech back towards the player spawn. On player 3s screen, the mech realised it left something in the oven and has wondered off behind enemy lines. Its the same mech, on all 3 screens, doing completely different things, and no-one can help each other.
From what x4000 and Keith have been saying, the real problem is that in AVWW, game entities are actioned on by the client, not the server. You simply cannot do that while maintaining a binary-identical simulation, even if the client and the server are running on the same PC.
If you want the game to be the same on everyones screen, you have to have a players commands sent to the server before being echoed out so that all clients can action the command at the same frame. That means you have to accept some degree of latency. If you want players to experience this, I expect it would be the work of 15 minutes to buffer everything you get in the wndproc (noting the time stamp), and dispatch it to the 'real' wndproc while the timestamp on the front of the buffer is == GameTime() + 100ms. Instant run-time configurable lag.
||Okay, the fix for this is coming: http://www.arcengames.com/forums/index.php/topic,9554.0.html|
|Dec 4, 2011 5:10 pm||Shadowsand||New Issue|
|Dec 4, 2011 6:04 pm||keith.lamothe||Note Added: 0017676|
|Dec 5, 2011 8:52 am||x4000Bughunter||Note Added: 0017679|
|Dec 5, 2011 9:52 am||x4000Bughunter||Note Added: 0017680|
|Dec 5, 2011 10:45 am||tigersfan||Internal Weight||=> Discussion Only|
|Dec 5, 2011 10:45 am||tigersfan||Note Added: 0017682|
|Dec 5, 2011 10:45 am||tigersfan||Status||new => feedback|
|Dec 5, 2011 1:28 pm||Draxis||Note Added: 0017684|
|Dec 5, 2011 3:46 pm||x4000Bughunter||Note Added: 0017687|
|Dec 5, 2011 3:46 pm||x4000Bughunter||Status||feedback => resolved|
|Dec 5, 2011 3:46 pm||x4000Bughunter||Resolution||open => fixed|
|Dec 5, 2011 3:46 pm||x4000Bughunter||Assigned To||=> x4000Bughunter|