Welcome to Project Seven!
Your Mission: Escape.
Use your rail gun to defeat the enemies as you wander around the different test chambers on your way to freedom.
- 3D first-person shooter.
- 10 weeks, half-time.
- Made with our own made engine using DirectX 11 for rendering.
- C++ and Lua
- Screen Space Decals – We wanted to be able to place some sort of decals of bullet holes on any kinds of surfaces. Screen Space Decals looked like a very promising way to solve our problem. But instead of directly modifying the GBuffer by rendering the decals on top, we put the decals into our Clustered Shading pipeline, similar to how the id Tech 6 engine does it. With this, we can also easier put decals on transparent meshes.
It was initially planned to use the decals for bullet holes and story-scribbles throughout the game. To our surprise, the decals were very cheap! The artists took advantage of this and used the decals to paint the walls of the entire game.
- Beam Rendering – Sprite between two points that is always facing the camera. Used for the player weapon and the enemy tracing lines and weapon.
- GPU Particle System – Moved the particles from the CPU side to the GPU. We also started to use Unity as our particle editor. With Unity having a lot oft of their variables as curves we also wanted this in our system. It was made by saving the curves down into a 1D texture array and use the sampler in the shaders to easy to interpolate the values.
- Automatic Texture Atlas Generation – Decals, beams, and particles all use texture atlases for their textures. The reason is to minimize state changes when rendering. Also so the decals and particles can be rendered with a single draw call. To speed up the development I made it so the game automatically takes the individual textures and builds an atlas so the artist doesn’t need to pack them.
- Stencil Rendering for the player model not clipping into walls – We did not want the player hands and gun to clip into walls and other objects. It was done by using the stencil buffer in DirectX.
- Animation States on Player Model – Blending and animation states on the player model.