This month is all about optimization. I'm diving deep into pooling and batching here. Currently the iOS version is running great on every device after iPhone 5s, but the Android version is riddled with spikes and low performance problems. My goal is to bring the Android version to par with the iOS. To do this I've done the following:
Optimized object and module spawningModules are parts of the game world that spawn as you go. I had a terrible spike problem when spawing modules. The modules can have 200+ simple and complex objects that spiked hard when spawning all at once. For this I implemented a post processing pipeline for the modules that does the following:
For each movable object I replace that object with a placeholder that spawns the real object when the player gets near, and despawns it when the player is far away. I couldn't pool all the movable objects because it's hard to return some into their initial state after being in the game world. These are pedestrians with ragdolls, breakable objects, props, etc.
I did implement pooling on what's left of the modules after filtering movable objects, and also I pooled the particle effects.
Atlased modelsI'm still in the process of doing this, and I'm atlasing textures and meshes into as little materials as possible. This is just step one for the following phase: static batching. I indend to (as a part of the post process mentioned above) merge meshes that share the same material into a single mesh, bringing down my batch count considerable in theory.
Although the game is nearly feature complete, I'm deciding to postpone the launch until February 2017. Two reasons for this:
1. To avoid the Christmas jungle on the app stores
2. I'm really not in a hurry to release the game. I'd rather use the time to build up a following, talk to publishers and polish the game some more
That said, I'm going to start giving out new demo's as soon as I have the feature complete gameplay. To get notified, either reply here or message me!