A scrolling shooter, built with BeetPx. As the Dart-07 you fight on Emerald Islands, Outpost in Space, and in the interstellar Phoslar Mine
In separate consoles, run:
npm run tsc:watchnpm run syncAssets:watchnpm startIf you want to check if your TypeScript types are correct, run either
npm run tsc or npm run tsc:watch (the latter runs continuously, performing
the check on every file change).
There are two directories for assets:
assets/– here you can put anything, e.g..asepritefiles in which you edit your sprites or.ldtkfiles which you use to work on your levelspublic/– whatever goes there, is added to the distributed game bundle. You should put here the final assets, in the format they are consumed by the game.
Because of that, there are two scripts: npm run syncAssets and
npm run syncAssets:watch (the latter runs continuously, performing the sync on
every change to asset files from assets/ observed by scripts/syncAssets.js).
Only some asset types are synced the script right now:
assets/*.asepritefiles listed inside scripts/syncAssets.js are exported to PNG inpublic/with use of a hardcoded path to Aseprite executableassets/wav/*.wavare converted to FLAC inpublic/with use of affmpegexecutableassets/*.ldtkfile listed inside scripts/syncAssets.js is copied and trimmed down to JSON inpublic/assets/*.asepritefiles are NOT exported to WAV, since of the PICO-8 error in headless export in form of/Applications/PICO-8.app/Contents/MacOS/pico8 assets/sounds_main.p8 -root_path public. Moreover, that command makes the custom PICO-8 ROOT dir location reset to its defaults (which is an issue, if you use custom location for your regular PICO-8 work).
npm start runs the game in a watch mode.
Things you should be aware of:
- whenever any of source code files change, the game reloads
- whenever any of
public/asset files change, the game reloads - type checking is NOT performed here
In other words:
- run
npm run tsc:watchin parallel for a type checking - if you run
npm run syncAssets:watch, then saving changes in asset files inassets/will make the game reload
To create a game cover:
- go to
ScreenTitle - change
_gameCoverModetotrue - run the game