Hub

Multiplayer Game Server for Node.js

Thumb_header

Brief

Multiplayer Game Server for Node.js

Description

colyseus

Multiplayer Game Server for Node.js. View documentation.

Join the chat at https://gitter.im/gamestdio/colyseus
Donate
Build Status
OpenCollective
OpenCollective

Read the blog post to understand the motivation behind this project.

Features / Characteristics

  • WebSocket-based communication
  • Binary delta compressed state (through msgpack / fossil-delta-js)
  • Match-making
  • Custom room handlers
  • Lag compensation (using timeframe, a Timeline implementation) - Not automatic. You should apply the technique as you need, in the client and/or the server.

Official client integration

Community client integration

Usage examples


Room handler API

Room properties

  • clock - A ClockTimer instance
  • timeline - A Timeline instance (see useTimeline)
  • clients - Array of connected clients

Abstract methods

Room handlers must implement all these methods.

  • onJoin (client) - When a client joins the room
  • onLeave (client) - When a client leaves the room
  • onMessage (client, data) - When a client send a message
  • onDispose () - Cleanup callback, called after there's no more clients on the room

Methods:

Room handlers have these methods available.

  • setState( object ) - Set the current state to be broadcasted / patched.
  • setSimulationInterval( callback[, milliseconds=16.6] ) - (Optional) Create the simulation interval that will change the state of the game. Default simulation interval: 16.6ms (60fps)
  • setPatchRate( milliseconds ) - Set frequency the patched state should be sent to all clients. Default is 50ms (20fps).
  • useTimeline([ maxSnapshots=10 ]) - (Optional) Keep state history between broadcatesd patches.
  • send( client, data ) - Send data to a particular client.
  • lock() - Lock the room to new clients.
  • unlock() - Unlock the room to new clients.
  • broadcast( data ) - Send data to all connected clients.
  • disconnect() - Disconnect all clients then dispose.

Contributing

We encourage you to contribute to Colyseus! Please check out the Contributing
guide
for guidelines about how to proceed. Join us!

Everyone interacting in Colyseus and its sub-projects' codebases, issue trackers
and chat rooms is expected to follow the code of conduct.

License

MIT

Comments

Sign up for our newsletter to keep up with the latest developments, releases and updates for Cocos2d-x.