I backed the CHIP Kickstarter about a year ago, and as the shipment date for my pledge level approaches (late May, and they say they are on time), an update was posted indicating that a CHIP specific version of PICO-8 will be included with PocketCHIP. I had never heard of PICO-8, but once I knew what it was, I immediately went over and purchased a copy though their Humble store.
PICO-8 is described on the Lexaloffle website as a “Fantasy Console”, and is essentially a self-contained “emulator” for a console that never actually existed. The console is designed with extremely limited hardware/software specifications, intended to mimic a classic 8-bit environment. Developers can create custom cartridges that can be shared with other users or played on the web through the Lexaloffle forums. Each cartridge is limited to 32k, contains up to 128 8×8 pixel sprites, and a 128×32 cell world map.
PICO-8 includes a complete development environment within the program, including code editor, sprite editor, map maker, sound effects editor, and music track editor. With the full version (not the web player) you can switch over to the code and resources for any cartridge you are playing and begin editing. You can start from scratch and create your own cartridge entirely, or modify an existing game to change it in any way you wish.
Code is based on the LUA syntax, without the LUA libraries. There is a provided API that lets you play sound, display sprites, and draw maps in addition to the standard pixel and shape-oriented drawing tools.
I spent a little time getting familiar with the PICO-8 editors, and was able to put together the (admittedly terrible!) little shell of a platform game below in about 30 minutes. I found a character sprite at http://untamed.wild-refuge.net/rmxpresources.php?characters and resized it to create four 16×24 pixel animations for my platform character. I drew some quick dirt/grass blocks and put together a couple of platforms in the map editor.
It has been ages since I used LUA (I wrote a couple of World of Warcraft mods back during the Burning Crusade/Wrath of the Lich King era), but getting back into it wasn’t a problem, especially when all you really need to worry about is the basic syntax. There are only a handful of API items to worry about, and they are all very straightforward.
It actually reminds me a bit of writing for XNA from a structural standpoint. The console calls the _INIT method when the game starts, and then calls _UPDATE and _DRAW with a target framerate of 30 times per second.
The console includes the ability to export your games as an HTML and JS library to share (what I did below) and cartridges can be shared on the author’s forums page. These can be played without the console straight from the web, or downloaded, saved, and edited through the full version of the console using the “SPLORE” command.
So far, it has been a blast playing around in PICO-8. I’ve got a number of ideas for games I might like to create for the console, and given the inherit limitations of the system none of them seem too daunting. The existing list of cartridges is already pretty impressive, and include recreations of classic games as well as a host of new ideas.
Below is the quick platform demo I put together. Nothing more than walking, jumping, and falling (and even those are a little glitchy… I didn’t spend too long on this!) Use the arrow keys to move and the Z key to jump.