An indie open-world action game where you play as a powerful superhuman and fight against supervillains.
Combat needs to be smooth, satisfying and fun while still being challenging at times. The game needs to be optimized while showing a large number of buildings, pedestrians and vehicles during gameplay.
The combat system allows player to quickly and easily navigate from one enemy to another after each strike. To make the fight winnable for player, the system also controls the maximum number of enemies attacking player at once The city is big with 1000+ buildings. Most buildings are optimized using low-poly shapes and reused textures+materials. Vehicles, trees and street objects are optimized using traditional LOD.
Pedestrian optimization is more complex because they are skinned-meshes, and there can be a lot of them. We implemented a pedestrian system similar to Assassin Creed Unity* but simplified, using 3 levels of detail and behaviours for each pedestrian + object pooling. Puppet pedestrian will be swapped with an autonomous pedestrian when player comes close to it, and impostor pedestrian is used when the distance is further than 200 meters
We were able to fill the streets with a lot of cars, pedestrians and props while still maintaining stable FPS even during missions.