A bit of history

Alpha Shooter was born as a project for the 2004 Computer Graphics course at the University of Bologna, Italy. The main objective was to develop a very simple 3D game using the OpenGL, GLU and GLUT libraries only (and some creativity). Emphasis was not placed on the game itself, rather on learning how to use the libraries to produce a 3D environment and interact with it; it was thus required to build a suitable scenery using polygonal meshes and quadric surfaces, appropriate textures and materials, lights, and effects. It was my first 3D graphics project, and at the time I chose to write it in the C language.

According to my personal taste I chose a sci-fi setting, trying to reproduce an environment that could remind players of a warehouse or loading area located inside a space ship or space station, like those often seen in movies or commercial videogames (of course I was aware of the limits of my implementation). I focused development on a single room, with an outside view, for ease of development (it was my very first attempt at graphics programming) and because it was enough to make use of a wide set of elements of OpenGL, consistently with the project requirements.

The simple game I wrote was inspired to the First Person Shooter genre, in which the player can move around in a 3D environment, looking around freely through the eyes of the played character, interacting (in very limited ways) with some of the objects present, shooting crates and barrels and some holographic targets. I had a lot of fun creating that simple game, so after I got my Master's Degree I decided it would be a waste to just leave it hidden in some obscure directory at home; I uploaded it here, released as Free Software, so that I could keep working on it and improving it, with help from whoever will be interested, in the hope that it will be useful as an example on how to get started in computer graphics and games development (while I'm not (yet?) an authoritative source on those topics and I'm not offering the best solutions to all the challenges present in making a game, I still feel the source code can be a valuable source of information).

Back to top

However, that simple game soon wasn't enough for my purposes anymore. That's why not long afterwards I started rewriting it mostly from scratch, separating the engine from the actual game in the process. The result is a reusable C++ game engine, that I named Neutron, over which Alpha Shooter is now built (although both are still, as always, under development). Why go through so much trouble? Because I wanted to learn how game engines work, and often the best way to learn is to do things yourself. Even if in some cases it means reinventing the wheel, although I tried to confine that to the components I cared most about (eg. the overall engine design and its core, as opposed to, for example, components like image file loaders, implementations of which exist in many varied and very well-tested forms).

The C source code for the original single-room Alpha Shooter is still available, although it won't be updated with new features as development is now focused on the improved engine and game. The rest of this website documents what has been developed so far, and how each component works, to help people interested in learning some of the basics. As the game and my skills evolve, so will this website, which will eventually serve (it is my hope) as a kind of tutorial.

Back to top