Unit Hierarchy

How do you control a unit of tens of thousands of men? If you look at contemporary RTS games the answer sometimes is “with groups”. Some of those groups can be created by the player like in the game Ashes of the Singularity. There you can create virtual “armies” and even direct production to specific armies. In other games the groups have a fixed composition and are part of a “menu” of units you can build or recruit. Rome: Total War 2 is a good example of that approach and they manage to have some of the largest digital armies in PC gaming. They gave a nice talk about their approach to siege battle AI in this GDC talk:

When discussing a design approach, we usually start with asking ourselves “how did it work in reality?”. In this case the answer is “through a hierarchical command structure” where large units are composed of smaller units which in turn are composed of even smaller units and each of them has a certain role to play. Take the scenario where a Division is ordered to capture a village: in the physical world an order would be sent to the Division’s HQ. Its commander and his staff would then conceive a plan to accomplish this mission and then send orders to the Division’s other units. As part of this process, the HQ itself might move to a location where it can more effectively coordinate the various actions.

In MilOps we have recreated this unit hierarchy using historical data from various sources. In our model we will have several entities in play:

  • a “division” unit entity, this represents the division as a whole. The division will receive orders from the Corps or Army it belongs to.
  • a set of unit entities for all parts of the division, for example the German 7th Panzer Division in May 1940 consisted of:
    • a divisional headquarters
    • a panzer regiment
    • a motorized infantry brigade
    • a motorized artillery regiment
    • several battalions for specific tasks such as:
      • reconnaissance
      • signals
      • anti-tank
      • supply
      • engineers

Each of these units is then again composed of other units until we get to the “physical” level where units are composed of personnel/vehicles/weapon systems. The following video illustrates this hierarchy as we zoom into a Division’s area and see how each subordinate level comes into view: Regiment, Battalion, Company and Platoon.

Every one of these entities, both physical as well as unit entities, have an AI running. For physical entities this AI represents the individual itself. For units, the AI represents a unit commander’s “view” of the unit as a whole. So while the divisional commander’s AI will take care of him reacting to enemies in his direct surroundings, the division unit’s AI will represent how the command staff feels the division is doing and how it should react to being attacked by 2 enemy divisions for example.

This structure allows us to have all the fidelity we need to accurately represent historical orders of battle such as those found on Dr. Leo Niehorsters excellent website. The unit hierarchy functions as an information network through which orders flow from superior to subordinate units and information reports flow upwards. How this information flow is modeled in MilOps will be the topic of a future blog entry.

Comments and reactions to this blog entry can be made on our forum.