An interesting and true example of how features sometimes make their way into Prismata.
First, some background info…
Here at Lunarch Studios, we embrace a lot of principles employed in agile software design—rapid prototyping, fast iteration, and response to customer feedback. One of the natural consequences of this approach is that over the course of Prismata’s development, we’ve prototyped and tested a tremendous number of game features, units, and game modes that ultimately didn’t end up making it into the final product.
Many discarded units and features were simply not fun enough to include in the game, but we also like to keep only the best and most important features, simply for the sake of avoiding scope creep—the project management nightmare in which a piece of software can balloon out of hand due to a never-ending list of desired features and enhancements.
In addition to consuming valuable development time, every newly added feature increases the amount of testing required to check that the game works, increases the number of bug reports that we receive, and increases the size and complexity of our codebase. Thus, the “responsible thing to do” in many situations is to say NO to feature requests and keep the code as simple as possible.
It suffices to say that I’ve been a little irresponsible at times.
One job to do
I tend to keep pretty bizarre hours when working on Prismata, mostly getting actual game design, production, and coding work done late at night when there are fewer other things clamouring for my attention. Like many developers, one of my weaknesses (or strengths, perhaps?) is a complete lack of sleep discipline when I get into a highly productive state. If a lot of code is flowing fast and freely, I tend to persevere until one of two things happens: I complete a project, or I become too fatigued to keep my eyes open. Accordingly, a lot of great Prismata features have made their way into the game via long, late-night coding sessions, powered by the kind of feature-creep irresponsibility that often accompanies sleep deprivation.
Last night was one of those nights.
In this case, things started out small. I only meant to spend a few minutes knocking a small little item off of the TODO list.
The task was simple. One of the things we’ll be trying out in this week’s deploy is the removal of the Analyze button from Ranked games—a hotly-debated suggestion! It’s not necessarily permanent, but our plan is to give it a shot and see how people like it. Only one tiny change was necessary—the removal of a single button (and its keyboard shortcut) from the menu during Ranked games.
But sometimes, a tiny change can inspire many more.
While the children sleep, the features creep…
Removing the Analyze button from Ranked games took all of five minutes, but this left us with a few problems. I felt annoyed awkward problem of “vs Friend” games, where the analyze button is often used by players in coaching or teaching situations, but could be undesirable in community tournaments. So an option to disable it there seemed warranted.
But where could that option go? The menu was already quite cramped:
It became clear that an “advanced settings” popup was probably the best place to put this kind of feature, since most players would rarely need to disable the Analysis feature in their friendly games. So I built the popup, made a button for it, and coded up the server-side functionality (which ensures that the user’s account remembers changes to the settings, updates the opponent when a change is made, and provides the correct parameters when the game is initialized).
Things were going well, so I figured that while I was in there, I would add back a few more “vs Mode” options that had previously been removed (the ability to disable the pause button and to skip the 10-second pre-game countdown).
At that point, I felt confident enough that I could add just about any option to the menu (the server code is actually quite similar to the code I recently wrote for our Events feature). Temptation got the better of me, and a couple hours later, I found myself staring at this:
The rapid bot-clicking feature is probably my favourite, but infinite supplies in custom games has been much requested as well. I was tempted to add more, but felt it was time to stop for now before I got really carried away.
In any case, you can now look forward to some new options available in vs mode later this week!