Coding into the Void

Coding into the Void

A blog that I’ll probably forget about after making thirty-five posts.

2021 Retrospective: A Return to Goals

2020 was a year of game dev anarchy. I had no goals and, if I did have them, the pandemic most certainly would have thrown them into disarray. 2021 started out with a singular goal: to work primarily on a single game, publishing an MVP1 early on and continually adding more content to it. Soon after, it became to write 20 blog posts over the course of the year.

One of those ended in abject failure. The other was moderately successful. Which one was which? Well, I’m sure it’s obvious based on where you’re reading this.

Despite my intent on focusing on one game the entire year, the theme that pervaded 2021 was a lack of focus.

Timeline

Since the year was rather scattershot, I figured I’d start it out of a timeline2 of when I worked on my various projects.3

The zoomed out view really makes it look like I barely worked at all.4 Not sure what I was doing in June, but I think it was a combination of family stuff, reading, and playing video games.

The Year’s Focus: The Forest for the Trees

December–January

In December of 2020, I played Ys: Memories of Celceta, an action RPG with a central mechanic of exploring some vast, unexplored forest. While I didn’t find the exploration mechanic in that game all that rewarding, the idea captivated me.

Capturing the feeling of exploring some forgotten woods, not knowing what you were going to get, was like catnip. Even though it was far outside my wheelhouse, I was driven to try it.

I’d make it a procedurally generated exploration simulator (codenamed LowRezExplorer5), where levels would be generated similarly to those in Deeper and Deeper and Getting Out, but with multiple connections such that you could freely travel throughout the zones. There would be a map that you would fill out, and, once you mapped a zone, you could name it.

It scales cleanly to a wide amount of content. At its core, all I would need would be a starting village and one archetype for a forest.6 Future updates would have different forest types, points of interest, other villages you could make contact with, the remnants of the civilization that occupied your village, etc.

I started work early, in late December, pulling the dungeon generation code out of Getting Out and attempting to make it more generic. I moved a bunch of hard-coded terrain types from being enumerated in code to using scriptable objects. In doing so, it took a while to get back the “paint style” concept,7 and I never got back the “trait” concept.8

I’d lost familiarity with the dungeon generation codebase, and some parts that were hacked together, like wall placement, were utter mysteries to me. Much of my early time was around restructuring the code in such a way that I could understand it once again. This initial work lasted until January 9th, at which point I lost focus.9

February

Returning from a digression to blogging and my HTML games, I picked this back up on the 7th of February.10 I worked heavily on the map screen, which raised issues that I’d run into before with handling multiple canvases working together, managing time scale, pause state, etc. The work that I did in solving this issue for myself has paid dividends in every other game I’ve worked on, and has provided a solid foundation for my most hated part: menu building.

This was all very productive until I hit the biggest problem: trying to make a good looking forest. I tried several approaches, but none of them satisfied me. Unfortunately, when I run into something like that, it tends to half my productivity.

So, I took a quick deviation into some of the world building I wanted to do, and designed a alternate alphabet. This is one that the villages had before they were conquered, with the thought that you could potentially stumble across books in this language in the future. It was fun to do, but clearly wasn’t on the path to creating an MVP. To that end, I also pulled in the note system from Strange Traveler (yet to be used in a released game11).

The font that procrastination built:12 The villager language

I sustained motivation while working mostly by fleshing out the different type of procedural generation options. I added voronoi-based generation options, improved my cave generation, and a whole slew of other tasks. None of this, naturally, was core to the game. This motivation petered off on the eighteenth.

March–April

Driven by some unknown motivation, I returned on March 19th with one commit: adding control remapping to the game. This was accompanied in a number of additions in my core package,13 around what would later be Menutee, my menu generation/managing package.

I returned once again in April 6th, falling victim to that which I always do: updating the version of my core package in a project. This can take a while, and in this instance, I had replaced the UnityAtoms library with my own, lighter weight, object references. Aside from that, I made maze generation more robust, and fixed some bugs related to the maze. These particular changes were backporting some improvements I’d made in my Shining Maze project.14

July–September

After a completely bare June, I came back to game development on July 11th and 12th with a return to this project. In the end, I just added control serialization, did some performance improvements to the minimap, and updated some packages.

August was similarly sparse. The 11th was slight improvements to the minimap feel. On August 24th, I updated my packages (Menutee had split out of KHPackageCore, which was some work). I continued work for several days, pulling some of my improvements from the Shining Maze project and rewrote moderate amounts of the dungeon generation code to hopefully be more readable. This sparse productivity ended on the 31st, and was largely just reacting to improvements I was making in the Shining Maze project at the time.

My final spurt of development was on the 16th of September. Unfortunately, it was limited to backporting the generation improvements from the final version of the Shining Maze project and pulling the updated note system from my StrangeTraveler work: library management.

Conclusions

When I was originally pulling the dates that I worked on this project, I was impressed with just how many times I came back to the project, with seven different development times. In writing it out,15 it was clear that many of the times I came back to it (March, April, September) were just keeping it up-to-date with other projects. August was the last time I meaningfully touched it.

The game across a whole year project was a complete failure. Fundamentally, I’m not sure that I’m self-directed enough to work on a project for that long. The longest I’ve worked on a game by myself and actually had it reach completion was five months, with the Shining Maze project, and that was a relatively small scoped project.16 If I step away from a project, I’m unlikely to complete it.

These may just be limitations that I have to acknowledge and work around. Perhaps that can be by working with other people,17 or by limiting the scope of what I work on.18

Regardless, I would still like to see this project across the finish line, although it’s certainly not going to happen in 2022. I’d need to improve my art game, but also dramatically restructure area generation to support more complex wall, ceiling, and floor models and textures. I simply don’t think that’s in the cards any time soon.

Why it Failed

  • Fundamentally, I don’t like releasing partial games.19
  • I kept over-scoping the initial release and not working on the fundamentals required.
  • It was very art heavy, and the art I produced did not meet my standards.
  • It touched parts of procedural generation that were a slog.

What I Learned

  • It was a testbed for myriad infrastructure scripts that made their way into my other games.
  • The refactored generator code was used in my the The Shining scene with minimal changes.
  • MenuStack, a concept that drives much of the work in my menu library, was battle-tested here.
  • Found a good way to hook up Rewired’s control customization.
  • How to make a font!

Four Block Drop’s Revenge & Typecasting Myself

20

It wouldn’t be a January without some Four Block Drop development. Delayed a bit by LowRezExplorer, I came back to FBD on the 20th of January. My goal was to port the enhanced scroll bars from What a Card! back into FBD.21 I quickly went on to more interesting things, as I added support for controller vibrations.22

With the keyboard and controller support, I felt like I was missing one big PC input type: the mouse.23 I wasn’t convinced I could do it justice—Tetris touch controls never feel right for me, but I wanted to give it a go. With some input overloading (click vs hold on mouse buttons), it actually feels fairly natural.

I struggled with how it would balance with the other input types, as keyboard and controller are balanced with the same DAS and ARR, but ultimately decided I didn’t care. This is a single player game, after all.

Along with that, there was a large focus on extracting code, particularly the menu classes, into my shared typescript library. I finished my work with FBD on February 2nd, and it led nicely into some improvements in my other Phaser games. The Appeasement of Cyclus got mouse and controller support and migrated to my generic menu system, and What a Card! also got migrated to the new menu system.

The Last Person to Get Into Blogging

As I was making improvements to my input system for Four Block Drop, it occurred to me that I thought how I handled inputs was interesting. I’m sure the techniques I used there have been done before, and were quite possibly inefficient, but I liked the progression of my code over the years. I figured I might as well capture my evolution in thinking. And if someone got some use out of it, all the better.

I quickly stood up a blog using Hugo on January 30th, and started writing the Phaser input series. From then until February 10th or so, I wrote all the input articles, and two more on my programmatic menus solution in Unity24, another topic where I thought my approach was interesting. I made a tongue-in-cheek header about how the current number of posts was all that I would write, and I was off to the races.

Not one to stick with one over-scoped yearlong goal, I established my other one: twenty-six blog posts in the year. With the glut of content I posted, I was more or less on track for that goal, but my attention shifted to other things.

I came back on April 24th to release the first programmatic menus post, and then again on the 19th of May to release the second. I often write the blog posts in a day or two, let them rest for a month, and then reread and rewrite sections of them. I don’t know if it helps, but it’s what I’ve gotten into the habit of doing. It makes writing blog posts more of a reflective and even therapeutic activity.

At that time, I decided I should do what I had wanted to do at the start of 2020: write a retrospective for my one-a-month game dev goal in 2019. I had lots of thoughts and feelings about the games I made, and I wanted to capture them for future me to read.25 That writeup took a long time,26 and the first draft was finished on May 23rd.

I came back at the blog on September 2nd, where I proofread and published the second menu post, and got deep into work on the third one. Those posts were shortly afterwards.

All in all, that totalled thirteen posts, just half of my initial goal. I don’t normally get upset at missing my goals for the year—it’s my hobby, I do it for fun—but I’m particularly unbothered by missing this one. This was a bad goal to set. I was right to ignore it, even if a never made a conscious decision to.

I could probably push myself to fill out some of the posts that I want to write though. That post about making bad things is going to happen sometime, I swear.27

Why it Failed

  • I set an overly ambitious goal.
  • I wasn’t willing to push myself to come up with and write enough content.

What I Learned

  • I really enjoy writing. It helps me organize my own thoughts, and I don’t particularly care if anyone else reads it.
  • Failure is sometimes the right call. I don’t think I would think fondly of blogging if I’d forced myself to write 26 posts.28

A Tutorial Detour

I can’t remember why, but I got the urge to follow a game development tutorial, something I haven’t done in quite some time. It was this, which goes in some detail about how to make a Link to the Past-style Zelda game.29

Following a tutorial verbatim is famously a fool’s errand,30 but I was enjoying having each problem posed to me, and trying to figure out how I would solve the problem before seeing how the video solved it. Comparing and contrasting my approach to his was an interesting exercise in our different styles. I lean hard on code approaches, even when using the animator would solve it in a less haphazard way.

Similarly, I’d heard of cinemachine but hadn’t given it a try. This got me over the hump of trying it out, and I’ve since incorporated it into a few of my games. On the other hand, the technique I developed of swapping between scenes, which let me update it just by moving a scene entry object, felt superior to the one that he developed.

Ultimately, most of the stuff that I made for this project wasn’t useful, and I can’t imagine myself making a Zelda-like; they’re too asset-heavy. Still, it was a nice little diversion that I undertook from February 24th to March 2nd. It was codenamed DaleZ31 because I’m nothing if not unimaginative.

A Metagaming HodgePodge

Developing Unity packages requiring setting up a project around them. I’d been doing an impromptu project with no real meat in it, but it made it a hassle to have to commit to the repo, then pull it to test in a real project. Aside from muddying up my git history, it was a time-consuming process.

The solution to that, of course, was to have a real game project surrounding the packages where I could quickly test modifications. Out of that came HodgePodge: a collection of unrelated scenes that the player could explore, with different interaction styles.

I made the HodgePodge project, which was a collection of unconnected scenes, to let me test out modifications to my packages before committing them. It’s transparently inspired by 10 Beautiful Postcards, a fascinating collection of scenes of different styles. I pulled the SceneEntry and SceneExit concepts from DaleZ, the main staying impact that project has had on me (cinemachine aside).

This initial development spanned from March 27th to April 4th. While HodgePodge isn’t released, it did serve its goal in lessening iteration time in my libraries. This one was a success.

Shining Hedge Maze

Starting in early 2021, there was discussion on the HPS1 discord about recreating a movie scene by scene with games. Options were discussed, a vote was held, and The Shining was chosen. Although it’s not one of my favorite films, it does have some really killer scenes.

All of the sections that took place in the maze really tickled my fancy. This was in line with previous projects I’d done, like Deeper and Deeper and Getting Out, as well as my year-long project, LowRezExplorer. After some internal hemming and hawing about whether I’d be motivated to spend the time, I signed up for the well-known maze chase scene on April 6th and got it.

While I was quick to pull my dungeon generation code from the in-progress LowRezExplorer, progress was slow and haphazard on this one. I’d started out fairly strong, but was quickly sidetracked by the next project I’d work on. Even then, it was also hindered by backporting dungeon generation changes into LowRezDungeon. An initial deadline of July 4th was floated, but despite coming back to it in late April and late May, I wasn’t anywhere near completion.32

I struggle in game development when I don’t have a firm deadline. It’s easy to put off a project, and easy to get distracted by other projects. I do best on shorter jams, something I discovered with the StrangeTraveler project in 2020. I finally buckled down and worked hard on this project from August 27th to September 11th, completing the scene with time to spare before a new prospective deadline.

While my work on it is done, unfortunately the collaboration on it has more or less stalled. Still, I’m proud of the work that I did, and due to the scene I chose, it stands well on its own. This was a stretch for me in a couple different ways. I did some texture and modeling work, and while I did do some procedural generation for the maze, I also made a static environment.

It’s unfortunate that everything I finished in 2021 wasn’t released publicly, but this will come out some time, whether it’s in the collaboration project or just by itself. I imagine I’ll release it in late 2022 if the project doesn’t come together by then.

What I Learned

  • A refresher on 3D modeling.
  • A refresher on sprytile, a tool for making quick scenes in blender.
  • I’m bad when deadlines are too far often (once again).
  • I can work on a solo game in a collaboration without being a total disappointment.

Bound to Happen

My longest running game dev project is Bound. It’s a recreation of bound/obstacle-style maps from the custom StarCraft community. It’s sort of my white whale project; I’d been picking away at it since 2014, and I thought there was little chance of it becoming something I released.33

Then on April 4th, out of the blue, someone I’d known from around 20 years contacted me. He was someone I’d known from my time with making and playing StarCraft bounds. He emailed me,34 got me in touch with some discords for the StarCraft bounding community, and it inspired me to go back to work on my project.35

It inspired me to get something done so I could push a prototype out the door. I made some good progress: I added menus, made movement cleaner and path correctly, supported custom map and campaign loading, and switched input over to Rewired. I’m not sure what made me drop development; probably some obstacle I ran into, but after doing development from the 8th to the 15th, I dropped it.

I came back on September 28th, but I quickly fell into the blackhole of refactoring and shortly dropped it. My white whale remains unconquered.

Menutee

I’d written several blog posts about my menu generation code, and in April I decided that I should spin it off from my main package and make it open source. I picked an animal-inspired name, Menutee, a combination of Menu and Manatee. It wasn’t my first choice, but it was the first one I found that wasn’t already taken.

It took a week of partial development to drive my already functional code to 1.0.0 (from April 22nd to 29th). It got fairly frequent updates, based on a combination of what I needed it to do and what I thought it should support. I don’t advertise it, so I’m pretty sure I’m the only one who uses it. Menutee is available here.

Being a Good Uncle

Back in 2017, I made a game that my nephew designed.36 It was called Ninja TriWars, and it was about a world where everything was triangles and you had to punch and kick all of the enemy triangles off the giant triangle you were fighting on. It was simple, but fun.

In 2018, he requested that I add a snake enemy, and I did. He was happy with it, and that was that for several years.

Things were all quiet on the TriWars front until April of 2021, when he came around asking for a new weapon in the game and a boss. I was in a bit of a dry spell when it came to gamedev motivation, so I acquiesced to his demands. I started work on the 25th of April and, with a few sporadic days of targeted development, released it to my designer on May 25th (a month later to the day37).

I hadn’t designed a boss enemy before, so it was an interesting challenge. It was hard to strike a balance between making a boss that was interesting to fight and making an enemy that my nephew could beat. I used animations and voice lines to signal upcoming moves, and had a fun time modifying the game for the new enemy. To fight this enemy that punishes you for approaching, I added shurikens.38

While it’s still too simple to pose a challenge to me and the boss is easily exploited, I think it met the prompt well, and it was well received by my target audience.

Pomerandomian

For a reason that is lost to time, I decided that my random number generation code should also be part of its own library. On August 27th I spun it out, with most of the remaining development time spent trying to think of animal based pun and creating the image.

It’s available here.

Connection Terminated

In early September, I read an article about how monitors emit electromagnetic waves and how that could be used to spy on what people were doing with their computer. If you’ve read Cryptonomicon, this might sound familiar, as van eck phreaking was a plot point in the book. The contents of that article captivated me, and I wanted to see if I could reproduce it myself.39 I could.

For a while, I was hung up on this concept. It seemed perfect as a puzzle for an ARG-related game. I have always thought ARGs were neat, but I usually missed them. The last one I was aware of was the one for the Portal 2 release, over ten years ago. The other problem was that they were inherently brittle. They often depended on phone lines or websites or YouTube videos, all of which are prone to bit rot or falling out of service.

Similarly, there’s not much avenue for someone coming in late to solve the puzzles. So, I thought, what if I made a game with ARG-type puzzles that were solvable using only information available within the game and publicly available tools.

That way, whenever you came across the game, it’d be solvable. If you and your friends wanted to work together on a set of complex puzzles, you could. I was able to put together a proof of concept for four puzzles of varying difficulty rather quickly. My work on it extended from September 2nd to the 11th,40 but I wasn’t motivated to work on the environment or setting, so it fell by the wayside. Besides, I still had to get back to my year-long project, right?41

Strange Traveler

It had become painfully obvious that I had too many games in the oven.42 Instead of spending too much time on Connection Terminated, I thought, I should finish my project from 2020. I hold a fondness for the project,43 and ostensibly it was close to done. Besides, I’d purchased a new movement asset that would allow me to replace an old one that wasn’t working out at all.

So, on September 11th, optimistic as ever, I returned to Strange Traveler. I updated all of my libraries,44 replaced the movement controller, and added in some of my fixes from LowRezDungeon. Then, I added pooling to my game scene and increased my environment generation options. There was just one problem: there was very obvious and distracting hitching once you crossed scene boundaries.

Nothing I did was working. Finally, I made the mistake I always do; I tried to refactor my code. After spending half a day on that, I lost motivation to work on the project. On the 16th, after 5 days of work, Strange Traveler went back in the game dev backlog.

Not only that—all development stopped for a month and a half.

Fighters Guild

In August, I played I am Setsuna, a generally not all that interesting JRPG. It starts out with the protagonist being hired to kill a chosen sacrifice archetype. The protagonist, of course, doesn’t follow through with that plan, but a potential plot where you do follow through was stuck in my mind.

In addition to that, the idea of a text-based Morrowind-type game that used 5E D&D for combat had lodged itself in my brain. Not wanting to pick up a project that colossal, I decided I’d pilot it with a game that is effectively a quest line for a guild in the game.

I last did NaNoWriMo in 2019, when I wrote the script for my twine game Side Stories. I wanted to participate again in 2021. Even though I didn’t think I’d have enough content to write fifty thousand words between the two projects, I thought it could be a way of motivating myself.

The former game, the one about a mercenary hired to do an assassination, didn’t get much attention during the month,45 but I was able to write over fifty thousand words for my game’s version of a fighter’s guild. It wasn’t in ink format (the format I decided to use, as I wanted to embed it in Unity), and I didn’t have any framework for displaying it, but the writing for it is ninety percent done.46

After working on that portion, I was more or less creatively exhausted, and didn’t have the inclination to write it in an ink format at that time. What’s worse was that I had a looming deadline for a different project. Due to those two factors, the Fighters Guild game fell by the wayside.47

Tri-ing Again

I had thought I was free of work for my nephew for at least a year, but fate, and he, had other plans. He asked, instead of a physical Christmas present, that I work on the game. He wanted a new enemy type and three new weapons in the game.

I could have declined, but I had enjoyed my previous work on the game and the creative freedom I had for the weapon types was liberating. It was the complete opposite of what I’d done the previous month.

I picked up the project in earnest on the eleventh of December. The first weapon idea I had was that of a shield. I figured that my nephew would find it disappointing, but I wanted to have it so that you could reflect attacks back at the enemy by timing it right. That wait it would reward more complex play. Unfortunately, I ran into serious issues with getting the system to work, and I couldn’t find a way to get it to trigger the reflect without also destroying the projectile.

With no small amount of disappointment, I ended up abandoning that weapon after four days of trying to get it to work. After all, I was on a two week deadline. I made some improvements to the movement, allowing for some coyote time and some input buffering before landing to get back in the swing of things.48

I then started working on an enemy that would throw shurikens at the player. To make them more interesting, they will move to get a bead on you if you put an obstacle between you and them. This also prevents them from firing on their allies all that often. This makes them a surprisingly challenging opponent if you aren’t paying attention to them.

On the 22nd, resigned to my fate of adding boring weapons, I added a shotgun. A rifle, which shared most of the same code, was added soon afterwards. For the third weapon, I tried to make it a bit more interesting with a grenade launcher. That one had different utility, but I wasn’t able to get it to feel quite right. I pushed a build on the morning of Christmas Eve, meeting my deadline with a little time to spare, although it didn’t reach the level of polish I would like.49

Keep it Secret, Keep it Safe

In addition to my personal games, I’d started working on a game with other people. Outside of some game jams at my previous job, this is the first I’d worked on a game in a group. We worked every Saturday for months, and finished sometime in the latter half of the year. It was well received, but is not available publicly. After taking a few month break, we started on a second project. That latter project was still ongoing when 2021 finished. Unfortunately, I don’t think these projects will ever be released externally, but they were fun to work on.

At the End of it All

And that brought me to the end of the year, with no games released,50 and my one major project goal nowhere near completion. I ended up making thirteen blog posts, which while below the arbitrary goal I set myself, I’m happy with.51 Also, despite not releasing any games, I think I spent more time doing actual game dev work than I did in 2020. Maybe even 2019, as much of that was in short, focused jams.

Now, was it a more productive year than 2020 or especially 2019? Perhaps not. Maybe one of the lessons I should take from this is to participate in more short jams.52 Or maybe the lesson is to set more reasonable goals for something that is my hobby and not my job.

That is, more or less, what I did in 2022, so we’ll find out how well that works together.


  1. Minimum viable product. In this case, basically the smallest game I could make that was a represented the whole game flow. ↩︎

  2. I wanted to find some nice javascript that would make this interactive and laid out better, but I couldn’t find out what to search. The only that that did do what I wanted to do was how Wikipedia laid out band members, so I just used that tool. High tech, I know. I’ve since replaced it with a buggy d3 visualization. It’s not great, and feels more amateur, but it’s more understandable. Also not reliant on wikipedia’s infrastructure to update. ↩︎

  3. Because I’m lazy, any gaps in commits of two days or shorter were considered to be contiguous work for the purposes of the timeline. Just think of them as impromptu weekends. ↩︎

  4. It also doesn’t count commit frequency either, so I could’ve juiced some numbers by spreading my commits over multiple days. It’d be nice if I could drill down on the data to see commits per day, but I don’t care to write some fancy one-off javascript that’d probably take me a week and be buggy. I also considered a stacked bar chart with commit counts, but that seemed like it’d be noisy too, and I wasn’t sure how to count the writing I did for Fighters Guild. ↩︎

  5. This was an allusion to Deeper and Deeper and Getting Out, two previous games I made, which were codenamed LowRezDungeon and LowRezWorld, respectively. This was never planned to be low resolution. ↩︎

  6. As well as an auto-mapping system, a world map, travel between zones, etc. ↩︎

  7. Walls that had a custom appearance. ↩︎

  8. Hardcoded modifications to how generation worked, like the flooded area in Deeper & Deeper. ↩︎

  9. To what is lost to time. It wasn’t anything game dev related, at least. I’d guess I was just playing games. ↩︎

  10. After some other game dev projects. To avoid this post looking like swiss cheese, projects are mostly kept in one section. ↩︎

  11. Cursed? Maybe. (Unlikely though, as I’ve finished a game using it that will most likely be out by the time I publish this post.) ↩︎

  12. Saying, of course, hello world. ↩︎

  13. Mostly MenuHook, which allows hooking unrelated canvases and classes into MenuStack. The control remapper that Rewired provides is stubbornly unsuitable with my canvas pushing based approach, but the flexibility of MenuHook gets around that. ↩︎

  14. Coming up later in this blog post! ↩︎

  15. With some of the driest play-by-plays, sorry. ↩︎

  16. I also had significant motivation problems there, as we’ll get to. ↩︎

  17. Although my fear there would that I’d still be the same and let them down. ↩︎

  18. Alternatively, I could finish the bound project I’ve been working on, and blow that previous record out of the water. We’ll see what 2022 brings. ↩︎

  19. The MVP version of the game just wouldn’t have been interesting. Procedural generation + discovery rarely works, and this would have had no sense of discovery whatsoever. ↩︎

  20. This is here mostly because I think it’s funny to have this embed be in three yearly retrospectives in a row. ↩︎

  21. Riveting, I know. Easy to understand why I came back to something as enrapturing as that. ↩︎

  22. As seen in this blog post. ↩︎

  23. As seen in this blog post. ↩︎

  24. I didn’t get around to proofreading and publishing them until April, as I am equally capable at losing motivation in blog posts. Besides, I was on track for my goal and thought I should space them out more. ↩︎

  25. And it worked! I enjoyed rereading that post just now. ↩︎

  26. These always do. They’re long and I ramble. ↩︎

  27. And I did a first draft of that between writing and proofreading this one! That one’s going to need some trimming. It feels way too self-aggrandizing. ↩︎

  28. Heck, I don’t know if I’d even be writing this up or if I’d just stop the blogging thing altogether. ↩︎

  29. The tutorial is unfinished, in case you’re thinking about following it yourself. ↩︎

  30. If you mindlessly follow the instructions on the screen, you’ll end up with a playable game, but you probably won’t absorb the techniques. ↩︎

  31. DaleZ, Zelda. A-D-E-L-Z ↩︎

  32. I wasn’t a laggard on that front. I don’t think anyone had completed their scene by then. ↩︎

  33. Which, well, I more or less still believe. ↩︎

  34. An advantage of having an easily-guessed email, I suppose. ↩︎

  35. It seems like wanting to make a Bound-type game runs in the community. There are several already in progress. Off the top of my head there’s Rat Race and Rashtal. ↩︎

  36. He would have been five at the time. ↩︎

  37. The budget of time I was magnanimously granted by my nephew. ↩︎

  38. The other requirement from my nephew. ↩︎

  39. Unfortunately, I don’t remember which article it was. ↩︎

  40. Keen readers will observe that this overlapped with my final spurt of work on the Shining Maze game. I guess it works sometimes for me. ↩︎

  41. Wrong. ↩︎

  42. Of course, right now I have more games in the oven than I did back then. Ah, the naivety of youth. ↩︎

  43. I have way too much fondness for my games. It’d be easier to abandon them if I didn’t care. Alas. ↩︎

  44. The endless time sink. ↩︎

  45. I wrote a whopping zero words for it. ↩︎

  46. Of course, the remaining ten percent of writing will probably take the same amount of time. ↩︎

  47. Having already knocked the mercenary game out of contention, it met the same fate. ↩︎

  48. I’ve found that much of game dev is trying to sustain my own motivation, and sometimes that means taking easy wins. ↩︎

  49. Notably, it was missing several weapon sound effects. This ended up being fine, since he played it without sound. The biggest sound hurdle was that I’d done some voice work for picking up the shurikens, but didn’t remember the Audacity transformations I used to get it to sound right. I’d probably need to recreate that voice work as well to make them sound consistent. ↩︎

  50. But two games finished and two libraries released. ↩︎

  51. It ended up being over thirty thousand words in and of itself, so 2021 might be the year in which I wrote the most words. ↩︎

  52. Of course, I write this at the end of April, a full third of the way into 2022, not having participated in any jams yet. At the same time, I have one game finished and another one close to completion, so it’s not all bad. ↩︎