
PICO-8 is a software-based gaming console for making, sharing, and playing small games with a retro aesthetic. It emulates the look and feel of 8-bit consoles, providing limited color palettes, screen resolutions, and memory constraints.
Loading summary
A
Pico 8 is a software based gaming console for making, sharing and playing small games with a retro aesthetic. It emulates the look and feel of 8 bit consoles, providing limited color palettes, screen resolutions and memory constraints. The Pico8 dev environment uses LUA and is focused on being accessible to developers while offering depth for complex projects. Johan Peitz is a games industry veteran and developer extraordinaire, having created dozens of games across many platforms. He's an expert in Pico 8 development and joins the podcast to talk about creating games for the console. Joe Nash is a developer, educator and award winning community builder who has worked at companies including GitHub, Twilio, Unity and PayPal. Joe got his start in software development by creating mods and running servers for Garry's mod, and game development remains his favorite way to experience and explore new technologies and concepts.
B
Welcome to the show, Johan. How you doing?
C
Thanks Joe. I'm really good. So happy to be here.
B
I followed your work for a long time as a big Pico 8 fan and as we'll cover, you are one of the more prolific Pico8 devs. I think I counted yesterday and I think it was seven or eight of the 30 Pico 8 games on Steam are yours. So I'm very excited to have you on the show. But before we start talking about Pico 8 and Pico 8 development, I wanted to One thing I didn't know is what was your journey into game development and how did you come to become like a Pico 8 dev in particular?
C
Well, I think that's two very different things. I started out with board games when I was a kid, a huge fan of everything that had dice in it basically. Then one summer, I guess I was 10 or something, a friend of mine had a Commodore 128 at home and we shut off all the light, closed the windows, closed the doors and we spent an entire summer just learning everything about it, how it worked, and I guess we weren't too good at it. He had a cousin who knew way more than we did, but definitely my first intro into computers and from then I just realized all the things that I wanted to do with board games I could now do or I couldn't do it, but I could at least attempt to do it inside a computer instead. And basically I've been stuck since. So that was, I don't know, 35 years ago or something. So it's been a while. That's awesome. But I think what I actually liked with Pico 8 was that it harkens back to that Day, right? You just launch it, there's a prompt, you can just start typing. Everything is testable from the get go. You don't need any specific setups or plugins or everything, it's just there. And for me it's also similar. I think if I think back, I also used Amos quite a lot, which was a game programming package for the Amiga. I think it was for the ST as well. Maybe also this integrated package where you could just do everything without touching anything else. I think Flash was really close to that as well with ActionScript. And I think all those environments are things I really, really, really enjoyed when I was using it. And Pquate was just the best of both worlds, right? It's the old stuff and then also this really nice environment where you have all the tools that you're disposed of without having to do build steps or convert things back and forth. You can just jump in and build stuff.
B
Yeah, that makes a lot of sense. And especially, I guess one of the elements of nostalgia that you hear people talk about with the retro consoles and with like the Commodore and the Amigas is the experience of booting up into it, being able to like get going with making stuff straight away and there being nothing in between. So that drawing you back to Pico 8 makes a lot of sense. So, you know, you mentioned that intro to the Commodore being 35 years ago. I know you've been in the game industry a long time. When did you come to find Pico and start using Pico 8? And we, I imagine you were still working in the industry before that.
C
I think that must have been, oh, I don't know, six, seven years ago or something. I think. I wasn't one of the early adopters by any means. I like to jump in when things are a bit more stable and I don't need to be the first test person for that stuff, but I was still working in the industry. Huge issues, not issues, but there were always, you know, these non compete clauses when I was. If I had a proper job, so to speak, could I actually do this? Could I do a game jam, who owned the code, I wrote, et cetera and all that stuff. But I was so fun to work with. So I ignored that stuff most of the time and nobody came knocking on my door, so I guess it was fine.
B
Nice. Awesome. So we've spoken about Pico 8 a bit and alluded to what it is, but just for the listeners who aren't aware, can you explain briefly what pico8 is?
C
I think it's best described as it's not a game engine either. Right. It's a console. It's the Commodore 64 basically that you can boot up straight at the prompt. It has all the tools you need to make a nice looking game. What makes it different from similar packages I think is the restrictions. Right? There's, it's very harsh on what you can display, how much CPU time you have, how much code you can put it in, how much graphics you have. There's only 128 times 128 in terms of sprite space, etc. So very often you run into these restrictions and I guess to a newcomer that can seem as a turn off to some extent. Okay, but I want to do these big things and now I can't do my portraits or write my long procedural code or whatever it is. But I always thought of Pico 8 as almost like a game like experience when you develop for it because as you learn more about the program, you also know about how to kind of bend the rules slightly. And it turns out those seemingly super harsh restrictions, they aren't really that harsh because you can kind of, okay, I can use the sprite memory for my music instead, or if I write this piece of code, I can start compressing my tile map or something, right? And slowly it becomes a much, much bigger environment than you first thought. But it's only available once you kind of had that epiphany that how it actually works on the inside. And constantly making these trade offs between should I use this space for graphics, should I use this space for code or whatever that almost becomes like a puzzle game in itself and just making these trade offs back and forth. And it's super rewarding when you actually get to fit your ideas into this extremely confined space. I don't know if that actually explained what it is, but I think it's at least bits of the philosophy. I mean, and it's a nice ecosystem, super friendly community. Most of the games are. You can just download them through a BBS tool and check out they are made, which is also a great learning tool.
B
Yeah, the choice of BBS as the distribution mechanism, the native distribution mechanism is also I guess part of the retro nostalgia part of it. So you mentioned a lot of interesting things there that I want to follow up on. So I guess first of all talking about the constraints, I guess I've always taken it as a prime example of constraints breed creativity or whatever. But I think I'm wondering in this particular case for you because I said my perception is that you ship A lot of games very fast is that especially when you're starting out, the limitations really help you avoid scope creep. Right. Like you are forced to not scope creep. And to finish the game as you originally like a slicer game as you intended. Do you find that to be accurate?
C
To some extent. I think I am a lot less structured as a developer than what people might think. I usually have a seed of an idea and I see it more like. I'm not sure the English word is, but you know stone masons or something.
B
Yeah, yeah.
C
Where they have this big block of marble or something and they start shopping away and maybe, oh, it's supposed to be a dog or whatever.
B
Right.
C
Then it turns off. Whoops, I broke the tail. Can't really put that stone back on. Right. And you have to kind of say, oops, it didn't really fit inside. Piquate how I'm going to change the design on my model or sculpture to actually work with what works in it. Then it's kind of okay. Didn't really turn out the way I wanted. But what changes do I make to the design? So it actually fits and still makes fun of A lot of fun to play. Right.
B
So you have to let stone tell you what it wants to be.
C
To some extent, I'm more of a following a very vague vision when I develop games. More than that, I have a very specific idea from the beginning. Cool.
B
So when you're following that process, I guess at the point where you're at that idea stage, how much are you already thinking about the constraints of Pico 8? Or is it, you know, you come up with grand visions and then they get pared down to size or I guess by this point you've been doing it for so long you're already like.
C
You're.
B
You're thinking in terms of what you can do more often than not.
C
Yeah, definitely. Usually I try to make things that use kind of like half of the space or scope that Pickweight can offer and then it kind of grows a bit from there. And then I can use the last 25% to push it a bit extra. Right. Because I find it extremely rewarding when you can fit that type of gameplay or technical solution into the game that people didn't really think was possible. And then once that works, then you can remove all the other fluff because nobody cares about that. The technical achievement is big enough to be the main driver of the game. It's still seen as a complete package, but other things can be down prioritized very much. Once you have that core that really works.
B
Interesting. Yeah. The technical achievement within the limited environment being a selling point, I guess is another advantage of, you know, these ecosystems where everyone's dealing with the same constraints. And I definitely think that's true of picocad. Like I often cite Picocad, which you will talk about more in detail in a moment, but just for a brief summary for listeners, is a CAD tool built in Pico 8 and it's 3D. I always mention Picocad as like an example of like here is something that you would first of all think shouldn't be possible in this, but obviously it is and. Yeah, well, definitely. I've got a bunch of questions for that in a minute. But I guess to get onto more concrete terms. So you mentioned some of the tools available. I think it'd be cool to go over what is actually available and what it's actually like to be a Pico 8 dev. So I guess first of all you mentioned briefly the idea of messing with the memory and fitting music in so and so place and your maps in another place. Can you run through the tool suite, I guess on Pico 8 that you use?
C
So some developers I know, they sit in other environments. For instance, maybe they use visual code or I'm Swedish, so I am not going to promote a specific tool now. So there are other tools available, you always have to say. But I've more and more found that staying inside the little box that is Pico 8, I mean 128 times 128, that really helps me not running away with my ideas. Right. You keep variable names short, you keep the scope short, you keep the functions short. And it has to be very readable and understandable in order to be able to work in that environment. And that really helps me moving forward. So I mean the code writing books, whatever it is.
B
Editor, I guess.
C
Yeah, the editor, exactly. That's one thing. Right. And then there's the sprite editor again. 128Times 12816 colors. Not sure I mentioned that. That are predefined as well. Right. So it's very set, which gives all Pico 8 games a very specific look. Right. You can almost instantly see that it's a peak weight game. Now we're making another game in another engine. But I'm so colored by my pquait work. Right. So it looks like a peak wait game and be. Oh, that's pquate people tell me. But no it's not. It's actually something else. But it still has so Many things in common, the sprite editor and then there's the tile map. So I don't know how big it is, probably 128 by 128 as well. But that actually shares memory with the sprites. So if you want to use half of the sprite bank, you lose half of your tile map. Right. Or vice versa. And there's obviously ways around that once you get to know the system. But that in turn then forces you to do some other things. For instance, if you want to use the whole tile map, then you have to move it to somewhere else in the memory and then you can't use the actual tool that is built in to place your tiles, which forces you then to write your own tile editor. And things kind of escalate from there. Right. So lots of tooling and custom built stuff to get it working. If once you start pushing the limits. There's sound editor for sound effects. Not my forte. Same with music editor, a classic tracker that was really popular in the Amiga days. That's it, I think. So all the basic things to get stuff up and moving.
B
Yeah.
C
Well, I should also say it's all in Lua, which is if people aren't familiar with that, it's a super friendly, very easy to use language that leaves you open to all the mistakes you can ever make with no type checking or anything else. You have to keep everything in your head.
B
Yeah. Not an uncommon choice in game dev land, but I know countless people who immediately, despite all of its advantages and pleasantries, who bounce off of it because of indexing starting at one and not zero.
C
The famous Lewa.
B
Yeah, cool. Yeah, thank you for summarizing this. So you mentioned various hacky ways to get around the memory constraints and stuff. One of the ones that I think is really interesting that I've not really dabbled with, but I know that you've used with a couple of times and that you used on, I think, I believe you used it for the arcade distributor. You gave us emf. But is multi karting. Can you tell us a little bit about multi karting and how it works? I guess, I guess actually first of all we start with what is a cart in the context of Pico. I guess our game is distributed. Yeah.
C
So once you're happy with your game, the main idea is that it kind of, I guess Joseph White, who's built the whole system, he likes things to have physical representation or at least as close as you can come. Right. So you can save all the code, all the graphics, everything. It can be Saved both into a text file, but you can also export it into a little PNG file that actually looks like a memory card or something with a little image on and everything. It's very cute. And he uses lots of little, I don't know, compression techniques in special layers of the PNG files. So it doesn't actually get garbled, but the image actually stores all the code, all the memory stuff you made, and the whole thing, which is a technical achievement in itself, I guess.
B
Yeah, yeah. Just to make that explicit, for anyone who didn't catch that, that is png. The image format is being used to store all of the games. It's incredible. It's so cool.
C
Which makes it super easy to store, right? You just send it on Discord or upload it somewhere or wherever. People can just load that and play it, look at the code or the graphics or whatever, or upload it to this BBS function, right, where there's tons and tons of great games. But for that to work, you're kind of limited to the space that peak wait gives you. And I think it's about. Not totally sure about these limits, but it has to be able to compress under 16k. I think there's a top limit of 32k characters or something like that. And then there's a token limit in terms of how you structure code, etc. And all that has to kind of be possible to cram together to fit into this cart. And that's the cart, right? It looks like cartridge, but if you think, oh, I wrote this code and it doesn't really fit. For instance, in my game, Golf Monday did two golf games, Golf Sunday and Golf Monday, where Golf Monday is the sequel there. I wanted to have a much better course generation, right? So I wrote an editor to make the golf course, and then that is loaded into a special format which has to reside in its own card because it doesn't fit in the actual game card. So there's a title card which loads the main menu and you can customize your player, etc. And then when you actually press start, then it also has a bit of code to generate the course, which then stays in ram. And then the other cart is loaded. Everything about the last cart is forgotten. But since I could load the map into ram, I can start playing with that, right? As if it was in my original cart, but it wasn't. But people are, of course, chaining this into craziness. Some of people, I mean, I know the guys who made Doom and other world ports and things like that they have like 64 cards and it's just massive. Right. So there's huge build steps to make everything work. Yeah, I only made double cards, so to speak. I think that's enough for me. But it's very convenient if you have, for instance, a dungeon crawler and you need a separate card to do all your generation, then you just load that cart, do the calculations, put that in RAM and then swap back to the original cart. Very cool. But then you kind of lose some of the distribution methods that are available and you need to kind of package it up a bit differently.
B
Yeah. Which I guess brings me on to my next question.
C
So.
B
And we'll talk about this more in a bit. But you make pigweight games commercially. You're not just distributing them within the bbs. You sell them on all kinds of platforms and you provide them cross platform as well. What is the build process for that? So I know there's export tools, but like, does Pico 8 natively support building executables for the platforms?
C
Yes, it's the short answer. And it's just super easy. Just write, export and then it gives you the Windows build, the Mac build, the Linux build and the Raspberry PI build straight off. And that's it. It's horribly easy. It's so easy. I think I released six or seven games on Steam I develop on. On a Mac. I've never tested the Windows builds, I just uploaded them and they're like 90% of my players use Windows, obviously. But it just works so well, so I don't even need to test it.
B
Nice. The advantage of your whole game engine being its own little virtual machine, I guess.
C
Yeah, definitely. That's very cool.
B
So you mentioned along the way building your own map editors, building various tools, and some of these tools are commercial releases. Picocad and Picosynthesis. Again, this is one of the things. My perception of you as a Pico 8 developer is quite unique because I think you build an unusual amount of tools in Pico 8. What led to you have, you know, was that just a natural emergence of your own game development practice? Like what made you start wanting to build tools in the editor?
C
I think it's a necessity sometimes to make the games I want to make. And also lots of time, like you mentioned, Picosynth and Picocad, they're all. They started as something else. Right. And then it turned into something Pikasynth, which is. How should I summarize that? It's a modular synth experience, I guess, where you can Kind of. You create different boxes of equipment and then you connect them with springy cables and sound is made. Usually I. The same with Picocad. I don't know anything about 3D with pico thins. I know nothing about synth or how they work. So that actually started with me playing around with Verd physics.
B
Right.
C
What should I do with all these springy cables? There should be something fun I could make with them. And then it started as maybe I can just send, you know, electricity through them and have some sort of light puzzle where you're supposed to get certain inputs or outputs. And then I just stumble onto the audio stuff and suddenly I built out the full range of various things that you could connect with cables. I mean, the. For me, it's very much I prototype stuff. If I find something that's fun, like this cable, it wasn't just a nice feeling to move them around and kind of click them into little holes, then the actual application doesn't matter so much to me.
B
Cool. Yeah, that makes sense. But I guess with Picocad, that has really grown into something special. There's like a huge community around it. People will use it to make games in other engines. People are exporting the tools. So I guess for an intro, can you tell us about Picocad and the kind of capabilities it has?
C
Yeah. So Picocad is a time trip back to the 90s where CAD programs consisted of four viewpoints and it was very much looked like an old technical drawing or something. Right. Where you need to see it from three different angles and then you have a 3D view of it. And that's how I learned doing CAD back in the 90s, right. In school. And I've never been a fan of these more natural mesh like things where you very dynamically move things. That's. I'm too old for that, I guess. But back to Picocad. So it has these three views, it's super limited, but you can add like primitives like cubes, prisms and various volumes. And then you can extrude certain faces, which is super basic. Right. But that's basically the tools you have. You can build stuff, you can extrude stuff, and you can then move vertices around, of course. And then you can also texture it. You can load a simple texture. And that's basically it. And it's super simple. There's a few things more to it. Of course, you can have lights, so some sort of lighting and shading model on it. You can have flat. Flat shading. If you just want to use Colors and textures, things like that. But it's super simple. But the same way peak weight kind of breeds this creativity through. You can't even go farther. Right. There's been people who's just been building amazing things in it and really learning the ins and outs of it much more than I could ever have imagined. Right. So, I mean, there's hashtags all over the place and it's to some extent to the restrictions and how it actually looks. I mean, there's lots of the sort. There's no C buffer in it, so the faces can get all jumbled if you don't do it properly and things like that. They have a very distinct look. The same way you can say this is a Pico 8 game, I think you can safely say this is a Picocad model. Because how the kind of software encourages you to work.
B
Right, right. You know, when you say it's that aesthetic arises because of how the software encourages you to work. Was there intentional design in that where you were like, you know, I want these things to look a certain way and this is kind of how the toolset is developing, or was that a purely organic. It just came out of the constraints situation.
C
When I started making POCAD again, there was some talk about, oh, you can do 3D in PQ8. So nice. And people were doing some various experiments and so did I. And I started with cubes, et cetera. And it would be nice to have a car. And I could still write the specification. I could write. Just write that in text. Right. It made sense. And I could edit the UV coordinates and things like that. Then, oh, it would be nice to do a muscle car with some sort of exhaust on the hood and or air intake and things like that. Quickly it became very difficult to do this on graph paper. Right. So then I just started trying out what if it looks like this, blah, blah. And I quickly find a way that worked really, really well. Right. And then as things happened, that project became much more interesting than actually using the models for anything. But in that step, since I worked on graph paper, it kind of became very natural with snapping, for instance. So the game more of the software doesn't allow you to put vertices wherever you want. It snaps to 0.25, so a quarter of a unit. And that also makes it really. It promotes a certain chunkiness or roughness of the models. You can hold the key and do freehand movement, but that's for the pros.
B
Right.
C
And also it makes it much easier to connect certain volumes because you can't merge meshes as we have to kind of put them really close to each other. And thanks to the snapping, then it.
B
Becomes really kind of lines up.
C
Yeah, exactly. And that then stops stuff from bleeding through and things like that. So lots of technical decisions also led to how it looks. Right. And then the P grade palette, it's very specific. And when I put the light model on that, if I want to fade, for instance, red, there's no dark red. Right. So it has to fade into brown or pink, has to fade into red and orange, etc. So it gives also a very certain look to the shading, depending on what colors you use in your model.
B
Right.
C
Instead of just fading into dark the shade, it actually fades into different colors, which gives a nice vibe to it. Awesome.
B
Okay, so I do want to come back to the shading and the lighting engine, but I guess first, a fundamental question, and this might be an uninteresting question, depending on how much you know about 3D rendering, but. Or how much the listener knows about 3D rendering. What does it take to do 3D in PicoCAD? Because to me, that's still mind blowing. But this might be my ignorance that finds. That is part of the reason I find it so interesting.
C
Yeah. So Pico 8 actually comes with an example called dots 3D, which looks like an old 80s demo with spheres circling around. It's like booting up some sort of crack intro to whatever game you want to play. And I think most of Picocad still uses that for its base code. Right. So it's. And then it's just packed with layers on top of that. But that's. The core is still rotation around Origo or the central of the scene. And I mean, if you have one dots with XYZ coordinates and another, then you can draw a line between those two. Right, right. And then you arrange your dots into a cube, and there's your wireframe. Then Piguet has this specific thing which makes the texturing work, which is called tline. So it draws a line, but instead of you just specifying a color, you specify two coordinates, basically, in the tile map, and then it colors the line according to those colors in the tile map. So you first draw your texture in the sprite map, and then you use those sprites to place them as tiles on the tile map, and then you can start using that as a texture for your draws.
B
Right. Cool. That's really useful because that was part of where I think my mental model is struggling. So when you first come to Pico 8, 2D, you're like, okay, I'm drawing a sprite, and that sprite is living on the tile. Like, you know, that's going on a map. And it's very. The model of, like, what you're interacting with is very straightforward. And I was hearing how those parts interact with the 3D is really useful. Okay, cool.
C
Then you also get perspective correctness. Right. When you usually, when you draw a texture in 3D, have to kind of think, okay, it's supposed to actually get smaller. The shape gets smaller, because that I can easily calculate. But the texture should also be drawn differently depending on where it is in the depth. But there's nothing of that. Right. So you also get this PlayStation 1 aesthetic where it's kind of bit jittery and things are kind of moving a bit janky, which I think a lot of people like as well. Right. Because the same way pixel art is my childhood, PlayStation 1 art is a lot of other people. Childhood.
B
Yes. People invest a lot of time in recreating that aesthetic. So if the engine doesn't fog you, that's great. Yeah. So onto the, I guess, like the lighting and the shading. So as we said, for various geometry reasons, the Picocad models look very distinctive. But you have a really nice differed shading approach as well. Can you talk briefly about that?
C
So Pico 8 comes with a dithering functionality when you draw basic drawing primitives, basically. So if you want to draw a square, you can apply a 4x4 pattern to it, I think it is. Which can then be a checkboard or a heart or a square or whatever. Right. And it's quite useful when I do particle effects in games, for instance, if I want things to fade out, they can at least. You can't do transparency, but they can at least be more sparse in terms of their pixel density to some extent. But then you can also set. I think this is how you do it. You can set color. Whenever you draw something in Pico 8, you say, okay, I want to draw it with color seven, for instance, but there's actually more. And you have 16 colors, but that's just the first. I don't know, four bits, I guess, of the color space. But you can send a whole byte. So that means you have four bits at the bottom for the actual color. And then the higher part of the byte you can use for another color. So then you can tell peak weight. Okay. Use this dither pattern that I specified. And all the lit bits are with one color, and all the unlit bits are with the other color. And then it's just a matter of calculating which angle the face is facing and then deciding, okay, if it's this color, then it should do this darker shade instead on every other pixel.
B
Very cool.
C
If that makes sense.
B
Yeah.
C
And then while I was developing that, I usually am very open with my progress on social media. Gives me a lot of good feedback. And of course, Zep Joseph, who's making P. Kate, was following that as well to some extent. So he actually started implementing stuff that I needed for Picocad. So previously it wasn't possible to apply these dithering effects to textured. So sprites or T line, this texturing thing you can use so that we kind of slipped in into a new PKweight version so I could get even the textured. So I could lit so I can use the dithered lighting module even on textured faces.
B
That's really cool. And that's awesome of him. And I guess that kind of leads into something that I didn't ask, but was meant to ask earlier, which is in terms of the. So we mentioned the code is obviously written in Lua, but in terms of the API, how much is the Pico8 API doing? You know, providing for you in terms of utilities when you're developing a game, like what is the kind of toolset it gives you?
C
I mean, you get an API to kind of access all these things like sound style, maps, sprites. There's a lot of syntactic sugar in the Kuwait LUA version that it doesn't exist in the real one, so to speak, that I miss a lot. For instance, with the tables, I mean, there's lots of shorter words. It's just so much easier to express yourself in code than having to write, I don't know, table, dot, remove something, something, and things like that. It's just. Just a horror for me once you get used to just Dell and add and that works in PQ8 because there's. The API is so compact, so it doesn't collide with anything else. Right. Also, when I started writing Pquate, there was no split functionality. So you can take a string and then split it up on some delimiter. Right. That didn't exist. So it then uses my own version that I had to write my own version of that. That also due to the format. I mean, the save format in Pquate is basically a JSON file. Not exactly. Or it's more like a LUA representation of a table. Right. So that also had to be kind of a special Split that could handle the. All the nested tables in that. So there's quite a lot of special stuff, right? I mean, there's no UI functionality in PCcreator as well. So all that is is also built custom.
B
Yes, again, this is somewhat of a silly question. So when you're talking about writing your own split implementation or even your own tools, how are those used? Because there's no package management situation, right? You're not importing modules. So is it just case of copying and pasting your implementation into your new cart?
C
You can actually import like that. There's a little include statement. You can say in case I had, let's say a Verlet engine, right? And then I could just do import verlet Lua or something Cool. That's totally doable. The challenge with that is that if you have your special Verlet engine, then it's likely to be very generic. And if you actually want to use it for a proper game project, it needs to be more specific. And to get there, you have to rewrite it and work inside the code. And then it won't be reusable for anything else anyway. So it very quickly doesn't really work. You can use it to kind of structure your project, but it doesn't, at least for me, it doesn't help to reuse things. But for. For Picocad, for instance, one of the key things to do was usually in Pico 8, there's. You get three functions that are drawn that are called automatically. So there's the init, which kind of sets everything up. There's the update, which is called 30 or 60 times per second. And then there's a draw, which is draws everything, right? And usually in all the programming books and what you learn in school, you're supposed to have the A model work in the update and then you just draw whatever the model is, right? But for PQA to work, everything happens in the update, including the drawing. And I draw an update very intertwined and mixed. So there's no. There's probably something happening in the draw function, but most of it happens in the update function. Because one thing that is, or at least turned out to be very difficult for me, if I want to use the mouse to click on a vertex, for instance, how do I know where that is? And I mean, there's lots of ways to do that. You can do rays and things in 3D that I don't know so much about. But the way I solved it was that if I draw it first, the 3D model, and then as every time I draw a vertex, I can save that vertex screen position inside the vertex, right? And then I kind of blend into the next step, which is the update. And I can just run through all the vertices, look at their screen positions. Is any one of them close to the mouse? That's cool. And get all that weird stuff. Where AM I in 3D in my 2D interface? That's just solved through that step, right?
B
Yeah. That's really neat.
C
The same way when I draw a polygon or a face and I can really quickly check is the mouse inside this face. So it's very mixed up and it's probably not how I would do it if I had another type of engine to write it as. But this is what I had, right. And what I chose to do. And it works surprisingly well, right?
B
Yeah, yeah, absolutely. And it's again, a good example of the constraints, right. Like you said, like, without those constraints, someone might go to implementing ray tracing. But you found a really elegant way of doing it because that's what you had, which is really cool. So aside from the commercial tools, you know, we spoke about Picocad. I know, and we've spoken. You know, you mentioned your map editors and stuff. But like, you've done some tools for your personal use that like. So you were the first person I ever saw do like Pico 8 for slideshows when you gave that workshop at EMFCAD this year. And you know, I know this is a tendency of everyone. You get familiar with a tool and you're like, I'm going to build all my tools in this and start doing really silly things. Do you have a favorite, uninterrupt, unintended use of Pico 8 that you've. You've done personally or that you've seen?
C
I wasn't by any means. Just want to say that I wasn't the first to make a Pico 8.
B
The first I saw. Yeah, yeah, okay.
C
I know Joseph White, who did the Pico 8. I've seen there's a YouTube video where he does something similar. We trace that. I don't have any good examples for this. I once thought that I was going to make my website in Peakway to use Pique to generate the HTML code. Right. Because as you say, once you have a good hammer, everything looks like a nail or whatever the saying is. I don't know.
B
Yeah, that's.
C
Yeah. But part of Pico 8 being so sandboxed, right. You can of course use it to kind of send stuff into and back and forth but it makes it a bit hard to move out of that.
B
Yeah, absolutely. Making your website in Pico 8 would be truly like connecting it to the Flash legacy. That would be. That would be great. That'd be awesome.
C
Would be great though, right? To not only build the website, but have the website full screen Pico 8 after that. It'd be great. That would be nice.
B
Yeah, it'd be lovely. So, you know, in the intro we mentioned, you know, your indie studio Obscabet, whose pronunciation I probably just butchered, and you spoke about the BBS and the model, the normal model of distributing games in the Pico 8 ecosystem, which obviously has a commercial studio trying to survive on this. You have to be slightly different about. Can you talk about how you approach being a commercial studio whilst interacting with the Pico 8 ecosystem, how that works?
C
On a philosophical level, it's kind of difficult because as soon as I learn lots of free Pico 8 games as well. Right. But as soon as I stepped out from that, it felt like I stopped paying back to the community, so to speak. And that was a bit difficult on a mental level. Just, okay, I'm now I'm using this, but have I done enough for the community, et cetera. Right. So it's. That was a bit of a. I wouldn't say it was a struggle, but it was a very significant change in how I had to think and approach it. But when I launched Peco CAD the first time, then it was free and basically people could donate on it and people were very generous. So I kind of knew that it was possible that people were. I wouldn't say they were interested in paying for it, but they were at least able to pay for things. Right. Even if it came from such a limited tool or not limited, but this restricted tool. So I had some ideas that it will probably work to sustain a single person if I get a nice cadence of games out. And as you said last year, I think I released five or six games this year doing half of that. Maybe I'm trying to do a little bit bigger things and also I need to kind of slow down. It wasn't really sustainable, but it was fun and it worked. So I made a modest, very modest profit last year on the first year, just doing Pico 8 games. So at least it's doable, kind of stay in the game jam mode for an extended amount of time. That was hard.
B
Yeah, yeah. Because you were doing lots of experiments, actually you share a lot on social media, doing lots of really interesting experiments like that looked like they were Taking a lot of your time. Whilst also ship, I think the main one. I was very excited about your submarine building experiments because I love that genre of game. And then, you know, you were doing that and that looked like what you were focusing on. And then you shipped Hell Jineers. And I was just like, where did that come from? I didn't see that being made at all. So I guess, like, even, you know, when you're in that permanent game jam mode and you're getting a game ready to ship, how much during a process of making one game, are you also already thinking about and working on the next one in the series or were in that frantic year? I imagine I'd say it's changing.
C
It's very different. I mean, I did Shadow King, a Metroidvania platform game that took calendar time, I don't know, three to four months to make. And within that time, when I was kind of bored of it or a bit burned out on level design, I guess, then I made Cosmic Collapse, which is this merging game where you merge planets into bigger planets, which was a beautiful strategic move.
B
Your timing with that was amazing.
C
And that's been my best game, actually. And I made that in two weeks by just being frustrated on my main project. I try to catch when I get silly ideas that I feel that when I. When I can kind of. For me, it's. Can I see the path.
B
Yeah.
C
From where I am now to it being done and just see how everything kind of falls into place. Then it's very easy for me to just put on the huiglapper in Swedish.
B
The blink, I think we call it. Yeah, exactly.
C
Then I just go there in a day or so. Right. And that it makes it possible to very quickly. I mean, the submarine game, for instance, where you build your own submarine out on modules. Code is crap, but it works. It works to tell somebody an idea of what the experience could be like. And it always looks like there's lots of things going on in the background, but usually it's just smoke and mirrors to get that working. But you can at least get the feeling of what it could be.
B
So you made a profile here, which is great to hear. You use lots of platforms. You know, you use. You sell across Itch and Steam. You also have a Patreon. How are you fight? Is there a particular one that's like more successful for Pico 8? I kind of imagine just from like vibes that like Pico 8 games would sell better on Itch than Steam. I don't know if that works out in reality, how do you find them?
C
I found it absolutely so. But it also comes down to that. I've had six years to build an audience on Itch. Right. Right. While on Steam it's been kind of a struggle to build that up. But I think on each I've managed to sustain the titles a lot better. I had a longer tail on those titles where on the Steam it more becomes like a blip and then it kind of goes into nothingness. And Patreon is nice to have super grateful for those people who want to give me some money without knowing what the game is like. It always makes it possible to at least I know I will have something back for the game that could pay for a musician or special art or whatever it could be.
B
One of the interesting things about your Patreon is your upper tier. I think you released the source code as well which I think is going back to what you said. Your philosophical struggles with giving back to the Pico 8 community. I think it's a really great way of reconciling that that people still get the source code. Do you find what's your tier distribution like? Do you find lots of people are excited about getting hold that source code or is that for your niche pico8 community member followers?
C
I have four tiers and one is like $2 get the games, that's it. And then it's five I think which is some sort of early access. You get to play the game way before then it's a source code thing. And then it's number one fan which is just throw your money at me and be eternally grateful. But I think the lowest performing tier. Performing. But the tier that most people are not interested in is the early access thing.
B
Interesting.
C
And then there's a handful of these top contributors. But I think 50, 50 or 45. 45 are just give the game or source code. Right. And I guess that tells me that it's a very developer centric following in my case on Patreon. Right. And I have. I think that's been the major struggle with making peak wait games commercially. How do I kind of break out of the dev community?
B
Yeah, that totally makes sense.
C
Yeah.
B
As we were talking earlier with the fact that the technical achievements are a large part of the marketing. I think there's a lot of. I mean it's nice that the Pico 8 developers support each other and make that viable.
C
Right.
B
But yeah, I just said the breakout's.
C
Important because I'm now that I'm so pucker has been on itch for a couple of years and I'm launching it on Steam, hoping to reach a bigger audience. Right. And it's part of my worry there is. Right. People won't have this acceptance of what peak weight is. I mean, it comes with the key. Binds are totally different. It kind of starts to lag when you build two big things, even if you run it on your 16 core megaflop computer. Right.
B
Yeah, yeah.
C
So it's. I'm trying to do a lot of expectation management so people actually know what they'll get.
B
God, yeah. That's fascinating. I hadn't thought about the. Well, I mean, the constraints being part of the selling point and part of the interest of any game made in picocad. Pico8. If you know pico8, but then just being read as bad software if you're not, that's. So how are you doing that expectation management? Is it like part of your pitch for these games as you reach a wider audience, having to also sell Pico 8 in some way?
C
I don't think peak weight is going to be sellable through that. Right. I mean, I can't explain it. I just have to tell people. This is made on a computer from the 80s.
B
Right, right, right.
C
And you have to live with that. And if it starts to slow down, you're doing it wrong.
B
Right. That makes sense. So, you know you've got Peak Arched coming out on Steam, which I think this was November 28th, which is very exciting. You've also been talking a lot and it's also on Steam about your upcoming game, which is Coco's Delivery service. Is that the game that's on a different engine?
C
That's on a different engine.
B
What is the engine?
C
So it's not built on an engine. It's built on a framework called Love2D.
B
I'm familiar with it. Yeah.
C
Cool. Which also has, as we spoke about, Action Script and the way it's built up, it's very similar. And the way I stumbled into that was Cosmic Collapse, the game where you kind of merge planets, which was somewhat of a hit. I decided to put that on iOS and to do that I had. I didn't want to rewrite the code because that's boring. So instead I wrote a layer so I can just load my pico8 file into lab 2D. And then I had kind of all the function calls that Pico8s want to make things that went to my abstraction layer and then that sorted out all the stuff with love 2D. Right.
B
Okay.
C
That worked really well. And Then doing all the Apple things to get it out, of course. But I guess I ported it in a day or two. Right. So it was very small effort. It got my eyes open to love 2D. Then of course, and also the possibility of actually having a custom made for me, peak weight like API without the restrictions. Right. Which is a blessing and a curse. Definitely a lot of a curse sometimes because it's so easy to just start making stuff instead of reigning in. Cocoa's delivery service is then made in. I made the prototype in Pico 8 and it felt fun. So then I moved that over to my API in Lab 2D.
B
Was Coco's delivery service needing more than you could build in Pico 8 born of the fact that you'd had this experience of love 2d and you wanted to use that? Or was it you found a game that you could then, you know, use that facility for?
C
It rose from a different perspective. So one thing I felt that, okay, I can have this game, I can make it in PKO8, but then it will be a very quick arcade thing and I'm kind of want to have a break from quick things, try to do slightly bigger things. And then I also have. So the Submarine game for instance, that's definitely not going to work on Pickwick 8. So there's a version of that as well in the pipe.
B
Very excited to hear that.
C
Years away maybe, but it's at least on the table. But then there's another game I want to make that I hope to reveal in a few months or so. That definitely not going to work on Pickwick. And it's. I hope that's going to be a big thing. So I want to do some tech proofs before I get there. I want to know, can I actually release a game written in love 2D? Got it on Steam without it exploding on a million computers as it doesn't use a virtual machine. So it also solves that step, right? Can I actually do this? And then for this specific game, it can be a bit bigger, have a little bit more graphics and have a bit more power.
B
You've mentioned the upcoming gaming, this next one in the future. So I guess one of my questions about your studio as an entity is like, is this a vehicle for you as an indie developer, occasionally hiring up music, or do you hope to grow this as a. As a studio and bring on more people?
C
Oh, that's the question. I mean, I've run studios before and some of them grew, some didn't. It is a vehicle for me to do whatever I want. And if I feel the urge of growing and taking on some other people, then maybe if it doesn't. I mean, the, the main thing is I. I wanted to get out of the. I wouldn't call it the rat race, but I grew tired of vc, I grew tired of founders, I retired, of politics and big companies and all that. Just. Just go back to hammering on that Commodore 64 in my friend's basement and try to get it to work. Right. And just following my passions, basically. And I've been super fortunate that it actually is sustainable at the moment. So we'll see what happens. Right. I can definitely feel at times that would be nice to have some people who were as invested into whatever I'm making as I was. I mean, you contract people to do art and music and things and they are nice and they like what they're doing, but they're still just getting paid, so to speak.
B
Yeah, absolutely.
C
And that I can miss to just have that daily back and forth with people who, who want the same thing. But we'll see in the future.
B
Final question, which may just, you know, the answer may be no. There's a lot of excitement about Picotron, Zepp's next project, kind of like pico 8 taken to a mock OS level and being such a prolific builder of tools and as we found out, influencer of the API. I'm very intrigued to know if you played with it at all, if you've got any designs or things you're thinking about.
C
For Picotron, I did meddle a bit with it, but for me, when I go up to that level, then I might as well do everything myself.
B
That makes sense.
C
I think that's where I ended up and still early in development. Right. And there's. I don't like to make things that might break because of someone else. And I also thinking that the same with PQ8, I came in fairly late. People have solved most of the problems. I could just use them. Right. And I think Picotron will probably have a similar journey. And where I am now with Moving my own PQ8 like API into lab 2D, that solves a lot of the problems that I hoped Picotron would solve as well. And I mean, Picotron looks amazing and people are doing super cool things in it, of course, because people are always super creative. But I'm not sure yet whether I should or how I should approach it. I mean, now a deal breaker for me is that it can't export to native binaries at the moment. Right. And I need to be able to do that to make a living. So maybe when that is, we can go back and see if it solves something.
B
Cool. Awesome. Well, Johan, thank you so much for joining me today. This has been wonderful. I'm so glad we finally got to cover Pico 8 and your work. Thank you.
C
Yeah, thank you. Happy to be here.
Software Engineering Daily | November 27, 2025
Host: Joe Nash
Guest: Johan Peitz
This episode delves into the world of game development on the PICO-8, a fantasy console that emulates vintage 8-bit hardware. Host Joe Nash interviews Johan Peitz, a prolific PICO-8 creator, exploring his journey, the unique appeal of building games within PICO-8's constraints, and how these limitations inspire creativity. They cover technical deep-dives, the PICO-8 toolchain, commercializing PICO-8 games, and the emergence of community-built tools like Picocad.
Early Days with Board Games and Computers ([01:36])
Johan loved board games as a kid and was captivated by the Commodore 128, which led him to explore making games on computers.
The simplicity and immediacy of platforms like the Commodore, Amiga (AMOS), and Flash/ActionScript influenced his taste for accessible, all-in-one development tools.
"You just launch it, there's a prompt, you can just start typing. Everything is testable from the get go. ... And for me, [PICO-8] is also similar." — Johan Peitz ([01:36])
Finding and Joining the PICO-8 Community ([03:45])
Defining the Platform ([04:32])
More than a game engine—PICO-8 is a "fantasy console," intentionally restricted in color (16), resolution (128x128), memory, and CPU time.
These restrictions force developers to make creative trade-offs.
"It's almost like a game like experience when you develop for it...making these trade-offs back and forth. And it's super rewarding when you actually get to fit your ideas into this extremely confined space." — Johan Peitz ([04:32])
The community is friendly, accessible: games are distributed natively via a BBS, and downloadable cartridges are .png files embedding code and assets ([13:12]).
Scope Control and the Sculptor Metaphor ([07:07])
PICO-8's limitations help avoid scope creep and force shipped projects.
Johan compares his process to sculpting: letting the "stone tell you what it wants to be," adapting ideas to fit what's possible.
"Whoops, I broke the tail. Can't really put that stone back on. Right. ... Didn't really turn out the way I wanted. But what changes do I make to the design?" — Johan Peitz ([07:30])
Technical Achievements as a Selling Point ([09:11])
The All-in-One Philosophy ([10:00])
"Cart" Distribution and Multi-Cart Projects ([13:12])
A "cart" is a single file containing game code and assets, exported as a PNG image.
"Multi-karting" is used to overcome memory limits by chaining multiple carts (e.g., Golf Monday uses a separate cart for course data, [14:01]).
"...the image actually stores all the code, all the memory stuff you made, and the whole thing, which is a technical achievement in itself..." — Johan Peitz ([13:12])
Cross-platform Export ([16:35])
Business and Community Tensions ([34:26])
Feeling "guilt" about monetizing when so much of the community's spirit is open and free.
Donationware worked for early releases; building to a sustainable, modest profit through rapid releases.
Patreon and open-sourcing code via higher supporter tiers help reconcile commercial and community values ([39:17]).
"How do I break out of the dev community?" — Johan Peitz ([40:09])
Tools Born of Necessity and Experimentation ([17:33])
Many tools started as game features, which then took on lives of their own (e.g., Picocad arose out of needing 3D models, Picosynth from springy cable prototyping).
"Usually I prototype stuff. If I find something that's fun, ... then the actual application doesn't matter so much to me." — Johan Peitz ([18:12])
Picocad: 3D Modeling in PICO-8 ([19:04])
Retro-inspired, four-view 3D modeling tool limited to cubes/primitive extrusion, with signature "chunky" style due to grid snapping and palette constraints.
The distinctiveness is partly intentional, partly a product of technical limitations.
"...you can have lights, so some sort of lighting and shading model on it... it's super simple. But the same way PICO-8 breeds this creativity..." — Johan Peitz ([19:04])
Built atop the included "dots3D" demo; uses tline for texturing along lines between points.
Perspective is faked—producing a PlayStation-1 aesthetic with jittery, "janky" movement.
"...PlayStation 1 art is a lot of people’s childhood." — Joe Nash ([25:39])
PICO-8 supports dithering patterns; light/dark is achieved by manipulating color bits and dithering faces according to angle.
"...I can use the dithered lighting module even on textured faces." — Johan Peitz ([27:18])
On the Joy of Constraints:
"As you learn more about the program, you also know...how to bend the rules slightly...those super harsh restrictions, they aren’t really that harsh..." — Johan Peitz ([04:32])
On Technical Achievements:
"When you can fit that type of gameplay or technical solution into the game that people didn’t really think was possible...this becomes the main driver of the game." — Johan Peitz ([08:28])
On Exporting for Multiple Platforms:
"It's horribly easy. It's so easy. ... I've never tested the Windows builds, I just uploaded them and they're like 90% of my players use Windows, obviously. But it just works so well, so I don't even need to test it." — Johan Peitz ([16:35])
On Commercialization and Community:
"It felt like I stopped paying back to the community, so to speak...that was a bit difficult on a mental level." — Johan Peitz ([34:26])
On Picocad's Unique Visuals:
"...it promotes a certain chunkiness or roughness of the models...And that then stops stuff from bleeding through..." — Johan Peitz ([22:27])
PICO-8’s reputation and technical chops are part of the appeal—for developers.
On Steam, non-PICO-8 audiences might see hardware constraints simply as flaws, not features; clear expectation management is crucial ([40:45]).
"You have to live with that. And if it starts to slow down, you're doing it wrong." — Johan Peitz ([41:23])
Using Love2D for Bigger Projects ([41:45])
Thoughts on Picotron (PICO-8's Successor) ([46:00])
Dabbled, but prefers building his own stack; waiting for Picotron to mature and for native export capability.
"Now a deal breaker for me is that it can't export to native binaries at the moment." — Johan Peitz ([47:04])
The conversation is candid, technical, and infused with nostalgia for old-school game creation. Johan Peitz’s openness about learning, experimenting, and balancing artistic passion with commercial sustainability offers inspiration—not just for game developers, but for anyone wrangling with creative constraints. The episode blends deep dives into code and workflow with discussions about community and business, always returning to the joy—and ingenuity—born from doing more with less.
Recommended for: