years of making games

4202 words

I have been making games for a long time and I will probably never stop. Before I knew how to make games I would write down lots of ideas for them in a notebook. The moniker "soulware" is originally from these notes (being the name of a fictional games company). I started making games with Multimedia Fusion 2 at a summer camp, and after the camp ended we got a CD-ROM of the game engine. I would hack on a whole bunch of these projects at home, making weird side-scrolling games or top down adventures with the default sprites or very crude hand-drawn ones. At one point, I wanted to make a game like Cave Story, so I tried to open up Unity, but I was scared off by its interface and the scene view's strange muted skybox.

Some time later, in high school, I returned to Unity more seriously. I made some smaller games which are incomplete or lost to time. I followed along Sebastian Lague's 2D platformer tutorial which used Unity. I worked on one of these experiments perenially during summers of high school, which was a revised version of a platformer I made back in Multimedia Fusion 2. That game is available on itch.io in all its messiness.

During the pandemic I made a couple other Unity experiments, but lost the desire to work on games around April. I also learned about Godot around this time, via Miziziziz's explanation of moving from Unity. I opened it up and worked through the tutorial but after college started I spent my time in other ways.

A couple of times in college I tried working on game jams either solo or with friends, but found myself lacking the ability to iterate quickly enough to be a reliable solo programmer for a jam. Most of these attempts also puttered out. I'd been exposed to the virtues of finishing small games, but found myself unable to work rapidly, especially compared to my speed in other areas of software development. I would have to get scrappier.

games every month

In college, I also met Zane. Among other things, we connected over shared interest in particular games we enjoyed and game development (which was half of Zane's degree). In 2023, a discussion led to a brainstorming session and playtest for a class project, which became Zane's capstone Dizzy Wizards. I would help out with design and playtesting on this project, and though this was a physical game it allowed me to flex some long-atrophied design skills.

Sometime in 2023 there had also been an effort to get a group together that would make a game every month. This endeavour fell apart before the end of the first month. Most of the people who initially showed up for the meeting did not return, it wasn't entirely clear how team formulation would work, and ultimately nobody made a game for the chosen theme. After we graduated, Zane decided he wanted to make a game every month for a year, but without getting a big group together. My understanding is that the games program at Northeastern was inconsistent when it came to simply getting experience making games (and this seems to be commonplace in games programs). Courses like Rapid Idea Prototyping allowed for students to make lots of smaller things, and this taught a lot just through the iteration. I don't know that these were required to be complete, though, which is essential. You have to learn to finish. Courses like Game Studio handed off last semester's progress to a big team of 30 students, and proved an operational nightmare. The project Zane worked on is still being iterated upon by students many semesters later. So if you wanted to get hands on and finish a variety of games, you just had to do it yourself.

The first game was PING. This was done in Godot, by Zane and Michelle. Shortly thereafter I committed to joining in on the next month's game. We made Darwinism over ~4 days. This was my first time properly using Godot, and it ended up being excellent circumstances: have a deadline to get something to work, and figure out how to wire things together. I was pretty familiar with Python and how Unity structures "scenes", so it wasn't too difficult to onboard and start using the docs when I needed to.

The next game for me was a few months later. Zane and I wrote a game without Godot, using raylib, to run in the browser, similarly over 4 days. This game, 🐛, was made for a "one button" jam, and also has no text (even the name is an emoji glyph). It is a bit abstract, but once you decipher the UI it really hooks you. It ended up being one of my favorite games I've made. Zane did the levels, and I played the game all week after we made it trying to hit the last one. It also works in a mobile browser with touch feedback which is a really nice form factor for an arcade-like.

2025 was substantially more fruitful. We did a lot of jams, and for many games we were able to work with musicians or artists.

We made Draft and Graft, and then split up to make games based on the old Ludum Dare theme "You only get one". Zane made HAIL FUCKING MARY and I made Broken Keyboard Hero, which are also two of our favorites. Broken Keyboard Hero also enjoyed a bit of attention via a post in r/metroidbrainia, which was nice, since I was deliberately trying to make a game puzzley in that way.

Animal Kingdom Tactics ended up not being really fun to play, and it was a bit too ambitious for the short time we made it in. We didn't have a lot of time to test the full game loop, since it came together towards the end of our deadline. Only then did we get to reckon with the fact that what we had made wasn't really fun.

Ploverdrive is another favorite, which we made over a week on Cape Cod and then another week adding balancing and polish. This is an asymmetric shmuppy local multiplayer, inspired by Nidhogg and flash games like Get on Top, and it's really incredible to watch people play one another and get really into it. Rounds lasted from 2 to 10 minutes, and we would play for a couple hours during testing sessions. It was engrossing.

METEMPSYCHOSIS has great art and music. but the core gameplay is frustrating and a bit too esoteric. I think there's a way to make this one more fun, but we didn't get there. Pieces of My Heart is a dating sim where you date Tetris pieces, which was an idea my friend had a long time ago that we got to explore here. This was not intended to be a completely finished experience, moreso exploring the design space of what would ideally be a full-length narrative, and how dating sim mechanics (a la Tokimeki Memorial) and Tetris would get integrated into that. Despite not being "complete" we got a lot of work done on the Tetris and dialogue systems. When we return to the game, there's a clear path forward with regard to extending the narrative.

the bomb split

The biggest project in 2025 was The Bomb Split. This one started in May, when Zane suggested we should make a platformer. We had avoided making a platformer, since we were trying out other genres, and we had both made platformers in the past. We both really enjoyed platformers and the design space they enabled. Zane was playing tons of Spelunky around this time, and we talked a lot about Mosa Lina in our initial design ideas. We wanted the player to manage some sort of item that impacted the character's movement. In a couple of days we had a prototype for a game where your head was a spike ball, and you could throw it, and then you'd get pulled by a verlet-integrated rope (ostensibly your spine). This wasn't very fun to play, wasn't the snappy feel we wanted, and after Animal Kingdom Tactics we decided it wasn't worth continuing to work on something that wasn't fun. So we killed that prototype and started again.

We got together and watched Toby Alden's platformer recipe video, and spent 1-2 hours making prototypes. The idea for these games was that you would throw bombs that would propel you through levels. By the end of the first day we had prototypes that resembled the games they would become and also clearly demonstrated the difference in approach Zane and I were taking.

In Zane's game, which would become Explo, the directional controls would move your tiny character, as is expected in a platformer. However, pressing throw would toss a bomb in whatever direction you were holding down. The bomb exploded on impact, and the explosion had multiple radii that changed how much you were propelled. If you were too close to the center of the explosion, your character would get stunned, so you would go flying but had no influence over your character for a couple seconds. Challenge was born pretty immediately out of this, as there is tension in trying to move the character as far as possible, and certain maneuvers require carefully timed throws if you want a smaller or larger launch distance. From this core mechanic emerged things like the ability to climb walls infinitely. The game could hide challenges behind this, and players who picked up on this could deviate from the intended path entirely.

The movement mechanics of my game, which would become Grenadier, changed often throughout development. The initial idea for Grenadier came from a dream where a small character was climbing a rising shaft using two bombs, and could use them to bomb jump a la Super Metroid. But the timing of the bombs was designed to quickly teach the player this maneuver, and the game was a lot more fast-paced than how bomb jumping feels in Super Metroid. My prototype had a character throwing multiple grenades, each on its own timer, which would propel one another and your character. You would hold a grenade until you released the "throw" key, so you could release it closer to its detonation time. Additionally, you could release it at two angles (throw at the ground, or lob up if you were holding "up"), and it would bounce around for a bit. The explosions, unlike Explo, had no radii, and would send you at fixed angles, based on your angle to the center of the explosion, with some cheating to make certain scenarios feel more fair.

We set out to finish these games by the end of May, but that deadline got repeatedly pushed as we explored the possibilities of these games. It became finishing before the vacation that was making PLOVERDRIVE, then first-pass of levels done by the end of July, then we decided to submit the game to Boston Festival of Indie Games (BFIG). With that, we decided the game would debut at BFIG. We had also decided to ship the games together, since they had the same conceit but very different approaches, as a sort of "split EP".

Lots of pieces of Explo came together in the first two months of development, and though the final ordering of levels would change substantially many rooms were authored and playtested in this time. Grenadier was a bit slower moving as I still didn't know exactly what I wanted to do for the movement, and after each playtest I would scrap mostly everything. After lots of struggling I realized the grenades should be on a spatial timer, not a temporal one. Every time they hit a wall, they would tick 1 unit, and when they got to 0 they would detonate. This solved a number of problems I was experiencing in the level design, and people generally found it easier to follow than the temporal timer. In fact, they usually mistook it for a temporal timer! But they went through levels with greater ease even with this misunderstanding, and this moment of realization was fun.

The high-level structure of Grenadier also eluded me for a long time. Explo was structured like VVVVVV from pretty early on. Single screens that had no scrolling camera, and you would explore an overworld to find dungeons, each of which introduced a single level setpiece that interacted with your bombs. Grenadier started out similarly, but without continuity between screens (you would just collect an object). Then, I embraced Explo's approach, enjoying how it felt. I also wanted to have things "unlock", like finding a second grenade and then being able to use one from thereon. I also had doors which would take you back to a hub world. Eventually, the unlockable items went away. The hub world became the access point to all levels in the game, at all points. I enjoyed the notion of a game that is flattened out, and accessible from every point, like a rhizome. There is a natural order people will play levels in, but there is no fixed structure. You can even enter the hub from the tutorial levels and skip them. Trophies became secrets hidden in harder levels behind fake walls, which are more playful secrets, since you are constantly trying to bounce your grenades off walls. It's shocking when one just passes through, and then you suddenly understand what sort of game this is, or at least what types of secrets it holds. I also tried out destructible walls, but I didn't love them for my game.

I explored lots of different gameplay ideas in Grenadier, and some of them ended up inhabiting the levels. For example, I experimented with letting the player have complete control over when the grenade detonated. This made it really easy to just fly around, so I scrapped it. But I brought it back after realising I could just have the level design change to compensate for this power. I also had a gimmick idea that you would pop out of the grenade when it blew up, like you were being launched out of an egg and reborn, for a secret level. This ended up being quite fun, and so that became a set of levels. So, Grenadier feels a bit lopsided, but is maybe more fun as a result. The thing you throw always bounces in the same way, but certain things can change from underneath you and surprise you. Other levels just introduce setpieces, like moving platforms or blocks that consume your grenades, which create precision or puzzle scenarios. I had to scrap some level pieces that I couldn't quite figure out, and sometimes too many pieces are jammed into one set of levels. In contrast, I would describe Explo as having a fixed budget of new things to introduce. They were designed thoughtfully, and earlier, even if implementations came later. This also meant they could be iterated on over time. Grenadier is a bit more scattered, and I would sometimes sit around without designing much for a couple weeks or a month, aside from a smattering of notes every so often, and then try to cram in a lot of stuff.

As with all software projects the last month or so of developing these games was a massive cram. We had a now externally enforced deadline of December 7 and we had working demos from October 14. In between that time, hundreds of levels had to be made. Explo had many levels, but they all had to be placed coherently in the grid-shaped world, connected by overworld, and two entire dungeons were still needed. Grenadier also had a lot of levels, but most of the demo levels ended up being cut or reshapen. Most of my ideas for levels came together in this last month-and-a-half period. If I did more designing earlier, I think it would have been better for the game. Or maybe I needed to sit on all these ideas for a long time, and I ought to have taken more time with the game. But, we had a deadline!

The last piece of Grenadier to come together was the postgame. After you beat the game, played gained access to a menu that let them poke around at internal values, like parameters for the grenade physics, how many grenades they could throw, etc. This allowed you to get out of bounds, which was actually further populated with levels. If you explored enough, you could find the secret final level, and see text which read "the end". Doors suggest the power to load and unload levels from memory, and that levels are disconnected as a result, especially with visual cues and changing abilities to reinforce the significance of entering a door. But as you are allowed to peek more into the internals of the character's ability, you are empowered to learn about the actual structure of the game. Littered throughout this world were also discarded levels. As I was developing, I would just grab a level and move it out into some inaccessible region of the world if I didn't like it. Now I was making that region accessible, and it felt right to leave the levels in.

On December 7th we brought 100 casette tapes containing USBs of The Bomb Split to BFIG. This was initially the only way which you could buy the game. We also put HAIL FUCKING MARY, Broken Keyboard Hero, and 🐛 on the USBs, since we liked them so much. We commissioned the art for the tapes, and they came out quite nicely. You can see an example of one here. We also made up the game studio syzygy.systems for the release of the tape. We sold quite a few tapes here. We've since sold the tapes at another tabling event, and ad-hoc as we go to events where we suspect people might buy them. They are almost gone!

After BFIG, we decided that we ought to release the games on Steam, both to get more familiar with this process, and make the game more available. We made some bug fixes along the way (the physical tapes included itch.io codes, so that buyers could still receive updates) and integrated Steam into the games, and after about a month we released The Bomb Split on Steam as well. We were done!

I'm not sure how I feel about Grenadier now. Here's a less-abridged slew of thoughts I had about it while writing this. Sometimes thinking about it makes me sad. I've enjoyed it quite a lot, and when it clicks with people it seems to really click. One of my friends has completed a speedrun of the game faster than I could, which in a sense makes it all worthwhile. Speedrunning a game is a great act of love. It's a bit peculiar and haphazard. It could've benefitted from more discipline in how I spent my time, or perhaps just more development in general. It doesn't have music, which either makes me upset or feels exactly right. Trying to optimize individual level times is a lot of fun. The postgame feels a bit ridiculous, since it came together so late. It has a little part of me inside of it. Sometimes I hate it. Sometimes I love it. It's doing something unique. It's doing something unclear and elusive. I don't know if it really gets to the thing it's about. What is it about? If I knew, I wouldn't tell you in writing. I'd tell you in Grenadier 2. It could've been half as long, or twice as long. It's all done for now, though, and I am different for having made it. Even if that means moving away from it entirely. I haven't played it much since it came out, but I did really enjoy playing it while I made it. I would 100% it every day leading up to its releases. The next larger project I do will take a lot of lessons from this one.

The other big takeaway from this project, for me, comes from Explo's development. Throughout it, Zane would fight with various systems in Godot, especially the Tilemap system. The day before release we discovered that Explo exceeded the resource cap, because the whole game was loaded at once, and so collision would just disappear. I recompiled Godot with a 4x larger resource cap, built the game, and fortunately everything worked fine. This particular situation was avoidable, but would've required intervention much earlier. The structure of Explo also solved some problems which dynamic level loading and unloading would've made much harder, as entities in the world were free to rely on one another's existence. After all the friction with Explo, we decided that the next platformer we make should use a custom engine, akin to what we did for 🐛. We want this for 2D platformers (or 2D tileset-based games) since we know which features we'd need to borrow or improve from Godot, and can produce a leaner engine tailored to that particular feature set.

now

Since releasing The Bomb Split, Zane and I worked on Four Faces of Fenrick along with 3 others in February. This was another platformer, this time with enemies and unlockable movement abilities. Despite our previous games involving bomb-chucking avatars, there are almost no enemies in either game (Explo has brilliant enemies in the final dungeon- no spoilers!), and Zane suggested we work on a combat-based platformer. We designed the moveset on a Friday night, verbally, and then Zane implemented it the next day. The final product was far more movement-based, with the combat really just supplementing your movement, but you can slow down time and chain movement abilities to get near TAS-like precision in the game.

Fenrick is really good. We've come back to it a lot, even after its release. It's fun to just rip a speedrun of this one. We even discovered you can beat the game without collecting one of the required movement abilities, which in my mind makes this game part-metroidvania (we wanted to make it a metroidvania, but the time constraints of game jams meant a linear level structure made more sense). This game was well-received in the BIGMODE Game Jam, placing 3rd overall for Fun, and getting played by videogamedunkey on stream. This was a goal for us, as we made Draft and Graft for the same jam last year, but weren't a finalist.

We also went to GDC at the beginning of this month, which was a great time, and deserves its own writeup. I came away with lots of new games to play, great connections, a renewed desire to make lots of small games, and a Playdate, which I am currently porting 🐛 to.

Generally, we have been active in the Boston game development scene. We attended last year's Godotcon, and hope to do so this year (whenever the US one gets announced...) with many more Godot games, and more Godot thoughts, than last time. We also go to a monthly Godot meetup, and try to show our games at the triannual demo nights. The demo nights for me were instrumental in playtesting Grenadier, and PLOVERDRIVE has been a big hit.

With the completion of Four Faces of Fenrick, Zane has completed Game a Month. Though he didn't make the deadline to make 12 games in a year, he has made 12 games since PING. I have made 10 games since Darwinism. What to do now?

For starters, there's the custom engine. I also want to try out PICO-8 to make some smaller games. I want to embrace a joyful development process in my future games. I want to learn some tools which enable those things. Godot, in some respects, is that tool for me. Not for everything. Not for platformers, or some of the other simpler stuff.

I'm also interested in cultivating a more deliberate aesthetic, in art and sound, that says that some game is me, or an expression of me, or an expression of me and another person. Games by kultisti, droqen, sylvie are instantly recognizable. Browsing their catalog shows me something about them. I want that from my games, which probably means honing my art and music skills.

After a couple years of programming games I'm starting to get the hang of that aspect. Motivation is not something I can always turn on but I'm capable of building out a game much faster than I was using Unity in college. The next step is achieving that speed with one of these lightweight engines, or while building atop my own engine.

Since starting Darwinism, I've had lots of interesting discussions about games as a medium, and Bluesky has some excellent discussion which I am either a part of or privy to. Starting with this piece, I'd like to write more about games and take a more active role in this discourse. I also want to experiment more to understand what games are to me and what sort of games I like to make.

And I will probably never stop.