Of course we can't write everything ourselves. So, we need those other libraries/compilers to help us out. The problem is that most useful libraries in the opensource arena are [L]GPL'd. Which goes against decisions that have already been made.
Another restriction that we have, is that we required the libraries to be as cross-platform as possible. This is because we want the game to run on as many platforms as possible.
The third requirement is of course, that the library/compiler be free.
Clearly, we had our work cut out for us. This wasn't an easy search and some compromises had to be made.
The game will be primarily programmed in strict ANSI/ISO C.
Since every library I considered was written in C, this seemed an obvious choice. Also, gcc is a free C compiler that is ANSI/ISO compliant that runs pretty much everywhere. It is also a very quick language, which is necessary for our purposes.
The secondary language is Python, which will be used for the AI and possibly other tasks.
Again, Python pretty much runs everywhere, its license allows for embedding in our game without problem and it's free.
Aside from meeting all the requirements of this project, Python is an esthetically pleasing language. It also forces good programming practices. All good things.
The only library that met all the requirements for this project was GLUT and OpenGL.
These libraries are available on more platforms than libSDL, and have an appropriate license (unlike libSDL). They are also written in C, so everything remains consistent. There price is also right, not to mention that they a quite speedy as well.
OpenAL will be the default sound library used.
This one was a difficult choice, as OpenAL doesn't support many platforms (at least officially). It also is licensed under the LGPL (this can be worked around). But, it is written in C.
Games have to store quite a bit of data, so how to store it is rather important. We will be using SQLite.
It's free, and under an appropriate license (public domain). It's implemented in C and specifically made for embedding in other programs. It does have official ports to the main stream OS's, and many have ported it to there own OS.
Pthreads will be used as the default.
It seems odd to be writing about threading as if it hasn't been standardized, but it hasn't. Pthreads runs on every *NIX that I've been exposed to (OSX included) as well as windows. I am uncertain of its support on other OS's like BeOS/Haiku. So, its portability requirement is unclear.
But, it's a C lib, so no problems there. It is as well, free.
Another problem with pthreads is its license on some platforms. I say some, because I know it's ok on OSX and OpenBSD, but I know it's a problem on windows (LGPL, though this can be worked around).
We will be using SCons. It uses Python so it isn't far from using our own custom system. It also relieves the responsibility of making our own to using one, freeing up time better spent on actually developing the game.