• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

Android Establishing reliable gameplay through multiplayer

Bingdom

Googledom
I know I've asked similar questions in the past about having multiplayer. This time I'm asking what makes reliable and enjoyable multiplayer.

Firstly, let me introduce the game I'm going to attempt to implement multiplayer. This game is an arcade game. The goal is to attack other characters to gain points. Eventually, you will encounter a force that will repel against you, attempting to stop you in your tracks. Once you die, you will obtain money to buy upgrades to help you further progress to stronger enemies. This is what the game looks like:
upload_2016-12-16_23-10-41.png

Now that we are on the same page, I need some ideas on implementing a good system for multiplayer. The multiplayer will include 2 people cooperating to take out the enemies.

My questions are:
1. Is it mandatory to implement delta timing to ensure both clients to run in sync, or can I just send coordinative data every second or so? Sometimes the enemies may have to turn around because they are at the edge of the map, or the enemy will stop because it's in shooting range to the player. Implementing delta timing may put the servers out of sync because of that reason. Having one of the players run slower will also put them out of sync. What would be the best option? (I think my perception of delta timing is wrong here).
2. What If one of the player's game froze for a while, how will I recover most of the missing movement/actions? If the server slowed down, how will I slow down the client to keep it in sync, or will it not matter?
3. To make things simple and not confusing, is it best to make the server simulate everything? The client will only do simulations if it is told by the server?
4. If I do Q.3, then I will run into this issue: Client attacks at x,y. The server receives attack command and will simulate an attack there. If an enemy is hit, then what do I tell the client to ensure that both the same instances displayed are hit? (I think assigning every object with number variable will solve this).​

I appreciate any help.
Thanks.
 
Last edited:

NightFrost

Member
I haven't attempted networked games myself but I recently read an interesting article on the subject of rollback networking. Basically, you predict remote events and when they do arrive from the network, you roll back your simulation and recreate the steps adding in the received data. It depends on game's ability to recall last N steps and roll into any of them at will, then walk back into current step.
 
Top