Excerpt of My GitHub Projects

A* Pathfinding

Debuggable Android Browser

Connect Four

Data Parallelism

Eight Queens Puzzle

MasterMind

On-The-Fly Configurable Shaders

Pacman

Real-time Rendering

A* Pathfinding

A* is a pathfinding algorithm commonly used in video games. In this example, you choose the start and end point of the route first. The algorithm then finds the path with the least costs between these points, considering that each tile has different costs or may be even unwalkable. Furthermore, you're able to navigate Pacman accross the field. Paths that cross Pacman's near surroundings (i.e. within Pacman's influence radius) experience increased costs and may get more expensive than a longer way around Pacman. The algorithm therfore dynamically re-evaluates pathes that cross Pacman's influence radius and adapts the route as necessesary.

How to play?

Begin by setting the start point. Move your mouse over the territory and click on the desired field. Note: black fields are considered unwalkable and can't be chosen as start or end point.

Next, position the end point by clicking on the desired field

The path with the lowest cost is calculated. The cost is determined by a heuristic considering the distance (horizontal or vertical moves count 1, diagonal moves 1.41), the cost multiplier of the field (1 = Street, 2 = Gras, 3 = Water) and the influence of the enemy (Pacman)

Use the arrow keys to navigate Pacman through the scene. The cheapest path is re-evaluated immediately on every move.

Requirements

Source Code

Remote debugging the Android native browser

What is it?

A debug-enabled WebView, allowing you to use Chrome DevTools to inspect and debug your web app while its running on your device.

Why oh why would I need this?

Does your web site look broken on the Android stock browser?

Do you have Android specific defects you want to understand and solve?

Description

It sometimes happens that a web app doesn't work on mobile browsers, even though it's working fine on desktop browsers. Even worse, sometimes defects occur only on (certain) mobile devices, so you cannot simulate and reproduce it on a desktop browser. This is where remote debugging with Chrome's DevTools proves to be useful. While Chrome for Android perfectly supports this already, the Android stock browser doesn't. This is unfortunate, since a lot of Android bugs seem to occur only on the stock browser and not on Chrome anyways.So this app lets you run web sites within the native browser (WebView), while giving you the possibility to inspect and debug the page with the Chrome DevTools.

How to enable remote debugging?

Get a device running on Android 4.4 or higher

Enable Developer Mode on your device and connect it to your PC/Mac

Navigate to your web site by entering the URL in the app

On your PC/Mac, open Chrome and type "chrome://inspect" into the address bar

In Chrome, check "Discover USB Devices" and it will list the web page you've opened on your device

Hit inspect and enjoy remote debugging the app with the Chrome Developer Tools

Source Code

Connect Four

This is a simple implementation of the board game Connect Four.You can compete against the computer's artificial intelligence, which uses an adversarial search algorithm (with alpha-beta pruning) to evaluate its best move.

Conway's Game of Life Parallelized

What is it?

On the basis of a field with living and dead cells, Conway's genetic laws are applied to each cell and its next generation (state) is calculated. The rules are:

Birth: A dead cell with exactly three live neighbors becomes a live cell.

Survival: A live cell with two or three live neighbors stays alive.

Death: A live cell with four or more neighbors dies from overpopulation, with one or none neighbors dies from isolation.

Stable: In all other cases a cell remains unchanged.

The Moore Neighborhood is used, resulting in 8 neighbours to each cell. Furthermore, the borders of the field are wrapped-around, so that even the cell at the North-West position of the field has a neighbour North-West to ist and so on. The application is built to compute fields with huge data and over many generations. Input is read and output written to text files. Example input files are provided.

How to use?

Examples and test data are provided at the GitHub repository.

Requirements

Source Code

Eight Queens Puzzle

Possible solutions of the 8 Queens Puzzle are solved by a genetic algorithm. First, a population of 1000 genomes, each with a random solving constellations, is created. Then, 2 genomes with a high fitness (good solving constellation) are taken and their genes crossed and mutated to create successors with a hopefully better solving constellation.

How to play?

Hit enter to calculate a new solution.

Requirements

Source Code

Mastermind (Unity3D In-Editor Game)

MasterMind is a code-breaking game. This one is built with Unity 3D and can be played WITHIN the Editor of Unity 3D. It was built to explore the extension capabilities of Unity 3D, and of course, to do a short game at any time while designing and creating games with Unity.

How to use and how to play?

Copy the contents of the Assets Folder (except the MasterMind.unity file, which is the demo) into your Unity Project. Whenever you want to play MasterMind now, just drag the MastermindPlayable script onto any game object in your scene and watch a new component Mastermind appear in your editor. Choose the colors you want to set and click "Evaluate" to see if you guessed it right. Indicators (black = right color and right position, white = position doesn't match) as well as a winning message will visualize your match. After you're done, click reset to clean up your scene ;) For detailed gameplay rules have a look at the Wikipedia article

Requirements

Source Code

On-The-Fly Configurable Shaders in Unity3D

What is it?

This project demonstrates on-the-fly configurable shaders in the free version of Unity3D 4.0, so no pro license needed!. All settings can be conveniently adjusted in a GUI while the game is running, e.g. turning on displacement mapping and adjusting the step size of the texture sampling.

Shader-Features

Emit particles with varying velocities and directions

Switch on soft shadows

Switch on bump mapping

Switch on displacement mapping

Configure displacement strength

Configure step size for displacement texture sampling

Choose reflection model

Enable Phong shading model

Enable Blinn shading model

Configure specular light intensity

Configure shininess (glossiness) for specular lighting

Configure light attenuation

Configure self-shadowing intensity

Configure diffuse light intensity

Configure ambient light intensity (e.g. day/night)

All shaders are written in the shader language Cg with vertex- and fragment-shaders. No surface-shaders are used. Computation is performed entirely on the GPU instead of the CPU. The CPU's computing power can therefore be used to perform other computationally intensive work.

How to play?

Input

Action

W, S, A, D

Move camera front (W), back (S), left (A) or right (D)

Right mouse click & mouse movement

Change view direction

Left mouse click

Shoot a ray in the view direction. If the ray hits an object, particles are emitted on the position of intersection (runs entirely on GPU)

GUI controls adjustment

Adjusting the values of the GUI controls results in an immediate update of the shader properties. You'll instantly see the new effect or the change in the used shader technique

Documentation

Source Code

Pacman

Pacman is an arcade game which greatly offers the chance to explore reactive artificial intelligence. If not patroling their home area, the ghosts actively react to Pacman's position and pursue Pacman with distinct strategies.

How to play?

Control Pacman's direction via the arrow keys or with the keys w (forward), s (backward), a (left) and d (right)

Switch between Pursuit and Patrol mode with the Space key

Enable automatic Pursuit/Patrol mode switching by pressing the key 1.Disable it with 2

Requirements

Source Code

Real-time Rendering with DirectX

What is it?

A small application demonstrating Shadows, Bump Mapping, Anti-Aliasing and a Quaternion Camera under DirectX 10. Besides using the keyboard and mouse to navigate through the scene, there's also a journey mode in which the camera automatically traverses control-points on the basis of a Catmull-Rom interpolation. Furthermore, the view's direction follows a spherical linear interpolation.

How to play?

Key

Action

ESC

Exit

W, S, A, D

Move camera front (W), back (S), left (A) or right (D)

Arrow Keys

Move light front (↑), back (↓), left (←) or right (→)

Mouse movement

Change view direction

Q, E

Roll camera left (Q) or right (E)

SPACE

Save current position as control-point for interpolated camera journey