Work In progress pages

on top of that we need to create 2 new files a gameroom.ts file and state.ts files

the state file will handle all the data

the gameroom file will handle all the callbacks

The state will be received by all players so you do not want to have all the info on the state All you want to keep in the state that is allowed to be shared globally

Example battleship game:

  • Shots fired by all players should be in the state

  • Position of the ships should not be in the state otherwise is accessible to all players

Schema is a build in Colyseus and allows to send data back and forward between Client and Server

Schema comes with some parameters {Schema, type, MapSchema, ArraySchema }

Schema -> Colyseus framework

type -> is the language which is typescrypt

MapSchema -> Basically is an object

ArraySchema -> is to use array

We start by creating a RoomState first and we need to know which players are in the room

in the case for single players used in OP Games

you need additional annotation for schema to work

class PlayerState extends Schema {

sessionID: string;


export class RoomState extends Schema {

@type({map: PlayerState})

players: MapSchema<PlayerState>

} Lets go to our GameRoom File

import { Client, Room } from "colyseus"

import {RoomState, PlayerState} from "./state"

export class GameRoom extends Room<RoomState> {


Last updated