In short
Podcast Notes: Game Development on the PICO-8 with Johan Peitz
Episode Overview
- Podcast Title: Software Engineering Daily
- Episode Title: Game Development on the PICO-8 with Johan Peitz
- Release Date: November 27, 2025
- Description: The episode features Johan Peitz, a seasoned game developer, discussing the PICO-8 software-based gaming console, which allows for creating, sharing, and playing small retro-style games. The conversation touches on the development environment, tools, and the creative process within the constraints of the PICO-8.
Key Contributors
- Johan Peitz: Veteran game developer, expert in PICO-8.
- Joe Nash: Host of the podcast, developer, and educator.
Introduction to PICO-8
- Definition:
- A software-based gaming console that emulates 8-bit consoles.
- Features limited color palettes, screen resolutions, and memory constraints.
- Uses Lua for development, making it accessible yet deep enough for complex projects.
- Philosophy:
- Encourages creativity through constraints.
- The development experience is designed to be immediate and engaging, similar to old consoles.
Johan Peitz's Journey into Game Development
- Began with board games; transitioned to computers with a Commodore 128.
- Developed a passion for creating games using both board and computer tools.
- Found PICO-8 appealing due to its nostalgic feel and ease of use.
PICO-8 Development Environment Core Features
- Integrated Tools:
- Sprite Editor: A limited color palette and sprite space.
- Tile Map Editor: Shares memory with sprite data, creating trade-offs in resource use.
- Sound Editor: Tracker-style for sound design.
- Constraints:
- Limited memory and CPU time force developers to make creative decisions.
- Constraints lead to innovative solutions and gameplay mechanics.
Development Process
- Creative Workflow:
- Johan describes development as sculpting, where initial ideas are refined through constraints.
- Often starts with a simple idea and allows the limitations of PICO-8 to shape the final product.
- Multi-Cart System:
- Allows separate carts to load additional game content, useful for complex games that exceed memory limits.
Game Development Insights Scope and Creativity
- Development in PICO-8 often prevents scope creep due to its limitations.
- Developers need to be inventive, making trade-offs between graphics, sound, and gameplay.
Community and Learning
- PICO-8 has a friendly community with accessible tools for sharing and learning.
- Games can be shared easily through BBS, promoting collaboration and inspiration among developers.
Tools Developed by Johan
- PicoCAD: A CAD tool for creating simple 3D models within PICO-8.
- Promotes a distinct visual style and encourages creativity despite limitations.
- PicoSynth: A modular synthesizer experience showcasing audio capabilities in PICO-8.
Commercial Success
- Johan has transitioned to a commercial model by releasing games on platforms like Steam and Itch.
- Discusses challenges and philosophies around monetizing PICO-8 games, including maintaining a balance with community contributions.
Upcoming Projects
- Coco's Delivery Service: A new game developed in Love2D, moving beyond PICO-8's constraints.
- Plans for further projects and potential collaborations in the future.
Conclusion
- Johan emphasizes the joy of working within constraints, the community aspect of game development, and the importance of creativity in building engaging games.
- Encourages developers to explore PICO-8 and other tools as avenues for experimentation and expression.
Key Takeaways
- Embrace Constraints: Limitations can foster creativity and innovative solutions.
- Community Support: Engage with the community for inspiration and collaboration.
- Monetization Challenges: Balance commercial success with community contributions.
---
Listen to the full episode [here](https://softwareengineeringdaily.com/2025/11/27/game-development-on-the-pico-8-with-johan-peitz/) for an in-depth discussion on PICO-8 game development.
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Transcript
Automatic transcript. May contain errors.0:00Pico 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 Pico 8 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.
0:42Joe 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.
1:05Welcome to the show, Johan. How are you doing? Thanks, Joe. I'm really good. So happy to be here. I've followed your work for a long time as a big PicoAid fan. And as we'll cover, you are one of the more prolific PicoAid devs. I think I counted yesterday and I think it was seven or eight of the 30 PicoAid games on Steam are yours. So I'm very excited to have you on the show. But before we start talking about PicoAid and PicoAid 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? Well, I think that's two very different things.
1:39I 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.
2:18And 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 launched 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, there's an integrated package where you could just do everything without touching anything else.
2:55I 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 PeekWayt 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 dispose of without having to do build steps or convert things back and forth. You can just jump in and build stuff. Yeah, that makes a lot of sense. and especially i guess one of the elements 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 45 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?
3:45I 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 etc 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.
4:23Nice awesome so we've spoken about Pico 8 a bit and alluded to what it is but just for listeners who aren't aware can you explain briefly what Pico 8 is? 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? 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.
5:04So very often you run into these restrictions. and I guess to a newcomer that can seem as a turnoff 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 picoate 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.
5:40Or 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 have 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. 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.
6:20I mean, 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 how they are made, which is also a great learning tool, right? Yeah, the choice of BBS as like the distribution mechanism, the native distribution mechanism is also, you know, I guess part of the retro nostalgia part of it. So you mentioned a lot of interesting things that I want to follow up on. So I guess like, first of all, talking about the constraints, I guess it's, I've always taken it as like a prime example of constraints breed creativity or whatever.
6:49But I think I'm wondering in this particular case of 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're 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? 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 don't know what the English word is, but you know, stone masons or something.
7:22Yeah, yeah. 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. Right. Then it turns off, whoops, I broke the tail. I can't really put that stone back on, right? And you have to kind of say, oops, it didn't really fit inside Pico 8. How am I going to change the design on my model or sculpture to actually work with what works in it? And 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 a lot of fun to play, right? You have to let the stone tell you what it wants to be.
7:55to 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 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 a 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 Or would you like your thinking in terms of what you can do more often than not? Yeah, definitely. Usually I try to make things that use kind of like half of the space or scope that PicoAid can offer.
8:37And 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 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 at the moment, but just for a brief summary for listeners, it's a CAD tool built in PicoA and it's 3D.
9:29I 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 into more concrete terms. So you mentioned some of the tools available. I think it'd be cool to go over, you know, what is actually available and what it's actually like to be a PicoA dev. So I guess, first of all, you know, you mentioned briefly, like the idea of messing with the memory and fitting music in so-and-so place and your maps in another place.
9:56Can you run through the tool suite, I guess, on PicoA that you use? 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 pico8 i mean 128 times 128 that really helps me not running away with my ideas right you keep variable name 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 box whatever it is editor i guess yeah the editor exactly that's one thing right and then there's the sprite editor again 128 times 128 16 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 pico 8 game now i'm making another game in another engine but i'm so colored by my pico 8 work right so it looks like a pico 8 game oh that's pico 8 people tell me but no it's not it's actually something else but it still has so many things in common.
11:14The 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 the 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 yeah 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 yeah not an uncommon choice in game dev land but i know no countless people who immediately despite all of its advantages and presentries who bounce off of it because of indexing starting at one and not zero.
12:39The famous little work. Yeah. Cool. Yeah. Thank you for some minutes. So, you know, you mentioned various like 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 it a couple of times and that you use on, I think, I believe you used it for the arcade distributor you gave us EMF, but it is multi-carting. Can you tell us a little bit about multi-carting and how it works, I guess. So I guess actually, first of all, we'll start with what is a cart in the context of BekoA, I guess, and how are games distributed?
13:12Yeah. So once you're happy with your game, the main idea is that it's 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.
13:53Yeah, 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. Which makes it super easy to store, right? to 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 pq8 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 a cartridge but if you think oh i wrote this code and it doesn't really fit for instance in my game golf monday the 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 cart because it doesn't fit in the actual game cart so there's a title cart 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 right then people are of course chaining this into craziness some 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 carts 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 car 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 it's 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 yeah which i guess brings me on to my next question so and we'll talk about this more in a bit but you make picoate 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 so i know there's export tools but like does picoate natively support building executables for the platforms 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 so it's horribly easy it's so easy i think i released six or seven games on steam i develop on a mac i've never tested the windows builds i just uploaded them and they're like 90 percent of my players use windows obviously but it just works so well so i don't need to test it nice the advantage of your whole game engine being its own little virtual machine i guess yeah definitely It's very cool.
17:10So you mentioned, you know, along the way, building your own map editors, building various tools, and some of these tools, you know, are commercial releases, PicoCAD and PicoSynth. Again, this is one of the things my perception of you as a PicoA developer is quite unique, because I think you build an unusual amount of tools in PicoA. 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? I think it's a necessity sometimes to make the games I want to make. And also lots of time, And like you mentioned, PicoSynth and PicoCAD, they're all, they started as something else, right?
17:42And then it turned into something. PicoSynth, 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, the same with PicoCAD, I don't know anything about 3D with PicoSynth. I know nothing about synth or how they work. so that actually started with me playing around with virulet physics right 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 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 And for me, it's very much I prototype stuff.
18:36If I find something that's fun, like this cable, it wasn't just a nice feeling to move them around and cannot click them into little holes. Then the actual application doesn't matter so much to me. 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 yeah so pico cad 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 phases 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 it 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 and things like that but it's super simple but the same way peak weight kind of breeds this creativity through you You can't even go farther, right?
20:23There'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.
20:59Right, right. You know, when you say it's that aesthetic of writers 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 tool set is developing? Or was that a purely organic, it just came out of the constraints situation? When I started making PicoCAD, again, there was some talk about, oh, you can do 3D in PicoAid. 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.
21:31I could just write that in text, right? It made sense. And I could edit the UV coordinates and things like that. Then how it would be nice to do a muscle car with some sort of exhaust on the hood 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.
22:08So the game or 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 a key and do freehand movement but that's for the pros right 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 becomes really kind of lines up 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?
22:48And then the Pico 8 palette, it's very specific. And when I had to 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. Instead of just fading into a darker shade, it actually fades into different colors, which gives a nice vibe to it. Awesome. 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 you listen to know about 3D rendering, what does it take to do 3D in PicoCAD?
23:30Because 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. Yeah, so PicoAte 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 uh and then it's just packed with layers on top of that but that's the core is still rotation around origo or the center of the scene and i mean if you have one dot 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 picoate has this specific thing which makes the texturing work right which is called t-line 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 right cool that's really useful because that was part of where i think my mental model was struggling so when you first come to pico a 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'm hearing how those parts interact with the 3d is really useful okay cool Then you also get perspective correctness, right?
25:07Usually when you draw a texture in 3D, you 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 a 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's childhood. Yes, people invest a lot of time in recreating that aesthetic.
25:42So if the engine doesn't afford it, that's great. Yeah, so onto the, I guess, like the lighting and the shading. So, you know, as we said, for various like geometry reasons, the Pico CAD models look very distinctive, but you have a really nice differed shading approach as well. Can you talk briefly about that? 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 art or a square or whatever, right? And it's quite useful when I do particle effects in games.
26:21For instance, if I want things to fade out, 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 Picoate, 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 the higher part of the byte, you can use for another color.
26:55So then you can tell Picoate okay use this either pattern that i've 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 very cool that makes sense yeah and then while i was developing that i'm I usually am very open with my progress on social media. It gives me a lot of good feedback. And of course, Zep, Joseph, who's making PicoAid, was following that as well to some extent.
27:34So 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 you kind of slipped in into a new PicoAid version so I could get even the textured so I could lit. So I can use the dithered lighting module even on textured faces. 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 I 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 PicoA API providing for you in terms of utilities when you're developing a game?
28:15What is the kind of tool set it gives you? i mean you get an api to kind of access all these things like sounds tile map sprites there's a lot of syntactic sugar in pico 8 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 is just just a horror for me once you get used to just dell and add and that works in pico 8 because there's the api is so compact so it doesn't collide with anything else right also when i started writing pico 8 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 of how to write my own version of that that also due to the format i mean the the same format in peak weight 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 peak greater as well so all that is it's also built custom yes again this is somewhat of a silly question but so when you're talking about you know writing your own split implementation or you know even your own tools how are those used because there's no like package management situation right like you're not like importing modules so is it just a case of copying and pasting your implementation into your new cart you can actually import like that right there's a little include statement you can say so okay in case I had, let's say, a Verlet engine, right?
30:06And then I could just do import verlet.lua or something. So 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 product, 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 does it doesn't help to reuse things but for for picocad for instance one of the key things to do was usually in picoy8 there's uh you get three functions that are drawn that are called automatically so there's init which kind of sets everything up there's update which is called 30 or 60 times per second and then there's a draw which just draws everything right and usually in all the programming books and what you learn in school is supposed to have the 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 then i can just run through all the vertices look at their screen positions is any one of them close to the mouse and get all that weird stuff where am i in 3d in my 2d interface that's just solved through that step right yeah that's really neat 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 this but this is what i had right and what i chose to do and it works surprisingly well right yeah yeah absolutely and it's again a good example of the constraints right like i 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 pico cad i know and we've spoken you know you mentioned your map edit 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 the workshop at emf camp 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.
32:57Do you have a favorite unintended use of Pico8 that you've done personally or that you've seen? I wasn't by any means, just when I said that, I wasn't the first to make a Pico8 presentation. The first I saw, yeah. I know Joseph White who did the Pico8. There's a YouTube video where he does something similar and I thought, let's just retrace that. I don't have any good examples for this. I once thought that I was going to make my website in PicoA to use PicoA 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.
33:31I don't know. But part of PicoA 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. Yeah, absolutely. Making your website in PicoA 8 would be truly like connecting it to the Flash legacy. That would be great. That would be awesome. Would be great though, right? To not only build the website, but have the website, the full screen PicoA 8 app. That would be great. That would be nice. Yeah, it'd be lovely. So, you know, in the intro, we mentioned, you know, your indie studio, Upskabet, whose pronunciation I probably just butchered.
34:06And you spoke about the BBS and the model, the normal model of distributing games in the PicoA ecosystem, which obviously has a commercial studio, you know, 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 ecosystem like how that works on a philosophical level it's kind of difficult because as soon as i mean i've done 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.
Read the full transcript
34:42Just, okay, now I'm using this, but have I done enough for the community, et cetera? 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 PicoCAD the first time, then it was free and basically people could donate on each. 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, well, not limited, but at least restricted tool.
35:19So 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 need to kind of slow down if 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 yeah yeah because you were doing lots of experiments you know 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 like 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're focusing on and then you shipped helgineers 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 a 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 in that frantic year i imagine it's changing 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 burnt 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 your timing with that was amazing and that's been my best game actually and i made that in two weeks yeah by just being frustrated on my main project i try to catch when i get silly ideas that i feel that when i can when i can kind of for me can i see the path yeah from where i am now to it being done and to see how everything kind of falls into place then it's very easy for me to just put on the skygglappar in swedish the blinkers i think we call it yeah exactly then i just go there in a day or so right and that it makes it possible to very quickly i'm in the submarine game for instance where you build your submarine auto 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 there working but you can at least get the feeling of what it could be so you know so you made a profile 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 find is there a particular one that's like more successful for pico8 i kind of imagine just from like vibes that like pico8 games would sell better on itch than steam i don't know if that works out reality how do you find them i found it absolutely so but it also comes down to that i've had six years to build an audience on itch 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 more becomes like a blip and then it kind of goes into into nothingness and patron is nice to have uh 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 right that could pay for a musician or special art or whatever it could be one of the interesting things about your patreon is your upper tier i think you you release the source code as well which i think is you know going back to what you said you know 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 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 like a niche your niche like pico8 community member followers i have four tiers and one is like two dollars 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 a number one fan which is just throw your money at me and i'll be eternally grateful but i think the lowest performing tier or performing but the tier that most people are not interested in is the early access thing interesting 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 haven't think that's been the major struggle with making pico 8 games commercially how do i kind of break out of the dev community yeah that totally makes sense yeah 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 right but yeah i just said the breakout's important because i'm now that i'm so pico has been on itch for a couple 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 pico 8 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 mega flop computer right yeah yeah so it's i'm trying to do a lot of expectation management so people actually know what they'll get 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 Pico 8 if you know Pico 8, but then just being read as bad software if you're not.
41:04So how are you doing that expectation management? Is it like part of your pitch for these games as you reach a wide audience having to also sell Pico 8 in some way? I don't think Pico 8 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. Right, right, right. And you have to live with that. And if it starts to slow down, you're doing it wrong. right that makes sense so you know you've got pico care coming 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 that's on a different engine what is the engine so it's built it's not a built-on engine it's built on a framework called love 2d i'm familiar with it yeah cool which also has as we spoke about action scripts and this it's it has the way it's built up is 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 could just load my pico8 file into love 2d And then I had kind of all the function calls that PicoAids want to make things that went to my abstraction layer.
42:23And then that sorted out all the stuff with Love2D, right? 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 a very small effort. But it got my eyes open to Love2D then, of course. and also the possibility of actually having a custom-made, for me, PicoAid-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 reining in. But Cocoa's delivery service is then made in. I made the prototype in PicoAid and it felt fun.
43:04So then I moved that over to my API in Love2D. Was Cocoa Delivery Service needing more than you could build in PicoA, 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 use that facility for? It rose from a different perspective. So one thing I felt that, okay, I can have this game, I can make it in PicoA, 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 the Submarine game, for instance, that's definitely not going to work on Pico 8.
43:38So there's a version of that as well in the pipe. I'm very excited to hear that. Years away, maybe, but at least it's 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's definitely not going to work on Pico 8. And 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 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.
44:17You know, you've mentioned the upcoming game in 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 out music or do you hope to grow this as a as a studio and bring on more people well 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 grew tired of politics and big companies and all that 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 mean 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're like they're doing but they're still just getting paid so to speak yeah yeah absolutely 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 final question which may just you know the answer maybe no there's a lot of excitement about picotron zep'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 have you got any designs or things you're thinking about 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 that makes 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'm also thinking that the same with pico 8 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 picotron 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 crazy.
46:46But 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. 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 PicoA and your work. Thank you. Yeah, thank you. Happy to be here.
From the publisher
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 PICO-8 dev environment uses Lua and is focused on being accessible to developers while offering depth for complex projects.
The post Game Development on the PICO-8 with Johan Peitz appeared first on Software Engineering Daily.
