# phaser-game-server-engine

> a headless phaser game engine to be run inside the phaser-game-server via jsdom

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

## Install

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

## Health

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

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

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 | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 8.3 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-engine
- 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-engine

## Dependencies (2)

- [phaser](https://npm.io/package/phaser.md) ^3.60.0
- [socket.io](https://npm.io/package/socket.io.md) ^4.7.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-engine
a headless Phaser.io game server class to be extended by one's own game server code

## installation
```
npm install phaser-game-server phaser-game-server-engine --save
```

## usage
to use the `phaser-game-server-engine` 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],
            physics: {
                default: 'arcade',
                arcade: {
                    debug: false,
                    gravity: { x: 0, y: 0 },
                }
            }
        });
    }
}

export module ExampleGameEngine {
    export const game = new ExampleGameEngine().game;
}
```
> NOTE: the object passed to the `super` call above can contain any valid property from `Phaser.Types.Core.GameConfig` except: `type`, `scale`, `autoFocus`, `width`, or `height`.

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-engine · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
