The goal behind this project is to create utilities and code libraries that solve game accessibility problems. The project was spawned by a discussion on IGDA's Game Accessibility mailing list, followed by private discussions between Reid Kimball and Mike Ellison regarding closed captioning for video games.
The core library, Common Accessibility Technology [CAT] library, will be shared by all utilities. The goal is to make any technology developed easy to reuse on other utilities and elsewhere by other developers.
Ideas for additional utilities, library features, etc. are definitely welcome!
Windows XP is the primary target platform (ease of development, popularity for games).
When possible, all other Windows platforms should be included in all code.
When possible, code should be written to be platform agnostic to allow the possibility of the project becoming crossplatform.
Code MUST be internationalization-ready.
Sacrifices to platform-neutrality may be made at this altar when necessary during initial development.
Internal code should be in UTF16 when possible.
External files should generally be in UTF8 if a user might wish to access them directly.
First target is raw DirectX/DirectSound.
SDL looks like a good secondary target, provided that hooking into it in a similar manner to DirectX/DirectSound does not violate the GPL.
Tertiary target may be Miles Sound System, if DirectX/DirectSound does not cover it adequately and it appears doable.
All code should be documented via Doxygen.
Whenever possible, code should be written to be lightweight and generic and placed in the CAT library for re-use.
Code placed in the CAT library should only be dependent on the CAT library.
When possible, make code in the CAT library only dependent on the core headers and itself.
Add examples of use and tests for each class to the CATTests project for classes added to the CAT library.
ANSI C / ISO C++ should be preferred to compiler extensions when available. Example: Totally not using strcpy_s. Instead, manage the buffers properly and use strcpy for portability.
Many features in the CAT library are not yet production-ready. I'm implementing the interfaces minimally such that I can use them now and not be in terrible pain later when making them production-ready. For example, the string table is currently hard coded. It will eventually be read from XML language files, but the interface should remain very similar when that upgrade is made).
I'm porting a huge amount of code from previous personal libraries that were in various states (all of 'em had collected a lot of dust). I may make mistakes in the port, and there could be pre-existing bugs. When testing new code, need to verify the older classes it uses.