Felix Altenhofen

Programmierer und Spieleliebhaber

Ich bin Softwareentwickler mit besonderem Interesse an Spieleprogrammierung sowie Spieleentwicklung im Allgemeinen.

Zu den Programmiersprachen, in denen ich Erfahrung habe, gehören C#, PHP, JavaScript und Java. Ich habe zudem Grundkenntnisse in Swift sowie Python.

Ich besitze einen Master of Arts in Medien- und Spielekonzeption, durch den ich mir vertiefende Kenntnisse in Programmierung und Anwendungsdesign angeeignet habe. Schwerpunkt war dabei die Umsetzung digitaler Spiele sowie interaktiver Digitalmedien im Allgemeinen.

Zuvor schloss ich einen Bachelor of Science in Medieninformatik ab, wobei ich mich hauptsächlich mit Themen der Programmierung und des Game Designs beschäftigte. Neben diesen Schwerpunkten erhielt ich vielseitige Einblicke in Workflows diverser medialer Arbeitsbereiche, beispielsweise Sounddesign, Videoschnitt, Postproduktion und Grafikdesign.

Beide Abschlüsse wurden an der Hochschule Harz erworben.

Diese Website soll einen kurzen Überblick über die wichtigsten programmierbezogenen Projekte geben, an welchen ich in letzter Zeit gearbeitet habe. Im Archiv finden sich zudem alle meine bisherigen Arbeiten in chronologischer Reihenfolge.

Weitere Informationen über mich können auf LinkedIn sowie Xing abgerufen werden.

Felix Altenhofen

programmer and game enthusiast

I am a software developer with particular interest in game programming and game development in general.

Programming languages I am experienced in include C#, PHP, JavaScript as well as Java. I also have basic knowledge of Swift as well as Python.

I hold a Master of Arts in media and game design, through which I acquired deeper knowledge in programming and application design. Focus was placed on the realization of digital games as well as interactive digital media in general.

Prior to that, I obtained a Bachelor of Science in media informatics, focusing mainly on topics related to programming and game design. In addition to these focal points, I gained insights into workflows of various media related fields, such as sound design, video editing, post production and graphic design.

Both degrees were obtained at Harz University of Applied Science.

This website is meant to give a brief overview of the most important programming related projects I have worked on as of late. Additionally, all my previous work in chronological order can be found in the Archive.

Further information about myself can be found on LinkedIn as well as Xing.


Populations-Simulator

Eine Anwendung, in der Populationsmodelle erstellt und Simulationen anhand dieser durchgeführt werden können.

Über einen Editor können vielfältige Kreaturen aus diversen anpassbaren Bausteinen zusammengesetzt werden, welche ihr insgesamtes Verhalten definieren. So erstellte Kreaturen können in ebenso anpassbaren Modellen zusammengebracht werden, welche daraufhin in Echtzeit simuliert werden können, um die definierten Verhaltensweisen anschaulich erfahrbar zu machen.

Das Programm sollte dazu dienen, den möglichen Nutzen des von Unity entwickelten Data Oriented Technology Stack am Anwendungsgebiet der Populationssimulationen praktisch zu erproben. Aus diesem Grund kann die Simulationsdurchführung wahlweise mit als auch ohne Nutzung von DOTS geschehen, um einen direkten Vergleich zu ermöglichen.

Umgesetzt wurde die Anwendung rein in Unity, mithilfe einer Entwicklungsversion von Unity DOTS. Ich konzipierte und implementierte sie im Rahmen meiner Masterarbeit ("Umsetzung einer Anwendung zur Modellierung und Durchführung von Populationssimulationen mithilfe von Unity DOTS").

Population simulator

An application in which population models can be created, allowing simulations to be run using them.

Using an editor, users can assemble a variety of creatures from various customizable building blocks, which define their overall behavior. Creatures created in this way can be brought together in similarly customizable models, which can then be simulated in real time to demonstrate the defined behaviors.

The program was meant to empirically test the potential benefits of Unity’s Data Oriented Technology Stack for the field of population-based simulations. For this reason, simulations can be run either with or without the use of DOTS in order to allow a direct comparison.

The application was created purely using Unity, utilizing a developmental version of Unity DOTS. I designed and implemented it as part of my master thesis on ("Implementation of an application for modeling and running population simulations using Unity DOTS").

Eine laufende Simulation mit verschiedenen Tieren.Eine Kreatur wird im Editor über ein Drag-and-drop-Interface bearbeitet.Eine neue Kreatur wird im Editor über einen Dialog erstellt.Ein Modell wird im Editor bearbeitet.Das hauptmenü der AnwendungA running simulation featuring various animals.A creature being assembled in the editor using a drag and drop interface.A new creature being created in the editor via a dialogue.A model being adjusted in the editor.The main menu of the application.

Game Idea Giver

Eine interaktive Website, die eine manuell erstellte Liste von Spielkonzepten präsentiert.

Ideen sind in Kategorien eingeordnet, nach denen sie gefiltert werden können. Der Game Idea Giver dient dabei als Sammelort aller meiner Ideen, für deren Ausarbeitung und/oder Umsetzung mir Zeit oder Helfer fehlen. Außerdem nutzte ich die Umsetzung der Seite, um Konzepte für ein filterbares Tag-System sowie grafikbasierte, pseudo-zufällige Animation, für den Hintergrund der Website, auszuprobieren.

Die Seite nutzt hauptsächlich JavaScript, sowie etwas PHP und enthält natürlich HTML und CSS, ohne jegliche Frameworks. Ich arbeitete bei ihrer Umsetzung allein.

Game Idea Giver

An interactive website serving a curated list of game concepts.

Ideas are sorted into categories, which they can be filtered by. The Game Idea Giver serves as a space for any ideas I realistically won't have the time or manpower to flesh out and/or realize. I also used its implementation to test concepts for a filterable tagging system as well as image based, pseudo-random animation for the website's background.

The site mostly works with JavaScript, with some light PHP and of course contains HTML and CSS, using no frameworks. I worked alone implementing it.

In der Desktopversion der Website wird eine Spielidee präsentiert.In der Desktopversion der Website wird eine Spielidee präsentiert, wobei nur einige Tags aktiviert sind.In der mobilen Version der Website wird eine Spielidee präsentiert.In der mobilen Version der Website wird eine Spielidee präsentiert, wobei nur einige Tags aktiviert sind.A game idea is being presented on the desktop version of the website.A game idea is being presented with only some Tags enabled on the desktop version of the website.A game idea is being presented on the mobile version of the website.A game idea is being presented with only some Tags enabled on the mobile version of the website.

Glolab

Eine Android-App, in der standortgebundene AR-Objekte erstellt, entdeckt und bearbeitet werden können.

Nutzer können an beliebigen Orten Objekte aus Primitivkörpern zusammensetzen, welche daraufhin mithilfe von Google Cloud Anchors an ihren aktuellen Standort gebunden werden. Bereits von anderen oder einem selbst erstellte Objekte im Umkreis des Nutzers werden angezeigt und können aufgesucht werden, um sie anzuschauen oder zu bearbeiten.

Wir arbeiteten in einem Team aus 4 Personen, wobei ich das grundlegende Projektkonzept erarbeitete und als Programmierer agierte. Dabei setzte ich hauptsächlich das Platzieren und Verändern von Objekten sowie das System zum Rückgängig machen und Wiederholen um. Zur Umsetzung der App nutzten wir Unity mit AR Foundation.

Glolab

An Android-App in which location-based AR objects can be created, discovered and edited.

Users can construct objects using primitive bodies, which are then tied to their current location using Google Cloud Anchors. Existing objects created by others or oneself in the user’s vicinity are displayed and can be visited to view or edit them.

We worked in a team of 4, with me devising the basic project concept and acting as a programmer. I mainly implemented the placing and editing of objects as well as the undo and redo system. We used Unity with AR Foundation to create the App.

Ein AR-Objekt wird erstellt.Ein erstelltes AR-Objekt wird bearbeitetr.Die Auswahl an Primitivkörpern, aus denen AR-Objekte erstellt werden können.Im Entdecken-Modus zeigt ein Kompass nahegelegene AR-Objekte.Ein AR-Objekt wurde entdeckt und kann bearbeitet werden.Der Startbildschirm der App.An AR-object is being created.An existing AR-object is being edited.The selection of primitive bodies, which can be used to build AR-objects.A compass shows nearby AR-objects in the discover mode.An AR-object was found and can now be edited.The app

Erstellen von Grundriss-Plänen mithilfe der HoloLens 2

2 Anwendungen, mit denen von einer HoloLens 2 gesammelte Umgebungsdaten ausgewertet und in Grundrisspläne der jeweils erfassten Räume umgewandelt werden können.

Die HoloLens 2 erstellt kontinuierlich eine Mesh-Repräsentation der sie umgebenden Geometrie, um beispielsweise das korrekte Platzieren von Objekten in ihrem Umfeld zu ermöglichen. Die erste Anwendung, welche auf dem Gerät läuft, stellt das so generierte Mesh über der Umgebung dar und kann es in den Gerätespeicher exportieren.

Die zweite Anwendung, welche auf einem externen PC läuft, kann entweder als vollwertige In-Editor-Version oder als eigenständiges Programm mit nur grundlegenden Funktionen genutzt werden. Sie analysiert das zuvor erstellte Mesh, woraufhin ein schlichter Grundrissplan erzeugt und als Raster- oder Vektorgrafik exportiert werden kann.

Zur Umsetzung diente mir Unity sowie Microsofts Mixed Reality Toolkit. Die Anwendungen sowie den beschriebenen Prozess entwickelte ich im Rahmen meiner Bachelorarbeit ("Innenraumausmessung und automatisierte Grundrisserstellung mithilfe der Microsoft HoloLens 2").

Creating ground plans with the HoloLens 2

2 applications that allow environmental data collected by a HoloLens 2 to be analysed and converted into floor plans of the captured spaces.

The HoloLens 2 continuously creates a mesh representation of the geometry surrounding it, to enable, for example, proper placement of objects in its surrounding. The first application, which runs on the device, overlays the generated mesh onto the environment and can export it to local storage.

The second application, running on an external PC, can either be used fully featured in-editor or as a basic standalone version. It's used to analyse the mesh created previously, after which a basic floor plan can be created and exported as a raster or vector image.

Unity and Microsoft's Mixed Reality Toolkit were used for the implementation. I developed both applications and the described process as part of my bachelor thesis ("Interior measurement and automated floor plan generation using the Microsoft HoloLens 2").

Erstellte Umgebungsmeshs mit unterschielichem Detailgrad werden über einer realen Umgebung eingeblendet.Ein aus der Anwendung exportiertes Umgebungsmesh mehrerer Räume.Ein Grundrissplan wird erstellt und am ursprünglichen Umgebungsmesh visualisiert.Ein Grundrissplan wird im Unity-Editor erstellt und am ursprünglichen Umgebungsmesh visualisiert.Die Nachbarbeziehungen der Polygone eines Umgebungsmeshs werden hervorgehoben.Environmental meshes with different level of detail are overlaid on a real Environment.An environmental mesh of multiple rooms exported from the application.A floor plan is created and visualised on the associated environmental mesh.A floor plan is created and visualised on the associated environmental mesh within the Unity editor.The adjacentsies of an environmental mesh

Spielplatz für Voxel-Physik

Eine audiovisuelle Physiksimulation für PCs, in der Nutzer Voxel-Strukturen erstellen und zerstören können.

Die Anwendung lässt Nutzer frei ein lokal oder aus einer Onlinequelle verfügbares Bild auswählen, dessen Auflösung reduziert wird, bevor zweidimensional aus Voxeln nachgebildet wird. Die erstellten Voxel kann der Nutzer frei bewegen, wobei sie physikalisch simuliert werden um miteinander und der Umgebung zu interagieren. Auch können Parameter der Simulation, wie Geschwindigkeit und Schwerkraft, frei angepasst werden.

Unity diente mir zur Umsetzung des Projekts, welches eine simple Prämisse mit hohem Polish-Grad umsetzen sollte.

Voxel physics play space

A physics simulation for PCs, in which users can create and destroy voxel-structures.

The application lets users freely select an image available locally or from an online source. The image’s resolution is reduced before it is recreated two-dimensionally using voxels. The user can freely move the created voxels, which are physically simulated to interact with each other and the environment. Parameters of the simulation, such as speed and gravity, can also be freely adjusted.

Unity was used to realize this project, which was meant to realize a simple premise with a high degree of polish.

Ein aus farbigen Voxeln aufgebautes Bild.Über den Boden verteilte Voxel eines zerstörten Bildes.Durch die Luft fliegende Voxel eines zerstörten Bildes.Der Dialog zum Auswählen eines Bildes.Der Hilfe-Dialog.An image made up of coloured voxels.Voxels from a destroyed image scattered across the ground.Voxels from a destroyed image flying through the air.The image selection dialogue.The help dialogue.

Cosmorit

Ein auf Deathrun-Spielen und -Spielmodi basierendes asymmetrischen online-Mehrspielerspiel für bis zu 5 PC-Spieler.

Ein zufällig ausgewählter Spieler erstellt als Builder einen Parcours, wobei er verschiedene Fallen auf einem vorgegebenen Spielfeld platziert. Alle anderen Spieler versuchen als Team von Runner-Robotern eine Ressource ans Ende des Fallenparcours zu transportieren. Dabei kann der Builder platzierte Fallen in Echtzeit auslösen, um die Runner zusätzlich zu behindern.

Cosmorit wurde in einem Team aus 5 Personen als Vertical Slice erstellt, wobei ich hauptsächlich an Programmierung und Game Design mitwirkte. Unity kam als Engine des Spiels zum Einsatz.

Cosmorit

An asymmetric online multiplayer game for up to 5 PC-players, based on Deathrun games and game modes.

A randomly selected player acts as the builder and creates a course, placing various traps in a predefined area. All other players are in a team of runner robots and try to transport a resource to the end of the trap course. At any time, the builder can trigger placed traps to further hinder the runners.

Cosmorit was created in a team of 5 people as a Vertical Slice, with me being mainly involved in programming and game design. Unity was used as the game’s engine.

Mehrere Runner laufen durch einen Parcours.Der Builder beobachtet eine laufende Runde.Ein bereits zerstörter Wunner beobachtet einen Teamkammeraden.Der Builder baut einen Fallenparcours.Spieler versammeln sich vorm Spiel in einer Lobby.Das Optionsmenü.Multiple Runners are moving through a course.The Builder watches an active game.A Runner who was already destroyed is spectating one of his teammates.The builder is constructing an obstacle course.Players gather in a lobby before the game starts.The option menu.