Created a kart racer for a bespoke handheld platform that uses a Mode7 rendering system.
I had to:
Create a game that runs at 60FPS on both windows and the platform.
Optimise rendering to run efficently on weaker hardware.
Conduct performance checks to see where the hardware stuggled
Use and grow familiar with build tools for porting.
To port, the C++ code and assets needed to be uploaded to docker through a Linux virtual machine. The built game would then be uploaded to the console and ran using the devkits commands. I also had learn why builds would fail ,usually due to memory , or run differently to the windows counter part.
Mode7 rendering works by sampling the given texture in a specific way to give it perspective. Variables like the position of the camera, the height of the camera, and the distance from the horizon can be used to give the illusion of movement and perspective. This rendering technique is similar to those seen in the original Mario Kart and F-Zero.
Because Mode7 is a per pixel process so I decreased the amount of the screen that would use the mode7 renderer. To cover this up I set the background to a sky colour which helps cover up the cut corner.
When first implementing the renderer it was relatively slow on both PCs and the console so after some analysis I switched from a high level solution to a lower level solution that involved copying colour data from the texture manually using pointer arithmetic. This approach made the 5 FPS rendering jump to 60.
Sandboxed levels are made by inheriting a base class that has all systems needed for level creation.
Component pattern use to divide gameobject behaviour into components to allow for logic reuse.
Update loop pattern handles all per frame behaviour and input detection