PicoDeploy
Deploy Pico-8 Carts as Standalone Applications on Desktop 🖥️(Electron) and Mobile 📱(Ionic) 📦👾
Install / Use
npx skills add torch2424/picoDeployInstalls into whichever agent you are using.
README
picoDeploy
👾 Deploy Pico-8 Games Anywhere and Everywhere! 👾

Example .gifs show the jelpi demo cart. Included cart is different.
Table Of Contents 📚
- Introduction
- Features
- Getting Started
- Key Gotchas and Caveats
- Keyboard Controls
- Project Layout
- Usage
- Example Projects
- Building and Deploying for Web
- Building and Deploying for Desktop
- Building and Deploying for Android
- Building and Deploying for iOS
- Adding Support for Game Distribution Platforms
- Parent Projects and Dependencies
- Contributing
- LICENSE
Introduction
This project started because I found pico-8 and started building a small hackathon-style game, called Get Dis Money, for a local meetup called Code && Coffee, Long Beach. I was used to building games in Unity, but wanted to try something less serious and more fun. After showing the game to some friends, and writing more and more code for the game. I thought, what if I actually tried to write a deployable version of the game? Then I came across this article by josefnpat, and figured why not. I have been developing Javascript (Node.js) for about 4 years, and have built plenty of Electron apps in the past. However, I also wanted to build for mobile, (Android and iOS), and at the time pico-8 only deployed to web. I thought I'd take it even further, and commit the ultimate web developer sin 😈. I have been using Ionic since when it was still in beta (before v1), and thought, why not just put Ionic inside of electron? I mean this whole project was all for fun, why not make the write-it-once-and-literally-deploy-anywhere wrapper for pico-8? And that is how we got picoDeploy.
Features
- 🖥️ Deploy to Windows, Mac, and Linux using Electron and Electron Builder
- 📱 Deploy to Android, iOS, and Web with all listed features using Ionic
- 🚀 Performant mobile builds using Crosswalk
- 💾 Save file (Indexedb) listener, with Pub / Sub functionality to perform actions when the save file is changed
- 🎮 Mobile on screen gamepad using Google Material Icons
- 🎮 Usb Gamepad / Xbox 360 controller / PS3 controller support using a modified pico8gamepad
- 💦 Splashscreen / Video to hide the Pico 8 boot screen (Not to be mistaken with Ionic mobile app splash screen)
- 📺 Background image or video to be displayed behind your game
- ⚙️ Settings screen, with support for turning sound on / off, fullscreen for desktop, customizable gamepad color, customizable background color (if not background media), Stretch the game to full resolution, and dropdown credits.
- 🛠️ Build System to support multiple
picoDeployConfig.jsonfiles, and copied for the correct build target set in ENV variables. - ♻️ Compatible with libraries like greenworks and Cordova Plugin Play Games Services. That can be plugged into a commented PlatformSdkWrapper service, which taps into the Save file listener I mentioned above
P.S I totally started this project before version 0.1.11 which included binary exports for Windows, Mac, and Linux. However, this project still offers a great amount of functionality for deploying and building games, that binary exports do not offer currently.
Getting Started
-
Download this project as a zip, or fork it. This is a base project that yours project will be based upon.
-
Run
npm installin the base directory of the project -
Run
npm run ionic:serve. And open localhost:8100 if it does not open it for you. -
If a game starts running in your browser, then you are ready to go. Enjoy! 😊
Key Gotchas and Caveats
-
Minimum android version is 7.1.1 (sdk version 25). This is due to the Web Audio API and how around Android version 7, android replaced their webview with Mobile Chrome. Games can technically be played on Android versions below this, but there will be a weird Audio Jitter / Crackle. If you are skeptical about any device, visit the new and awesome playpico on the device to test the audio. Please feel free to click the previous link to join the discussion, or open an issue if you feel you may have a solution. I can confirm on my Pixel 2, and Nexus 5X the audio was fine. But on my roomate's LG G4, the audio jitters 😞.
-
Adding support for Steamworks using greenworks will have many missing steam features, and can be quite finnicky. For instance, the Steam UI cannot be opened, even with mentioned hacks within the projects issues. However, most functionality such as logging into steam, and launching achievements should work.
Keyboard Controls

Additional keyboard (⌨️) commands are:
ofor settings (options)pfor pauseCMD + qto quit
Project Layout
cart/- Wherecart.jsfiles are stored.config/- WherepicoDeployConfig.whatever.jsonfiles are placed, and thecopyConfig.jsfile lives to copypicoDeployConfig.jsonto the base of the project to be used by the application.resources/- Where app icons for Electron Builder and Ionic are storedsrc/- Where the source code for the Ionic application lives.src/app- The main app componentsrc/assets- Where asstets for the application lives. Please take note ofsrc/assets/picomediawhere the splashscreen and things are storedsrc/components- Where The application components are stored. Such as the cart, and gamepad componentssrc/pages- Where the Home and Settings page components are storedsrc/providers- Where the services are stored. Such as the Save file listener provider, and the Settings provider.config.xml- Ionic / Cordova Config for building the applicationionic-android-deploy.sh- Script for easing the proccess of building signed android apks to upload to the Google Play Store.main.js- Electron Main process Javascript file. See Electron Quick Startpackage.json- Project file to define scripts and dependencies
Usage
To add your own carts
- open pico-8
- load your cart 🛒
- export your cart with
CART_NAME.html
Or just watch these steps in the gif below:

- Copy the
.jsfile that was export intopicoDeploy/cart. - edit the
picoDeployConfig.jsonfile to include your cart instead of the included one. - Run
npm run ionic:serve, and ensure that your cart is now the one being loaded!
Npm Scripts / CLI
All of the scripts should be prepended with npm run [script name], for instance npm run ionic:serve
The main scripts you will be using are the ionic:x, electron:x, and android:x scripts.
The android scripts will require you to set up your android environment, outlined in Building and Deploying for Android.
clean- The default ionic project clean scriptlint- The default ionic project lint scriptcart- copies to the files within thecart/folder to the builtwww/cartfolderconfig- runs thecopyConfig.jsscript, to copy the appropriatepicoDeployConfig.jsonaccording to the ENV variablesbuild- runs the default ionic project build scriptserve- runs the default ionic project build scriptionic:build- runs thecart,config, andbuildscripts to build the complete picoDeploy appionic:serve- runs thecart,config, andbuildscripts to serve / livereload the complete picoDeploy app for developmentandroid:run- exports Mobile ENV Variables, runscart, andconfig, and then runsionic cordova run android --prodto preview a build of the app on a connected android device, or android emulatorandroid:serve- Same functionality asionic:serve, but runs on an android device likeandroid:runandroid:build- Similar toandroid:run, but builds an unsigned apk to be distributed.android:deploy- similar toandroid:build, but uses (and requires) a keystore to zipalign and sign built apks, by running theionic-android-deplpoy.shscriptelectron:serve- Runsionic:build, and runs the built files inside an electron container- `electron:serv
Related Skills
Writing Hookify Rules
140.7kThis skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
agent-tui
106.4kMain Agents: Do NOT use this skill directly. If you need to test the TUI, invoke the `tui_tester` subagent. Drive terminal UI (TUI) applications programmatically for testing, automation, and inspection
review-duplication
106.4kUse this skill during code reviews to proactively investigate the codebase for duplicated functionality, reinvented wheels, or failure to reuse existing project best practices and shared utilities.
ai-agent-specialist
40.5kCursor rules for TypeScript, React, Node.js, clean architecture, testing, and WHY-oriented engineering guidance.
