Hey all,
I’m new to ioquake but have been an avid quake player for years. I am blind and have mainly been stuck on quake 1 since future quake games aren’t accessible to individuals with disabilities, but I am now working on changing that.
In my zquake fork I added binaural audio via HRTF, low-pass filtering when underwater, or in slime or lava, and real-time occlusion (although the last of these doesn’t really work since the quake distance model at least for quake 1 is a bit weird). I played quake 1 via a fork of it known as audio quake; most of the accessibility was in the QuakeC code and not in the quake world client itself.
I would like to extend my efforts to Quake III via ioquake3. My current fork is at GitHub - ethindp/ioq3: The ioquake3 community effort to continue supporting/developing id's Quake III Arena · GitHub on the ioq3-accessibility branch. I’ve mostly been starting simple: I have the console reading output (although not when you type in it) and primitive (although broken) menu reading support (the audio quake zquake fork disabled the menus for some reason). All of that is done via prism, a library I’ve been working on for much of this year to make a unified screen reader abstraction which any application can use. I have gotten Prism building alongside ioq3 and integrated into the QVM machine; however, I am not super familiar with the codebase and much of the menu work is tedious work since we need to give every menu item useful names since that is what the TTS abstraction is keyed on, and I still have yet to expose the rest of the Prism API to the QVM machine to allow QVM games to configure it. And this is just the groundwork:
- In-game messages not printed to the console aren’t read
- Weapons aren’t announced when selected
- Targeting a player has no accessible crosshair
- We currently lack binaural audio (although OpenAL is capable of this)
I eventually hope to get all of this work merged upstream, such that any game which uses the ioq3 engine can take advantage of it, but I would (preferably) like to at least get the game playable by blind people if at all possible before I open a PR, unless people want it in smaller chunks. Currently accessibility is on by default, but setting the (new) cl_prism cvar to 0 will disable it (since I would like to ensure that sited and blind players are equally as capable of playing the game without nerfing it: why take away all the fun?).
To that end, I thought of creating this topic both to ask for help/contributions and just to discuss this effort more generally, especially since I would like this to be a collaborative effort between quake III players, ioq3 devs and blind people such as me so that we can provide the best experience possible. And I’m not the only person who I know is definitively interested in this.
I would appreciate feedback, thoughts, suggestions, etc. (and advice of course) on all of this. I would also be happy to hop on a Discord call or similar if anyone would like me to demonstrate the audio quake experience to see how it was done initially in the early 00s (there are much better techniques that we can use nowadays).