Audio Accessibility Features for Roguelikes

Sept. 17, 2020
protect

Anyone who's followed my development work over the years will know that I'm big on providing all sorts of quality of life features, optional functionality, configurable settings, and so on. This is also why even from the earliest stages (pre-7DRL!), and ever since, I've given the utmost priority to Cogmind's interface.

How players interact with a game, both in terms of input and feedback, is vital to the experience, so even the greatest mechanics and content can be held back by insufficient attention to UX. Although it's a lot of work to always be putting the interface first (while still trying to maintain progress and design within the necessary constraints), and I sometimes have to pick and choose what I can implement as a result, I think it's been worth it in the long term. Not everything I'd like to do is really possible, but I try my best.

Having recently covered the new ambient audio system, today I'll be introducing Cogmind's audio-related accessibility features, features that other roguelike developers could potentially learn from and apply to help their players as well.

In particular I'll be talking about Cogmind's "visible SFX" system, allowing you to see the sources of sound effects, and the audio log for listing in text form both ambient and non-ambient sounds currently heard from Cogmind's position. As we'll see, the cool thing about both of these features is that they're not just for people who must have them by necessity for accessibility reasons, but can also help other players in certain situations! Like anyone playing with the volume low, or even muted, or in an otherwise loud environment--everyone can benefit :D

Visible SFX

Originally a "what if" kinda feature that was mostly intended as a fun experiment, I immediately started liking the implications of being able to see the origin of sound effects outside your field of vision. This means being more aware of battles happening nearby, pinpointing enemies attacking from outside your visual range, locating undiscovered doors currently in use, knowing exactly where nearby garrison reinforcements are coming from... all kinds of useful applications. It's essentially a free type of sensor, but one that only works when the surroundings are changing and therefore often lends itself more to reactive than proactive tactics.

Visible SFX demo, "seeing" a battle playing out around the corner.

 

More or less the same situation as above, but playing out on a black background so it's a bit clearer.

 

The animation is generally just a single flashed dot at the origin and a quickly fading box around it, although for sounds with especially longer ranges (usually explosions) and therefore presumably louder, the animation is both brighter and has a larger fade radius.

Visible SFX animations are also color-coded by sound type to make the indicators more useful, even more so when lots of things are happening at once:

  • Red: Combat-related

  • Orange: Door open/close

  • Yellow: Trap trigger, carrier deployment, or garrison dispatch

  • Blue: Emergency door open/close or phase wall destroyed

  • Green: Machine destroyed

  • Brown: Walls destroyed or cave-in

Successive red flashes mean there's fighting going on, naturally one of the more common situations, and if you didn't instigate it, then depending on your build and condition it might be wise to either avoid the area or hurry over to lend your firepower to whichever side is on good terms with you (hopefully one of them is? :P). Either way, the system offers more options for informed decision-making rather than flying blind.

Together with the extra positional information you otherwise wouldn't have simply by listening to the sounds, this feature also has the added advantage of better accessibility for hearing-impaired players, or anyone else playing without sound.

Although visible SFX are active by default, it's possible to turn off in the advanced configuration file in case the extra visual flair bothers someone.

(Visible SFX were added to Cogmind three years ago back in Beta 1, though I haven't mentioned them on the blog before.)

Audio Log

Something I was excited to finally add to Cogmind, since I've wanted to do it for a very long time now, is the audio log. The audio log is meant primarily as an accessibility feature akin to closed captions, allowing anyone who keeps their volume low or muted to be able to retain access to important audio knowledge (alongside the visual SFX feature, although that one is much more of a perk for everyone). This optional feature is disabled by default, but after testing it out I think this'll be a pretty popular one even among those who don't require it.

Features

Now, I say "closed captions," but it's definitely not a list of "pew-pew" and "kaboom" or anything like that, instead listing the name of the effect's source in a small window embedded in the top-right corner of the map view. Ambient sounds are listed first, followed by a separator, then any non-ambient sound effects (the latter category referring to one-time sounds like gunfire and explosions).

Walking around a Materials map as the audio log updates to reflect machines that are being heard from each point.

 

The number to the left of each sound type indicates its current volume, which players can use as a proxy for distance.

Like visible SFX, the audio log also color-codes its contents to provide extra info where applicable:

  • Gray: Fluff machines, those serving to reflect the theme of the area and be destructible obstacles rather than serving an otherwise significant mechanical function.

  • Orange: Explosive machines. Beware.

  • Blue: Special-purpose machines with a unique function. Destroying these always has some effect.

Watching the audio log while passing turns and occasionally moving around as a war is playing out nearby. This demo also makes it clearer that sounds are ordered by near-to-far rather than the order in which they were heard.

 

Non-ambient sounds are color-coded by category as well:

  • Yellow: Attacks and gunfire.

  • Orange: Explosions.

  • Red: Robot destruction. Very specific compared to other categories, but also very important so it gets its own color.

  • Green: A wide variety of events including traps, drones, turrets, scans, phase doors, door hacking--basically everything that doesn't fit in any of the other three categories.

When combined with the visible SFX system the non-ambient data is even more powerful: "see" this great fight heard outside the room as it's described by the audio log and blips on the map:

Funny how it ends ;)

 

Not quite every sound appears in the log. In choosing what sounds to report in the audio log, in most cases it was geared towards information that is strategically helpful to know when out of view, rather than providing an exhaustive list. Limiting it to what really matters helps keep the log cleaner.

Although door interaction is fairly important, it is not reflected in the audio log since even if out of view they are clearly displayed via the visible SFX system, and their frequency is often rather high so it might threaten to drown out more meaningful sounds. An exception was made for phase wall interactions, since those are strategically important but do not reveal their precise location as a visible SFX source.

Other sounds that have clear visual alternatives are also generally excluded to avoid padding the audio log with unnecessary "noise." Examples include dispatch alerts, and the EMP charging and discharging in Waste (which come with their own graphics and messages).

So while the audio log technically doesn't paint a 100% complete picture of Cogmind's soundscape, it provides one aimed at an optimized play experience, not unlike the optimizations found in many other parts of the interface.

Challenges

It was a surprising amount of work to finish the audio log, taking an entire week to complete as I discovered quite a few roadblocks along the way. Definitely worth it and I'm glad it's now implemented, but I expected it to take just a day or two xD

There were lots of questions to answer about this feature...

Right from the initial mockup stage we of course needed to know what kind of information would be conveyed. At first I was thinking distance alongside the name of the sound's origin (e.g. the machine--at this point I was only thinking about ambient loops), but then realized that precise distance is conveying more specific information than you get by simply hearing a machine. Overall I wanted to try to avoid

JikGuard.com, a high-tech security service provider focusing on game protection and anti-cheat, is committed to helping game companies solve the problem of cheats and hacks, and providing deeply integrated encryption protection solutions for games.

Read More>>