README
Colyseus is an Authoritative Multiplayer Framework for Node.js, with SDKs
available for all major platforms and engines.
Client SDKs
The project focuses on providing synchronizable data structures for realtime and
turn-based games, matchmaking, and ease of usage both on the server-side and
client-side.
The mission of the framework is to be a standard netcode & matchmaking solution
for any kind of project you can think of!
Why developers choose Colyseus:
- ⚡️ Real-time state sync that just works → Define your state on the server and it automatically synchronizes to all clients, delta-compressed and binary-encoded.
- ⚔️ Built-in matchmaking → Room-based architecture with filtering, queuing, and reconnection support out of the box.
- 📈 Scalable → Go from 10 to 10,000+ CCU by scaling vertically or horizontally with Redis and load balancers.
- 🛡️ Cheat-proof by design → Authoritative server model ensures game logic runs on the server, not the client.
- 🛠️ Use the tools you already know → Built on Node.js and TypeScript with a simple, familiar API on both server and client.
- 💙 Free forever → MIT licensed, even for commercial games.
See public roadmap for version 1.0.
🚀 Quickstart
Set up your own Colyseus server project for your game using npm create colyseus-app@latest:
npm create colyseus-app@latest ./my-server
cd my-server
npm start
Sponsors
The sustainability of the project relies on Colyseus Cloud subscriptions and sponsorships. If you are not using Colyseus Cloud, please consider sponsoring the project 💖
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Extension points exported contracts — how you extend this code
Client (Interface)
(no doc) [10 implementers]
packages/core/src/Transport.ts
ITransport (Interface)
(no doc) [6 implementers]
packages/sdk/src/transport/ITransport.ts
GameMetadata (Interface)
(no doc)
bundles/colyseus/test/MetadataAPI.test.ts
ConfigOptions (Interface)
(no doc)
packages/tools/src/index.ts
MyState (Interface)
(no doc)
packages/shared-types/test/types.test.ts
AuthSettings (Interface)
(no doc)
packages/auth/src/auth.ts
WebSocketData (Interface)
(no doc)
packages/transport/bun-websockets/src/BunWebSockets.ts
MonitorOptions (Interface)
(no doc)
packages/monitor/src-backend/index.ts
Core symbols most depended-on inside this repo
joinOrCreate
called by 241
packages/sdk/src/Client.ts
timeout
called by 170
bundles/colyseus/test/utils/index.ts
push
called by 151
packages/playground/src/utils/LimitedArray.ts
send
called by 134
packages/core/src/Transport.ts
get
called by 132
packages/core/src/presence/Presence.ts
resolve
called by 96
packages/core/src/utils/Utils.ts
leave
called by 94
packages/core/src/Transport.ts
on
called by 89
packages/sdk/src/core/nanoevents.ts
Shape
Method
695
Function
483
Class
275
Interface
74
Enum
2
Modules by API surface
bundles/colyseus/test/utils/index.ts64 symbols
packages/core/src/Room.ts56 symbols
packages/sdk/src/debug.ts55 symbols
packages/core/src/MatchMaker.ts46 symbols
bundles/colyseus/test/MetadataAPI.test.ts46 symbols
bundles/colyseus/test/DevMode.test.ts42 symbols
packages/core/src/presence/LocalPresence.ts37 symbols
packages/presence/redis-presence/src/index.ts36 symbols
packages/core/src/presence/Presence.ts35 symbols
packages/core/src/errors/RoomExceptions.ts31 symbols
packages/shared-types/test/types.test.ts24 symbols
packages/sdk/src/Room.ts22 symbols
Dependencies from manifests, versioned
@colyseus/authworkspace:^ · 1×
@colyseus/better-callworkspace:^ · 1×
@colyseus/bun-websocketsworkspace:^ · 1×
@colyseus/coreworkspace:^ · 1×
@colyseus/drizzle-driverworkspace:^ · 1×
@colyseus/greeting-bannerworkspace:^ · 1×
@colyseus/h3-transportworkspace:^ · 1×
@colyseus/msgpackr* · 1×
@colyseus/redis-driverworkspace:^ · 1×
@colyseus/redis-presenceworkspace:^ · 1×
Datastores touched
RoomCacheCollection · 1 repos
(mongodb)Database · 1 repos
colyseusDatabase · 1 repos
postgresDatabase · 1 repos