Node.js MMO - process and/or map division
Posted
by
Gipsy King
on Game Development
See other posts from Game Development
or by Gipsy King
Published on 2012-06-29T15:58:30Z
Indexed on
2012/06/29
21:24 UTC
Read the original article
Hit count: 492
I am in the phase of designing a mmo browser based game (certainly not massive, but all connected players are in the same universe), and I am struggling with finding a good solution to the problem of distributing players across processes.
I'm using node.js with socket.io.
I have read this helpful article, but I would like some advice since I am also concerned with different processes.
Solution 1:
Tie a process to a map location (like a map-cell), connect players to the process corresponding to their location. When a player performs an action, transmit it to all other players in this process. When a player moves away, he will eventually have to connect to another process (automatically).
Pros:
- Easier to implement
Cons:
- Must divide map into zones
- Player reconnection when moving into a different zone is probably annoying
- If one zone/process is always busy (has players in it), it doesn't really load-balance, unless I split the zone which may not be always viable
- There shouldn't be any visible borders
Solution 1b: Same as 1, but connect processes of bordering cells, so that players on the other side of the border are visible and such. Maybe even let them interact.
Solution 2:
Spawn processes on demand, unrelated to a location. Have one special process to keep track of all connected player handles, their location, and the process they're connected to. Then when a player performs an action, the process finds all other nearby players (from the special player-process-location tracking node), and instructs their matching processes to relay the action.
Pros:
- Easy load balancing: spawn more processes
- Avoids player reconnecting / borders between zones
Cons:
- Harder to implement and test
- Additional steps of finding players, and relaying event/action to another process
- If the player-location-process tracking process fails, all other fail too
I would like to hear if I'm missing something, or completely off track.
© Game Development or respective owner