Inspiration

The intention behind NintAudio is, aside from recreating the feel of old arcade games, to offer new ways of exploring gaming. It was actually Xavier who came up with the idea, being interested in the accessibility of browsers; the question that naturally came next was "but what about video games?".

This project is aimed at:

  • Visually impaired people, so they can share our delight when playing video games
  • Developers, to raise their awareness of the condition of visually-impaired people in the digital era
  • Everybody, to realize how much we rely on sight and how difficult it is to understand an environment with only sound.

What it does

NintAudio is a collection of retro-inspired games relying entirely on sounds: Pong, Atari Breakout, and Whac-a-Mole.

Challenges

Developing the logic and sound design with very little visual cues was quite the task. We had to work around our habitual use of sight for even very simple UX design.

Rust is very new, both to the community and to our team: although documentation is available, the use of this language and many features still under development was quite ambitious. Implementation for all libraries isn't guaranteed across operating systems, and there are bugs left to be resolved with some of them (particularly the .mp3 format and SineWave stuttering with rodio). We're expecting to send patches upstream in the near future to fix the bugs with rodio.

Why Rust?

Real-time audio games meant we needed an absolutely minimum latency. This meant a garbage collector was definitely a no-go, as even a 50ms delay for the garbage collector to perform its duty would destroy the game play. Rust is a bare metal programming language, so it was a perfect fit, but its memory safety guarantee meant that we were safe from the toughest bugs, which was even more important given the experience level of the team members.

Three out of four teammates were new to coding. We felt like the advanced compiler would give us a greater confidence on the code we produced, even though we were dealing with low-level bindings.

What's next for NintAudio

Unfortunately, as of now, the player must type the name of the game into a terminal in order to play -- adding a voice user interface would likely make the experience more immersive and overall more user-friendly. More games are also to be added.

Support

MacOS No gamepad support.
Windows with ANSI terms No support.

Tested on: Linux (Arch & Ubuntu), Windows 10
Should work on: MacOS, Windows XP & up, Linuses with ALSA, BSDs, Drangonfly

Built With

  • piston
  • rodio
  • rust
  • termion
Share this project:

Updates