Skip to content
Lloyd Dilley edited this page Apr 23, 2017 · 1 revision

Componentization

Components identified by participants of the first design workshop discussion. StarkRavingMad proposed the design without any databases, but I(nemerle) have opted to include them. On one hand that would simplify the design, on the other, not many MMOs are non-persistent.

CLIENT

  1. Chat Client - provides all chat features to the player.
  2. Game Client - provides the player with an interface to interact with the game world.
  3. Map Client - provides all functionality for moving a character from point A to point B, including telling the client what animation and sound to play while using this type of movement. Derive from this base for each type of movement, including: walking, running, and flight.

SERVER

  1. Chat Server - receives all chat messages and routes them to the intended targets.
  2. Game Server - allows players to create an avatar and then enter the map.
  3. Map Server - tracks player locations and informs clients of what is in their immediate area so the client knows what to render.

Further breaking down of components


  1. Chat Server
  • Provides simplistic chat services. Only global chat ( each message is passed to all clients ).
  • Chat services:
    • Subscribe: add given client to the list of message retrievers
    • Publish: pass the message to all subscribed clients.
    • Unsubscribe: Usually only performed when client disconnects.
  1. Game Server
  • Avatar Services:
    • Create a new persistent Avatar. ( name, stick figure color)
    • Store Avatar state into persistent storage. ( name,color,location,state)
    • Pull Avatar info from storage and use it to initialize MapServer's Avatar state.
  • Server Services:
    • Returning Map Server location.
    • Returning Map Server status ( up/down, number of connected user vs. max users)
  1. Map Server components:
  • World, responsible for:
    • Managing Avatars
    • Maintaining the State of all the World objects
    • Updating the state of Avatar given it's internal State ( control state )
    • Server simulation clock.
  • Communication, responsible for
    • Sending subsets of World State relevant to given client, retrieved from World to the clients. (including the data required for dead reckoning ).
    • Receiving control state (left,right,up,down,fly) from Client, passing it to World.

Each server is split in 3 components: Connection,Handler,Server, each component is a source and a target of events. Handler and Connection are bound to single entity. Network layer <-Data_Events-> X_Connection <-Handler_Events-> Server

Clone this wiki locally