Welcome! My name is,

Dennis Fokker

Take a look around and get to know me.

dennis.fokker@live.nl
0611911153
Eindhoven, Netherlands
Resume
EN NL

Skills

Unreal Engine (C++ & Blueprints)
Online multiplayer
Virtual reality
Unity (C#)
Cloud computing (AWS)
NodeJS
Angular

About me

I'm a software engineer and game developer, focussing mainly on gameplay features and tooling.

My study started with a focus on software engineering, learning how to create both back and front-end systems in various languages and frameworks. Back-end was primarily focussed on enterprise Java and NodeJS, whilst front-end prioritised web frameworks such as Angular and Vue.js

Later in the study, game technologies and design became an option, where I put my focus on from then onward. Even though the study touched on all aspects of game development (design, audio, 3D art, programming), my interests remained with programming. I started development in Unity, but once I got to do a project in Unreal Engine, I was quick to put my efforts there and leave Unity behind.

Today I enjoy the variety game development brings. From the architecture behind a system to make it usable by programmers and designers alike, to designing and implementing elements within the UI.

Projects

Enversed Framework

C++ & Blueprints
Movement
System design
Multiplayer

A collection of core systems and modules providign each app a jump start in development. It offers consistent interactions to prevent surprises for both users and developers. Almost every system works in a replicated environment and relates to VR applications.

Features

  • Various movement options varying from forms of teleportation, to on-rails vehicle simulation.
  • (Physics-based) items with a simple interactions and "using" system.
  • Physically limiting VR movement.
  • Rayman-like and fullbody IK player pawn.
  • Support for extending/adjusting most elements within each system.

The framework is an ever-evolving project; it constantly gets new features, adjustments to improve overridability, and reworks on elements due to new engine features or knowledge about how Unreal works. It is developed alongside other projects, receiving occasional releases to which projects can update. The separation of responsibilities allows us to implement and rework features as needed without influencing projects until it's ready to be published.

Aside from general fixes and reworks, my main contributions are in movement and creating body size calibration (making sure an arbitrary human skeletal mesh roughly matches your real-life body proportions.). The contributions to the movement consist of:

  • Adding pseudo-collision to prevent the pawn, hands, and head from clipping through geometry to increase immersion and restrict sequence breaking.
  • Adjusting a teleportation movement module to use character movement as a basis. It ensured that it was as accurate as possible to movement a player makes through, for example, "joystick-based" movement (normal movement in a first-person game). Furthermore, it gave us additional features without much work, such as preventing players from falling off ledges or having them properly be able to step up on an object.
  • Adding an on-rails movement module that allows developers to define a spline path with auto-generated checkpoints and boundaries that limit movement. It was ideal for two simulation games in development. One is paragliding while ensuring the player follows a set path, and the other is a balloon flight requiring maneuvering past obstacles.

Enversed Home

C++ & Blueprints
AWS
Plugins
Networking

A distribution platform created for the clients of Enversed to streamline the process of keeping apps up to date and launch multiplayer sessions with specific computers.

Features

  • Cloud-managed accounts to allow restricting access to apps.
  • Manage app installation/updating and license activation.
  • Integration in our development pipeline, so updates are available right away.
  • Manage connected computers to start multiplayer apps in a single session.
  • Custom plugins for AWS services to allow integrating only what is needed in an app.

Enversed Home was initially developed by me and the CTO over four months. During this, we performed the initial research and implementation, focussing on the cloud-based solutions and how to handle communications across the computers on the network. Once the MVP reached completion and could be used, the project passed on to the systems team of Enversed, of which I was the lead developer.

We chose to develop it within Unreal Engine to ensure all developers at Enversed could work on it. Making sure specialised developers were always available was not viable at the time. Using Unreal also allowed us to use Unreal's replication system but tended to limit development on the UI as there were no experts in Slate/UMG.

Crowe Conversation Training

C++ & Blueprints
AI analysis
Mobile Virtual Reality
Metahuman

A conversation training, operated by your voice and hands. It reacts through a free-flowing conversation, as your graded on various aspects so you can recieve constructive feedback at the end.

Features

  • Integration of Metahumans with motion-captured animations and dynamic speech.
  • Dutch voice recognition with occasional finger-based menu interactions.
  • AI which analyses the style of the conversation and provides appropriate responses.
Read more about Crowe, VR and AI

The app is a pilot which leverages AI technologies to provide a portable training to enhance existing trainings where an actor is used. It is made with natural interactions given the target audience, focussing on hand-tracking and voice input to operate the app.

The conversations are intended to follow a specific structure, which the app attempts to recognise so it can provide feedback when deviating from the theory. Some elements are in place to allow for better railroading of the conversation.

Proto VR Dinner

C++ & Blueprints
Multiplayer
Multi-server management
Mobile Virtual Reality

Enhancing your dining experience through a set of virtual reality experiences. Each dish is preceded by a VR experience, which is sometimes interactive, and other times a supplies a visual spectacle.

Features

  • Synchronised experience per table of eight.
  • Management software to coordinate the game servers responsible for each table.
Read more about VR dinner

The two virtual reality dinner experiences were developed by me and another developer, with an external company utilised to deliver the art assets. The general idea of what each pre-cours experience must entail was provided by the client and turned into functional products by us.

The experiences run standalone on an Meta Quest 2, connected to a central PC which handled the game servers for each table. Most experiences have some interaction with the other guests. In order to increase the immersion all interactions are done through the Quest's hand tracking functionality.

A simple management software is provided which has an overview of the game server for each table. Through this app the staff can advance the experiences and see the current status to match the timing with the kitchen.

Proto Invention Factory

Blueprints
Arduino
Multiplayer
Game design

The Proto Invention Factory is a client of Enversed, for whom we produced a collection of games, most of which I have worked on during my internship. All games exist in the same steampunk universe, where some games introduce physical controls to increase immersion. Each game has a limited duration, as Proto is an arcade-like environment.

Features

  • Physical Arduino-controlled input devices.
  • Variety in single player and multiplayer games, with both co-op and versus gameplay styles.
  • Points accumulation across experiences (externally developed).

The Proto games were developed by a team of about 10-15 artists and programmers, including myself and a few other interns. The games already had a concept describing the core gameplay provided by the client. However, the specifics were up to the developers. For example, the introduction experience: the concept was merely drawing the inventions of the other games. How to draw was up to the development team.

Some games use physical controls, such as buttons, leaning sensors, a bicycle, and joysticks. The client provided the testing hardware. Aside from calibration, I was responsible for implementing the communication protocol between the game and other hardware. The protocol consisted of simple timing-based handshakes and JSON messages. The hardware didn't require overly high data throughput, so the overhead of JSON vs raw binary wasn't a big issue. JSON also allowed us to implement debug data without effort.

Whilst iterating on a lot of aspects in every game, the elements mostly made by me are:

  • A score system shared by most games to provide normalised scoring based on skill.
  • In light factory, I made the building mechanics and implemented the visuals.
  • In submarine, I implemented the targeting and projected aim icon on the glass dome in front of the player.
  • In the intro experience, I iterated with an artist on the drawing interaction's look and feel.
  • In balloon escape, I made the on-rails movement configuration (max side-to-side movement, speed in regions, checkpoint locations).