"While there’s no industry standard for subtitles, the studio and Activision care about the fans’ experience especially with respect to accessibility for people with different abilities, and will evaluate going forward."
- Activision, responding to complaints about the lack of subtitles for the remastered Spyro trilogy
I've spoken at several events in Australia about accessibility and inclusivity in games and UI design. It's a personal bugbear of mine, especially when so much of the research is done and the business cases proven.
One thing that often comes up is how even though only 14% of the population has some degree of hearing loss, 79% of players use subtitles in games. To hear a major publisher say "There’s no industry standard for subtitles". That couldn't be right... could it? So, I decided to see if it really was that hard to make subtitles that don’t suck.
The FCC's "Communications and Video Accessibility Act" has a lot of info on requirements for accuracy and who's legally responsible for subtitles. It states what settings should be available to the user, that these settings to be previewable, and saved. It doesn't say much on what good subtitles “look” like. So, while it’s “a standard” it’s not really something you could hand to a UI designer. It's a good starting point. As I kept looking, that's pretty much all I found. Good starting points, but no clear step-by-step instructions for how to make good subtitles.
So instead, I went to the companies who already make great subtitles for tv and film. I dug into the resources of the BBC, Channel 4, Netflix, and eventually the US Electronic Code of Federal Regulations (Which contains both legal requirements and a TV industry standard for subtitles). I read through as much public documentation as I could get my hands on. Then I combined all their requirements and recommendations into a single document:
If you want to write your own subtitles system, this document is the best possible place to start. It seems like a lot of arbitrary rules, but each and every one is important. For example, that 0.16s gap between titles? It completely changes the readability when there's motion on screen. I found not having it there gave me motion sickness when I tried to read the subtitles while the camera moved. I had never experienced motion sickness caused by an non-VR game before this.
Taking all that research and turning it into practice was harder than I expected. Unreal Engine's text system is very powerful, but not flexible enough to handle every requirement on that list. For example, the widget isn't able to support italic spans within titles yet*. Unreal doesn’t support small caps, but it’s possible to do with an extra font.
This exercise proved to me beyond a doubt that for game engines, providing a robust text framework is a key choke-point when it comes to making games accessible. The gold standard at this point is full HTML5 support, but looking back at just how good text in Flash was almost a decade ago, it’s surprising how far modern engines still have to go to catch up with it.
Between the 22nd of November 2018 and the end of January 2019 I spent the equivalent of about 3 weeks worth of full time work hours including research, prototyping, coding, and testing**.
Yellow Subs Machine is better researched and far more customisable than any subtitles solution you can find online for Unreal or Unity. Here it is in action:
Subtitles aren’t just for people who are hard of hearing or Deaf. Almost 80% of people play with subtitles on. So, what are the things that aren’t legally required, but that people still want? Here are the three main features people asked for:
Show the speaker’s name
Use colour to indicate that characters faction / disposition
Show the speaker’s emotional state
These are all fairly simple things that are almost always overlooked in game subtitles. If you want to really win over your players, consider adding these options to your dialogue system. They’re in Yellow Subs Machine already.
* Using only UE4’s Blueprints system. I’ve been told it might be possible to extend the inbuilt text components in C++ to achieve this.
** Huge thanks goes to Joe Wintergreen from Impromptu Games for his help and time in optimising the blueprints for release.