Projects

Below are featured projects that I either loved working on or am working on now. You will also find interesting links and used engines, frameworks, libraries and languages accompanied.


Communicate!
RAGE assets
Lightbulb Collective's: Kicks
Real-Time Strategy
Fan-made Fire Emblem

Communicate!

February 2015 - Present

My graduation project of my Bachelor of Science was the serious game Communicate!. The game teaches communication skills by simulating a dialogue scenario between the player and a virtual character. For example a pharmacy student can play as a pharmacist and train reviewing a client’s medication and a medical student can train diagnostic skills with a virtual patient. The scenarios are created by domain experts, such as a psychologist or a veterinarian. The game can be used to simulate any one-to-one communication scenario, which makes it very useful for all disciplines in which such communication skills are valued.

During the simulation the player needs to make choices, based on the responses and emotions of the character. The simulation can be completely scripted by a domain expert in a visual editor, including choice, conditions, grouping of statements into subjects and more advanced features (e.g. interleaving of subjects, optionality). The scenario author can also easily edit the location, character (e.g. young woman, elderly man) and the emotion displayed after a statement. Below you can see a screenshot from the game and one from the editor in which we see the zoomed in subject Holidays that is currently being discussed.

The game has been well received by 2000+ users and content creators and I have been working on Communicate! for Utrecht University, Utrecht municipality and the start-up Dialogue Trainer ever since.

The implementation of the architecture has also been published in a paper for the ITS 2016 conference.

_config.yml

An in-game screenshot of Communicate!.


_config.yml
A screenshot of the Communicate! scenario editor.

Frameworks: CodeIgniter Ideas Locust
Libraries: jQuery jQuery UI jsPlumb
Languages: HTML SASS JavaScript TypeScript PHP Haskell Python

RAGE

January 2016 - Present

The European Realising an Applied Gaming Eco-system project aims to develop self-contained assets for developing applied games easier, faster and more cost-effectively. I have been developing the Scenario Editor and the Scenario Reasoner assets and I also contribute to the integration of those assets with the Virtual Human Controller and the Water Cooler game, where you manage a game development company. The Scenario Editor and the Scenario Reasoner were extracted from the Communicate! project, generalized for (applied) games, and the assets were reintegrated into the serious game Communicate!, which additionally verifies the generalization we made. The following sections describe each asset and a product of our development called the UUDSL.

_config.yml

A draft in-game screenshot of the Water Cooler game.

Scenario Editor

The Scenario Editor allows users to create, edit, import and export dialogue scenarios visually in a web browser.

The editor was built on the Communicate! editor after removing all non-generalized features for games. We developed a generalized dialogue editor for games including a type system and custom configuration.

The dialogue scenarios created with the editor are stored as an XML following the UUDSL. The XML can be parsed and processed to play through the dialogue scenario.

UUDSL

The Utrecht University Dialogue Scenario Language is an XML language for describing a dialogue scenario, including character(s), properties (e.g. location, hair), parameters (e.g. emotion), dialogue content and complex structures. Please see the journal paper I co-authored for the reasoning behind the concepts and complex structures.

Scenario Reasoner

The Scenario Reasoner navigates through UUDSL dialogue scenarios. The reasoner parses a dailogue scenario and stores it in a binary representation. When a binary representation of a scenario is available the reasoner can give an initial state, the next statements and states in the dialogue scenario and a final evaluation. The reasoner asset is a webservice with a JSON-RPC API, but has also been implemented as a stateful component of a game.

Frameworks: CodeIgniter Ideas Locust
Libraries: jQuery jQuery UI jsPlumb Json.NET JsonCpp tiny-process-library Qt Core Boost.Nowide
Languages: HTML CSS JavaScript PHP Haskell C++ C# Python

Lightbulb Collective’s: Kicks

July 2016 - Present

I participated in the Summer Game Dev event by Dutch Game Garden in July 2016. The event featured a 5-day game jam with a soccer theme that also included making a business model, marketing and budget for your game. Together with another programmer, a designer, an artist and a producer / audio engineer, I made a mobile game for iOS and Android that got second place. We kept the concept as simple as possible and came up with Kicks, a local multiplayer co-op game, where you have to keep the ball up as long as possible together to beat the highscore. Our goal was to make a polished and finished game, so you can also customize your shoes, ball and pitch. Currently we are planning to release the game on Google Play and the App Store.

_config.yml

Engine: Unity
Language: C#

Real-time Strategy Game

May 2016 - July 2016

For the course Games & Agents at Utrecht University I developed a prototype together with a team of 3 other programmers that uses a novel combination of AI techniques to improve RTS gameplay by letting the player focus less on micromanagement and more on high-level strategy and tactics. The game has a classic RTS setting, where the player controls units, has a base to defend and needs to gather resources, explore and fight his opponent in fog of war. You can play the game by downloading and installing the application from the downloadable archive.

_config.yml

The player can give his units high-level commands and the underlying multi-agent potential fields system will handle the combination of commands given and not given. The enemy AI uses a hierarchical FSM to also give its units high-level commands through the same system. In addition to the improved higher-level gameplay, the game is also much easier to balance, because the player and enemy both use a common underlying system.

Framework: MonoGame
Language: C#

Fire Emblem Remake

July 2015 - Present

In the summer of 2015 I wanted to gain more advanced C++ skills and use the most recent C++ features, so I decided to remake Fire Emblem, a turn-based strategy RPG. Previously I had already worked with SDL and SDL2 by remaking parts of Cave Story, so I decided to use it for this game too. I love programming Fire Emblem, but currently I’m focusing on the other projects and finishing my Master’s, so it is not in active development. I can’t show the current state of the game, because I used and changed the sprites from the original game. However I can show it to you privately for research purposes and give you a look inside the code, just send me an email.

In the future I’m planning to add my own bindings for Lua scripting and integrate the scenario editor and reasoner assets from the RAGE project to easily script and handle dialogue within the game, so there will be more choice, complexity and depth in the dialogues than in the original game.

_config.yml

The original title menu in Fire Emblem: Blazing Sword.

Libraries: SDL2 boost
Language: C++