top of page

Spite: Crowstorm

Project 6

Summoned by a ritual, you must destroy the hordes infesting the swamp. Slash, screech, and call upon crow storms to lay waste to your enemies

Contribution

In Spite: Crowstorm we had to develop an engine simultaneously as we created a game, this meant that for most of the project I was working on engine and rendering related tasks. At the start of the project I spent most time implementing the basics of what a graphics engine requires, such as shadow mapping, a PBR pipeline and UI rendering, but I also got the opportunity to touch on some interesting stuff towards the end such as automatic LoD generation and GPU-sided frustum culling using DirectCompute and indirect rendering. Towards the very tail-end of the project I picked up more and more gameplay related tasks, such as having visible health-bars, damage numbers and blood vignettes.

UI rendering, different rects aligning and resizing in different ways

Debug rendering, showcasing lines and box outlines

Post-process testing, created for our technical artists to try their fullscreen shaders with, similar tools were created for mesh-based shaders and UI shaders, one of which, the giant red health ball, you can see in the video too. The video also showcases runtime compilation of the shaders, which also saved a lot of time.

Automatic LoD generation, these different levels are generated at the start of the program and then interchanged in runtime depending on camera distance. This saved some time for our graphical artists, as they no longer had to create LoDs manually.

As mentioned at the start, I also got to implement indirect rendering, which just means every drawcall is generated through a compute shader, which gives us perfect instancing and with the benefit of being able to deny instance emission in the compute shader, which allows for GPU-powered culling. I sadly don't have any videos showcasing this but after implementing this we had some issues with the fact that my stream compaction shader, which is what I do as the very last step, only supported a maximum of 2048 instances, something we managed to work around for this project, but that we encountered massive issues with in project seven. The page on project seven therefor goes more into detail how the culling shaders work and how I fixed the instance count limitation for stream compaction.

Team

Safety First

Programming

Niklas Fredriksson

Simon Igelström

Zoe Thysell

Erik Ljungman

Semi Asani

Joakim Larsson

Neo Nemeth

Animation

Jack Thell Malmberg

Elias Runelid

Tanya Bengtsson

Level Design

Mina Mirhosseini

Tilde Persson

Christoffer Carlsvärd

Graphics

Victor Ek

Mirjam Hildahl

Philip Tingberg

Daniel Gryningstjerna

William Holster

Technical Artist

Frode Ödehn

Malte Hedenström

Sara Ekstam

bottom of page