top of page
Kyle and Rich

Dumb Mistakes and Funny Stories


Hello 2019! Let’s try not to mess everything up again this time.

I’m sure you all were just as busy with the holidays as we were. We’ve been hard at work building systems, fixing bugs, doing configuration... blah blah blah. Enough of that.

Instead of trying to put our best foot forward like we usually do, we thought it would be fun to make this blog post all about how stupid we can be. Hopefully, you guys will enjoy these anecdotes about times we broke things so bad that we considered hanging up the keyboard and buying a hot dog cart instead. Is Japadog franchising yet? Seriously.

What’s your Name?

Initially, our config system was a lot of independent pieces defining different behaviors. So - the fact nothing had a unique ID didn’t really matter. Eventually this turned into a more interrelated system with different pieces referencing each other. We decided to just let those references be based on the editable names of things - and we’d sort it out as we needed…

This one played havoc with commits. Items that were stored by name would be renamed, causing missing references or duplicate items. Nothing says fun like hand merging commits of semi legible large config files. I know that’s why I decided to get into game development.

Color by Numbers

If you ever wanted a disco party roguelike, you missed your chance when we fixed this bug. I don’t know how drunk we were when we wrote the lighting engine, but I’m gonna guess that we had crossed the Balmer Peak at some point.

We encountered an issue while trying to tweak the world lighting to be darker and gloomier. Any time we added bright lights or increased the alpha channels on certain lights it would cause all sorts of weird color shifts at the edges of light sources.

Turns out, we had left some math in place that divided by zero for color results in some cases. It didn’t crash the system, but gave completely random color results.

Everything Must Burn!

Our first semi-complicated boss involved a fair amount of invisible decorator triggers to make different events or stage transitions happen. If the player or NPCs used explosive or fire based attacks at certain times it broke the fight in odd ways. And when I say broke, I mean potentially stranding the player in a locked room forever with no escape.

Apparently, all of our invisible decorator triggers - the keys to progressing through the fight - were left flagged as being burnable and/or destructible.

Shouldn’t everything be burnable and destructible? I’m gonna call this one a feature.

The Last Backup You’ll Ever Need

At some point, someone hit ‘build’ instead of ‘run’ and lost the config changes they were working on. So, we added an auto backup system that would run every few minutes, disable save, and copy the current on-disk config somewhere safe.

However, we didn’t add a cut off to how many backups it would make or if it would run if nothing changed. So, when an editor was inevitably left running over the weekend it proceeded to generate 1,000+ backups with over 1,000,000 files.

The real kicker is that because of the way Windows references files, even a beast of a development machine was incapable of displaying the files, much less deleting them. If you’ve ever looked at a progress bar and considered taking a week off from using your computer, you know how we feel. Lucky for us, Linux is always there to clean up after Windows. “rm -rf” will always hold a special place in our hearts and in our nightmares.

What You See is What You Get

Our editors have a few different ways of displaying config. Some of them resulting in unique ways of pulling data out on save. Unfortunately, one of our editors was a tree display (collapsible nodes, real content in the leaves), and we obviously included collapse all / expand all buttons.

We apparently decided to walk the visible row count to determine what should be saved. This meant anything that was collapsed would be skipped and deleted. We found this one really really far into config work as well… Even worse - it was on one of our most intricate and config heavy systems - events.

To this day, we don't know how many events were lost to this bug… (cue: Sarah Mclachlan)

Love Always,

Much Software

38 views0 comments

Recent Posts

See All

Comments


bottom of page