I’m going to use PICO-8, which its creator, Joseph “Zep” White, calls a ‘fantasy console’, but really it’s like an indie-fied emulator of the computers I grew up with, like the BBC B. When you start it, you’re presented with a 128 by 128 pixel display glitching into life, this little do-do-do-do! jingle, and a command prompt.
Everything you need to make games is right there: a mini Lua code editor, sprite and map editors, and sound and music editors. It’s reactive, instant to test to see if things work, and generally delightful. And the stuff people have made in it is extraordinary. Little short-form games: colourful, fun, immediate, varied. Type SPLORE into the command prompt and this little browser for games posted to the PICO-8 forum comes up. Since no game, including its graphics, is bigger than a 65K text file, you’re playing them pretty much instantly. It’s lovely.
This is just the first article in a series.
My daughters and nephew are all fans of the PocketC.H.I.P., the little handheld console that brings the PICO-8 fantasy console into reality. There’s a lot more info to be found on both it and PICO-8. Here are a few places to start looking:
* http://pico-8.wikia.com/wiki/PocketChip
* https://getchip.com
* http://www.lexaloffle.com/pico-8.php
* https://github.com/IkerGarcia/PocketInstaller
* https://sectordub.itch.io/pico-8-fanzine-1
I did a few simple games with the Pico-8. It’s okay, but the limits of code size and complexity are a big barrier to casual programmers. For example, getting the collision detection to work well, applying gravity in a 2D platformer – these are all non-trivial and not well explained in the docs that come with the product. You need to grok a lot of the examples, and there’s a lot of subtle ways to achieve the same thing. Where-as, if you pick up something like Unity and use the 2D engine, the learning curve is as steep in other ways, but a lot of this physics stuff is done for you. I’d love to see the authors add in more helpers to make the code more compact.
I’m pretty sure the target audience are those folks who did this on 8-bit and 16-bit machines 30 years ago. In fact the only thing that’s kept me from looking in to it (aside from available time) is that it’s Lua and not some sort of fantasy “assembly programmer’s dream CPU.”
Lua is simple enough to learn in an afternoon. Really, that shouldn’t stop you.
The target audience is both that, and the new generation of kids that desperately want to write games, but who need to start somewhere simple. That’s where Pico-8 falls down at the moment.
I guess I had always assumed that the PICO-8 wasn’t about playing games as much as it was about making games. There are those out there who perceive the limitations of old machines as a challenge or a puzzle to be solved, and enjoy working through those limitations. There are harsh limitations on the PICO-8 in order to recreate that feeling.
Or at least that’s what I make of it.
And that’s literally just some code I had lying around… like possibly the simplest way to do this kind of thing. What would be a lot nicer is if you could have a unique ID for each Sprite or Tile, then when there’s a collision you could get either an event “Collides(id1, id2)” which tells you what collided, or you could set flags on a sprite as well as a tile and then actually just have a function like “spritecollides(id, x, y, flag)”, which looks at the sprite and works out i the visible portion collided with a tile or sprite with that specific flag.
That way, you can go on making you games with complicated logic, but kids have a chance of understanding the mechanics.
I don’t know. Its cool for what it is. I’ve written that collision detection routine several times for tile based systems. Part of what makes it what it is, is that it has to be done. It requires more work, but allows for more opportunities to think about how to build basic low level things like that.
However, despite that, I’m not a fan of the pico games I’ve played. Any suggestions from anyone on what a good one is?