My dream portable game console as a developer
I want to build a portable console for game developers because I want it
When I first saw the topic for this week's writeathon, I immediately started rummaging through my dozens of random web development projects. I could talk about my project to build yet another UI framework, to build a functional version of Golang called gofun (yes I am good at naming things), or my project to create a JavaScript game engine inspired by React. Instead, I decided to go wild and forget about limitations. For a long while, I've been thinking about a game console design for developers. Something like a Nintendo Switch, but with a feature where plugging in a keyboard would turn it into a "development console". I love game development, but I find myself the most creative when I am not in front of my computer. What if I could "dock" this portable console and then start creating on the bus, in the cafeteria, or when waiting for something in the car?
That'd be a dream come true. I want to build this console because I _want_it personally. If no-one is going to build it, I should do it myself! Cue in the Thanos "Fine, I'll do it myself meme". It's been a project of mine for 2 years now and this post is the perfect occasion to start researching that project seriously (and documenting my findings in this post of course), because I really want that console.
If you search "create a game console" on Google, there will be some results talking about the technical design of a real game console, but most results instead show Raspberry Pi powered consoles or something similar. My first result on Google, for example, is this post by Instructables explaining how to get RetroPie going for retro gaming. In the same vein, it would probably be possible to get the TIC-80 fantasy console onto the Recalbox OS and then modify a few configuration files to have TIC-80 start on boot as the "main computer". Retro gaming is clearly the focus of many of these "game console" and I really like a good retro-feeling game with amazing pixel art, so I shall follow this direction with this project.
Fantasy consoles
I used these words earlier, but what is the TIC-80 and what is a fantasy console exactly? A fantasy console is a "fake" console or computer that creates arbitrary limitations for game and application development. They are pretty much emulators for consoles that do not exist, giving you all the tools to play and create retro games without the hassle of hardware. There are a lot of them out there, but my favorites are TIC-80, PICO-8 (The popular game Celeste was first built with the PICO-8 and the fantasy console is embedded in the final game for you to play), and the PixelVision 8. Many of these fantasy computers and consoles also build in tools for game development inside the console. For example, the TIC-80 has a code editor, a music editor, a sprite editor and so on. To emulate the feeling and limitations of retro gaming, they also impose technical restrictions on what you can create. For example, PICO-8 limits you to a 128x128 pixel, 16-color display and limits your code to a total of 65535 characters. I find that these limitations bring out a lot of creativity, it forces me to think about the core of my game and perfect the game feel rather than be bogged down in pretty graphics or a story.
The PixelVision 8 and TIC-80 have the word "OS" in their documentation and on their website. They are emulated computers after all, it makes sense that there would be an operating system "inside" that computer. PixelVision goes even further with a mouse controlled user interface.
But they are still "tools", applications that run within another operating system, they are not the base computer OS. As said earlier, we could have a Linux distribution tweaked to start one of these consoles on boot, but that's boring. The PixelVision 8 used to have an operating system that you could install like any other OS (supposedly), but the GitHub repository is now empty and that project seems lost to time. However, the TIC-80 has a "bare metal" version that releases with each version, which we can install on something like a Raspberry Pi. No more linux, it boots directly to TIC-80 and is apparently really fast.
That's a good start! With a fork on GitHub and some tinkering to detect when a keyboard/mouse/dock is plugged in to switch to development mode, we'd have the "switch" part of the design. I definitely would like "real" game engines to also work in this model, but the TIC-80 is a really good start. It has that retro aesthetic with the pixel based interface, which is a big plus.
Retro handheld console
There has been a surge in retro gaming consoles, either for game development or for playing new games on more retro hardware. I said earlier that I should do it myself if no one was building these kinds of consoles, but that would be ignoring all those efforts. While none of the examples below do exactly what I want, their tech is definitely worth checking out. In fact, I half wrote this post just to show off some of the tech that's out there.
The company Clockwork are creating two very awesome products, the DevTerm (an old school terminal and computer that looks like an old printer) and the GameShell (a GameBoy-like handheld). Both ship with ClockworkOS and pack Raspberry Pis as their main compute unit. They are specialized devices, but there is nothing stopping us from installing Ubuntu on it. Clockwork OS is a really cool OS for focused development though, and they advertise many fantasy consoles (as well as more complete game engines) as running perfectly on it.
I found them out while researching this article and, I gotta say, I am hooked. While it's not a "switch"-like game console like I want, both the DevTerm and GameShell can connect to Clockwork's tiny cloud and exchange files. Given how small both are, I could use the DevTerm to write the games, then play them on the GameShell, syncing "cartridges" on both through the cloud while on the go. That sounds kind of cool actually.
Analogue is another company going the GameBoy route. Their beautiful Pocket handheld has many very cool features, including a dock and a digital audio workstation for creating music. It also partnered with GBStudio, a visual editor for creating GameBoy and GameBoy Color games, so games can be developed through GBStudio and tested directly on the Pocket. Analogue have recently revealed AnalogueOS, an operating system to power the Pocket. It's unclear at the moment if Analogue plans on releasing their OS for other devices, but the potential for creating gaming consoles with development capabilities would be massive.
Last of the GameBoy-like handhelds, but not the least, is the Playdate. A pretty cute little handheld with a crank, the Playdate can play games distributed directly through their website or loaded into the device. Panic, the company behind Playdate, has clearly embraced developers and provides all the SDKs you might need to develop games. They also provide a web editor for creating games that includes everything needed to create a game, like a sprite editor, a chip tune editor, and a script editor. It's clear that Panic intends the Playdate to become an ecosystem and I am all there for it. While it's not the "switch"-like experience I want, I could see myself loading up the web editor on my phone, tinkering on a game, then playing it directly on my Playdate. That does sound very fun.
The last console I'd like to highlight is not a GameBoy, but rather a more modern handheld à la Nintendo Switch or Steam Deck. The Lyra+ from Creoqode is a very nice handheld computer/console built over a Raspberry Pi 4. Since it uses a Raspberry Pi rather than more unique hardware, it means it's just a PC in a handheld format and that unlocks a lot of things. Anything that runs on Raspberry Pi will run on the Lyra+ and you're only one HDMI cable away from docking it. It also means I can get TIC-80 installed on it as the OS and get that "switch"-like experience I am looking for!
Retro gaming consoles are not new. As said earlier, you can whip up your own with a Raspberry Pi, a 3D printer (or wood carving skills), an OS like RetroPie or Recalbox, and some patience. You can make it portable with some electronics, there are many guides online and many pre-made DIY kits as well (The Creoqode Lyra+ is one of them). I'll have to search for a few more kits and compare what can be done (I would like something a bit more powerful than a Raspberry Pi), but that project seems a lot more doable now that I've done all the research. Maybe you'll get a second part where I really build it!
What do you think? Do you want this console as well? Or maybe you might have some idea on how to improve the design/technical details of this console? Let me know what you think in the comments below, I can't wait to know what you think.