Blackout is our First Person Game made in 10 weeks halftime at The Game Assembly in our engine Memory Leek. In Blackout you play as security guard at containment facility for supernatural entities. During this shift one of these entities escapes and you must run for your life.
We wanted Blackout to be dark and atmospheric so I implemented spotlights with shadows. I did this by giving each pointlight a camera to project a shadow. I later created a shadow render system that rendered from each light view in only depth. This depth texture is later sampled in the spotlight shader for the deferred renderer. By using the camera transform and projection matrix the pixels world position can be compared to the depth texture. If the pixels depth happens to be higher the light isn’t applied and this causes a shadow.
I also implemented AO, this was done somewhat late in the project so I took what we had to do it. This means I added the AO calculation in the deferred environment light shader instead of in a separate shader pass. The calculation I used was SSAO which darkens a pixel if some samples in a hemisphere in front of the pixels normal are occluding the pixel.
In this game I built upon my animation implementation from Spite to get bone transform. We used this to attach the player camera to a bone that our animators animated to add headbobbing.
For Blackout I implemented PhysX. This however took much longer than anticipated beacuse it turned out that our engine and Maya to game pipeline had some problems with transforms and rotation. Among other things our engine used a XYZ rotation order unlike Mayas ZYX. Debbuging and ironing out all the minor errors that built up took much of me time. When I got PhysX up and running we used it on our player to and the environment. I used raycasting from PhysX do have our enemy scale to environment.
I also created nodes to control player and camera movement so that our designers could create cutscenes ingame.