On this page I gathered some of the stuff I worked on in the last few years (beginning from shortly before starting university).
Spectacular Shatter Buddies (löve/Lua, Python — Jan 2017 – Aug 2018)
I’ve been a huge fan of Super Smash Bros. Melee for a while now, but it is relatively hard to get your friends into it due to the high technical skill barrier, requiring many hours of training solo to start experiencing the real game. Therefore I decided to try my hand at making a game that captures the spirit of Melee as much as possible while also making it a little more accessible and adding the modern multiplayer features that are sorely missed nowadays. If you are a Smash-fan and want to talk about it or try it, please join the Discord server or contact me directly!
melee-framedata (Python, HTML/CSS — Apr 2018 – Jun 2018) – GitHub
melee-framedata is a website with in-depth frame data for Super Smash Bros. Melee, inspired by the move pages on SmashWiki. It is based on two other programs of mine, meleeDat2Json and meleeFrameDataExtractor which dump the character data files from the Super Smash Bros. Melee .iso to JSON and generate JSON framedata from these dumps respectively.
kaun (C++, Lua — Aug 2018 – today)
As an avid user of the löve framework, I have been looking for an alternative for 3D games that has a “löve-ly” feel to it for a long time, but never really found a framework/engine I found appealing. So I started to work on a framework of my own, based on an older project of mine, NGN. kaun is a Lua module provided as a shared library and merely a replacement of löve’s graphics module (therefore to be used alongside löve). The screenshot is of an example project, that started as a game for LD42 (which I did not finish, since too much kaun related work kept getting in the way – which I expected). The strength of the water foam is determined by the depth value differences between the ground and the water. It also features soft shadows (Percentage-Closer Filtering) and procedural terrain.
I am also working on a high-level framework on top of kaun, since kaun is essentially a graphics wrapper (similar to bgfx), that provides more high level concepts such as scenes, materials, sceneobjects, etc., but that is currently very early in development, so there is nothing to show yet.
C++ ECS (C++, Lua — Sep 2018 – today)
This is an entity-component-system library inspired by ideas presented in Allan Deutsch’s C++Now 2018 talk Game Engine API Design. It is also an exercise in “modernizing” my C++, but it is very work-in-progress (especially regarding multi-threading).
SudoHack is a bullethell roguelike featured in a number of blog posts on this blog. After the main development period listed in the title university demanded a lot more attention from me and I had to hibernate development until December 2015. Then after working on it again I realized that I somehow lost track of the vision for this game and I had to stop and just think about it for a while. After finishing my Bachelor’s degree I wanted to continue, but somehow never recovered my initial intention for the game. I still like what the game was, so I’m sure there will be more iterations of SudoHack.
NGN (C++11, OpenGL 3.3 —Aug 2016 – Dec 2016)
NGN is a game (just graphics for now) engine I’m writing and it’s mostly intended for game jams, but it should be usable for projects that are a little bigger as well. The Screenshot on the GitHub is regenerated every time I close my test program and the image on here is also updated regularly (it’s directly linking to the image on GitHub) so this is the most current insight into the current state of the engine. I currently don’t have much use for a 3D engine, but I was never quite satisfied with the options I already have, so I will come back to it, next time I am inspired to make a 3D game again.
This is the oldest project on the list. I’ve worked on it for about 4 months (while still going to school) and it started out of the growing, but now faded trend of tower defense games. Starting university I got quickly distracted by other things, but it looks relatively nice and it’s 3D, so it is listed here.
Tools & Libraries
Screwdriver (löve — Sep 2015 – Nov 2015) – Video, GitHub
To supplement the awesome Tiled map editor, I decided to build an editor for non-tile based games. It is meant to be extended for each different game that one wants to build levels for. In the end it was not used for the game jam it was initially built for, but I used it in some other projects (such as Spectacular Shatter Buddies) and continue to add/change things to this day.
andross (Lua, löve — Feb 2017 – Mar 2017)
andross is a Lua library for 2D skeletal/bone animations. It provides different backends, where a backend for löve is already provided. There is also the possibility to implement different importers, where an importer for the DragonBones format is already provided as well. Originally it is written as a runtime for the Cutout Animation Tools plugin for Blender, so that there are still quite some compatibility issues with files exported by DragonBones itself. I use it in Spectacular Shatter Buddies and some smaller, prototype games and still change or add things once in a while.
kraidGUI (Lua — Apr 2015)
kraidGUI is a framework made for making GUIs, with a default implementation of a dark theme and a löve2D backend, though a different one can easily be plugged in.
jprof (Lua, löve — Nov 2017 – today)
Usually Lua programs are profiled by setting hooks using the built-in function debug.sethook, but sadly these hooks are not reliably called in LuaJIT, which makes most profiling libraries for Lua not usable in the current version of löve. jprof is a semi-makeshift solution for profiling löve applications with some extra work, but while also providing no significant slowdown while profiling.
It is probably the piece of software of mine that is most used by other people.
lua-discordRPC (LuaJIT — Jan 2018 – today)
LuaJIT bindings for the Discord Rich Presence library via FFI.
gciso (Python — May 2018)
A Python library to read and write Nintendo GameCube .iso files. Also has a command line interface that enables basic file operations.
welo (Python — May 2018 – today)
welo is a command line weight and calorie tracker application that I use extensively to track the results of my weight loss efforts.
fexp is a prototype of the file explorer I wish I could replace Windows Explorer with. The general idea is to make “Sublime Text for file browsing” with a fuzzy matching command palette for all operations and also just for navigating directories. It also includes tabs and panes.
Frontdown (Python — Jan 2016 – Feb 2016)
Frontdown is an open source backup program, written in Python 3.5, that uses hardlinks for space efficient, versioned backups.
Möhre (Python & PyQt & PyAudio & OpenGL — Jan 2015)
A node based software synthesizer for generating instrument samples or sound effects I worked on with my roommate Jonas Lieb.
This was a 2D multiplayer shooter (with basic networking) taking place on rock formations in space with very high gravity (see the blog post & video!). We did this during a weekend and I am currently working on an editor and collecting some ideas to turn this into a real project.
Metroidlike (löve — Jun 2013 – Jul 2013) – Video 1, Video 2
I started a little “engine” (with normal mapping and lighting (dynamic and some cool global pre-baked lighting) for a potential Metroidvania I wanted to make. But my ideas were too vague and I’m still not sure what exactly I wanted to do there.
Game Jam Games
(PL)ANT LIFE (löve — Indie Speed Run 2015 finalist) – Video
We made this as a 4 man team (programming by me and Markus Over, art by Lukas Schnitzler (see also TerminationShock, Falling Nukes and Running People and SudoHack), music/sound done by Philipp Koerver) for Indie Speed Run 2015 with the themes being “rebuilding” and “ants”. The game is about the player (playing the plant) trying to regain it’s former majesty by managing resources and defending itself from foes cohabiting the forest. We reached the finals of Indie Speed Run with this project, after being picked by Jason Rohrer!
Made for LD37 with Raphael Willerding, who created the artwork. Since recently I spend a lot of time thinking about skillful movement in video games (and that I observe it as slowly being less prevalent), I decided to make a game about maneuvering a single room (theme: “one room”) with non-trivial movement options that can be used creatively. The options included seem to be very similar to some in popular Quake mods like Defrag, which I was not aware of beforehand, but was pointed to by a friend during testing, so the game is named Quark (german for “curd”, often used as “junk”) to pay homage. I’m very happy with the result since we discovered how deep the mechanics actually were by constantly finding new tricks and combos. Sadly it is not as accessible as game jam games usually ought to be, since the time needed to properly use these mechanics is more than a few minutes (close to an hour I’d say). But I really enjoyed the experiment and plan to do more of this in the future.
The theme for this game jam was “<genre> without <mechanic>” and since I made Tetris without clearing lines/a failure state. This is intended as a relaxing, meditative game. The music is done by my good friend Jan Koerver, who is also working on music for Shatter Buddies!
TerminationShock (löve — Spielmarmelade 2015) – Video (astronaut), Video (spaceship)
Made for Spielmarmelade 2015, a game jam me and two fellow students organized at my university RWTH Aachen. A brief description of the setting and the gameplay as well as videos and screenshots can be found on the GitHub page. All in all I’m very proud of this project, even tough we couldn’t manage to finish it. On the graphics programming and art side this is certainly one of the better game jam games I’ve seen.
Falling Nukes + Running People (löve — Global Game Jam 2015)
A game about escaping impending doom in the form of a nuclear missile impact as a competitive local multiplayer platformer. Also highlighted as an “oustanding project” here.
Per Torpedum Ad Astram (löve — TAG Jam 5 winner (2014)) – Video
I deliberately tried to make the worst game for TAG Jam, but won it in the end with this game. A game about flying a pirate ship in the sky and defending against laser shooting kittens inspired by one of my all time favourites, Starfox.
Lost in the Stars (node.js/three.js — Global Game Jam 2018)
Lost in the Stars is a “mini MMO” with everyone in the game jam venue participating during the presentation. Every player is placed in somewhere in space, being able to move and transmit a signal into a direction. The goal is to find two other players with sounds different from their own and meet in one spot. The developers have the ability to overview the whole map, visibile for everyone on the project. They guide the players towards each other by “pinging” them (which shows a special message on the client) and helping them find each other in real life, effectively mirroring what they do in-game.
Such a game is obviously very hard to test, since a representative test scenario is difficult to set up. So we decided to make this a one-time event – A game that is only played (and gameplay-tested) once, ever.
Bat Sight (Unity — Global Game Jam 2017)
This was my first project using Unity. The theme was “Waves”, so we made a game in which you play a bat, that is flying around at night and can only perceive it’s surroundings using the reflection of sonar waves in the environment. We also put significant attention in to proper support of Google’s Daydream VR, thankfully without much technical overhead, thanks to Unity. I didn’t really know much about Unity at that point but am now very much convinced of it’s power and ease of use. During the Jam I mostly worked on the controls and the sonar shader.
The theme was “Evolution” and in this game a fungus (a cellular automaton) is spreading across randomly generated levels, taking over walkable space and turning it into breeding grounds for evil creeps. The fungus has to be destroyed before it gets out of hand while dealing with said creeps that would prefer you to rather not do so.
Tron Cruise (three.js — IGJAM @ gamescom 2016) – IGJAM site, Video, GitHub
Tron Cruise is a 2-player Star Fox/Top Gun inspired TRON-like in which you either have to shoot each other out of the sky or avoid the other player’s trails longer than they can avoid yours.
The general idea was to make a game with a unconventional control scheme utilizing our laptops’ webcams in particular. We used OpenFace to do face tracking and use your screen-relative real-world viewing direction to steer the ship. The setup is sadly not very simple, so the online version you can play for yourself only supports keyboard controls (WASD + V or Arrow Keys + L to steer + shoot), but the video linked above can give give some idea of how the face controls looked like. If you try the online version, please consider using Chrome for reasonable performance.
Cardiac Murmur (C++ & own engine “Kiwi” — Global Game Jam 2013) – Video
The theme was the sound of heartbeat (the actual sound). In this game you use your heartbeat to unveil hidden information and display the true feelings and thoughts of the characters around you. Rather pretentiously pointing to issues of our peers that often stay hidden to us, because of a lack of genuine attention.
Scavenger Hunt (löve — Global Game Jam 2016) – GitHub
A two player local competitive multiplayer game on the theme “ritual”. In this game both players play a serial killer that on their killing spree are hindered by their compulsive tendencies to perform certain rituals inbetween killing people. The lists of rituals to complete are randomized each time and both players race for their completion. The theme gave us some trouble, so the game sadly has a relatively generic and blunt setting, but in the end it turned out to be a solid 20 minutes of fun for two bored people sitting at the same computer.
Zombie Salvation (C++ & own engine “Kiwi” — Ludum Dare 25) – Video
A realtime strategy game made for “You are the enemy”-Ludum Dare where you have to coordinate a zombie invasion of randomly generated towns.
A very bad simulation, but a fairly fun game about being a flight coordinator. Made just for fun in a 48h marathon with my roommate Jonas Lieb.