Skip to content

Latest commit

 

History

History
34 lines (26 loc) · 1.81 KB

README.md

File metadata and controls

34 lines (26 loc) · 1.81 KB

#Orb Server

Under heavy development

###What will the Orb Server be?

  • A scalable TCP/UDP server
  • Perfect for realtime backends (e.g. simple multiplayer games)
  • Support for grouping, aggregating and querying connected clients
  • Uses RPC to achieve distribution
  • Authentication and authorization

###First Release

######Functional Requirements

  • Clients can connect to a Room.
  • On connection a Client receives a connection identifier (UUID).
  • Rooms can contain a configurable number of Clients.
  • Clients can broadcast BSON messages to the other Clients in their Room.
  • Clients cannot broadcast messages until their parent Room is full.
  • The Server maintains a stack of Rooms called the World.
  • The topmost Room in the World is the Waiting Room, that incoming Client connections are assigned to.
  • When the Waiting Room is full, Clients are notified and messages are broadcasted within the Room. A new Waiting Room is pushed to the World's stack.
  • Rooms have a configurable lifetime.
  • Rooms close when all but 1 of its Clients have disconnected or its lifetime has expired.
  • When a Room is closed, it is sliced out of the World's stack, stops broadcasting message and notifies its remaining clients.

######Non-Functional Requirements

  • Distributed: use RPC to maintain a shared world that can run across n nodes.
  • Benchmarking: messages need to be broadcasted at blazing speed. Clients may broadcast a continuous stream of updates to their Room, for example, to update their player's position on-screen ever few milliseconds.
  • Load testing: see this awesome talk for performance monitoring ideas.
  • By the end of the first release, I want to have determined acceptable application response times and other performance mertics.