phaser-game-server
Version:
an express.js server that creates a socket.io connection and loads the phaser-game-server-engine
67 lines (58 loc) • 2.19 kB
Markdown
# phaser-game-server
an extensible Phaser.io authoritative game server implementation in two parts
## installation
```
npm install phaser-game-server phaser-game-server-engine --save
```
## usage
to use the `phaser-game-server` you will need to create a new npm project and define a startup scene (extending from `Phaser.Scene`) that will run your game like follows:
```typescript
import * as Phaser from "phaser";
import { Server, Socket } from "socket.io";
declare const io: Server;
export class ExampleScene extends Phaser.Scene {
preload(): void {
// load all required sprites
this.load.image('bomb', `assets/bomb_circle.png`);
}
create(): void {
io.on('connection', (socket: Socket) => {
console.debug(`player: ${socket.id} connected`);
socket.on('disconnect', () => {
console.debug(`player: ${socket.id} disconnected`);
});
// add additional socket message handling here
});
}
update(time: number, delta: number): void {
// handle game updates and send messages to client(s)
}
}
```
then you must create a class that extends the `GameServerEngine` class passing in your startup scene like follows:
```typescript
import { GameServerEngine } from "phaser-game-server-engine";
import { ExampleScene } from "./scenes/example-scene";
export class ExampleGameEngine extends GameServerEngine {
constructor() {
/**
* NOTE: you can also define an inline
* scene here instead of in a separate
* file
*/
super({scene: [ExampleScene]});
}
}
export module ExampleGameEngine {
export const game = new ExampleGameEngine().game;
}
```
after the above you should bundle your code (see included `webpack.config.cjs` in the `usage-example` project) and create a `server.config.json` file containing your bundled script references (see included example in `usage-example` project).
to start the server use the following command:
```
> npx phaser-game-server -s
```
or to start as a background task:
```
> npx phaser-game-server -s -b
```