About me

I'm a math Ph.D. with a knack for Simulation, Modeling, and Visualization by day and a video game developer by night. I love to make things move, be it in my research where I used heavy math to generate human walking animations or when creating video games.

I am fluent in C++, love speaking Lua, and comfortable juggling with Python. I also mix them when applicable.


Work

Senior Game Tech Programmer

Worked at Guerrilla Games on the award winning AAA Playstation 4 Game Horizon Zero Dawn released in 2017. I optimized and extended the the character animation system of Decima Game Engine which was based on Natural Motion Morpheme®. I designed and implemented a new animation system which converts animation logic (i.e. the hierarchical blend tree) to equivalent C++ code for best possible animation network performance.

Further information: Trailer (YouTube)

PhD Thesis: Modeling Emotional Aspects in Human Locomotion

In my research I developed a new method to reconstruct joint forces for different emotional expressions from purely kinematic motion capture data. In addition I generated human walking animations using a physics based model and optimal control methods without the use of any reference data. By combining different optimization criteria I improved similarity to reference motion capture data.


Code

3D Programming Prototyping Environment

ProtoT (still need to come up with a better name) is a 3D programming prototyping environment. So far I have implemented Cascaded Shadow Maps, Screen-Space Ambient Occlusion, and a Deferred Renderer. It uses OpenGL 3.3 Core (i.e. glsl shaders). To achieve fast (programming) iterations it features live code reload both for shader and C/C++ code. As soon as a C++ code is modified it gets compiled in the background and loaded into the running application.

Technologies: C++, CMake, OpenGL 3.3 glsl, dear imgui

Further information: Screenshot

RBDL - the Rigid Body Dynamics Library

RBDL is a high performance dynamics library for articulated systems that I created during my research project. It efficiently computes forward dynamics including systems that are in contact with the environment or collisions when coming into contact with it. RBDL achieves high performance by avoiding dynamic memory allocations and expoloits sparsities in the underlying 6-D spatial algebra and joint-space inertia matrices.

RBDL has zero dependencies and has been used by people worldwide, including in Stanford, Berkeley, and at Square Enix

Technologies: C++, CMake, valgrind, google-perftools, gdb, Lua, Python

Further information: Code Repository | Documentation

Puppeteer - Motion Capture Mapping Tool

I created Puppeteer to compute skeletal animation from motion capture marker data. It is a graphical tool that allows to visually modify the character rig to match that of the recorded person and to assign virtual markers to the rig. By using a robust full-body inverse kinematics routine it then maps the marker motion onto the character rig.

Puppeteer uses RBDL as the underlying kinematics engine and character rigs are read and written to Lua files.

Technologies: C++, Qt, Inverse Kinematics, Motion Capture, C3D, OpenGL, Lua

Further information: Demo Video (YouTube)

LÖVE for Android

I created the first fully featured mobile port of LÖVE, a.k.a. love2d. LÖVE is a cross-platform open-source 2D graphics engine that uses Lua as its programming language. My port uses native cross-compilation of the original sources and include various Android specific changes. It runs all existing games without any modification. Multiple commercial games have been published with it.

Technologies: C++, Android NDK, Java, JNI, OpenGL, Lua

Further information: Code Repository


Games

Prisonbroke

Prisonbroke is a 2D local coop stealth game for up to four players in which former inmates have to escape a prison while being chained together. All prisoners look the same which guarantees you the right to blame others for getting caught.

The game was made in a team of four during the Global Game Jam 2015. I created enemy AI, in-game graphics and animations, and introduced the other two programmers to the 2D game framework LÖVE.

Technologies: LÖVE, Lua, GLSL, Gimp, Inkscape, SVG

Downloads: Windows | MacOS/X

Further Information: Gameplay Trailer (Youtube) | Code

PeaceMachineGun

In PeaceMachineGun the player has the ability to reverse time and undo a massacre. To do so the player has to use the PeaceMachineGun to catch the bullets from positions where they originally came from.

The game was made during the Ludum Dare 32 Game Jam in a team of three. I created the art style, all models and animations in Blender, modeled the animation graph in the game engine, and wrote the player controls.

Technologies: Godot game engine, Blender

Downloads: Windows | MacOS/X

Tracksurfer

In this game you have to surf with your ship on a track of platforms. The game features a minimalistic control scheme that only uses the position of the mouse.

I made the original version of this game during the 26th Ludum Dare Game Jam and extended it by adding more sounds, a online highscore and new gameplay elements such as the charges and a more dynamic menu and notifications.

Technologies: LÖVE, Lua

fysxasteroids

This is the first game that I completed (2011). My aim here was to create a simple game but finish it. The game follows the classical Asteroids mechanics but features a level editor, an online highscore, and runs under both Linux and Windows. I built the complete game from scratch using C++ and SDL 1.2. I implemented an immediate mode GUI system that is used both in game and the editor, and a command system similar to those found in early Quake engines.

Even though it is a rather crude game I am still proud by the clarity of the code.

Technologies: C++, CMake, SDL 1.2, OpenGL, HTTP, PHP

Further Information: Code Repository


Contact Me

Linkedin: LinkedIn
Twitter: @fysxdotorg