# phaser-game-server

> an express.js server that creates a socket.io connection and loads the phaser-game-server-engine

Latest version **1.2.0** (published 2023-07-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install phaser-game-server
pnpm add phaser-game-server
yarn add phaser-game-server
bun add phaser-game-server
```

Provides the command `phaser-game-server`.

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2023-07-14 |
| First published | 2022-12-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 7 |
| Unpacked size | 32 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Jason Holt Smith |
| Maintainers | bicarbon8 |
| Keywords | phaser, express.js, gameengine, gameserver |

## Links

- npm: https://www.npmjs.com/package/phaser-game-server
- Repository: https://github.com/bicarbon8/phaser-game-server
- Homepage: https://github.com/bicarbon8/phaser-game-server#readme
- Issues: https://github.com/bicarbon8/phaser-game-server/issues
- npm.io page: https://npm.io/package/phaser-game-server

## Dependencies (7)

- [jsdom](https://npm.io/package/jsdom.md) ^22.1.0
- [canvas](https://npm.io/package/canvas.md) ^2.11.2
- [phaser](https://npm.io/package/phaser.md) 3.60
- [datauri](https://npm.io/package/datauri.md) ^4.1.0
- [express](https://npm.io/package/express.md) ^4.18.2
- [socket.io](https://npm.io/package/socket.io.md) ^4.7.1
- [command-line-args](https://npm.io/package/command-line-args.md) ^5.2.1

## Recent versions

- 1.2.0 (latest) — 2023-07-14
- 1.1.0 — 2022-12-21
- 1.0.1 — 2022-12-19
- 1.0.0 — 2022-12-19

## README

# 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
```

---
_Source: https://npm.io/package/phaser-game-server · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
