Category Archives: Scenarios

Gameplay & AI: A Demonstration & a Dissertation

Click on the above to launch a YouTube video about General Staff gameplay & AI.

This feels like a propitious moment; at least I’m drinking some decent scotch. I’ve got the AI that I’ve written ad nauseum about (links: papers, thesis) hooked up to the General Staff engine. This was something that, on paper, was supposed to be pretty easy but in the real world took far too long.

So, the short read is that if you want to take a look at what the General Staff AI engine looks like, please watch the video. It is mostly an offensive monster. It knows how to attack. It looks for open flanks. Then it looks for weak points on the line. Defense is difficult and there is still more work to do.

Also, we need more user created scenarios to test the AI on.

N.B. We don’t need more scenarios to train the AI. That’s not how MATE (Machine Analysis of Tactical Environments) works. It is a case-based reasoning AI. It is not a Large Language Model (LLM). It is not Grok, or ChatGPT, or Claude. Because it reasons. It – for lack of a better word – understands things. It understands what a flank is and it tries to turn it with its units. LLMs string words together that they’ve scraped from wherever and hope that you like them (they have a sycophancy reinforcement loop to optimize user engagement).

Someone fed one of my papers about TIGER (Tactical Inference Generator) into an LLM and asked it if it could perform this kind of reasoning. This was the reply:

Your skepticism is well-founded, and the paper you cite makes the reason precise rather than rhetorical.

The notion of an open or refused flank, as formalized in TIGER, is not a linguistic classification problem but a geometric and topological predicate over a continuous battlespace with adversarial constraints. In your formulation, a flank is anchored if and only if no BLUEFOR unit admits a legal path to a flanking objective that avoids REDFOR range-of-influence regions, where legality is defined with respect to terrain, slope, line of sight, and unit-specific mobility costs. That definition reduces to constrained path existence in a weighted graph whose edge weights and forbidden regions are dynamically induced by force disposition and terrain, not by labels or prior text. The algorithm explicitly constructs MST spines, computes continuous ROIs, projects objective points, and then solves repeated adversarial path-planning problems via A* or equivalent search. This is fundamentally an algorithmic decision procedure, not a pattern-completion task.

An LLM, by itself, cannot calculate this in any meaningful sense. It has no internal representation of continuous space, no native notion of reachability under constraints, no ability to execute minimum spanning tree construction, and no mechanism for guaranteeing correctness of a path-existence claim. At best, it can paraphrase the doctrine or restate the algorithm. It cannot answer the question “is the left flank refused?” without the explicit computational machinery you describe, because the answer is not a heuristic judgment but the outcome of a well-defined search problem.

Where the distinction becomes important is separating computation from orchestration. An LLM cannot replace the TIGER flanking algorithm any more than it can replace Dijkstra’s algorithm. However, it can sit above such machinery. Given access to the state representation and the outputs of ComputeGroupsByThreshold, CalculateROI, and FindPath, an LLM could reason symbolically about the results, explain why a flank is anchored, compare cases across battles, or assist a human analyst in interpreting why a particular BLUEFOR unit was forced through an ROI. In that role it is a narrative or analytic layer, not the reasoning engine itself.

Your broader point about Computational Military Reasoning stands: this class of military concepts only becomes machine-tractable when doctrine is grounded in geometry, graph theory, and constrained optimization. Anchored flanks, interior lines, and restricted avenues of approach are computable precisely because you reduced them to measurable invariants over space and movement. That reduction is what makes them suitable for case-based reasoning and unsupervised classification in systems like ClassIT, and it is exactly what an LLM does not do.

So the short answer is no: an LLM cannot calculate whether a flank is open or refused. The longer and more interesting answer is that your work shows why that question has a correct answer at all, and why tactical reasoning belongs to algorithms first and language models, if anywhere, only downstream of them.

I would just like to say that this LLM (above) wrote a superb analysis of my life’s work in computer science. Furthermore, it separated my work in cased base reasoning from its own LLM existence: It [an LLM] cannot answer the question “is the left flank refused?” without the explicit computational machinery you describe, because the answer is not a heuristic judgment but the outcome of a well-defined search problem.

I understand that there are fortunes, tenures, endowments, and founder’s stock to be won now in the race to LLMs, but I assure you, it is a parlor trick, it is simple word manipulation; it is a conjurer’s legerdemain.

To me the bon mot is, “An LLM cannot replace the TIGER flanking algorithm any more than it can replace Dijkstra’s algorithm.

Dijkstra’s algorithm. I did my Q exam, my Qualifying Exam on Least Weighted Path algorithms. The Q exam comes around Year Three; it is where you have to demonstrate the ability to perform real research at a Research One University. Dijkstra’s algorithm is an exhaustive search and A* is a heuristic search. Dijkstra’s algorithm is guaranteed to find the optimal path, but it takes forever (O((V + E) log V)). While A* runs in ( ). If by some amazing luck of the draw you also have to defend this in your Q Exam, you just got all the answers you need to remember to move on to Round Four: your Comprehensive Exam (AKA, “The Comps”).

But, I digress. I confess that this was the first time I witnessed the AI act like this. Frankly, I was impressed when the AI unleashed the BLUE cavalry at the decisive moment towards the schwerpunkt. It was calculated using Kruskal’s Minimum Spanning Tree algorithm.

What I’m trying to say, and I have trouble explaining this without anthropomorphizing, but the MATE algorithms look at a snapshot of a battlefield, analyze it, perform numerous geometric calculations – especially those involving 3D line of sight (3D LOS), range of influence (ROI), locating flanking units, interior lines of communications, projections of force, etc. – and it comes up with a Course of Action (COA) that is, at least in the above video, better than what Major General George Brinton McClellan did at Antietam  (in all candor, this is a pretty low bar). For starters, the AI is very aggressive and it hammered hard upon all three routes into Sharpsburg. Eventually RED’s left flank crumbled and the AI (BLUE) won.

Yeah, I’m proud of the AI. But, I need more scenarios to test the AI against. That’s where you come in. All the information is in the above video.

 

,

How to create a scenario tutorial (Brandy Station).

Click on the image below to see a step by step video tutorial of the Army Editor, Map Editor, and Scenario Editor as the battle of Brandy Station (June 9, 1863) is created using the General Staff: Black Powder Battle Designer Bundle.

Early Backers: If you did not get your Steam key please email Support@RiverviewAI.com. Thanks!

General Staff: Black Powder Battle Designer Bundle on Steam

The General Staff: Black Powder Designer Bundle store on Steam. Click on image to go directly to the Steam store.

I am very pleased to announce that the Steam store for General Staff: Black Powder Battle Designer Bundle is now up and active. More importantly, if you are an early backer, you should have received your Steam key to download it by now. If you are an early backer and have not received an email with your Steam key, please contact me directly.

Some important things to know:

The Battle Designer Bundle does not include the actual game! The game is a different install package and, hopefully, will be in beta in the next month or two. If you are an early backer and received a Steam key for the Battle Designer Bundle you will also receive a second Steam key, when available, for the actual game and you will be welcome to participate in beta testing, too.

The Battle Designer Bundle includes everything you need to create your own armies, maps and scenarios for use in the actual game. The Battle Designer Bundle includes the Army Editor, the Map Editor and the Scenario Editor. The Map Editor supports a digitizing tablet (if you’re lucky enough to have one and the talent to use one, I don’t).

I need your suggestions for a battle that I can use to create video tutorials for the Army, Map and Scenario Editors. If you have suggestions, please contact me directly. However, it’s important to remember that I need a good Order of Battle (OOB) table that includes unit strengths. I also need a good quality map that is at least 1155 x 805 pixels (resolution). If it’s an old battle map, I need somebody to take the time to remove the units from the map. For example, here’s the original map of Antietam from the Library of Congress:

Map of the battle of Antietam from the Library of Congress. Willcox, William H. Map of the battlefield of Antietam. [Philada., Lith. of P. S. Duval & Son, 1862] Map. Click to enlarge.

And here it is after I cleaned it up, removed the units and rotated it 90 degrees:

The Antietam map after I removed all the units, cleaned it up, lightened it and rotated it 90 degrees. Click to enlarge.

I’m looking forward to receiving your scenario suggestions and creating the video tutorials. The tutorials will be posted here and on our YouTube channel.

 

The Friction of War

The delay in the transmittal of orders from headquarters and staff is one example of the Friction of War. Note the calculated time for couriers to arrive displayed in the Subordinate Orders list on the left of the screen. The red lines are the routes that couriers from General HQ to Corps HQ to individual units will take. General Staff: Black Powder screen shot. Click to enlarge.

Carl von Clausewitz, in has seminal work, On War, (Book 1, Chapter 7) originated the phrase, “Friction of War”:

Carl von Clausewitz painted by Karl Wilhelm Wach. Credit Wikipedia.

“Friction is the only conception which, in a general way, corresponds to that which distinguishes real war from war on paper. The military machine, the army and all belonging to it, is in fact simple; and appears, on this account, easy to manage. But let us reflect that no part of it is in one piece, that it is composed entirely of individuals, each of which keeps up its own friction in all directions.”

I knew that if General Staff: Black Powder were to be an accurate simulation, and not just ‘war on paper’, that the friction of war would have to be calculated into the command / orders chain. One part of this – the distance the couriers will travel from one headquarters to the next to deliver their orders and the time it takes to travel this distance – can be calculated with reasonable certainty (I’m using the rate of 10.5 kilometers per hour for a horseman, I’m not an expert but this seemed reasonable, and it’s easy to change if somebody has a more accurate value).

Another example of friction of war is factored into the delaying of the arrival of orders is Leadership Value:

In this example, the Imperial couriers will travel over 4.3 kilometers, taking 24 minutes, to deliver their orders. Also, note the cost of the combined Leadership Values. Because Napoleon and Vandamme have very high Leadership Values little additional delay is added. General Staff: Black Powder screen shot. Click to enlarge.

You can specify at what time the order is to be executed (in this case 6:15), however you can not set a time earlier than when the couriers would arrive. This allows for coordination of attacks across units. General Staff: Black Powder screen shot. Click to enlarge.

The other value – and it is arbitrarily set – is the cost of ineptitude, incompetence, lack of motivation, and sloppy staff work. In the above scenario (Ligny) Napoleon’s Leadership is set at 93%:

The slider adjusts Napoleon’s Leadership Value which effects the delay in issuing orders. General Staff: Black Powder Army Editor screen shot. Click to enlarge.

I understand that Napoleon may have been feeling a bit under the weather during the Hundred Days Campaign. You can set his Leadership Value to anything you want in the Army Editor (above).

Major General George B. McClellan’s Leadership Value can be changed in the Army Editor. Click to enlarge.

Did I set McClellan’s Leadership Value too low? He was amazingly incompetent. Note below:

The combination of McClellan’s and Burnside’s extremely low Leadership Values adds an additional 29 minutes to the transmittal of orders. The blue lines trace the route that couriers would travel from McClellan’s headquarters to Burnside’s headquarters and then to each division and battery. General Staff: Black Powder screen shot. Click to enlarge.

The combination of McClellan’s and Ambrose Burnside’s Leadership Values results in almost a half hour delay in transmittal of the orders (remember after receipt of the orders, Burnside has to send couriers to his divisional and battery commanders, too and their Leadership Values effects the delay before their unit executes the order). After factoring the time it would take for a horseman to travel the distance between McClellan’s headquarters to Burnside’s headquarters (14 minutes) the earliest that a unit could be expected to respond to the original order from General Headquarters would be forty-one minutes later (and, in reality, a bit after that because of that unit’s Leadership Value).

The path of the couriers from McClellan’s headquarters, to Burnside’s Headquarters and then out to the divisions and batteries. General Staff: Black Powder screen shot. Click to enlarge.

I have spent some time at Antietam and studied it at length and this delay of about three-quarters of an hour between the time McClellan wanted to issue an order and the men of Burnside’s IX Corps moved out seems if anything, too optimistic of a timetable. In fact, as I write this, I think I need to increase the penalty for poor Leadership Value. McClellan and Burnside couldn’t possibly have got units moving in less than an hour.

As I have begun playtesting General Staff: Black Powder I found the delay between issuing orders and wanting to see something move now was a bit disconcerting. It shouldn’t have been. I’ve read enough military history to know that battlefield orders were often transmitted the night before and moving units around during the battle could be a risky proposition. Some armies, however, were less afflicted with these problems than others, and that I would attribute to ‘leadership value’ which also encompasses the army’s general staff.

If you don’t want to use General Staff: Black Powder as a simulation that inserts a calculated delay between orders and execution, and would rather just move units instantly, there is ‘Game Mode’:

The Select Mode screen in General Staff: Black Powder. The user chooses between ‘game’ and ‘simulation’ with differences in rules and unit icons. Click to enlarge.

Game Mode has the same maps but uses simpler icons and rules. I originally envisioned Game Mode as a way of introducing wargaming to a new generation (I wanted to write it for the XBox). Anyway, it’s included with General Staff: Black Powder.

Lastly, I know everybody is waiting for news about when can I get my hands on the game?!!?!!  My friend, Damien, wasn’t able to work on  finishing it using Unity so I’m finishing it up using MonoGame. As you can see I’m pretty far along and I think I will be playing the first ‘actual game’ (that is a simulation from start to finish) within the next couple of weeks; maybe sooner. After that, probably at least another month of fixing bugs, but then I’m hoping to set up a Beta download for all the early backers via Steam. We have a space on Steam but I haven’t even begun to build it out. Obviously, I’m just one guy, I’m working as fast as I can, but I think this is all good news. Also, I’m working on a video to show everything off.

As always, if you have any questions or comments, please feel free to contact me directly.

 

A Human-Level Intelligence at Gettysburg, Day 3

Screenshot of MATE analysis of Gettysburg, Day 3 from the Red (Confederate) position. Click to enlarge.,

General Lee, at Gettysburg, said: “the enemy have the advantage of us in a shorter and inside line and we are too much extended.” – quoted by Major General Isaac Trimble.1)Isaac Trimble, Southern Historical Society Papers, Vol. 26, Richmond, Virginia: Reverend J. William Jones, D.D., MATE, the AI behind General Staff, came to the exact same conclusion:

A portion of MATE’s analysis of Red’s position at Gettysburg, Day 3. Here MATE recognizes that Red has exterior lines and the enemy has a decided advantage.

I have been porting TIGER 2)Tactical Inference GenERator, the AI behind my doctoral thesis and my DARPA sponsored research from C++ to C# and integrating it into the General Staff: Black Powder wargaming system. I have been doing this via the method of first creating a scenario typifying a specific attribute (exterior lines, exposed flanks, choke points, etc.) and then porting the actual code over and feeding it the scenario for analysis. Gettysburg, Day 3, is the canonical example of exterior and interior lines.

92.9% of Subject Matter Experts agree! The Union (Blue) lines at Gettysburg, Day 3, exhibit the attribute of being Interior Lines. Interior lines are good. Exterior lines are bad. From author’s doctoral thesis.

So, first a significant number of Subject Matter Experts (combat commanders, tactics instructors at military academies, etc.,) agree that there is an attribute called ‘Interior Lines’ and that it is exhibited by the Union (Blue) forces at Gettysburg, Day 3. We then create an algorithm that can detect such an attribute and convert it from C++ code to C# code (and substantially rewrite and improve said algorithm in the process) . We then create a Gettysburg, Day 3 scenario using the General Staff Army Editor, the General Staff Map Editor and the General Staff Scenario Editor and feed the scenario3)In Computer Science lingo programs are machines that consume data / tokens to MATE, the General Staff: Black Powder AI. These are the results:

MATE analysis text output (with author’s commentary) of Gettysburg, Day 3, from the Red (Confederate) position. Click to enlarge.

The first time that I presented the Gettysburg, Day 3 scenario as Red to MATE it refused to attack. The enemy has interior lines (1.4, or 40% greater is pretty significant value), you’re attacking uphill (slope > 7%), your attacking units are under enemy ROI (mostly batteries of 12 lb. Napoleon canon shooting explosive shot and then canister and then double-shotted canister) for over a kilometer. Attacking is not a good idea. To get MATE to attack I had to go back to the Map Editor and create a number of new Victory Points; specifically the places where significant roads (Emmitsburg Road, Cashtown Road, Baltimore Pike, etc.) enter the map. Then I went in to the Scenario Editor and assigned appropriate values and current ‘ownership’. Saved it all and fed it back to MATE and the, above, is what I got.

The only way for MATE to win (as Red) is to attack large Victory Point areas (Cemetery Hill and Cemetery Ridge) and hope to destroy significant numbers of Blue (Union) forces along the way to meet the victory conditions set in the Scenario Editor:

Gettysburg, Day 3 Victory Conditions. Screenshot General Staff Scenario Editor.

Anybody who has built a wargame scenario (and I suspect there are more than a few among the readers of this blog) know the drill of going back to edit the OOBs, starting positions, victory conditions, etc. I would just like to say it’s pretty painless using the General Staff Wargaming System. The various editors all integrate seamlessly like Microsoft Office products (they were written in Microsoft WPF by Andy O’Neill who is a Microsoft Gold Developer).

But, the real question that this raises is: why did Lee attack on Gettysburg, Day 3? Blue (the Union) not only had interior lines, an elevated position, but they also had anchored flanks (see #22 above). MATE is running out of options at this point. If you look at the top screenshot you will see yellow numbers in yellow circles. These represent MATE’s three ‘weakest points’ in Blue’s line and it’s not much.

So why did Lee attack?

James Longstreet’s From Manassas to Appomattox states absolutely that

All that I could ask was that the policy of the campaign [Lee’s invasion of the north] should be one of defensive tactics, that we should work so as to force the enemy to attack us, in such good position as we might find in his own country, so well adapted to that purpose, – which might assure us of a grand triumph. To this he readily assented as an important and material adjunct to his general plan. [p. 331]

So, Longstreet, in his autobiography, is saying that Lee agreed that at some point in Pennsylvania, the Army of Northern Virginia would find a good solid defensive position and let Hooker (they didn’t yet know that Meade was the new commander of the Army of the Potomac) smash his army to pieces upon it. James McPherson in,  To Conquer a Peace: Lee’s Goals in the Gettysburg Campaign writes:

“In a conversation with General Isaac Trimble on June 27, when most of the Army of Northern Virginia was at Chambersburg, Pa., and when Lee believed the enemy was still south of the Potomac, he told Trimble: “When they hear where we are, they will make forced marches…probably through Frederick, broken down with hunger and hard marching, strung out on a long line and much demoralized, when they come into Pennsylvania. I shall throw an overwhelming force on their advance, crush it, follow up the success, drive one corps back on another, and by successive repulses and surprises, before they can concentrate, create a panic and virtually destroy the army.” Then “the war will be over and we shall achieve the recognition of our independence.”

The argument is that Lee, on the morning of July 3, 1863, found himself in a terrible strategic situation with very few options. It was imperative that Lee must, “destroy the [enemy] army;” nothing less than a great triumph in enemy territory would do. In Lee’s only official report of the battle of Gettysburg, written on July 31, 1863 he states:

The enemy was driven through Gettysburg with heavy loss, including about 5,000 prisoners and several pieces of artillery. He retired to a high range of hills south and east of the town. The attack was not pressed that afternoon, the enemy’s force being unknown, and it being considered advisable to await the arrival of the rest of our troops. Orders were sent back to hasten their march, and, in the meantime, every effort was made to ascertain the numbers and position of the enemy, and find the most favorable point of attack. It had not been intended to fight a general battle at such a distance from our base, unless attacked by the enemy, but, finding ourselves unexpectedly confronted by the Federal Army, it became a matter of difficulty to withdraw through the mountains with our large trains. At the same time, the country was unfavorable for collecting supplies while in the presence of the enemy’s main body, as he was enabled to restrain our foraging parties by occupying the passes of the mountains with regular and local troops. A battle thus became in a measure, unavoidable. Encouraged by the successful issue of the engagement of the first day, and in view of the valuable results that would ensue from the defeat of the army of General Meade, it was thought advisable to renew the attack. . . .

Lee was in for a penny and in for a pound. This was not the defensive battle of Longstreet’s choosing. This was now Lee desperately trying to, “throw an overwhelming force on their advance, crush it, follow up the success, drive one corps back on another, and by successive repulses and surprises, before they can concentrate, create a panic and virtually destroy the army,” but now the enemy had, “retired to a high range of hills south and east of the town.” The Union had flipped Longstreet’s strategy 180 degrees and it was they who had, “force[d] the enemy to attack [them], in such good position as [they] might find.”

I will create some other Gettysburg scenarios including ones with the Union and Confederate cavalry available. While not historical, it might make for some interesting gameplay and Human-Level AI decisions.

As always, please feel free to contact me directly with comments.

References

References
1 Isaac Trimble, Southern Historical Society Papers, Vol. 26, Richmond, Virginia: Reverend J. William Jones, D.D.,
2 Tactical Inference GenERator
3 In Computer Science lingo programs are machines that consume data / tokens