Pico-8 for Game Development: Why and How

In this post, we’ll discuss the retro virtual console, Pico-8, why you might be interested in it, and tips on how to get started. 

Patrons saw this post first! Check out what we’re doing at Patreon to provide exclusive opportunities to our supporters!

A typing game I prototyped for my son

Pico-8, the fantasy console

Don’t feel bad if you don’t yet know about Pico-8, even if you’ve seen some of the cool Pico-8 projects floating around Twitter or the web. Although there’s a deeply devoted user base, the application is fairly new, it has a price tag on it (currently $15 USD) so you can’t just freely download it, and it doesn’t quite let you create a viable product you’d want to sell, based on its limitations. 

That said, Pico-8 is an all-in-one console with a built-in developer kit, which makes it a fantastic way to learn or improve your game development skills. This is why the Pico-8 scene, particularly in social media, is booming. 

Pico-8, booted up and ready to go

So, how does it work?

Apart from any form of development, it’s plenty of fun simply to use Pico-8 to play games you can download from creators directly inside the application, and this is a great way to find your way around. The handy game browser lets you download and play unlimited games and demos from a community curated collection, rated by popularity, all for no additional charge. You can play your favorites, poke around in their source code, and even modify them to your heart’s content. If you’re beyond a certain age, it may remind you of the very oldest days of distributed PC games, and the way many legendary programmers got their start. 

Checking out new community creations in the game browser, like “Untitled,” by “Farty”

Once you’re ready to start a project of your own, you simply enter a command to save a new “cartridge” with a name of your choosing, and off you go. The built-in game editing tools include a code editor, sprite editing tools, and capabilities to design your own sound effects and music. It’s up to you to design and implement a game using the system’s harsh limitations: games for Pico-8 are played on a 128×128 display (which can go full-screen) in 16 colors, with the whole game not exceeding 32 kilobytes. For reference, that’s actually much larger than an Atari game, but only about a quarter of the size of many of the more modest games on the Nintendo Entertainment System. Coincidentally, supported USB controller configurations very closely match the NES d-pad/2-button layout. 

Pico-8’s built-in code editor

Upon completion, you can export your game to a nice-looking virtual cartridge complete with a screenshot from your game, you can export gameplay gifs directly from the system, and you can upload the game to the community forum where it will be displayed for users to play and discuss, or download directly within the Pico-8 game browser.

Why master Pico-8 development?

It’s fair to ask yourself why you should spend time worried about a retro game system that sort of doesn’t exist, for which your games must remain short, simple, and generally have no hope to earn you money or mainstream notoriety (don’t tell that to our friend Paul Nicholas, who’s managing both). To answer the question, it’s worth examining the strengths of Pico-8 development. 

First, Pico-8 has a great community in a discipline where there aren’t that many functional areas to go off and specialize. For the most part, Pico-8 developers are doing similar activities all the time, and it’s rarely difficult to find any issue your having being discussed on forums or Twitter. Everywhere you look, other users are eagerly discussing the craft, and if you’re new, this will bring you a long way in a very short time. 

Next, Pico-8 uses Lua, a pretty friendly scripting language that can be picked up in a relative hurry, but also has applications beyond Pico development. Many employers value proficiency in Lua, and there are even other game engines and frameworks that will allow you to port your code to a heavier duty environment, and perhaps even turn your small project into something releasable later. 

This one will seem counterintuitive, but Pico-8’s technical limitations will make you a better designer. You will do more with less, you will not get sucked into an endless cycle of never-ending asset improvement, or worse, blank page paralysis. The tools are all right in front of you and require fairly simple assets throughout. You will spend the most time focused on limiting your project’s scope and sticking to it. You’ll do creative problem-solving, optimizations, and probably reach for new levels of elegance in your design, and these skills are all directly transferrable elsewhere. 

Sprites in development for my port project, Rampage-8

Finally, Pico-8 is a great way to develop simple prototypes and small, shareable experiences. I’ve had a great time sharing my Pico projects on the web with friends and family, and have had positive experiences developing learning games for my son in situations where I didn’t think development of a full product was viable. 

Tips for getting started

So how do you get off to the best start possible? I strongly recommend you start by playing some games and seeing just how much this miniature virtual console is capable of. Find projects you like, open them in the editing tools, and poke around to see how they did what they did. 

You may initially be inclined to code the whole project in the built-in editor. Spend as much time you like this way, but know that you can–and should–move to an external editor to work with Pico-8 carts. I like opening my whole Pico directory as a project in Atom, which has a built-in package for Lua/Pico-8. This allows me to quickly check out code I’ve written in other carts, and Pico-8 seamlessly loads my external changes when I save in Atom and reload the game in Pico. 

Life is so much better in an external editor, like Atom.

Get to know Neko250’s illustrated API reference at GitHub. Great stuff. 

Pico-8 input scheme, as shown in Neko250’s excellent API reference

Make use of the keyboard shortcuts to export screenshots and gifs. They come out great and the community on Twitter loves to see them. Tag them on #screenshotSaturday with #pico8 for great results and to connect with folks doing awesome Pico-8 work of their own. 

If you’re working in iterations or run into issues, don’t hesitate to upload a simple or early version of what you’re doing to the official forum. You can update and version as desired, and in the meantime, you can gather feedback, find community answers, and get the fresh eyes you sometimes need to move forward. Sometimes changes to the API go undocumented or outright hidden, and community users will be invaluable to you when they know to warn you about a certain bug or fill you in on a certain undocumented setting that makes a fix possible for the first time. 

The official forum post for a keyboard teaching game, Letterworks, that I made for my son.

Finally, check in on some of the cool activities in the community. Tweet carts are an exceptionally interesting trend, in which a creator uploads the entire code for an animation or even a small game within the length constraints of one tweet, then they’ll include a gif of the code running. You will not BELIEVE what these developers achieve. We could do a whole series of posts where I simply go through incredible tweet carts and make the code readable, explaining what was done and some of the unique optimizations that had to be implemented to meet the requirements. “Demakes” are another great trend, in which a developer picks an existing game and “ports” it to Pico-8. I’m currently working on a port of Rampage, tentatively called “Rampage-8,” and it will almost certainly be central to a number of future posts!

An early screenshot of my port project, Rampage-8

So, what do you think? Are you doing any Pico-8 development? Are you convinced you should try it? Let me know what you think and maybe we’ll discuss it further, or pick an area of Pico-8 game creation and really dig in.  

Liked it? Take a second to support Todd Mitchell on Patreon!

Facebook Comments