• Top down 3D game

  • 3 Months Part-Time (4h/day)

  • Created with our own Cobra engine

  • Group of 14 people

Main contributions

  • Graphics engine
  • VFX
  • Vertex painter
  • Engine back-end

I pair programmed a lot with Jonathan and we wrote the graphics engine together. I also worked on setting up our entity component system, our editor and various engine back-end features. 

This project was my first encounter with 3D programming and that was what I worked on for the most part. The graphics engine used Direct3D 11, had support for both deferred- and forward rendering, and used a complete PBR lighting model.

GPU Based Particle System

One fun graphics feature we developed was our GPU based particle system. It was based on the system written by Frank D Luna in his book Introduction to 3D Game Programming with DirectX 11, using the Geometry Shader and Stream-Out Buffer for updating particles. See the gallery below for some features and effects we created.

VFX Meshes with scrolling UV

Since we didn't have any Technical Artists, me and Jonathan was in charge of most the effects. We created a system for spawning meshes with scrolling UV coordinates, allowing for the creation of effects such as the one below.

Experimenting with the geometry shader

When we first found about the geometry shader, we were immediately impressed by it and the possibility of creating geometry on the GPU. We wanted to experiment with it to see what you could do with it and in the end, we ended up using for a variety of different features.

Click Indicator and Health bars

Both were created by simply expanding a point in world space to quads. The health bars were billboarded and the "click on ground" was oriented along the ground normal.

Number indicator

This just took the idea of expanding a point to a quad one step further, expanding a point to a number of quads, based on the number of digits in the damage/health to be shown.


  • Point light culling meshes

  • GPU particle system

Vertex Painter

I also created a vertex painting tool. This allowed for the creation of more varied environment such as the ones shown here. 

It worked by simply painting blend weights on to the vertices on the planes based on the distance from the brush. 

Skärmavbild 2021-04-10 kl. 13.54.53.png
Skärmavbild 2021-04-10 kl. 13.56.12.png


Here's a list of some additional things I implemented in this project:

  • Directional light shadows

  • Depth-based fog

  • Basic post-process effects (bloom, vignette)

  • Instanced rendering

  • Blurred outline effect using stencil masking 

  • Picking

  • Experience bar, boss health bar