G.O.S.T

Genre: Narrative Puzzler

Production time: 4 weeks, 50%

Team size: 18

Engine: Sås Engine (Custom engine)


Main Contributions

For this project I implemented pixel picking, a debug drawer, and I integrated ImGui with our engine. A lot of time was also spent on finding a way to convert from Unreal's transforms to our own. I also implemented shadow for spotlights and bloom, but these weren't used in the final project.


Spotlight Shadows


This game took place entirely indoors and as such we wanted more interesting lighting. Since we already had directional lights this was fairly easy to implement. I only needed to replace the projection matrix and add a world position. In the end this wasn't performant enough and we had to scrap it. Perhaps it could've assisted us had we decided to somehow bake the lights, but given the time constraints we didn't even consider implementing this.


Point Light Shadows


This was a bit more difficult that spotlights. You essentially need to simulate six cameras in a Geometry shader and output the result to a cube map rather than to a regular texture. The sampling process is also a bit different since it's on a cube map.


Pixel Picking


A method for objects selecting objects with a cursor. When each object is rendered, it also saves its ID to a texture. This texture can then be sampled at the cursor position in order to see which object the user is hovering over. Given some more time I would've liked to look more into how we read pixels from a map, as the technique we're using isn't very performant.

(The image shows the generated ID texture.)