Game engine for EvanMMO's typescript games.
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.
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"
}
}
pp-config.json
file at the root of your game's codebase.{
"height": 360,
"name": "My Cool Game",
"requireClickToFocus": true,
"width": 640
}
pp-dev.json
file at the root of your game's codebase.{
"port": 3000,
"renderPathing": false
}
pp-env.json
file at the root of your game's codebase.{
"newgroundsAppID": null,
"newgroundsEncryptionKey": null
}
project.ldtk
file at the root of your game's codebase, using the LDTK level editor..gitignore
file at the root of your game's codebase.node_modules
pp-dev.json
game.zip
audio
folder at the root of your game's codebase.images
folder at the root of your game's codebase.src
folder at the root of your game's codebase.src/tsconfig.json
.{
"extends": "../node_modules/pixel-pigeon/api/tsconfig.json",
"include": [
"./**/*.ts"
]
}
index.ts
file inside of the src
folder.npm install
.npm run dev
to start a dev server with hot reloading.pigeon dev
Run your game on a local dev server with hot reloading.
pigeon zip
Export a .zip folder of your game that can be uploaded to sites like itch.io and newgrounds.com.
pigeon lint
Run the linter on your game's source code.
pigeon lint:fix
Run the linter on your game's source code and automatically fix some errors.
pigeon png
Remove unneeded chunks from your game's images.
pigeon id
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"
]
}
}
D:\Code\My-Awesome-Game
.D:\Code\Pigeon-Mode-Game-Framework
.npm link
.npm ci
.npm link pixel-pigeon
.pigeon dev
. You must manually rerun this every time you make a local change to the framework, as hot reloading only listens for changes to your game's code.