#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
Client
s can connect to aRoom
.- On connection a
Client
receives a connection identifier (UUID). Room
s can contain a configurable number ofClient
s.Client
s can broadcast BSON messages to the otherClient
s in theirRoom
.Client
s cannot broadcast messages until their parentRoom
is full.- The
Server
maintains a stack ofRoom
s called theWorld
. - The topmost
Room
in theWorld
is theWaiting Room
, that incomingClient
connections are assigned to. - When the
Waiting Room
is full,Client
s are notified and messages are broadcasted within theRoom
. A newWaiting Room
is pushed to theWorld
's stack. Room
s have a configurable lifetime.Room
s close when all but 1 of itsClient
s have disconnected or its lifetime has expired.- When a
Room
is closed, it is sliced out of theWorld
'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.
Client
s may broadcast a continuous stream of updates to theirRoom
, 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.