The Combat Model

By popular demand, this blog post will discuss the combat model we plan to use in Military Operations. The combat model of any wargame is one of the fundamental pillars of the game’s design and for MilOps this isn’t any different. In our case the combat model poses several challenges compared to other wargames due to the high level of detail present in the simulation. This blog post will describe how the model currently works and what plans there are for the future. While reading this blog, keep in mind that as development continues the model will most likely evolve further.

Projectile Weapons

In Military Operations you can see each and every soldier, vehicle and piece of equipment so the game cannot get away with implementing a very abstracted combat model with generic attack & defense values at a specific unit level and tweak those until the operational level “feels right”. Our approach, which should be familiar for those who have read earlier blog entries, is to start from reality and work from there. This means our combat model starts by looking at weapons that fire projectiles.

From a performance perspective the engine cannot track each and every bullet fired, its trajectory, everything it might interact with in its flight to the target and its impact on the target itself by implementing an extremely detailed physics-based models. Theoretically, as hardware gets more powerful, that could become a solution in the future but at the moment the hardware isn’t up to it at the scale MilOps simulates battles. During the initial design phase various approaches were discussed from very abstract to very detailed and after experimentation to determine the performance impact of certain methods the following approach was chosen:

The combat model tracks individual weapons for each entity in the simulation. It also tracks each round fired, but it does not simulate the exact trajectory of each round to see if it hit anything. Instead a more abstract approach is chosen to determine if a weapon firing at a specific target hits it, taking into account the following factors:

  • muzzle velocity of the firing weapon
  • distance to the target
  • size of the target
  • the target’s relative movement speed and direction
  • concealment and cover ratings of the terrain type the target occupies

The effects of a projectile on its target, however, are modeled in much more detail.

The projectiles in the combat model consist of 2 basic types: high explosive (HE) and kinetic/armor-piercing (AP).

High Explosive Ammunition

Regardless of an HE round hitting a target or not, on impact it explodes and its explosive energy is transformed into a heat and shock wave and most likely a hail of shrapnel. The closer to the origin of an explosion someone or something is, the greater the damage done will be.


In the combat model implementation, HE rounds have an explosive charge rated in grams of TNT equivalent. Using the Sadovsky formulas, we can determine the effect of the blast on humans and structures. This model does not account for shrapnel generated by shell fragmentation. Shell fragments were by far the most lethal effect of a HE detonation and their effect is something that will be added to the model, possibly based on the findings of wartime British research.

Kinetic/Armor Piercing Ammunition

If a kinetic round hits a target, it dissipates its kinetic energy into the target, causing damage. If the target is a human or animal, even small projectiles are capable of inflicting a lot of damage. An armored target, on the other hand, is only affected by kinetic rounds if they penetrate its armor. If not, they bounce off the armor and do no further damage. For kinetic weapons the current implementation uses an incorrect model allowing even armored targets to be destroyed by rifle bullets if enough of them hit the target.

Proper armor penetration calculations will be added to this model and there are a host of resources to be found online. One of the nicest is this interactive calculator where you can pit various WW2 anti-tank weapons against an array of tanks and see a nice graph plotted with the penetration probabilities depending on range and angle of impact.


Indirect Fire Weapons

Most weapons in the game will be direct-fire weapons, meaning they need to be aimed at the target and the projectile fired travels fast enough that ballistic effects are minor and the “lifetime” of the projectile is relatively short.

Weapons like artillery, mortars and bombs dropped from aircraft are indirect-fire weapons whose projectiles are launched and the simulation has to determine where they hit the ground/target. Projectiles fired from indirect weapons are modeled differently in that they experience drag from air resistance and the effects of gravity creating ballistic trajectories.

Implementation-wise, one of the problem with ballistic trajectories is that their paths cannot be determined by solving some mathematical equations. You actually have to run the simulation to see where the round will land. The gun’s elevation, the muzzle velocity and the shell’s drag coefficient will determine the place of impact and to make matters a little more complicated, howitzers can fire shells at different muzzle velocities, so sometimes there are multiple solutions to the problem of hitting a specific location.

Artillery crews in World War 2 did not have at their disposal a miniature super-computer, they used a more analogue method instead: a set of so-called “range tables” or “firing tables” where they could look up the elevation and amount of propellant charge required to lob the shell a certain distance away. To help fine-tune the end result a forward artillery observer would ideally be overseeing the target area and he would communicate the location of the impacts back to the battery commander so the fire could be adjusted.

As we don’t want the AI gun crews to randomly shoot until they “discover” the correct settings to hit a target area - hilarious as it might be to look at - the guns modeled in MilOps will need to have their own version of “firing tables”. Since the world of MilOps is virtual we can do this by “test-firing” the guns inside the simulation at various elevations and muzzle velocities and record the results into weapon-specific firing tables the AI gun crews can then use.

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