Sign in to follow this  
justkevin

Handling object pickup "races" in multiplayer coop?

Recommended Posts

justkevin    252

This is partially a design question, but it's one driven by the realities of networked play.

 

I'm developing a Flash, multiplayer coop game, very similar to Gauntlet. One issue that I foresee being a problem is more than one player going for the same object (say a potion). 

 

In order to make the game feel as responsive as possible, players' entities are moved locally on the client instantly, with the server only correcting the player if they did something impossible. Most of the time this isn't an issue, but where it will be an issue is if two players both try to pick up the same potion. The server currently will give the potion to whichever player arrives at the potion first, but from a player's perspective they may see the potion go to another player who seems farther from it.

 

I expect this will be annoying to the players and look like an unfair bug.

 

I've thought of one solution: have objects "drop" from an entity (like a chest). Every player will see the object and every player will be allowed to pick up the same object (possibly within a time limit). The object will only disappear from the client's view once they pick it up or the time limit expires. 

 

Anyone have a different suggestion?

Share this post


Link to post
Share on other sites
hplus0603    11356
FPS games have this all the time. Health packs, quad damage, etc.

The way they solve it is to play the effect locally (sound effect, particle system specific to the object, etc) but to show the actual game effects only as a result of the server decision.

If you and a guy is racing for the quad damage, you can think you got it, hear the "quad damage" sound effect, but the server text message says "So-and-so got Quad Damage!" and you notice that you do not have it yourself. The way you internalize this is that, yes, you would hear the sound and see the effects even if so-and-so was there a split second before you.

Share this post


Link to post
Share on other sites
justkevin    252

Thanks for the suggestion.

 

I'm not sure if that will work for this game (typical latency will be higher than most FPS), but I should be able to test that idea shortly and see if it feels okay.

Share this post


Link to post
Share on other sites
oliii    2196

It's just part and parcel of the network latency. As long as the pick up is only picked up once, 

 

Usually what would happen is that you would have a local 'pick up' animation, while your pick up request is in transit (client -> 'Can I pick that up?' -> server). 

 

Then the server reply will tell you if you have picked it up or if you have been 'denied'. 

Share this post


Link to post
Share on other sites
JensB    233

Diablo 3 gives all players their own loot, which has both upsides and downsides from a design perspective, but it would solve the problem stated.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this