This is my master thesis and therefore it was the last step to reach my degree as a Master of Science in Engineering. In the paper I showed how to use DirectX 10 and 11 techniques for rendering vegetation. Primary I used the capabilities of the Geometry Shader (DX10) and Tessellation (DX11). Because it has to be guaranteed that games work in real-time, even in big environments with a wide view, the thesis also dealt with optimization methods, such as different levels of detail and culling techniques. I always tried to give a reference to out-of-core problems which are caused by big scenes not fitting into main memory. For this problem structures for efficient data management and algorithms for loading data out of external memory exist.
Lucky Leprechauns is the result of a two person project during my studies. One semester we created a game design and the second we developed the game from scratch. It is a network multiplayer action game with tactical elements, where the players are able to control a Leprechaun. It takes place in a magic world with huge living mushrooms and a gold pot at the end of a rainbow. The Leprechauns are meant for fighting against each other with three different attacks and the help of various items, which can be found all across the world. The goal is to reach the gold pot to win the game.
The client is divided into the self-made game engine and the game itself. It is written in C++ with DirectX 9, for the GUI the libRocket framework was used and the 3d models were imported with the FBXSDK. For model design and animation Maya was used. The server was developed with C# and XNA and was responsible for collision detection and the communication between the clients. The source code can be found on GitHub.
This project is another graphics demo for shaders and can be seen as an extension to the first one. I used the same scene again, but developed other shaders and new techniques. It is possible to activate various effects to compare the results. Two features are normal mapping and displacement mapping, where you can observe the second one as more realistic. Shadow mapping was also included again, but this time I extended it by using a 3×3 PCF map and a blur function to have soft shadows. A rotating light source can be activated to have a more impressive effect of the shadows. Another new feature is the implementation of a particle system. To activate it, a raycast is done by pressing a key and then an eventual hit point on an object will be determined. At this point the particle system will be casted, which is visualized as an explosion, like it can be seen in the picture.
This graphic demo was developed with C# and XNA. The source code can be found on GitHub.
One of the classic games was simply redeveloped with the familiar mechanics: The player controls the yellow figure called Pac-Man and the four ghosts (Shadow, Speedy, Bashful and Pokey) are the enemies. The goal is to collect all yellow points on the map without running into one of the ghosts. The focus here was to implement the behavior of the ghosts and as an extension an artificial intelligence for Pac-Man was also built in. Therefore it is possible to switch between a manual control and the automatic game play. Each of the ghosts has another strategy to catch Pac-Man, which is related to their names.
The game was developed with C++ and the game SDK ClanLib. The source code can be found on GitHub.
This project was part of the Game Engine Design classes, where I was confronted with several Game Engines like the CryEngine. But this classic Breakout game was developed with Unity3D and C#. The exercise was to create the game in 3D with three levels. The goal is to destroy all rectangular blocks in a level by directing the bouncing ball onto them. The player controls the panel on the bottom by moving the mouse left or right. When the ball passes by the panel and goes out of the screen on the bottom, then the player looses one life and the ball is reset again.
The KD Tree belongs to the topic algorithms and data structures. In this demo it is used to split the graphic scene into several parts and the objects, visualized as colored cubes, are stored in the leaves of the tree. With the help of this data structure it is possible to solve the nearest pair problem, which might be useful to find the nearest enemy or player in a computer game. But in the sample application here, the KD-Tree serves for something else, namely for collision detection. By pressing the Enter-Key it is possible to cast a ray (red) and then the nodes of the tree are searched for intersections. Finally only the objects in the leave nodes with intersections have to be checked for collisions with the ray. The hidden triangles are rendered in black. The same principle can be used for determining the visibility of objects.
The demo was developed with C# and XNA. The source code can be found on GitHub.
This application shows, how to find the optimal path from one point to another with the help of the A* search. In doing so, the type of territory and the enemies moving on a two dimensional map are taken into consideration by calculating way costs for each field. On the picture you find the white point as start and the violet point as the target position. The big red points are visualizing enemies with their range as small red points. The hexagonal fields of the mapped are colored, for showing different types of territory: light green = grass, dark green = wood, blue = water and brown = mountain. Finally the orange points show the best possible solution for reaching the target and avoiding enemies.
It was developed with C++ and the game SDK ClanLib. The source code can be found on GitHub.
The classic four connected game: the player (red color) and a computer controlled enemy (white color) throw alternately tokens into the different columns of the game. The first one with four tokens in a row (vertical, horizontal or diagonal) wins the game. The difficulty here was to build an artificial intelligence combining three techniques: Negamax search, Alpha-beta pruning and a heuristic evaluation.
Four Connected was developed with C++ and the game SDK ClanLib. The source code can be found on GitHub.
The second bachelor thesis showed the advantages and use cases for Shader programs. In the first part the reader gets the definition of a Shader, how it operates on hardware level and what different types exist. Later the thesis tells about the history and how the shading language evolved. For giving an introduction how to implement one, there is a presentation of the various languages and what IDEs can be used for developing and debugging. For the main part of the paper, I developed several interesting effects myself, to show how Shaders can be used and how they are applied in the industry. In the picture here, there is an example for the shadow mapping technique, where the Shader is used to determine whether a pixel lies in shadow or not.
The Shader samples were developed with C#, XNA and HLSL. The bachelor thesis can be downloaded in German.
This is a classic 2D tower defense game and was created by a study colleague and me at the end of my bachelor studies. There are several waves with various enemies running over the map on a static given path. With the help of financial resources the player is able to buy towers of different types and place them on strategic positions next to the enemy path. The towers are shooting at the enemies and have to prevent them reaching the other end of the map, otherwise the player looses one life. Therefore the goal is to survive all enemy waves to win the game.
This game was developed with the programming language C++ and the game SDK ClanLib. The source code can be found on GitHub.
My first bachelor thesis had to deal with a famous video game, which we were allowed to choose. I decided to examine the FIFA soccer series developed by Electronic Arts because I really like the game and also soccer as a sport. I analyzed and described the technical progress of the game series always referring to the main attributes Gameplay, graphics and sound. The thesis also told the history of the manufacturer and I compared it to other famous soccer game titles.
The bachelor thesis can be downloaded in German.