Games / Graphics Projects
This page presents an overview of the different games and computer graphics related projects I have completed in the past. The list is roughly sorted in chronological order.
Scrolling Space Shooter Game
Everyone knows those side- or top-down-scrolling games where the player controls a space ship and has to survive and kill as many of the incoming alien ships as possible. This clone was implemented in Java and runs as an applet inside the browser. The special feature is the ability to download the content directly from a MySQL database. To create new levels there is also an editor partially implemented which is based on the same technology.
Shaded
Vertex and pixel shaders for the graphics processing units always had to be implemented using either assembly code or high-level programming languages. Sometimes non-technical people also wish to implement shaders. This is a hard task if they do not have any prior knowledge of programming languages. I tried to solve this problem with shaded. Shaded implements a graphical frontend where one can program shaders by editing a visual graph data structure. Shaded was my second semester project at HSR.
Ray Tracer
During the Introduction to Computer Graphics Course at ETH I had to implement this ray tracer together with my fellow student Basil Fierz. The ray tracer features all the common things like reflection, refraction, different lighting algorithms, object animation, etc. It also has some uncommon special features.
Shallow Water and Rigid Body Simulation
During the Physically-based Simulation Course at ETH I had to implement a demo featuring some kind of physical effect. I decided to implement the interaction between a shallow water simulation and rigid bodies. Since the demo focuses on the interaction between the two simulations, it also features arbitrary triangle meshes, but lacks the implementation of resting contacts. I realized the implementation with the help of my team mate Stefan Lienhard.
LibX
Whenever I implemented a graphics project one of the cumbersome problems was to find an appropriate file format for 3d models. The file format should be feature complete, commonly adopted, supported by most modelling packages, and of course easy to implement. I think the .x file format used by Microsoft's DirectX is quite a good format. The drawback is that it is only usable in combination with the DirectX SDK. To solve this problem I made, together with my friend Basil Fierz, my own implementation of the file format, LibX. We published the library under the LGPL licence at Source Forge.
3D RTS Game
One of my hobby interests is the implementation of games. In 2007 I bought the great book “Programming an RTS Game with Direct3D” by Carl Cranberg. I implemented the game presented by the book step by step. But at the end I was not quite happy with the results because in my oppinion the software design of the game does not support network connections and a multiplayer implementation very well. Therefore I did my second implementation resulting in this 3D real-time strategy Game. Currently I am trying to add more features to the game and to implement a map editor.
Kaos Engine
Many graphics programmers try to implement their own game engine. Of course it is hopeless to try to get something similar to the industries top engines. But I think with it everyone can learn a lot of things about games, graphics and engineering large projects in general. At least as long as one tries to use the engine developed in practical projects. Kaos is my attempt at implementing an engine. It has got some inspiration from the Nebula2 Engine, and some of the features have been implemented by Basil Fierz. The engine uses LibX and is used by the Raytracer and the 3d RTS game presented above.
Magmageddon
During the Game Programming Laboratory at ETH I had to implement a game together with Janick Bernet and Dominik Käser. The result of the semester was this game called Magmageddon which can be played by up to four players on the Xbox 360. It is set inside hot volcanoes with floating islands. Each of the players controls one robot and has to try to kill the other robots. He can accomplish this through pushing them off the islands into the lava, by attacking them with a flame thrower or by shooting ice spikes at them. The player surviving the longest wins the match.