Jump to content
  • Advertisement
Sign in to follow this  
Vanquish

Network Core for an MMO

This topic is 4962 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

First of all let me say that Im not asking for the code of an MMO to be written in this thread. Things like this differ of course. After picking apart some of the open source MMO projects on SoulForge Ive been in a quandry as to what the basics of a network structure for an MMO would be. Dont get me wrong, I have a basic idea of how login, character database, world/map server should interact, but could someone explain like a kindergartner the basic roadmap of how and MMO does what it does? Ive searched for articles but havent found any. Thanks in advance.

Share this post


Link to post
Share on other sites
Advertisement
1) when connecting to a zone server, send entity information for all entities the player needs to know about
2) when those entities change state, those changes need to be transmitted to the player
3) when new entities become interesting, or old entities become not-interesting (or deleted), those changes need to be transmitted to the player
4) don't transmit more than X bytes per second, for an X that you set as part of your design

Share this post


Link to post
Share on other sites
just to add to what has already been said, you should try to cull as much bandwith as possible by using "visability filtering" techniques. what i do is have functions like this:

Get_List_Of_Players_On_A_Map(MapID Map);
Get_List_Of_Players_Within_Range(Pos pos, Player player);
Get_List_Of_Players_Who_Have_Seen(Player player);
...
Broadcast_Packet(Packet packet, List_Of_Players list_of_players);

have a setup like this allows you to filter out messages and saves on bandwith. also, how i handle it is partition players into "zones". in my case, i treat a map as a zone, but you could make it multiple maps. when a player enters the game, i send to everyone on his map "hey, a player just joined". then i send to that player "here is all the people on the map". when a player enters a new map, i do the same thing for that map, and of course tell everyone on the old map that the player left. you should try to do things to save on bandwith, like cache "static" data about a player, things that cant change such as names or skin color. then, you mark that one player has already seen another, and you no longer send skin color or the players name to that player when he steps on a map, since he already knows that info. you could also do things like have version numbers for things, and if a player has an old version then send them the new data, etc. the zones system is just one method though of course, there other ways to partition players so you could have seamless worlds, but this is much more complicated [grin].

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!