Category Archives: Gameplay

Why This Game Is Taking So Long

Why is this wargame taking so long? The short answer is that I made a series of bad decisions. The longer answer involves explaining the bad decisions.

Before I began work on General Staff: Black Powder I had done a project for the US Army called MARS (Military Advanced Real-Time Simulator).

Image from the MARS: Military Advanced Real-Time Simulator feasibility report to the US Army. Screen shot of MARS.

I had used a Microsoft IDE (Integrated Development Environment) called XNA to write MARS in C# and I thought it would be a good environment in which to develop General Staff. XNA, on top of being fairly easy to implement a 3D or 2D game environment, had another interesting advantage: any program created with it was immediately portable to the XBox game console. This dovetailed nicely with my dream of someday bringing wargaming to a larger (and younger) audience.

Consequently, the first version of General Staff – including the Army Editor, Map Editor and Scenario Editor – was written using XNA. I had just begun working on the actual game itself when Microsoft suddenly announced that it was no longer supporting XNA. This, of course, sent shock waves through the XNA game development community.

Since I had already written a great deal of the necessary code in C#, and Windows remained my target audience (Windows makes up >90% of the gaming market) I decided to port (that’s a game development word for rewrite for another environment, but hopefully not rewrite everything) to Microsoft Windows Presentation Foundation (WPF).

I wasn’t thrilled about porting to WPF. First of all, I wasn’t that familiar with it and, secondly, it wasn’t easy (at least for me) to do a lot of the things that needed to be done. The Army Editor was a pretty easy port, but the Map Editor had some very specific, difficult problems having to do with drawing on the screen. Luckily, I found Andy O’Neill, who is a certified expert on WPF. Andy took over and decided to rewrite my code (properly for WPF) and, eventually, the Army Editor, Map Editor and Scenario Editors were completed. If you are an early backer of General Staff: Black Powder you should have these. They are also available for download on Steam.

By this point the General Staff: Black Powder suite of editors had now been rewritten three times for two different environments, but, it was finally completed and in a stable version. I have been using these programs to create numerous scenarios (some of which are already uploaded to Steam).

The Quatre Bras scenario in the General Staff: Black Powder Scenario Editor. Screen shot. Click to enlarge.

The last thing to do to complete General Staff: Black Powder was the actual game, or game engine. Usually, this isn’t too hard because about 80% of the code is recycled from the Army, Map and Scenario editors. Unfortunately, I just wasn’t happy with the how the game looked in WPF. WPF is great for creating business apps but it just wasn’t giving me the 19th century Victorian look and feel that I wanted. About this time I discovered that a number of former XNA users had banded together to maintain and expand the original IDE; it was now called MonoGame. I decided to write the General Staff: Black Powder game engine in MonoGame.

I was making pretty good progress, but ran into some problems and asked the MonoGame community for help (by the way, I’ve found the MonoGame community to be a great group for answering newbie questions and generously providing time and solutions). It was on the MonoGame community forum that I met Matthew T. who is an experienced XNA/MonoGame game developer (he has a game on Steam that has sold over 100,000 copies). Matthew, eventually, decided to rewrite large hunks of my MonoGame code (vastly improving it) and then began to add some wonderful debugging features.

Screen shot of Ligny scenario in General Staff: Black Powder debugger mode. Click to enlarge.

Matthew and Darin Jones also implemented Steam player versus player (PvP) and we’ve done some early playtesting with Matthew in the UK and me in the US playing against each other in real-time (this was an amazing experience and something that I never envisioned that we could pull off).

So, that’s where we are now. We’ve made great progress and we’ve taken far longer to do it than I had hoped or anticipated. A lot of the same code has been written and rewritten for different environments. With 20/20 hindsight I certainly could have managed this a lot better. I think we’re about two months away from a pre-release beta starting with PvP playtesting. This would involve all the early backers who would get new Steam keys.

As always, please feel free to contact me directly with any questions or comments

 

Fixing a Major Mistake

This screen shot is an example of the design flaw that has now been corrected. Units don’t instantly change from line to column formation. Note that the red infantry unit is first in line formation (facing northwest), it receives orders from the HQ to switch to column formation advance to a position, switch to line formation, travel in line formation, then switch to column formation and travel in that formation. If you observe closely, the unit one instant is in column formation and the next it is in line formation occupying a different portion of the terrain.

The first lecture I would give at the beginning of every semester started: “The greatest asset you can have as a programmer – or as a human being – is the ability to admit that ‘I screwed1)Full disclosure: I wouldn’t say ‘screwed up’. If you want to get an undergraduate’s attention use the ‘f word’. up’ fifty times a day if necessary. Because, until you admit you made a mistake, you can’t find you mistake. And until you find you mistake you can’t fix your mistake. The first step to fixing a mistake is to first admit you made it.”

In the above screen shot there is a glaring error and I didn’t see it for years. In my defense, nobody else saw it, either. The screen shot, below, shows the correct movement and unit formations:

In this screen shot you can see that the unit is switching formations correctly. Note how the unit first changes from line to column formation by ‘a left face’ command, then moves in column formation, avoiding the artillery battery, moving on to the road and advancing to the assigned location where the unit stops, changes into line formation via another ‘left face’, advances in line formation as ordered until it reaches its destination, stops, forms column by another ‘left face’ and then advances to its destination.

Without getting into details, this was a pretty complicated fix. Looking for help with this, and some MonoGame2)MonoGame is a community supported version of Microsoft’s XNA which was created specifically for making cross-platform games. Microsoft stopped all support for XNA in April 2014. Previously, I had used XNA for some work that I had done for the US Army and the Department of Defense and thought it had great potential for creating computer wargames and simulations. specific problems, I encountered Matthew T. from the MonoGame forum who very kindly volunteered to help. Not only did Matthew fix the line / column formation problems but he identified and fixed a bug with the typography for the game, too:

These two screen shots show the difference in the clarity and spacing (called kerning) of the letters. In the left screen shot notice the lowercase ‘g’ in Debug and the spacing of the letters in the word ‘positions’. In the right screen capture, after applying Matthew’s typographical fixes, the letters are clear and properly spaced.

Matthew is also cleaning up the codebase. I have a tendency to write code ‘fast and furious’ and then hope to go back and optimize and clean it up later. Matthew has already begun cleaning it up and has reduced the codebase by something like 7,000 lines of code! Furthermore, Matthew has also sped up the load time and the time between game turns from about a minute to about 10 seconds (obviously, time varies based on scenario).

Steam Update

Darin Jones has been working on the Steam side. He created the Installer and is working on setting up Player versus Player (PvP) leveraging Steam’s built-in features. While this has been a steep learning curve, Darin has made some significant progress:

Screen shot of Steam Player vs. Player invitation for General Staff: Black Powder. This is not a Play by Email (PBEM) system, rather it uses Steam’s internal messaging system

Darin is also setting up a ‘Workshop’ area where you can upload scenarios, armies and maps that you create and want to use in a PvP game.

What’s Next

Our goal remains to get General Staff: Black Powder into beta-testing (that’s you guys playing with it) as soon as possible. We want to use the Steam PvP method, above, as the vehicle for testing. I’m grateful for the emails that I’ve received that are encouraging me to not rush General Staff: Black Powder out before it’s ready and to deliver a solid game (see also, Gabe Newall on why game delays are OK: ‘Late is just for a little while. Suck is forever.’).

As always, please feel free to contact me directly at Ezra[at]RiverviewAI.com.

 

References

References
1 Full disclosure: I wouldn’t say ‘screwed up’. If you want to get an undergraduate’s attention use the ‘f word’.
2 MonoGame is a community supported version of Microsoft’s XNA which was created specifically for making cross-platform games. Microsoft stopped all support for XNA in April 2014. Previously, I had used XNA for some work that I had done for the US Army and the Department of Defense and thought it had great potential for creating computer wargames and simulations.

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.

 

Fog of War

Carl von Clausewitz painted by Karl Wilhelm Wach. Credit Wikipedia. Click to enlarge.

Carl von Clausewitz in his On War wrote, “War is the realm of uncertainty; three quarters of the factors on which action in war is based are wrapped in a fog of greater or lesser uncertainty. A sensitive and discriminating judgment is called for; a skilled intelligence to scent out the truth.” Though Clausewitz never specifically wrote the phrase ‘Fog of War’, the above quote is the source of the term which we abbreviate today as FoW. FoW in the 18th and 19th centuries (the era specifically covered by General Staff: Black Powder) was especially problematic because of the lack of modern day battlefield information gathering techniques such as drones, aircraft and satellites (yes, hot air balloons were used in the Civil War but their actual value during combat was minimal).

General Staff is a wargame that can simulate the FoW experienced by an 18th or 19th century commander and his staff. We use the qualifier ‘can simulate’ because General Staff can run in five different ‘modes’:

  • Game mode / No Fog of War
  • Game mode / Partial Fog of War
  • Simulation mode / No Fog of War
  • Simulation mode / Partial Fog of War
  • Simulation mode / Complete Fog of War

Game mode came from a strong desire to create an introductory wargame, with simplified rules, played on historical accurate battlefield maps that could be used to introduce novices to wargaming.

1st Bull Run, 11:30 AM, Simulation Mode, No Fog of War. Reinforcements shown. Click to enlarge.

Antietam, 0600, Game Mode. Reinforcements shown. Click to enlarge.

In the above two screen shots from General Staff you can clearly see the differences between Simulation and Game mode. In Simulation mode a unit’s exact strength in men, leadership value, morale value, experience value, number of volleys and the time it will take for a courier to travel from it’s commander’s HQ to the unit are displayed and tracked. In Game Mode, unit strength is represented by the number of icons (1 – 4) and leadership, morale, experience, and ammunition are not tracked. Units are moved directly by the player and there are no HQ units. In Simulation Mode, orders are given from the commanding HQ down to the subordinate commander’s HQ and then to the actual unit. The leadership value of each HQ effects how long the orders will be delayed on the way.

Little Bighorn, Simulation Mode, Complete Fog of War (from the commander’s perspective). Screen shot. Click to enlarge.

In the above screen shot, we see ‘Complete Fog of War’; only what the commander can see of the battlefield is displayed. In this case, this is what Colonel George Custer could see at this time.  Just as in real life, in Complete Fog of War the commander receives dispatches from his troops about what they have observed; but this information is often stale and outdated by the time it arrives.

Little Bighorn, Simulation Mode, Partial Fog of War. This displays what all Blue forces can observe. Click to enlarge.

In the above screen shot Partial Fog of War is displayed. This is the sum of what is observable by all units (in this case, the Blue force). This is historically inaccurate for the 19th century and is included as an option because, frankly, users may want it and, programmatically, it was an easy feature to add. Throughout the development of General Staff we have consistently offered the users every conceivable option we can think of. That is also why we have included the option of, “No Fog o War,” with every unit visible on the battlefield. It’s an option and some users may want it.

We have experimented with different ways of displaying ‘stale’ unit information including this method, below:

An example of how units that are not directly visible to HQ are displayed. The longer that a unit remains unobserved, the fainter it becomes. (Click to enlarge.)

We are now experimenting with overlays.

As always, your questions and comments are appreciated. Please feel free to email me directly.