Dataflow

Dataflow is a custom game engine made with a total of 7 programmers and 1 Visual artist, used to create the game displayed in the video on this page. The total development of the engine was 24 weeks, through which we encountered various topics and had to resolve multiple issues.

Group members: 7 programmers and 1 artist.
Platforms: Windows (Itch.io) and Nintendo switch (not published).
Span: February 2021 – June 2021
API/Engine: Custom - OpenGL, Switch API, GLFW, FMOD
Software/Tools: Blender, Houdini (exporting), Visual studio 2019, Perforce, Jira, Swarm, Jenkins.

My contributions as Graphics programmer

- Scene representation, using GLTF2.0
- Graphics API agnostic interface for abstraction purposes.
- PBR shading (diffuse only due to time constraints)
- Bloom
- Line renderer/debug rendering
- Art export pipeline for the visual artist.
- Profiling performance on the Nintendo switch, both on CPU and GPU (GPU using Renderdoc) and increasing the performance based on results.
- Solving graphics-related problems.

My responsibilities as scrum master

- Designing and integrating the Jira workflow, through time logging by the team, watching and managing team velocity and grooming the backlog with the product owner.
- Managing standups
- Planning sprint goals with the product owner, setting up sprints in a scrum environment and communicating this to the team through Jira.

Image context: The final render made in blender by the artist, our graphics effects, decisions and priorities throughout the final weeks of the project were based on this image.


Evaluation

The main takeaway from the project, was that if you use your resources effectively, you can get a lot done in the allotted time. During the last few weeks of this project, we went from a bad top-down 3D tower defense game to an orthonormal tower defense game, with polished (and optimized) bloom, height fog and particles!

This happened, because the art pipeline was working well, together with the level generation of the gameplay programmers. Through our communication with them, the other graphics programmer and I managed to come up with a way to load full environments and render those accordingly with minimal draw calls. This was important as the game was planned to run on the Nintendo Switch.

With the art pipeline in place, we asked our visual artist if he could deliver a final render of the quality of the game. Using Blender he created the image shown on this page, which we used to prioritize our decisions throughout the last weeks of the project. We had to cut some corners to make our game look similar to his render: Volumetric fog, became height fog and we also had to drop screen space reflections, as we were dealing some performance issues on the Nintendo Switch. Most performance issues were tackled in the end, leaving our uber-shader to be the main bottleneck, this in the end remained.

In the end I am incredibly proud with how the project turned out, I had an amazing time while working on the game.