Master of Science | Games Engineering | Networking | AI
At CyberConnect2 Montreal, I worked on the remaster version of Dragon Ball Z: Kakarot for PS5 and Xbox Series S and X. Our team was in charge of upgrading the game from an older Unreal Engine version to the latest one, including merging engine modifications, fixing bugs/crashes, and updating outdated code. I was involved in every step of the upgrade process. We also converted the online card game mode to an offline version.
I started this plugin for Unreal Engine as a university project and continued working on it later on. I successfully published it in the Unreal Marketplace and recently on Fab. It lets developers semi-automatically generate river networks in an animated way. I've been maintaining the project for multiple years now and support 7 minor releases of the engine. I've also improved the performance of the editor tools and the runtime over time.
During my internship at Building Information Innovator, I worked on their digital process planning construction software, dProB. The software is an interactive 3D sandbox for planning and editing construction processes powered by the Unity engine. My responsibility was to integrate an open standard for exchanging models (IFC) into the sandbox. I also worked on other parts of the system, like the camera, user interface, and input.
This research project started as my Bachelor's thesis.
The results were so promising that I and my professors presented the findings at an international conference.
Traversing Network Address Translation (NAT) is often necessary for establishing direct communication between clients. The traversal of NAT with static port translation is solved in many cases by the Session Traversal Utilities for NAT (STUN) protocol. Nevertheless, it does not cover the traversal of progressing symmetric and random symmetric NAT, which make it necessary to correctly predict opened ports. This paper presents a method for predicting (a) progressing symmetric NAT-translated ports based on a network traffic model and the Expected Value Method, and (b) random symmetric NAT-translated ports based on heuristics between monitored and opened ports across numerous traversal attempts. Tests were conducted in German cities using local cellular communication providers. Compared to established approaches, they yielded considerable improvements traversing progressing symmetric NAT and slight improvements traversing random symmetric NAT in real-world environments.
My master's thesis builds on the work I did for my bachelor's thesis.
My Bachelor's thesis looked mainly at the traversal of progressing symmetric NAT, while my Master's thesis is all about analyzing and traversing random symmetric NAT implementations in mobile networks.
So I built a native C++ Android app and a server for analyzing NAT implementations of mobile providers and testing traversal procedures. The implementation is available under an open-source license.
When clients are tunneled through Network Address Translation (NAT), a NAT traversal process is often necessary to establish communication. While effective solutions exist for Cone and progressive NATs, no real-world solutions currently establish direct communication with both peers behind random symmetric NAT. Users can overcome this problem by configuring their home routers, but in cellular or corporate networks, end users typically lack permission to access networking equipment. This thesis presents a traversal method based on hole-punching that exploits the timeout of random symmetric NAT mappings to predict ports in real-world environments. We analyze four mobile providers from two countries that implement random symmetric NAT, using parameter studies to identify weaknesses in their pseudo-random number generators for port mapping assignments. Based on these insights, we develop the Matchmaking, Analyzing, Repetition, Configuration & Prediction, and Traversal (MARCT) procedure. With MARCT, we successfully establish direct communication between devices behind random symmetric NAT in all tested mobile networks.
During a two semester university course, I developed the Android, Multiplayer and Physics engine, which is fully written in C++. The engine is focused on the android platform featuring a rendering pipeline, post processing, asset management, an event system, 3D physics support, local multiplayer, an audio system and many other features. In order to showcase the features of the engine, I implemented a serious game about excessive drinking behavior, which can be played in single and local multiplayer mode.
During my studies, two fellow students and I have created a jump and run game with boss elements using Unreal Engine 4. The game is about an ape which escaped a crazy scientist on an island and has to find the two golden bananas to find his way back home. Therefore he has to overcome obstacles and fight bosses. After you have mastered the game, you get ranked on our global scoreboard.
Me and two other students created this VR Parkour game demo for a university course. We implemented different interaction techniques in VR, like running, jumping and swinging around like Spiderman. This Unity 3D project for Oculus Quest VR features a demo with a time challenge mode. You can compete with your friends and compare your results with the scoreboard.
I want to share some of my experiences from Computer Vision related classes I took at university. These classes provided me with practical experience in GANs, NNs, CNNs, DNNs, super-resolution, and many other concepts using Python and Google Colab. I developed key skills in image restoration, image-to-image translation, the camera imaging pipeline, and more.
I developed the Dynamic State Machine (DSM) plugin for Unreal Engine 5 as part of a research class. It provides a deterministic data driven system to create any kind of (non-linear) gameplay. DSM supports out of the box loading and saving any gameplay state at any time. It is fully integrated in the Unreal Blueprint system and provides a variety of debug features.
This project combines the AI models SadTalker and Style-transfer-video-processor to generate music videos using a song, a portrait and some target style images as input. The provided script installs prerequisites and applies the models to each entry in an input folder.