Frequently Asked Questions
Alpha Shooter is a simple 3D FPS game, originally written in C with OpenGL, GLU and GLUT for a university graphics course assignment; it used to feature a single room, with crude and limited collision detection and particle generation, the ability to fly around and rotate in any direction and not much else. The game evolved over time, and is now written in C++ with the help of the Neutron Engine, a game engine developed to give it new life. For a more in-depth discussion on the history of the game see the History page.
Both versions of the game are released under the GNU General Public License version 3.
Alpha Shooter as a C game was getting hard to maintain, it didn't have a strong enough design and, while multi-platform, what would be considered its engine was tightly coupled with the game-specific logic. A much better design choice would have been to have the engine as separated as possible from the game logic and assets, and I generally find C++ to be a language much better suited for this kind of design. Given all that, it was also clear that rewriting all the components of a game engine from scratch would have meant reinventing too many wheels, with questionable results; thus the Neutron Engine was born, with the aim of being able to use existing libraries for subsystems in addition to internally-developed components, and Alpha Shooter was made to be the first game to use it.
It's true that many game engines are available today, both commercially and non-commercially; several of them are also quite advanced and well-tested, not to mention constantly improving. It would have been easier/faster to use one of the available engines to rebuild Alpha Shooter on; however, I really wanted to learn how game engines work and what it takes to develop one (almost) from scratch. That's why I decided to try and build my own, and see where that path would take me. What I've learned thanks to that choice has been priceless, but it's an ongoing process that will take a very long time to complete; partly for that reason, I've decided to add support in the engine for readily available libraries to use as subsystems (eg. Ogre3D for graphics rendering, CEGUI for GUI rendering, and so on): I'm more interested at the moment in the engine core, and if I had to completely reinvent by myself a graphics rendering engine (or any other subsystem for that matter) I would hardly achieve the same results the whole Ogre team (to name one) has achieved after years of development :) So let's say this tries to be a compromise between a readily available game engine and one built completely from scratch.