New Dec 26, 2024

My little games workshop

Top Front-end Bloggers All from daverupert.com View My little games workshop on daverupert.com

I always promised myself that if I was ever unemployed that Iā€™d make a video game. When life dealt me an unpaid work hiatus though, the last thing I wanted to do was code in my spare time1. I worried I would have to let that dream, that part of me, die on the vine. But as interviews started going well the desire to try my hand at making a game came back. And in true adult ADHD fashion I didnā€™t focus on one game, but rather made a half-dozen different games in different formats and three of those games have made it to the release stage. Hereā€™s an overview of those games and a little background on how I manage to make them.

Mundango, a bingo game about lifeā€™s small things

the bingo board ui for mundango

During my unpaid hiatus I found myself getting a lot of pleasure in the small things; seeing a cool bird, staring at trees, or watching animals be animal-like. To not lose sight of those moments and with a desire to replace my social media addiction, I made Mundango, a bingo game about noticing lifeā€™s small things.

The icon is a chill turtle because it invokes the feeling of going slow. The font is a playful little handwritten sans. And thereā€™s a (Japan-inspired) minor pentatonic scale that plays as you check items off. I hope you enjoy it but more importantly I hope it nudges you (and myself) to stop doomscrolling on our phones so much and to start looking outside the windows a bit more often.

Hard Code & Soft Skills, a workplace adventure

A character creator tool for hard code soft skills

In January, the unemployment got to my head and I got inspired to make a role playing game called Hard Code & Soft Skills. Itā€™s a workplace-themed2 clone of Lasers & Feelings, a one-pager by John Harper. The original game is loosely based on Star Trek, where you can use lasers or diplomacy to solve your problems. I wanted to flip that a bit and have the game world be a startup because tech needs to realize that soft skills are as valuable as code, so thatā€™s my big social commentary.

It wasnā€™t labor intensive to clone the original game, but I put a lot of time into building a little one-page website with a character generator. Itā€™s Astro and web components, if youā€™re curious. I also put a lot of mental energy in planning out the first episode of Hard Code & Soft Skills on Shop Talk. It went better than I could have imagined and what a thrill to get it out the door.

Pentablaster, an instrument with no wrong notes

the UI for pentablaster

The pentatonic scale sound effects in Mundango were a hit with some folks, so I dug in and built a whole instrument that only plays pentatonic scales and called it Pentablaster! It took about a week and Iā€™m pleased with how it turned out. Itā€™s jammy and a little unique. I extended it to allow you to change the key and to choose which pentatonic scale you want to play.

Thereā€™s some features Iā€™d like to add, but worry itā€™ll enter the ā€œso complicated I donā€™t want to work on it anymoreā€ paradox. Iā€™ll park it for now, but I learned a lot about Tone.js in the process.

An unreleased solitaire game

a skull with the text you died beneath it and a button that says reset game

I went on a short bender learning about Solo RPGs (like Ronin) and that sparked an interest in trying my hand at making one. I challenged myself to prototype the game on pen and paper first to prove the game mechanics. After an evening of brainstorming, I devised a game system based on a standard 52-card deck of playing cards as a prototype. I play-tested it with my son and we both thought that I should make a mobile app version. After some nights and weekends, I had a rough alpha prototype.

I play-tested the game with friends in the ShopTalk Discord and I got great, actionable feedback. They confirmed my suspicion that the RNG (randomness) was too high, creating a lack of decision making agency and thereby ruining the fun. I made some tweaks and the second round of play-tests went much better. Itā€™s feeling pretty good now, but I think thereā€™s one more ingredient needed to tie it all together before public release.

An unreleased Playdate game

Since acquiring a little yellow wind-up boi, itā€™s been a small dream to write a game for Playdate and I picked the idea that seemed like the easiest and most PlayDateā€™y and descoped the hell out of it so that Iā€™d have an achievable goal. Itā€™s an office-themed3 RPG type game.

After playing with Playdateā€™s web-based game editor Pulp and trying PulpScript, I felt the chafing of limitations and wanted to get closer to the metal. I watched every one of SquidGodā€™s Development Tutorials and decided to download the Playdate SDK and write the game in Lua. This is my first time writing Lua and itā€™s been interesting because everything in Lua is a table: Arrays are tables, Dictionaries are tables, Objects are tablesā€¦ tables all the way down. That takes some ā€œundoingā€ of prior programming best practices to feel comfortable but after awhile you learn to embrace the chaos and for-loopedness.

To short cut some of the player controllers and level building I picked Cotton, a Lua-based framework for Playdate. Cotton uses the LDtk map editor for easier map making and that was a feature I was looking forward to using. However, I encountered a bug somewhere between the framework and LDtk. If I updated the map, my player could no longer get to a different room. Insecurity started to set in:

Feedback from the Playdate Dev Discord was ā€œLast commit is 2 years ago, projectā€™s deadā€ and ā€œUse [Framework X] insteadā€ā€¦ šŸ˜®ā€šŸ’ØĀ Ugh.Ā I thought only JavaScript dorks did this but apparently Lua dorks do it too. I understand theyā€™re trying to be a version of helpful; but this is terrible advice for someone who is learning. ā€œYou need to start overā€ or in video game parlance ā€œThe Princess is in another castleā€ kills the dopamine rush needed when learning something new.

But I didnā€™t give up. And after many shower thoughts, I mustered up the energy to do some good olā€™ fashioned debugging. The first step was step-by-step isolation where I manually diffā€™d thousands of lines of JSON line-by-line. That one step taught me there was a change in the exported JSON somewhere between the version of LDtk that Cotton used (v1.3) and the latest version of LDtk (v1.5.3). The primary key for joining map tiles no longer exists in v1.5.3. Then I followed the breadcrumb trail of how Cotton imports LDtk files and I fixed the bug by creating a new table (because Lua) to act as a join table for the neighboring map tiles.

I was able to finish my core game loop and Iā€™m proud of that, but fixing a framework level bug cut the wind out of my sails. I may PR the bug fixā€¦ but itā€™s more of a patch job than a holistic fix and Iā€™m unsure if the author of Cotton is even interested in supporting that on their abandoned project.

Will this game ever come out? I hope so, but itā€™s emotionally hard to pick up after fighting with it so much. If I buckled down, built some assets, and wrote more NPC dialog I bet I could finish it in a couple human weeks of work. Perhaps I could outsource the asset creation.

How the sausage gets made

I make my games after the kids and spouse go to bed or while the TV runs mindlessly. In some ways Iā€™m borrowing from my own mental health staying up late tinkering with little apps that Iā€™m going to give away for free. But these ideas all occupy brain RAM, so it feels good to chip away at ideas and get them out the door, to make room for more ideas, to chip away at ideas, to get them out the doorā€¦ itā€™s a vicious cycle, but I think a net positive for my mental health.

To hedge against wasting my spare time, I get prototypes out for review as soon as possible to gauge interest and invest accordingly. Shopping prototypes curbs emotional over-investment in an idea. Time builds attachment to bad ideas, making them seem good and grander in your head than reality. If you build in secret too long, it ends in disappointment when the public doesnā€™t understand your genius you spent all your time on.

I default to web tech because itā€™s what I know best and staying in your wheelhouse means you can move faster with less mystery roadblocks (like the LDtk map issue above). But Iā€™d like NOT WORK to not feel like work and see value in that, so this may change going forward.

At times I create artificial limitations (e.g., limit myself to a single asset pack) because if the scope is overly broad and infinite, that guarantees failure. Having rules, even if arbitrary, allows for play.

The last tool in the toolbelt is scoping the hell out of my ideas. When attention is your biggest limitation (e.g. ADHD) then keeping checkpoints small and achievable are critical. Then once you have the foundations established, do as much as time and ambition allow.

Unsure of whatā€™s nextā€¦ or how to book all of your free time from now until death with no promise of financial gain.

I have dozens of ideas kicking around in my head at all times, so my main issue is prioritization. Hereā€™s the ideas that occupy a lot of brain RAM:

Thatā€™s a sampling of whatā€™s going on up in the olā€™ electric meatball. Not to be too macabre, but Iā€™m not sure I have the lifespan left to get through even half of that short list. Hopefully thereā€™s a banger billion dollar idea in there that allows me to retire and work on all the non-profitable dumb ideas.

While doing this for a living is far off and/or will never happen I am at least pleased that I lived up to the promise to myself to make games if I had spare time. I made games, smaller in scope than what I had originally imagined, but Iā€™m comfortable with that given the timelines. No regrets there.

Risky as it may be, I may jump to a 3D engine because Iā€™ve had a lot of fun building in environments like Unity in the past. That balloons the scope and raises the level of difficulty beyond my current expertise and it has never worked in the pastā€¦ but perhaps this time itā€™ll be different! šŸ˜‚

  1. I had some big work emotions and burnout to process ā†©

  2. Iā€™ve already established that yes, I was processing some work emotions. ā†©

  3. Again, processing some work emotions over here. ā†©

Scroll to top