Navigation

  • Recent
  • Tags
  • Users
  • Search
  • Login
Colyseus
  • Login
  • Search
  • Recent
  • Tags
  • Users

Documentation GitHub

We're migrating to GitHub Discussions. This forum does not accept new registrations since April 6, 2023.
  1. Home
  2. dawickizer
dawickizer

dawickizer

@dawickizer

Chat Follow Unfollow
0
Reputation
3
Posts
821
Profile views
0
Followers
0
Following
Joined 18 Feb 2021, 01:03 Last Online 14 Dec 2022, 20:15

  • Profile
  • More
    • Continue chat with dawickizer
    • Flag Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups
dawickizer Follow

Posts made by dawickizer

RE: ArraySchema with Schema Objects?

@endel figured it out. I was just being dumb lol.
import { Player } from './Player'; in MyRoomState.ts
and
import { Player } from './schema/player'; in MyRoom.ts

Accidentally capitalized one of the imports

posted in Questions & Help • 18 Feb 2021, 08:08
ArraySchema with Schema Objects?

Hello All,

I am getting an error trying to implement ArraySchema. Any help would be appreciated :)

I have this Player Schema:

import { Schema, type } from '@colyseus/schema';

export class Player extends Schema {

  @type('string')
  username: string;

  @type('string')
  sessionId: string;

}

And this MyRoomState Schema which has an ArraySchema<Player>:

import { Schema, ArraySchema, type } from '@colyseus/schema';
import { Player } from './Player';

export class MyRoomState extends Schema {

  @type([Player])
  players = new ArraySchema<Player>();

}

And this is the MyRoom code that tries to push to the array of players:

import { Room, Client } from "colyseus";
import { MyRoomState } from "./schema/MyRoomState";
import { Player } from './schema/player';

export class MyRoom extends Room {
...
  onJoin(client: Client, options: any) {
    let player: Player = new Player();
    player.username = options.username;
    player.sessionId = client.sessionId;
    this.state.players.push(player);
    this.broadcast('user-joined', `${player.username} joined room: ${this.roomId} with session: ${player.sessionId}`);
  }
...
}

But I am getting this error on the server:

Error: a 'Player' was expected, but 'Player' was provided in ArraySchema#0
    at new EncodeSchemaError (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\@colyseus\schema\lib\Schema.js:48:42)
    at assertInstanceType (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\@colyseus\schema\src\Schema.ts:84:15)
    at MyRoomState.Schema.encode (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\@colyseus\schema\src\Schema.ts:598:21)
    at MyRoomState.Schema.encodeAll (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\@colyseus\schema\src\Schema.ts:650:21)
    at SchemaSerializer.getFullState (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\colyseus\src\serializer\SchemaSerializer.ts:25:41)
    at MyRoom.sendFullState (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\colyseus\src\Room.ts:468:77)
    at MyRoom._onMessage (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\colyseus\src\Room.ts:593:14)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\ws\lib\websocket.js:825:20)
    at Receiver.emit (events.js:315:20)
[ERROR] 19:52:16 Error: a 'Player' was expected, but 'Player' was provided in ArraySchema#0
Error: a 'Player' was expected, but 'Player' was provided in ArraySchema#0
    at new EncodeSchemaError (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\@colyseus\schema\lib\Schema.js:48:42)
    at assertInstanceType (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\@colyseus\schema\src\Schema.ts:84:15)
    at MyRoomState.Schema.encode (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\@colyseus\schema\src\Schema.ts:598:21)
    at SchemaSerializer.applyPatches (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\colyseus\src\serializer\SchemaSerializer.ts:47:34)
    at MyRoom.broadcastPatch (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\colyseus\src\Room.ts:433:41)
    at Timeout._onTimeout (C:\Users\dawic\Desktop\FullStack\mean\colyseus-server\node_modules\colyseus\src\Room.ts:156:52)
    at listOnTimeout (internal/timers.js:549:17)
    at processTimers (internal/timers.js:492:7)
posted in Questions & Help • 18 Feb 2021, 01:13

© 2023 Endel Dreyer