After adding some basic lighting to the maze, I decided to add a simple sprite-based enemy. I decided to photograph an Aliens action figure from different angles. The famous game DOOM used scanned photos of clay models, so it a proven, but old, technique. (Reference)
Only 1 texture (supporting different texture per block is somewhat trivial)
2D maze layout on a grid (like Wolfenstein 3D/ Ken's Labyrinth)
Has floors and ceilings (Hey Wolf3d didn't!)
Differing height for floor/ceiling (like Rise of the Triad has)
Allow diagonal walls (like Doom/ Duke 3D)
Allow Rooms on top of room (like Descent/Quake)
Specify height map per floor/ceiling/wall with different level-of-detail
From far away, the floor/ceiling is still just a quad
From a medium distance, floor/walls/etc can be swapped out for a mesh
At really close range, maybe the floors and walls behave more like a terrain engine
Evil things to shoot (mostly sprites)
Part 2 of the 3 simple frameworks the game projects needs. There are 3, in level of difficulty:
In space: Fly around in mostly-a-vacuum. There are other objects to
track and draw, like asteroids, ships, planets, etc. The tricky part
here is just basic rendering and camera movement.
2. Inside: Mazes for inside of space stations, buildings located
on planets/moons, tunnels inside giant asteroids, etc The trick isn't
drawing stuff, it's determining what parts of the maze currently can't
be seen, and ignoring those parts. If this is done right the maze can
be 'infinitely' large, because only a small amount of the maze can be
seen at a time.
3. Terrain: Mountains, etc for the surfaces of planets and
moons. The trick here is drawing miles and miles of sharply detailed
stuff by drawing the close-range stuff in super-high detail and drawing
the far away stuff in very crappy detail.
So this last weekend I decided to play around with OpenAL. It's a sound library with an API that's pretty similar to OpenGL. That is, if it's possible for sound operations to be similar to graphics operations.
I've abstracted the details of OpenAL away from the rest of the system by writing a little library that goes on top. The graphics subsystem of this game is already called 'gx', so I'm calling the sound system 'sx.'
sx can't do a lot yet; It can play stereo and mono sounds at different volume levels, with or without echo. This should be enough for my space game. (Yes, there's no sound in space, but its boring without it!)