MidBoss: Making an Accessible Game Solo
MidBoss, a possession-based, traditional, turn-based roguelike will have just come out when this is posted. It’s a game that I made mostly by myself over the course of four and a half years, creating the engine, graphics, sounds, and all of the code.
My name is Emma Maassen, but you can call me Eniko. I’m a Dutch queer person currently living in the United States. Many of my friends belong to various minorities, so the mission statement for my studio – Kitsune Games – is ‘traditional gaming made accessible and diverse’. Accessibility is something I feel strongly about, both on a physical as well as a social level.
In this post I’ll outline the things I did to make MidBoss more accessible for people with various limitations, and hopefully convince you that doing this doesn’t need to be the herculean task many think it is.
One of the first thing any game developer thinks of when they think of accessibility is colorblind modes. This particular issue has gotten a lot of press, and actually was the most time consuming thing for me to implement. It was also one of the first things I implemented, so I wouldn’t have to go back and figure out colorblind compatible colors for everything at the end.
This particular issue came up with potions. Potions come in various types, 16 in total, and they all have different colors. While you can mouse over a potion to see what it does (once you’ve discovered that anyway), I didn’t feel that was enough. Players should be able to distinguish potions at a glance, not have to spend lots of time digging through their inventory looking for the right one.
I used Color Oracle to come up with my colors. It’s free, easy to use, and available for Windows, Mac and Linux. Instead of hard coding colors, the game has a ColorProfile class which contains properties for all the colors used in the game that return the appropriate color. Subclasses of this then return the appropriate color blind color instead.
I wound up creating one profile for deuteranopia and protanopia. This may not be possible for every game, but it was doable for MidBoss and saved a bit of work. I also created a profile for tritanopia.
Fitting all the potions inside the limited color palettes was very tricky, there just weren’t enough distinctive hues available. Eventually I wound up with a set of 8 colors, and used the same main color for the liquid in the bottle for the positive and negative versions of the same potion. Then I recolored the bottle cap with starkly different colors between the harmful and non-harmful versions.
That still didn’t feel like it was enough for me, so I made some pixel art for labels that go on all the bottles, coming up with 16 different labels to go on the bottles. Because not everyone needs the labels, they can be turned off in the options menu.
Proofing my colors with Color Oracle I quickly noticed that some of them didn’t just make the colors different, they also made them darker, something people don’t mention as much.
There’s lots of simple formulas available with a simple Google search to find how to do gamma correction. The game already renders into a render target before drawing that to the screen, so this just added one more step.
This also proved very useful when showing the game at events on various hardware. Being able to tweak the brightness was quick, easy, and even beneficial to myself. No reason not to do it!
High Contrast Font
One thing a few people don’t like is the stroke on the font used to present the bulk of information in MidBoss. While most people are fine with it, some felt it made it hard to read.
Making a high contrast font was as easy as changing the levels on the existing fonts and adding the option, and has made a lot of people who play the game happier.
Screen Shake, Hitstop and Attack Camera Tracking
When the player attacks in MidBoss the camera follows the character as they jump around rather than remaining stationary. This imparts a greater feeling of velocity and impact to the attack animations. MidBoss also employs screen shake – though not as liberally as a lot of games – to make the game feel ‘juicier’.
I’ve often seen complaints about screen shake making people nauseous on Twitter, so making that customizable from the start was relatively simple, just scale the strength and duration when calling the screen shake method. It can toned down, dialed up, or disabled completely.
Hitstop was added after suggestions from the fighting game community to make the game feel better. Figuring the jerky motion would be able to set people off I implemented the option to disable it alongside the feature itself.
The option to disable the camera tracking on attacks came after posting some animation gifs to Twitter. Probably because of the lower framerate of the gifs (below 16 frames per second) and the narrow viewport some people said looking at them made them feel kind of dizzy. This tipped me off that this might be a problem during long playing sessions for some people, probably prone to motion sickness of some sort.
Adding the option to disable the tracking was a bit tricky, but nothing too bad.
Queasy Safe Mode
While adding more late game animations I found out that I was a little bit too successful at creating the vomit animation (not pictured). By showing my work on Twitter (I think we’re seeing a trend here) I got feedback that some people really despise gross out effects. While I did my best to keep the animation and sound cartoonish so as to not set anyone off, I also added the option to remove both completely. I don’t want players to feel sick playing my game!
My housemate actually commented on another thing this disables. He has a bit of a phobia of worms or maggots, and one of the auras in the game has a particle effect reminiscent of worms burrowing through the characters it effects. This too is disabled by the queasy safe mode.
Movement Duration and Turn Delay
While not directly relevant to those with physical disabilities, customizable movement duration and turn delay make MidBoss far more accessible to less experienced gamers. Early on I noticed that when enemies move in rapid succession, one after the other, it can be confusing to keep track of what’s going on.
By putting a short pause after enemy actions, and allowing people to customize how quickly characters move in the game, the game becomes pleasant to play both to veterans of the genre as well as newcomers who may find it all a little overwhelming.
Rebindable controls are a must for accessibility, so I always planned to have those. Not everyone can play games with the same layout, and recognizing this early on may open up your game to a lot more people than you realize.
MidBoss is also playable with either mouse or keyboard. The only time the mouse is required is when using menus (due to the complexity of keyboard based navigation in menus).
Some other improvements to this came late in development after a friend of mine required several features that would help her play the game longer. She has issues with her wrist, so reducing the amounts of clicking required would help her greatly. She requested a few features:
- A key to grab items from the ground (this was already planned to make the game playable with the keyboard as much as possible)
- A key to drop items the mouse cursor is over in the inventory to the ground
- A key to use or equip items the mouse cursor is over in the inventory
Adding these was relatively simple, and again helps people to play the game longer, so why not!
Another thing she requested was the ability to flip the left and right mouse buttons. She often switches the mouse to her other hand to be able to use it for longer periods. I dug into my code and found all the places where the mouse state is requested, about half a dozen places, and added an extension method to flip the mouse buttons.
I also asked the creator and maintainer of FNA, the library MidBoss uses, if there was any way to integrate automatic switching of the buttons based on the setting inside Windows. It turns out FNA does not do this out of the box, but he quickly added a few calls to MidBoss that let me detect the setting. Now MidBoss supports auto-detected flipped mouse buttons, as well as an option inside the game to do so.
Making your game more accessible doesn’t have to be a giant task. Many of these things can be added easily and quickly, it just takes a few minutes out of your day. It can make the game more rewarding not only to players, but also be useful to yourself.
After putting these features into MidBoss (and keep in mind, they’re probably not perfect, but serviceable is definitely a start), a project made mostly by one person, I really can’t understand why larger studios don’t have these features.
Entertainment producers have a responsibility to make the world a better place, and should strive to do so by making their content accessible and representative of people from all walks of life and backgrounds.