State of the Game #210: Optimizations and AI

Welcome to the weekly State of the Game!

First up, I have been adding a man made platform to No Mans Pass, on the north east corner of the map. Here is a view from the multi-tiered platform:

I have been continuing the work on the level during the dev streams, but I do take breaks every now and then. One of the bigger things I focused on this week was actually optimizations! Using a LOD [level of detail] system on the MAV IK, along with some other improvements to the movement code, I was able to get noticeable frame rate gains of up to 50%!

These frame rate improvements are a very good start, but I still have a lot of optimization to do on the movement code [the most expensive operation right now] as well as the overall render of MAVs with draw calls.

Semi related to optimization, MAV now has loading screens! Well, kind of. The basic functionality is there, but I ran into an issue with Unity [the game engine I am using]. I cursed and shouted and made a big stink about it on stream, even so much as saying that I know that I am going to find out it’s not Unity’s fault, but at the time, I fully blamed Unity. Turns out, it’s not Unity’s fault! I am just, sort of, dumb. Here is a handy break down of what I thought happened when a level was loaded:

[Unity level loads all static assets] ==== [ MAV system loads and spawns all dynamic assets]

I was able to create a nice background loading process for the MAV section, but the Unity system still hung the game up. After LOTS of frustrated Googling and playing around with code, I was able to discover that my understanding of the load process was wrong. It actually looks like this:

[Unity loads level] ====> [Unity activates all level objects (calls Awake())] ====>[MAV System]

The activation stage was actually where the game would hang! This is actually good news, as Awake only gets called on enabled objects, so I can create all my levels with everything disabled, then create a system to enable all the objects in the background!


  • Fully proper load screens!
  • The game won’t hang and make it seem like a crash
  • Load screens can be fully animated


  • Load times will likely go up significantly [likely 5-10X]
  • Not a great workflow for development

Overall I do think the pros win here, as the amount of ‘jankiness’ that game hangs cause is unacceptable. I also feel like people are better having a 30 second load time with proper feedback vs the game freezing for 5 seconds. Let me know how you feel!

This is already quite the list but wait, there is more!

The AI aiming system is getting a complete overhaul, in large part to Fenix’s forum thread. I am currently working on making it use angle fire weapons correctly [howitzers and rockets], but it will also be getting an overhaul on target selection, aiming for individual parts, coordinating with teammates fire, firing in weapon groups, and increasing it’s overall tracking accuracy.

Well, that is all for this week! See you in the development stream tonight!

Comments 2

  1. Nice work here Cyber. The load screens will definitely add depth to the feel of the game and that it is working instead of hanging 🙂

    A big positive +1 from me.

Leave a Reply