Pixel Pigeon Documentation

Pixel Pigeon

Game engine for EvanMMO's typescript games.

funny-dancing-pigeon-bird-9ykm83a04cil1x1l

Evan wanted something specifically tailored to low spec pixel perfect games.

You may use the Template Game as a starting point, or create a repository from scratch using these instructions.

  1. Install Node.js v20.12.2.
  2. Create a package.json file at the root of your game's codebase.
{
"scripts": {
"dev": "pigeon dev",
"lint": "pigeon lint",
"lint:fix": "pigeon lint:fix",
"zip": "pigeon zip"
},
"dependencies": {
"pixel-pigeon": "evannorton/pixel-pigeon"
},
"engines": {
"npm": "10.5.0",
"node": "20.12.2"
}
}
  1. Create a pp-config.json file at the root of your game's codebase.
{
"height": 360,
"name": "My Cool Game",
"requireClickToFocus": true,
"width": 640
}
  1. Create a pp-dev.json file at the root of your game's codebase.
{
"port": 3000,
"renderPathing": false
}
  1. Create a pp-env.json file at the root of your game's codebase.
{
"newgroundsAppID": null,
"newgroundsEncryptionKey": null
}
  1. Create a project.ldtk file at the root of your game's codebase, using the LDTK level editor.
  2. Create a .gitignore file at the root of your game's codebase.
node_modules
pp-dev.json
game.zip
  1. Create an audio folder at the root of your game's codebase.
  2. Create an images folder at the root of your game's codebase.
  3. Create a src folder at the root of your game's codebase.
  4. Create src/tsconfig.json.
{
"extends": "../node_modules/pixel-pigeon/api/tsconfig.json",
"include": [
"./**/*.ts"
]
}
  1. Create an index.ts file inside of the src folder.
  2. Run npm install.
  3. Run npm run dev to start a dev server with hot reloading.
  4. Explore the documentation: https://pp.evanmmo.com/

Run your game on a local dev server with hot reloading.

Export a .zip folder of your game that can be uploaded to sites like itch.io and newgrounds.com.

Run the linter on your game's source code.

Run the linter on your game's source code and automatically fix some errors.

Remove unneeded chunks from your game's images.

Generate a unique ID for your game. Achievements will not persist across sessions if you don't have an ID. Generating a new ID will cause players to lose their achievement data.

Create an .eslintrc with the following contents to use this extension.

{
"parserOptions": {
"project": "./src/tsconfig.json"
},
"extends": [
"./node_modules/pixel-pigeon/.eslintrc"
],
"rules": {
"no-restricted-imports": [
"off"
]
}
}
  1. Follow the "getting started" instructions to create a game somewhere on your PC, e.g. D:\Code\My-Awesome-Game.
  2. Clone the engine somewhere on your PC, e.g. D:\Code\Pixel-Pigeon.
  3. Inside of the engine directory, run npm link.
  4. Inside of the game directory, run npm ci.
  5. Inside of the game directory, run npm link pixel-pigeon.
  6. You can now run your game like normal with pigeon dev. You must manually rerun this every time you make a local change to the engine, as hot reloading only listens for changes to your game's code.