Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


MMO model


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 Felipe Such   Members   -  Reputation: 110

Like
-2Likes
Like

Posted 26 July 2013 - 03:48 PM

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, 27 July 2013 - 04:02 PM.
Restoring from edit


Sponsor:

#2 SimonForsman   Crossbones+   -  Reputation: 6288

Like
1Likes
Like

Posted 26 July 2013 - 04:11 PM

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" ?


I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

#3 Felipe Such   Members   -  Reputation: 110

Like
0Likes
Like

Posted 26 July 2013 - 04:20 PM

The problem was quite stupid actually haha. But okay



#4 frob   Moderators   -  Reputation: 22683

Like
1Likes
Like

Posted 26 July 2013 - 05:16 PM

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.


Check out my book, Game Development with Unity, aimed at beginners who want to build fun games fast.

Also check out my personal website at bryanwagstaff.com, where I write about assorted stuff.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS