Age of Wonders 4

Age of Wonders 4 is a high-fantasy 4X strategy game with deep customization, featuring turn-based tactical combat and empire-building. Players design and grow their own faction on a generated fantasy world map, managing resources, researching magic, and conquering territories. The game features two interconnected layers of gameplay: a strategic overworld for managing cities and researching magic, and tactical, grid-based turn-based combat for engaging enemies. The game was released on PC, Xbox Series X|S, PlayStation 5 and Steam Deck in May 2023 by Triumph Studios, with multiple expansions shipped after launch.

My work on this project started early, in the pre-production phase. One of my first tasks for this project was to investigate new UI middleware, as we did not want to continue with Iggy. My UI colleague and I started creating prototypes with various middleware. We ended up choosing NoesisGUI, which is a C++ port of WPF for games. While working on the entirety of this project, I gained extensive experience in WPF and XAML. In addition to finding a new UI middleware, there were some other systems that needed an upgrade. For example, the old window management system was not holding up very well. I designed and implemented a more dynamic and fluid window system for it, and it still powers the entire UI of the game today. We made significant improvements to the UI, including a completely new workflow with new middleware. Because of my large role in this, I onboarded the rest of the gameplay team onto the new system and gave support to anything they needed from the UI.

Another achievement of mine on this project is leading and creating a large part of the tooltip-in-tooltip system. This is a system where some content in a tooltip is marked as a hyperlink, hovering over these hyperlinks will spawn a new tooltip based on the content it represents. This way you can create tooltip chains that progressively layer information for the player. This game needed controller support as well. I had a big part in creating a new controller API for this UI system, applying everything we learned from the previous game.

This was my first project where I contributed from pre-production all the way to release, including multiple DLCs.

Age of Wonders: Planetfall

Age of Wonders: Planetfall is a 4X turn-based strategy video game set in a post-collapse sci-fi universe, where players lead one of six distinct factions to rebuild civilization, explore planets, wage tactical combat, and conduct diplomacy in a bid to establish a new galactic empire. The game features two interconnected layers of gameplay: a strategic overworld for managing colonies and researching technology, and tactical, grid-based turn-based combat for engaging enemies. The game was released on PC, Xbox One and PlayStation 4 in August 2019 by Triumph Studios, with three expansions shipped after launch.

I joined this project halfway through production as part of my internship. The user interface for this game was developed with Iggy Game UI, which is based on Flash and ActionScript 3. Triumph needed extra hands in the UI department, and since I had prior experience with Flash and ActionScript 3, I began working the summer before my internship officially started. During this time, my main focus was developing user interfaces for the game and maintaining the UI codebase. As Flash was no longer supported and new licenses were unavailable, my colleague and I wrote the entire user interface to shippable quality. After my internship, I was hired to help polish and finalize the game.

It was the first time that Triumph wanted to ship their Age of Wonders title to the consoles, and at that time, there were hardly any other 4X strategy games released on console, let alone with controller support. So a big chunk of my time was spent collaborating with the QA team to figure out a working controller scheme and making sure the experience of the game would not be diminished in comparison to keyboard and mouse. Since Iggy and Flash did not support controllers natively, I played a key role in developing a working controller system as well.

Other Projects

In this section you will find a collection of my other projects. They are either professional, personal, or university related. Projects are ordered chronologically, starting with the newest.

Engine Upgrade

The past year and a half I worked on upgrading the Creator Engine, the in-house engine of Triumph Studios. My work was mainly focused on creating a new editor, as the old one is dated and the UX is limited. The new editor is based on WPF using C-style ABI bindings to glue it to the engine. A lot of my work has been in making sure that the UX is an improvement over the previous engine as well as implemented many of the new features of the editor. Examples include docking windows, various property editors, navigation tools, node graphs, and undo/redo support.

Graav Machine

Graav Machine is a simple but effective Discord bot that checks if a Minecraft server is online, and the amount of players currently playing. It also sends messages to a channel when the server goes online and offline. I used this project as a test case for learning cloud and service programming. I run a small cloud server with Ubuntu and Docker to run small services like this. You can find this project on my GitHub page.

FlipMeister

FlipMeister is a small addon I made for Guild Wars 2. It is built upon the addon loader Nexus from raidcore.gg. Functionally it is a tool to help you track items you bought from the trading post with the primary purpose of reselling and tracking profits. Technically it is written in C++ and makes API requests to gather the data. The UI was built with Dear ImGui. You can find this project on my GitHub page.

Aurora Engine

Aurora Engine was a hobby project I worked on around 2017-2018. It was used as a way to put into practice the knowledge I gained during my university studies. The idea was to make a game with it, but the project never left its early stages. The engine was cross-platform (Windows and Linux), supporting DirectX 11 and OpenGL. It had a working ECS, resource loading system, and bare-bones rendering.

Sulphur Engine

Sulphur Engine was a university project in 2017-2018. For a full year, we worked on an engine with a demo game as proof, built by about 15 programmers. You can only imagine the chaos that ensued. My part of the engine was to create a working multiplayer API in C++, to be used in the demo. The API built for the engine was based on ENet, a “Reliable UDP networking library”. Near the end of the project, I also assisted in creating the game demo: Crocknite, a spin on the popular game Fortnite. You play as a crocodile: look for chests, open them to get fish, and grow as you eat. By doing this, you slowly consume the entire world. The goal is to be the biggest in the end.

Olympic Space Swim Team

Olympic Space Swim Team is a Global Game Jam 2018 game made with friends. In 48 hours we developed a local multiplayer game where you swim through space and reach the finish line on the other side. There is low friction due to being in space, so this becomes tricky. It becomes competitive the moment you start throwing objects at the other players to knock them off course. I programmed this game together with another programmer in Unity. We ended up second place on the best games list of our location. You can find the game here.

Boom Boom Mushroom

Boom Boom Mushroom is a Global Game Jam 2017 game made with friends. In 48 hours we developed a local multiplayer game where you need to knock the other players off the platform. You can jump to create shockwaves. The shockwave size is based on the number of mushrooms in your color. Mushrooms you hit with a shockwave or walk over turn into your color. But be aware, mushrooms can break and leave holes in the platform. I programmed this game together with another programmer in Unity. We ended up 4th place on the best games list of our location. You can find the game here.

Vi’king

Vi’king is a university project created in 2 weeks in 2017. The game is a local multiplayer game. The game has 2 different dimensions. One dimension holds the catcher; the other holds the remaining players. The catcher can jump between the dimensions to catch the other players. The other players can sabotage each other by stunning each other. In addition to the default game mode we created an infection game mode, where you all become the catchers, and a switch-a-roo game mode, where you switch positions with the catcher. I programmed this game together with another programmer in Unity. My tasks included the UI, the stun mechanic and the two extra game modes.

Deep Danger

Deep Danger is a mobile game created during an internship for my MBO studies in 2014. Together with an artist and a designer we teamed up to create a mobile game where you need to dive as deep as possible with your submarine. There is a progression system where you can buy upgrades for your submarine in the shop, using currency earned by playing. This game was developed in Unity and released on the Android Play Store.

Line of Fire

Line of Fire is a multiplayer shooter I worked on as a hobby project in 2013. I joined the project after it was well underway for 2 years. I created exploding barrels, ladders, and a fully functional forklift. The big challenge at the time was making it fully networked. This game was developed in Unity.