Who am I? 😱
Hi, I'm Patrick! As a programmer with over 7 years of experience, my focus is clearly on network and tool development. I'm enthusiastic about the challenge of designing and implementing smart, practical solutions for this exciting field.
More about 👉🏼 ME! 👈🏼
Some of my work💡
Ready to see what I've been coding? I've laid out different types of my work for you here. You can explore my main 📁 Projects, dive into the world of 🕹️ Game Jams I've participated in, and check out the
🧪 Personal Projects I tinker with. Enjoy Browse!
Game Dev Tools🚀
My passion for building effective solutions extends to creating practical 🛠️ Game Development Tools. I initially developed many of these to solve challenges I encountered myself, and now I offer some of them for sale. Discover how they can enhance your development pipeline!
What I teach🧐
Through my work, I've had the chance to teach many aspiring developers and deliver numerous lectures covering all sorts of directions in programming and Game Development 🧭.
Want to see all my lectures and more examples? Find out 👉🏼MORE!👈🏼 ✨
Game Dev Wiki📄
I'm building this wiki to share valuable insights and lessons I've gathered over my years in the games industry. My goal is to create a helpful resource for fellow developers. Feel free to explore!
Enter the Wiki (Under Construction) 🚧
Get in Touch and say hi!👋🏼
Highlight Projects
Top Down Horde Shooter
Disco Gunner (WIP)
Multiplayer First Person Horde Shooter
Project CP
Professional Projects
Online Meet together for Gamescom 2020
Indie Arena Booth Online
GameJam Projects
SAE Game Jam - 2024
Wake Up
Global Game Jam - 2024
Bouncy Kingdom
SAE Game Jam - 2023
Travel Through Time
SAE Game Jam - 2022
Markus Movers
Global Game Jam - 2019
Catch your memories
Game Dev Tools
Dynamic Difficulty Adjustment Tool
Balance It (WIP)
Debug Logging Graphical Tool
Graph It (WIP)
Pooling Tool for Unity
Pool It
About me
Hey, I’m Patrick, an enthusiastic German game developer who loves to write clean and powerful code. Game programming is a huge adventure for me, where I’m constantly learning and taking on new challenges. This journey makes it exciting to see where the future of game development is headed.It is also important for me to help others get started in game development. That’s why I love teaching, organizing Game Jams, and sharing my knowledge in my wiki. It’s truly rewarding to support people in bringing their own projects to life.I also frequently attend events like gamescom, devcom, and the German Dev Days, as well as Game Dev Meetups. These events are great opportunities to network, exchange fresh ideas, and just be part of the community.
Skillset
over the years i learned alot and there is still so much to learn. But here are some skills, that i built up in the past:Languages:
C#, C++, Python, LUAVersion Control Software:
Unity Version Control (Plastic SCM), Github, SVNProject Management Tools:
Trello, Jira, YouTrackSoftware:
Jetbrains Rider, Visual Studio, FMOD Studio, TeamCityEngine:
Unity, Unreal Engine 5
Working Experience

SAE Institute Frankfurt
Head Instructor Games Programming
Aug 2021 - todaySupervisior Games Programming
Nov. 2020 - Juli 2021As Head Instructor for the Games Programming area, I lead the department, which is largely composed of organization, management, development of the program, teaching and technical support. A detailed list of duties is available below.Personal Highlights:
My first course, which I supervised from the beginning, won the first SAE Student Award in Frankfurt in 2022, for the best games programming project from all SAE sites.Subject-related assignments with the student:
- Main lecturer for the practical classes at the Frankfurt campus.
- Lecturer for theoretical lessons GSA* wide
- Technical support for students
- Support on student projects
- Technical support for bachelor topics
- Performance evaluations of students
- Conducting workshops and seminars
- Technical support of project work
- Contact person for interested visitors at the Open CampusOrganization
- Planning of the course development of the department GSA* far
- Planning the schedule and content of practical classes
- Planning and organization of local events (Game Jam etc.)Management
- Assignment of tasks to the departmental assistants
- Contact person for academic and subject-related questionsAdministrative tasks
- Maintenance of student data
- Planning and expansion of social media activities* (Germany, Switzerland, Austria)

SUPER CROWD ENTERTAINMENT GMBH
Unity Developer
Oct. 2020 - Sept. 2020Products Working on:
👉🏼 Indie Arena Booth Online 2020 👈🏼Course before the realease of the Indie Arena Booth 2020 for Gamescom, Supercrowd has been looking for support to get the project ready in time for Gamescom.
Responsibilies include:- Bug Fixing and Troubleshooting: Identified and resolved issues on the platform to ensure smooth event operations.- Functionality Testing: Conducted tests to verify that all features were functioning as intended.- Documentation: Provided detailed documentation of identified bugs, tests performed, and solutions implemented.

Schenker Deutschland AG
Unity Developer
Oct. 2019 - Sept. 2020Products Working on:
- VR Kleinpack
- VR Großpack
- VR CasinoResponsibilies include:- Developing New Game Features: Implement and integrate new features into the game to enhance the overall player experience.- Collaborating with Game Artists: Work closely with Game Artists to ensure a seamless integration of visual and gameplay elements.- Expanding Internal Editor Tools (Kite): Enhance and optimize internal editor tools, particularly "Kite," to improve game flow and development efficiency.- Debugging and Problem Solving: Independently debug and fix issues to ensure smooth gameplay.- Creating and Documenting Bug Tickets: Identify bugs, create detailed bug tickets, and document the issues and their resolutions.- Level Content Creation: Design and populate game levels with engaging content to provide diverse and exciting player experiences.
Lectures
Durch meine berufliche Tätigkeit hatte ich bereits das Vergnügen, viele angehende Entwickler auf ihrem Weg zu begleiten und unzählige Unterrichtseinheiten zu den verschiedensten Facetten der Programmierung und Spieleentwicklung zu gestalten und zu halten 🧭. Diese umfassende Praxiserfahrung und die Leidenschaft für Wissensvermittlung bilden das Fundament meines aktuellen Lehrangebots.Ich decke dabei ein breites Spektrum an Themen ab, um sowohl Grundlagen zu schaffen als auch tiefere Einblicke in spezialisierte Bereiche zu ermöglichen.Möchtest du genau wissen, welche Themen das sind und dir detaillierte Beschreibungen sowie passende Beispiele oder Sample-Projekte dazu ansehen?:
Programmiergrundlagen & Kernkonzepte
Programmieren Grundlagen (C# & C++)
In diesem fundamentalen Modul lege ich den Grundstein für deine Reise in die Spieleprogrammierung. Wir konzentrieren uns auf die essenziellen Konzepte und Techniken, die du benötigst, um mit C# (oft im Kontext von Unity) und C++ (relevant für Engines wie Unreal oder eigene Projekte) erfolgreich durchzustarten. Ziel ist es, ein solides Verständnis für Logik, Struktur und sauberen Code zu entwickeln.
Kerninhalte:
Zahlensysteme
Variablen, Datentypen und Operatoren
Kontrollstrukturen (Schleifen, if/else-Bedingungen)
Funktionen, Methoden und Parameterübergabe
Einführung ins Debugging und Fehlerbehebung
Value & Reference Types
Pointer Arithmetic
Memory Management
Lambda Expression
Reflections
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Objektorientierte Programmierung (OOP)
Die Objektorientierung ist ein mächtiges Paradigma in der modernen Software- und insbesondere der Spieleentwicklung. In diesem Kurs lernst du die Kernprinzipien der OOP – wie Klassen, Objekte, Vererbung und Polymorphie – kennen und wie du sie in C# und C++ praktisch anwendest, um modularen, wiederverwendbaren und gut wartbaren Code für deine Spiele zu erstellen.
Kerninhalte:
Das Konzept von Klassen und Objekten
Vererbung und die Gestaltung von Klassenhierarchien
Polymorphie und virtuelle Methoden
Kapselung, Abstraktion und Interfaces
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Algorithmen & Datenstrukturen
xxx
Kerninhalte:
Arrays
Listen
Linked Lists
Stacks
Queues
Baum Strukturen (Binary Tree, AVL Baum)
Hash-Datenstrukturen
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Design Patterns
xxx
Kerninhalte:
MVVM & MVC
Pooling
Command Pattern
Stratergy Pattern
...
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Version Control
xxx
Kerninhalte:
Commit
Push
Branching
Merging
Rebase
Git Flow / Github Flow / Trunk Based
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Game Engine & Spielentwicklungspraxis
Game Engine Basics (Unity & Unreal)
xxx
Kerninhalte:
Coding & Scripting
Collider & Kollision
UI
Sound
Post Processing
Engine Debugging
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Event Based Programming
xxx
Kerninhalte:
Events
Event Listener
Callbacks
Entkopplung von Klassen & Kopenenten
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Game Feedback
xxx
Kerninhalte:
User Experience
Camera Shakes
Sound Feedback
Tweening
Haptisches Feedback (Controller)
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Balancing
xxx
Kerninhalte:
Fairness & Chancen
Dynamic Difficulty Adjustment
Flow Theorie
Types of Balancing
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Game Audio (FMOD)
xxx
Kerninhalte:
Middleware-Integration
Sound Events
Sound Banks
Parameterbasierter Sound
Adaptive Musiksysteme
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Tool Programming
xxx
Kerninhalte:
Unity Engine Erweiterung (Window, Properties, Inspector etc.)
Data Serialization & File Formats: Json, XML, CSV, Ini
Databinding
Registry
WPF, Windows Forms, XAML, MVC, MVVM
Benutzerfreundliches Design Usability
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Fortgeschrittene Programmierung & Spezialgebiete:
AI Programming
xxx
Kerninhalte:
Alpha Beta Pruning
FSM
BT
Flocking
Steering Behaviour
Utility Based Desition Making
GOAP
Influence Maps
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Procedual Generation
xxx
Kerninhalte:
Perlin Noise Generation
Ocaves
UV Mapping
Texturing
Dungeon Generation
BSP
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Komplexe Algorithmen
xxx
Kerninhalte:
Bezier Curve
Splines
Cellular Automata
Conways Game Of Life
Cave Generation
Vector Fields
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Multithreading
xxx
Kerninhalte:
Threadpools
Thread vs Task
Thread vs Async
Race Conditions
Lock statement
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Procedual Animation
xxx
Kerninhalte:
Inverse Kinematik
Rig Structure
Unity Animations Rigging Package
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Netzwerk Programmierung
xxx
Kerninhalte:
Netzwerk Theorie (Hardware, Protokolle, DNS, ISO/OSI, IP, Adressen)
Game Spezifisches Netzwerk (Matchmaking, Lag Compensation)
Unity Photon (Pun, Fusion)
Unreal Networking Theorie
Eigenen Chat mit Sockets programmieren
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Physiks Programming
xxx
Kerninhalte:
Vector
Collison AABB
Complex Collision
Sphere Collision
Raycast
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Projektmanagement & Prozess:
Software Planung
xxx
Kerninhalte:
UML Diagram
Flow Charts
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Project Management
xxx
Kerninhalte:
Trello
Jira
Backlog
CI/CD Theorie
Sprint Modell
Agile Development vs Wasserfallmodell
Ausführliche Materialien & Code-Beispiele auf GitHub ➔
Project CP
Project Type: University
Role: Project Manager | Programmer
Teamsize: 2 Programmer | 1 Artist | 2 Audio
Duration: 6 month
Tools: FMOD, Jira
About
Project CP was developed in the third semester at SAE Institute. As the Project Manager, I was responsible for organizational tasks such as meetings, sprint planning, and maintaining tools like Jira. Additionally, I developed the core functionalities of the project, handled AI development, and managed network functionality. The project began with two programmers, and later, an audio creator and an artist for level design joined the team. Through this project, I gained extensive knowledge in network programming and cross-disciplinary communication.
01.
Project Management
In this project, I was responsible for project management. It was a unique experience, as it was my first time using Jira as a tool. In the past, I had primarily worked with Trello or similar applications.Engaging with Jira was very interesting, as I was able to discover its strengths. Although it took some time to understand and properly apply the essential and fundamental features, Jira ultimately helped me gain a clear overview of all departments, track the process, and implement agile project management more effectively. This included sprint planning, regular meetings, and sprint reviews.
02.
Gameplay
The game starts in a lobby, where you can assemble your equipment. When you're ready to start a round, you can either create your own lobby or join a random lobby via Quickplay.Once the game begins, your goal is to protect the Hangar Console. Enemies will spawn in waves and attempt to capture the console.If you are defeated by an enemy, your teammate can revive you. If your teammate defeats the wave, you will be automatically revived.There are two types of enemies: Soldiers and Drone Bombs. When you defeat these enemies, they drop their weapons, which you can pick up. They may also drop Healthpacks that you can collect.The game is won when all waves are defeated!
03.
Networking
The game should naturally include network functionality, as projects like these are incredibly beneficial for learning. In the past, I have already gained experience in developing network applications. For instance, I created a small network chat program using sockets and developed a small multiplayer shooter (authoritative) with Photon Bolt. However, we also wanted to explore the non-authoritative model, which is perfectly suitable for a coop shooter. Consequently, we delved into Photon Pun 2.
04.
AI Behaviour
For the Artificial Intelligence (AI), I decided to go with a simple Finite State Machine (FSM). Before starting the implementation, I planned the AI using Draw.io to visually represent the states and transitions. The resulting diagram shows how the FSM is structured and how it functions.One particularly interesting aspect was synchronizing the FSM in a multiplayer environment. The FSM itself runs only on the host machine, but the positions and animations of the AI characters are synchronized to ensure smooth gameplay on all clients.Challenges and Solutions in Synchronization
One challenge was keeping the AI running when a player leaves the game. One might think it's enough to sync the AI information once when someone exits, but with a sudden disconnect, it's not that simple.In the event of an unexpected disconnect, no code can be executed to save or sync the current state. Therefore, it's crucial to ensure that the AI information is always up-to-date. This means the relevant data must be continuously and reliably transmitted throughout the game.
05.
Inventory System
The inventory system is very simple. The basic idea is that players can scroll through their inventory using the scroll wheel. This allows a player to hold a primary weapon (e.g., AK, Scar) as well as a secondary weapon, such as a pistol.For network synchronization, only the ID of the weapon currently held by the player needs to be synchronized. This means that whenever a player scrolls through their inventory or picks up a new weapon, a network synchronization must occur.Additionally, we do not destroy weapons when they are switched or picked up; instead, we simply deactivate them. The reason behind this is that instantiating and destroying objects is a resource-intensive process in Unity. By keeping the objects in memory and not deleting them, we can avoid this overhead.This approach applies to both the first-person and third-person models. The weapon held by Player 1 is created in their first-person model, not in the third-person model. However, for all other players, the weapon is created in the third-person model.It is also crucial that when a player joins the game later, the weapon ID of each player is synchronized to the new player so that they are also up-to-date.
06.
Recoil Pattern Tool
For our weapons, I developed a Recoil Pattern. To make this pattern more comprehensible, I created a tool that allows for precise visualization of how the weapons behave in a recoil pattern. I intentionally chose not to use a procedural spray pattern for this project, enabling quick and easy adjustments to the recoil pattern.UsageWith my tool, I can easily add new points, adjust tangents, or delete points. Each point can be moved afterward, except for the "Root" point. However, the tangents of each point can be individually adjusted.Technical DetailsThe tool is built on a custom spline system that allows me to move points via drag-and-drop. Tangents can be displayed to fine-tune the curve. The spline curve is then used to generate points necessary for the recoil during runtime.A key feature is the proper placement of tangent points when creating new points. To ensure consistent results, I align the tangent in the direction of the second tangent of the previous point.
07.
FMOD
Goals
The primary objective was to craft an immersive and reactive soundscape that fully immerses players in the game world. Repetitive and monotonous sounds can make a game feel very dull, so we implemented the following strategies:Variety in sound effects: To avoid monotony and create a more dynamic and engaging audio environment, we used different sounds for the same effects.
Dynamic soundtrack creation: To enhance emotional impact, we developed a music system that adapts to the in-game situation, changing dynamically with the gameplay.
Randomized sound adjustments: To ensure that sounds do not become repetitive, we varied parameters such as pitch, volume, and filters each time a sound effect was played. This introduced a natural variation and made the audio experience feel more lifelike.Results
By implementing FMOD, we were able to utilize its robust core functionalities without the need for extensive custom coding. This greatly simplified the workflow between audio production, FMOD integration, and development. The end result was a significantly more immersive and engaging player experience.
Impressum
Angaben gemäß § 5 DDGPatrick Fischer
Samlandweg 3
63069 OffenbachVertreten durch:
Patrick FischerKontakt:
E-Mail: [email protected]Haftungsausschluss:Haftung für InhalteDie Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 DDG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.Haftung für LinksUnser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.UrheberrechtDie durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.DatenschutzDie Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.Google AnalyticsDiese Website benutzt Google Analytics, einen Webanalysedienst der Google Inc. (''Google''). Google Analytics verwendet sog. ''Cookies'', Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website durch Sie ermöglicht. Die durch den Cookie erzeugten Informationen über Ihre Benutzung dieser Website (einschließlich Ihrer IP-Adresse) wird an einen Server von Google in den USA übertragen und dort gespeichert. Google wird diese Informationen benutzen, um Ihre Nutzung der Website auszuwerten, um Reports über die Websiteaktivitäten für die Websitebetreiber zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung verbundene Dienstleistungen zu erbringen. Auch wird Google diese Informationen gegebenenfalls an Dritte übertragen, sofern dies gesetzlich vorgeschrieben oder soweit Dritte diese Daten im Auftrag von Google verarbeiten. Google wird in keinem Fall Ihre IP-Adresse mit anderen Daten der Google in Verbindung bringen. Sie können die Installation der Cookies durch eine entsprechende Einstellung Ihrer Browser Software verhindern; wir weisen Sie jedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Website voll umfänglich nutzen können. Durch die Nutzung dieser Website erklären Sie sich mit der Bearbeitung der über Sie erhobenen Daten durch Google in der zuvor beschriebenen Art und Weise und zu dem zuvor benannten Zweck einverstanden.Website Impressum erstellt durch impressum-generator.de von der Kanzlei Hasselbach