Skip to content

ice3-software/orb-server

Repository files navigation

#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.

About

A realtime server written in golang.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages