Roadmap towards Colyseus v1.0
Colyseus is an independent open-source project that has been around since 2015. The project has been used in production by several indies and companies and has been battle-tested in many different scenarios. The project is currently stable, but there are still many features and improvements that we’d like to add.
If you’d like to support the project, please consider sponsoring my work.
- General improvements:
- Add request/response model to rooms (#331)
- Introduce the concept of “low priority” and “high priority” messages. Drop “low priority” messages if clients are under backpressure.
- Introduce “version check” to allow native SDKs to communicate with newer versions of the server
- Database:
- Introduce an official database recommendation tool. The recommendation should be used on the documentation, official examples, and initial template project. (See Database)
- Matchmaking:
- SQL Driver - Provide a SQL driver as alternative to
@colyseus/redis-driver
(should support SQLite / PostgreSQL, possibly on top of Kysely) - Improve filtering and sorting options
- New “queue” matchmaking type:
- A queue would keep more clients than needed before starting a match
- User specifies logic that combines clients into a new room
- Reserve seats for selected clients and redirect them to the newly created room
- SQL Driver - Provide a SQL driver as alternative to
- State Sync:
@colyseus/schema
- Bidirectional schema instances:- Allow to send schema instance updates from client to server
- Wild idea: support RPC calls via schema instances (?)
- Client-side prediction:
- Allow to specify client-side prediction techniques on the client-side (?)
- Decouple
@colyseus/schema
from the core:- Allow to use other serialization methods for the state
- Yjs (CRDT) connection provider via Colyseus Rooms.
- Full-stack + TypeScript Improvements:
- Allow to specify
client.auth
andclient.userData
types on the server-side only once - Allow to infer types for room message and payload definitions from client-side (
room.send()
) - Allow to infer http routes and request/response body types from client-side (
client.http.*
)
- Allow to specify
- WebTransport:
- Improve and stabilize WebTransport support
- More SDKs:
- Fork and support a Godot SDK (gsioteam/godot-colyseus)
Last updated on