July 22, 2015 11:08 AM   Subscribe

PICO-8 is a fantasy console for making, sharing and playing tiny games and other computer programs. When you turn it on, the machine greets you with a shell for typing in Lua commands and provides simple built-in tools for creating your own cartridges.
What does that mean? PICO-8 is like an emulator for a lo-fi game console that never actually existed. With 16 colors, 128x128, 4 channels of sound, and tight data limits, PICO-8 "cartridges" can be played -- and created -- in a web browser, or on just about any home computer, and even inside maker Lexaloffle's other, more full-featured fantasy console, Voxatron.
The harsh limitations of PICO-8 are carefully chosen to be fun to work with, encourage small but expressive designs and hopefully to give PICO-8 cartridges their own particular look and feel.
A gallery of PICO-8 games is available on the "BBS." (Sorting by rating foregrounds some rather polished offerings. Try Celeste, or P.A.T. Shooter.) Source and assets for these games can be modified in browser and the results played immediately (errr, or not -- maybe they can't be or maybe I just don't see how; anyway, this can be done in-place on the desktop application).

PICO-8 is available to owners of Voxatron -- I discovered I had unknowingly bought it in a Humble Bundle, an indeterminate while ago. PICO-8 BBS games can be played for free.

Previously, in toy languages for computer games: PuzzleScript, TIS-100.
posted by grobstein (61 comments total) 69 users marked this as a favorite

Oh my.
posted by cortex at 11:25 AM on July 22, 2015

This is really cute. And seems totally workable for sketching out a quick game.
posted by naju at 11:31 AM on July 22, 2015 [1 favorite]

I wonder if the name was inspired by Sega's Pico console?
posted by fairmettle at 11:45 AM on July 22, 2015

I feel like a tiny pixelated unicorn radiating sparkles just zoomed out of my heart with a banner reading "RELEVANT TO MY INTERESTS"
posted by en forme de poire at 11:53 AM on July 22, 2015 [6 favorites]

I was aware of TIS-100 but somehow had never heard of either Voxatron or PICO-8 (despite Google suggesting they'd have been showing up on sites I read regularly off and on for years now). They look like super neat toys!
posted by sparkletone at 12:05 PM on July 22, 2015

posted by snuffleupagus at 12:31 PM on July 22, 2015

I love TIS-100. Since I've had a bunch of free time, I was disappointed that I didn't get around to submitting to their puzzle contest.

I've done almost all the Zachtronics puzzles, but I haven't touched the user puzzles. The whole thing takes be back to doing problem sets, in a good way.
posted by grobstein at 12:42 PM on July 22, 2015

I've been doing Lua with love2d the last couple of weeks so this should be interesting to look at just to see people flexin' their Lua muscles. A lot of the games are interesting/fun too. Favorite so far is Lemmtris. Celeste looks slick but too hard, can't get past the first screen.
posted by curious nu at 1:32 PM on July 22, 2015 [1 favorite]

I've always thought about making a fantasy console generator. Like, you'd define the video and sound generators and CPU in some sort of Verilog-like language and then write code against your new console. Maybe you'd have a contest to see who can use the least gates or something.

Also, Mako is worth looking at as a FORTH-based virtual console. But I don't think anything else has integrated editing tools like PICO-8.
posted by RobotVoodooPower at 2:04 PM on July 22, 2015

PICO-8 looks awesome, I've always thought it was a shame you had to have Voxatron to... what's that you say?

"PICO-8 is available to owners of Voxatron -- I discovered I had unknowingly bought it in a Humble Bundle, an indeterminate while ago."

.......hold on one moment, I have to check something.

[loads up Humble Bundle page, discovers I've had it all along too, feels like an idiot]

In my defense, I use Humble Bundles mostly as a way to add things to Steam for convenience's sake, and Voxatron isn't on Steam.

I guess the moral here is, if PICO-8 sounds like your thing, you should immediately check your HB page just in case.
posted by JHarris at 6:39 PM on July 22, 2015 [2 favorites]

I snuck in a half-hour to fuck around with it and have created a bouncing MF logo with gravity and friction. I think I'm gonna lose a lot of time to this tomorrow.
posted by cortex at 8:03 PM on July 22, 2015 [5 favorites]

Bloody Hell, 4-channel sound?! A luxury unlooked-for!

Proper intrigued.
posted by comealongpole at 9:02 PM on July 22, 2015 [1 favorite]

Completed the first row(?) of puzzles in TIS-100 last night in pretty short order. No real head-scratching. Just one where I wasn't thinking about the timing of things being moved around the nodes quite properly because it was late and I was a bit tired. Fun so far! Felt like a nice bit of tutorial for the instruction set (assuming you already understand the underlying programming concepts).

It's kind of funny to me though that somehow no matter the interface, Zachtronics games seem to boil down to using various logic mechanisms to push things around a system of boxes/tubes. Go with what you know though! I'm really intrigued by the way TIS-100 does its story-telling though with these little text fragments/notes both in the manual and in the game.

I did get around to buying Voxatron so I could download it and PICO-8 later.
posted by sparkletone at 12:31 PM on July 23, 2015 [1 favorite]

Oh, I also played a couple minutes of CELESTE, which'd been mentioned upthread. I should go back and finish that. It seemed super fun and cute if you like Meatboy-type hard platformers.

Also, the VVVVVV guy seems to be getting more and more into playing with this thing.
posted by sparkletone at 12:34 PM on July 23, 2015 [1 favorite]

It's kind of funny to me though that somehow no matter the interface, Zachtronics games seem to boil down to using various logic mechanisms to push things around a system of boxes/tubes. Go with what you know though!

It's a great formula! I thought SpaceChem was entrancing, although it got too hard for me pretty quickly. I really want to play Infinifactory but I am hoping to nab it for less than full price.
posted by grobstein at 1:04 PM on July 23, 2015

It's kind of funny to me though that somehow no matter the interface, Zachtronics games seem to boil down to using various logic mechanisms to push things around a system of boxes/tubes. Go with what you know though!

Their other game, Ironclad Tactics, doesn't really have this formula. (Maybe in a loose, kanban-ish way.) It's also a game that didn't really connect with an audience, I gather.
posted by grobstein at 1:06 PM on July 23, 2015

I am totally loving pico-8 ... made a bunch of demosceny gifs (its got a gif exporter built in!) now closing in on finishing my first game with it (a small grid rogue like, natch).
posted by jonbro at 3:40 PM on July 23, 2015 [3 favorites]

jonbro, I'd be interested in seeing it when you're done with it.
posted by JHarris at 3:51 PM on July 23, 2015

Alright, I spent some time today revisiting my "Snake game as Dune reference" idea from months ago, and have made some decent progress, so: Shai Hulud.
posted by cortex at 10:55 PM on July 23, 2015 [3 favorites]

This is embarrassing but I just took like an hour to enter Bach's Prelude No. 1 from Well-Tempered Clavier in the tracker. I guess there is probably a text shortcut for entering music??
posted by grobstein at 8:49 AM on July 24, 2015

ok, I finally finished this thing off (three days later):
delia mute in grave grotto
posted by jonbro at 9:29 PM on July 26, 2015 [4 favorites]

delia mute in grave grotto

This is neat! The directional use idea is really interesting.
posted by sparkletone at 11:03 PM on July 26, 2015

It is! I did hit an out of memory error when playing it though.
posted by JHarris at 1:41 AM on July 27, 2015

delia mute in grave grotto

It's really neat! I saw it go up last night just before bed and had to stop and mess around with it. Agreed about the the directional use gimmick, though I didn't play long enough yet to start actually strategizing effectively about it. Didn't make the connection at that moment that it was also a mefite posting, which is rad. It feels like a (comparatively) lot of folks got their first cart up yesterday; I guess folks digging in on the weekend.

I did hit an out of memory error when playing it though.

I suspect game-crashing memory leaks are going to be the in thing with a lot of PICO-8 carts. I've got one in my current dev version of Shai Hulud if you try really, really hard to go nuts flailing on a controller, because my original, memory-sensible way of managing an input buffer was doing bad things because of some misapprehension on my part of the behavior of add() and del() list management.

Of which, that's been coming along nicely; I'm gonna hack in some mode select stuff to the title screen this morning and stick another version up when that's done. I'm really, really liking the specific scope and heft of this dev environment.
posted by cortex at 4:36 AM on July 27, 2015 [1 favorite]

oh dang, sorry about those out of memory issues. It is gonna be 'fun' to track those down without any good debugging tools.
posted by jonbro at 8:14 AM on July 27, 2015

If it helps, the error seemed to occur the moment I failed a "don't kill more than three monsters" quest.
posted by JHarris at 8:28 AM on July 27, 2015 [2 favorites]

Behold, the radded-up version of Shai Hulud, now with 1P/2P support and up to four AI worms, plus the music is decent now instead of just sort of a whoopie cushion at game start.

I really feel like this is the closest I have ever come to actually traveling back in time to high-five my younger self. 11-year-old me would be thrilled by the situation.
posted by cortex at 11:26 AM on July 27, 2015 [7 favorites]

There's no native partial transparency, is there?
posted by grobstein at 1:16 PM on July 28, 2015

Nope, alpha blending is for Millenials. You can toggle the full transparency of any given palette color for some on-the-fly rendering tricks but they're either on or off, so it's all about the dither.

I suppose you could do something insane like write a transparency calculator that sums to overlapping regions of pixels and tries to find the appropriate middle-ground pixel for each or something. Would probably be horribly unreliable outside of some very, very constrained palette choices, but that'd be pretty neat to demo.

The thing I've started to wonder about today is whether it'd be possible to eke out some kind of really rough, hamfisted speech synthesis using the native sound tools. My guess is there's not enough flexibility there, and in any case I just don't know enough about the techniques involved to even assess it, but I want to see it happen anyway.
posted by cortex at 2:41 PM on July 28, 2015

Nope, alpha blending is for Millenials.

posted by en forme de poire at 11:41 PM on July 28, 2015 [2 favorites]

Someone really should be making an Attack of the Snake People cart.

For my part I started in on a second Dune game, this one called Thopter Escape, as a side-scrolling fly-em-up through a desert storm to take refuge among the Fremen. Got some nice bits put together so far: a (shrug at this art) thopter with a jet engine animation and axial tilt, a simple flight model for it, basic sand clouds, and some shaded dune terrain built out of a bunch of tiles, with a (accelerated hugely here for demo purposes) day and night cycle using palette swapping. Plus a little bit of pseudo-digitized movie art for a pre-game cutscene which, per my rambling above, has an incredibly unconvincing "speech synth" component in the cart now.

What it doesn't have yet is any kind of collision detection, which is one of the big barriers between it being a sketch and it being any sort of game; I'd been dragging my feet because converting coordinate systems always makes me balk way more than it should for some reason (write a damn utility function!) and I have known from the word go that simple rectangular box collision wasn't gonna cut it for this game anyway because of the sloping terrain, and pixel perfect collision sounds like a much bigger pain.

I sat down yesterday and worked out box collision, and that was satisfying in a just-get-that-shit-done sort of way because it reminded me that it's really not particularly difficult. But then I dumped a lot of effort into writing up a pixel collision function that was just not gelling, in a variety of ways that I'm certain include just poor coding at some point in the snaggle of comparisons and conditionals I hacked together.

So I regrouped yesterday evening and approached the problem from a different angle, setting Thopter Escape aside to write up a single-serving cart just to implement and test and debug collision functions. And at some point late in the evening, I got a generic "compare these two sprites from the sprite sheet, at x/y offset in screen pixels from each other" collision test working. It's probably not fast, it's definitely more verbose and messy than it needs to be, but motherfucker it works.

It's also close to generalizable to arbitrarily sized rectangle sections of the spritesheet for both input sprites (so you could do a hit detect of e.g. a 2x1 ship sprite against a 2x3 tentacle monster, or something), but a couple little bits need fixing up and I wasn't seeing the way through clearly last night.

So I think I'll clean that up a little bit and post it as a cart on the forums so people can play with it and maybe approach a cleaner/faster/smarter version of it as a collaborative thing if they want.

And then probably I'll teach my ornithopter to crash into a sand dune and kill the nascent Mahdi and his mum.
posted by cortex at 6:25 AM on July 29, 2015 [5 favorites]

Oh man. My current game project has collision detection for circles and squares (and decent inelastic physics!) and desperately needs arbitrary shape collisions. But I have no idea how to do that -- so I'm looking forward to your cart.
posted by grobstein at 7:40 AM on July 29, 2015 [1 favorite]

Finished it up: PICO-8 pixel-perfect collision demo.
posted by cortex at 9:28 AM on July 29, 2015 [3 favorites]

I made a junky little orbital mechanics demo this morning. Link.

Things I might do if I'm interested in it later:

* Add more bodies
* Add more gravitational interactions between bodies
* Add collision detection (stop and / or explode when you land on a planetoid!)
* Figure out why the camera sucks
* Figure out how to draw more map
* Add something resembling a game (e.g. get to point X with only Y delta v)
posted by grobstein at 8:01 AM on July 30, 2015 [1 favorite]

There's no facility for rotating a sprite, is there? Like, free rotation? Maybe I will try to build that in.

My cart is a lot less janky and now simulates 3-body physics with interactions. The CPU load is pretty light so I might add some more planets why not? (The real problem is integer overflow over distances of more than ~1 screen, but there are some workarounds.)
posted by grobstein at 1:29 PM on July 30, 2015

I added elastic collisions to my orbital mechanics demo. The planetoids crash into each other a lot. It's giving me ideas for some kind of space billiards game.
posted by grobstein at 9:45 AM on July 31, 2015

You could call it Intergalactic Bar Billiards, after a bit near the end of The Hitchhiker's Guide To The Galaxy.
posted by JHarris at 10:38 AM on July 31, 2015 [1 favorite]

Enjoy wrestling with the unweildy controls of a damaged ornithopter as you fly into a deadly desert storm, in Thopter Escape!
posted by cortex at 12:58 PM on July 31, 2015 [4 favorites]

That third level is a bear.
posted by JHarris at 2:38 PM on July 31, 2015

A couple more things:

1. A very clumsy musical toy called Piano Simulator. It simulates a piano.

2. I decided my games for this fictional console were all developed by a fictional game company in the alternate universe where this existed, so I came up with a branding strategy and made up a splash screen for Cortex Carts.
posted by cortex at 7:16 AM on August 2, 2015 [4 favorites]

That third level is a bear.

I want this to be more literally true than I suspect it is....
posted by sparkletone at 4:15 PM on August 2, 2015 [1 favorite]

Oh... Oh no...

What have I doomed myself to.
posted by sparkletone at 5:18 PM on August 2, 2015 [2 favorites]

I've got a delightfully awkward run animation that conveys the leg stretch running thing he does maybe... I sort of want to split him in half ala Simon in NES Castlevania if I've got enough room on the sprite sheet. Could do a lot more goofy limb nonsense that way, and thinking about the way I want the game to (potentially) work there's something clunky about the NES Castlevania controls that isn't too far off from what I (currently think I) want.
posted by sparkletone at 5:50 PM on August 2, 2015

(There's part of me that thinks the proper thing to do would be to make an Octodad fangame that's a vague clone of NES/MSX Metal Gear, but that feels way too ambitious for a first project.)
posted by sparkletone at 5:56 PM on August 2, 2015

posted by JHarris at 6:17 PM on August 2, 2015


The idea I had in that direction is that there's only one level (maybe a boss fight at the end if you can manage it in the constraints). You have to sneak through an approximation of the aquarium. You can't kill anyone, but you can temporarily disable marine biologists by ink squirting them.

I need to do some simpler things before I try that though. I don't know if it's possible within Pico's constraints!
posted by sparkletone at 6:33 PM on August 2, 2015 [1 favorite]

What have I doomed myself to.

Excellence, is what.

But yeah, I heartily recommend trying out some small ideas with sorta throwaway carts before tackling any specific, ambitious design idea. Get comfy with the sprite management stuff and some game loop stuff when it doesn't matter too much, then roll that learning into a new cart from scratch. I think you can get away with a lot in Pico if you scope your ideas right, but part of it is getting to know Pico enough to make that scoping doable.
posted by cortex at 6:05 AM on August 3, 2015

Ennuigi is a game about being Luigi and chain-smoking and wandering through a crumbling Mushroom Kingdom and being lost in your thoughts.
posted by cortex at 12:01 PM on August 5, 2015 [1 favorite]

Only 80s Kids Will Remember: the PICO JR hand-held video game system.
posted by cortex at 5:27 AM on August 8, 2015 [3 favorites]

That's a cute one, cortex. I like the hand-moving thing. Via twitter:

1. go here:
2. draw something with cursors+z
3. right click -> save as
4. tweet to @oinariman

It's a fun little calligraphy thing with no undo beyond clearing the sheet and some physics to the brush that simulate the drag of a brush head on paper.

Mine got a little weird.
posted by sparkletone at 10:34 AM on August 8, 2015 [3 favorites]

Oh I made a little adventure game in the style of the Adventure game.
posted by nom de poop at 7:53 PM on August 9, 2015 [5 favorites]

The 33rd Ludum Dare game jam is next weekend (21st-24th for non-compo entries). I'm doubting I'll have a chance to hole up in my apartment for the weekend and crank out... Something even if it's garbage, but it might be a good excuse for some of you others tinkering with Pico-8 to throw something together! (If I remember the rules for the solo, 48-hour version Pico-8 games should still be fine for that, but I'm not 100% sure.)
posted by sparkletone at 4:06 PM on August 11, 2015 [2 favorites]

nom de poop, that game is great overall, but the skeleton room is intensely frustrating.
posted by JHarris at 7:05 PM on August 11, 2015

Somehow completely missed that the VVVVVV guy has been putting his Pico-8 game stuff on Github.
posted by sparkletone at 6:40 AM on August 19, 2015 [1 favorite]

And he just tweeted a compiler tool for use with Pico-8? I'm not sure what it is or how it works though as I'm not on Windows. Apparently it takes a directory of .lua files and spits out a .p8 and also copies in pngs.
posted by sparkletone at 8:28 PM on August 19, 2015 [3 favorites]

Terry Cavanagh is such a treasure.
posted by en forme de poire at 10:17 PM on August 19, 2015

Dusk Child is a neat little puzzle thing built using Pico-8.
posted by sparkletone at 1:34 AM on August 20, 2015

Someone started a name-your-own-price fanzine about Pico-8 (a paper version is available). From the link:
PICO-8 Zine is a 48-page fanzine made by and for PICO-8 users.

Learn how to make a game (from the code, sprite, music point of view) and discover the history of PICO-8.

Authors : Zep (@lexaloffle), Alex Mole(@TheRealMolen ), Feliks Balzer(@Pizzamakesgames ), Karen(@bitmOO) , James (@Program_ix), Devine Lu Linvega (@aliceffekt ), Mozz (@modernmodron ) ,Terry Cavanagh (@terrycavanagh ) and Arnaud DE BOCK.
Looking forward to reading this later. They need to get cortex in on #2 though.
posted by sparkletone at 7:59 PM on August 20, 2015 [3 favorites]

« Older Taylor Swift Is Not Your Friend   |   I wonder how many times they uploaded the video to... Newer »

This thread has been archived and is closed to new comments