Sign in to follow this  
Felipe Such

MMO model

Recommended Posts

Hey guys, I'm trying to develop a MMO, I already the terrain, a few characters, objects, and items. But now I am trying to make it online. So far I was able to connect to the server, update my position and stuff like that. If another player connects he will see the position the others characters were when he logged in. No update.

Now I'm trying to make a update during the game, so when a player move, the other sees it. But when I tried to do that it looks like the server can't keep up or something like that. When the player stops moving it will always go back a little bit. I'm not really sure what happens.

Also besides that every time there is a update from the server the screen flashes, as if the camera went to another position for a single frame.

 

Client:

forever()
{
   if(availableMessage())
   {
      updatePositions();
   }
   getInput();
   simulate();
}

Server:

forever()
{
   if(availableInput())
      getInput();
   simulate();
   broadcastChanges();
   Sleep(100);//Without this the flashing is way more frequent
}

The server broadcast everything, not just what changed. Maybe that might be a problem.

The weirdest part is that the player goes back for the other players too.

 

English is not my primary language so forgive me if I made any mistake.

 

Solution:

The screen flashed every time because the server was trying to update the y position for the player but the simulation on the client always changed it back.

I found out that the gravity on the server was switched off which caused the player to go to a higher position on update and instantly go back to ground level.

 

The delay was caused by the Sleep(100); that I used to test the flashing. Since messages were received in another socket if the client sent a stop message right before the server simulation the simulation treated as if he stopped on the last simulation, 100ms before. 

I solved that by erasing the Sleep(100); and creating a timer on the loop that every 100ms he called the broadcastChanges();

Edited by Felipe Such
Restoring from edit

Share this post


Link to post
Share on other sites

Don't you think it would have been more helpful if you had left your question and also posted your solution so that others who have a similar problem in the future can benefit from it instead of just replacing the question with the word "solved" ?

Share this post


Link to post
Share on other sites

I have restored the original post.  The site's general policy is to keep questions around even if they are solved.

 

 

If your problem really is solved, feel free to post your solution as well so others can learn as well.

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