Spite: Curse Of Archibald

Details:
  • A 3D game inspired by Diablo 3.
  • 14-week development (20h/week) with a team of 5 programmers, 3 level designers and 5 3D artists.
  • Game is made in our own game engine made from a base of the schools in-house game engine.
  • Unity is used as a level editor.
My contributions:
  • Unity JSON scene exporter.
  • UI pipeline.
  • Water and enemy outline shader.
  • Thread loading of models during splash screen.
  • Buggfixing texture importing and shaders in the native game engine.
Unity JSON scene exporter

During the project we used Unity as a level editor where the level designers placed out the models in the scene. The Unity scene gets converted into JSON data and all models gets exported to the our own engine's directory.

The JSON exporter works by recursively looping trough all the GameObjects and their children and there components.

The programmers were also able to add a component called "ClassContainer", allowing them to export their own variables to the JSON file. An intuitive dropdown menu enabled them to easily change variable types, made possible through a custom editor.

In our engine, we load in the values from the JSON file and create a component that gets added to our ECS.

Water shader and enemy outline shader

For this project, I wrote custom High Level Shader Language (HLSL) shaders. To create the water shader, I used two normal textures that I animated by sliding them across each other over time.

To make the water appear more realistic where it meets the rock, I calculated the depth between the water pixel and the depth buffer. The closer the distance, the more transparent and light blue the water becomes.

The outline shader was created by having a second larger model of the enemy with inverted normals so the inside of the model only was visible.