Tiny Game Engines

Fantasy Consoles

A fantasy console is an application that emulates a fictional video game console. It limits game developers to hardware restrictions for a gaming console that doesn’t physically exist. Developers of these fantasy console programs can determine their console’s specifications and hardware limitations. Any game developer wishing to create a game that can be played on a fantasy console must adhere to the limitations imposed by it. As of 2021, there were more than 40 fantasy consoles available with PICO-8 and TIC-80 leading the pack.

“A fantasy console is like a regular console, but without the inconvenience of actual hardware. PICO-8 has everything else that makes a console a console: machine specifications and display format, development tools, design culture, distribution platform, community and playership. It is similar to a retro game emulator, but for a machine that never existed.” — zep (Joseph White), PICO-8 creator

More Than a Console

Not only can you play games on a fantasy console, but you can also create them. Most fantasy consoles include a code editor, sprite editor to create pixel graphics, tile map editor to build worlds and levels, and even a sound or music editor to create audio feedback and smashing chiptune soundtracks! So the fantasy console is much more than just an emulator for a fictional hardware console. It’s an all-in-one game engine to develop fun, retro-looking, tiny games.

PICO-8 Limitations Spawn Creativity

PICO-8, created by Joseph White, known online as zep, has purposeful game development limitations to foster creativity. This tiny game engine restricts the game screen to a 128 x 128 pixel resolution. Additionally, PICO-8 game developers are limited to a color palette consisting of just 16 colors. As for sound, you can create audio feedback and music, but are limited to just 4 audio channels and 8 waveforms total.

Like most fantasy consoles, PICO-8 uses the Lua programming language in its code editor, but only allows Lua. One of the most restrictive limitations among tiny game engines is PICO-8’s token limit. A token is considered a Lua element — pieces of code. PICO-8 only allows game developers to code games with a limit of 8192 tokens.

The platformer game below, Karel’s Tennis Balls, was developed with PICO-8. The game within PICO-8’s development tools, including sprites, the tile map, and some of the Lua code, are shown on the left. On the right is a sample of Karel’s Tennis Balls gameplay within PICO-8.

undefined
Developing in PICO-8’s sprite, tile map, and code editor
undefined
Playing Karel’s Tennis Balls Game in PICO-8

Playing PICO-8 Games

Once a game is developed with PICO-8, it can be shared using the fantasy console’s unique game cartridge images. Games can be exported as PNG image files that contain the entire game. For example, below on the right is the PICO-8 cartridge for Karel’s Tennis Balls. You can actually right-click and save the cartridge image file and open it within PICO-8. Then you can play the game, review or change the code, and customize it however you like.

undefined
Playing PICO-8 game on retro handheld device
undefined
Karel’s Tennis Balls Game PICO-8 Cartridge

PICO-8 games can also be exported as web files to embed on web pages and play within a browser. Lastly, because PICO-8 can be installed on Raspberry Pi and Linux operating systems, several retro handheld gaming devices also support PICO-8 games, as shown with Karel’s Tennis Balls playing on a handheld above on the left.

Other Tiny Game Engines

While PICO-8 might be too restrictive for your game development needs, you have other tiny game engine options. Check out this curated list of fantasy consoles. There are programs to develop with Lua, JavaScript, Python, C, and other programming languages. Some are free to use while others have a paid option. Let’s take a quick look at two more popular fantasy consoles on this list.

TIC-80

TIC-80 is similar to PICO-8, but with fewer limitations. Game developers have a larger display, 240 x 136 pixel resolutions, to work with, a customizable color palette, and no token limits. While you can code with Lua in TIC-80, you can also use JavaScript. A TIC-80 exported game is limited to just 64 KB in size, but that’s twice the cartridge size limit of PICO-8 games. One fun thing to try when developing games in TIC-80, that can’t be done in PICO-8, is the use of mouse controls in games.

Bitsy

Developed by Adam Le Doux, Bitsy is a unique tiny game engine. This fantasy console lends itself to story-telling or role-playing games (RPGs). Players navigate “rooms” or spaces while interacting with characters, items, and portals. Bitsy games only allow for 3 colors per room. There aren’t any camera controls, so side-scrolling games can’t be built. Game developers are also limited to 2-frame animations.

Bitsy games can be exported as web files that can be embedded into web pages or shared with others to play in a browser. Like PICO-8, there’s a large community of Bitsy game designers and developers who enjoy creating tiny worlds. It was recently featured in an article of The Verge and has gained a strong following.

undefined
Karel’s Missing Tennis Balls Bitsy gameplay

Unlock Your Creativity

Games developed with fantasy consoles may use low-resolution graphics and computer-beeping audio, but they can be fun to play and even more fun to build. Fantasy consoles aren’t just emulators for a fictional hardware console. They’re powerful game engines that let you unleash your imagination and force you to become a more creative game developer. You may encounter problems during game development that are unique to the fantasy console’s limitations. How you tackle those problems and solve them takes your creative mind to a new level. As actress Debbie Allen once said, “But out of limitations comes creativity.”


Resources

undefined
Matt Arnold — CodeHS Curriculum Developer

Matt taught K12 math students in special education and later elementary/middle school computer science. With a master’s degree in educational technology and curriculum, Matt’s developed CS and electrical engineering curricula for K12 and post-secondary education. He led a team of Unity developers responsible for designing and building virtual simulations and learning games at the collegiate level prior to joining CodeHS. In his spare time, Matt enjoys designing and coding video games, web sites, and digital art.