#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 aRoom.- On connection a
Clientreceives a connection identifier (UUID). Rooms can contain a configurable number ofClients.Clients can broadcast BSON messages to the otherClients in theirRoom.Clients cannot broadcast messages until their parentRoomis full.- The
Servermaintains a stack ofRooms called theWorld. - The topmost
Roomin theWorldis theWaiting Room, that incomingClientconnections are assigned to. - When the
Waiting Roomis full,Clients are notified and messages are broadcasted within theRoom. A newWaiting Roomis pushed to theWorld's stack. Rooms have a configurable lifetime.Rooms close when all but 1 of itsClients have disconnected or its lifetime has expired.- When a
Roomis 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.
Clients 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.