Our 7th project at The Game Assembly was a first-person shooting game. I worked with the implementation of PhysX, shadows, the enemies, and had to take over the UI when we lost one of our programmers halfway through the project.
I linked PhysX to our solution and created a wrapper around PhysX that suited our needs for the project. The wrapper was then used to create a new physics system in our engine, which replaced my old one. This new system had the following features:
I first added spotlights to our engine and then implemented shadows in them. Point lights were a bit trickier, since they cast shadows in all directions, but I eventually got that to work as well. They were both implemented using shadow mapping.
I was responsible for coding the enemies for this project, which included the animation logic and the behaviors. We had two types of enemies, a humanoid mutant with big claws, and a crab-like crawling enemy. The mutant would detect the player using a raycast and then find a path through the navmesh.
I implemented a system for creating menus using the component system by loading a json file containing details about the layout. This was then used to create each separate menu screen. I also implemented the loading screen and made use of our engine's support for threaded loading.