Shannon V. OKeets
From: Honolulu, Hawaii
October 1, 2010 Status Report for Matrix Games’ MWIF Forum
Accomplishments of September 2010
I monitored all the threads in the MWIF World in Flames forum daily.
Hardware and Software
Theme Engine is still disabled, but I have hopes of reinstalling it this month.
I released versions 5.02.02 (12 fixes), 5.02.03 (7 fixes), 5.02.04 (14 fixes), 5.02.05 (20 fixes), 5.02.06 (17 fixes), 5.03.00 (23 fixes), and 5.03.01 (9 fixes) to the beta testers last month. This totals 7 new versions and 102 fixes which is under my previous 2 month averages for fixes (116).
Fatal errors continue to decrease in frequency and I can usually fix them in a few minutes. Most of the bug reports this month concerned Production Planning which I had completely revised and whose player interface details needed both debugging and refinement.
Saving and restoring games is stable although I continue to make revisions to the format from time to time. With a little care, I keep old save games playable. But I am not anal about that. Sometimes there were bugs which caused GAM files to be fatally flawed. I do not spend time trying to make old GAM files playable - just as long as the newly created GAM files restore perfectly.
Map and Units
Rob sent me updates of the naval unit writeups. Patrice sent me some minor changes to the map data.
I enabled moving from Colon (at one end of the Panama Canal) through the Panama Canal and into the Gulf of Panama. This works the same as for Panama City at the other end of the Panama Canal.
Units can now set up in Eritrea. The WIF FE setup booklet didn’t specify that, but Patrice checked with Harry Rowland, and MWIF conforms to Harry’s clarification.
Scenarios and Optional Rules
Added code to restrict how many saved build points in each hex can be used. CWIF didn’t worry about this but I want MWIF to follow WIF FE as closely as possible.
I wrote the code for Food in Flames. It remains to be tested, but was fairly straightforward.
I made some changes in how the specialized subs in Convoys in Flames are handled. In particular, Milchcow subs are now restricted to the zero section box. I have occasionally done bits and pieces of the rules for Convoys in Flames, when I see something that is wrong and easy to fix. There is still a bunch of work to do (e.g., add another subphase to naval submarine combat), so I have not yet reached the point where I can sit down and finish it in a couple of days.
I linked the use of the optional rules Synthetic Oil Plants and Factory Construction & Destruction. WIF FE, as written, requires both of these to be in effect before oil resources can be destroyed by strategic bombing. This is another case of bringing MWIF into line with WIF FE, where CWIF deviated slightly.
I finalized the design for Unlimited Breakdown, with the help of the beta testers (especially Paul). At the end of this report is the section from the Players Manual describing this new optional rule.
MWIF Game Engine and CWIF Conversion
Nothing new on the game engine. As for CWIF conversion I have now converted all the forms except Overstacking. I’ve made a tentative pass at that but I want to see more bugs resolved before messing around with something that pops up at odd places in the sequence of play. MWIF handles resolving overstacking as a digression.
I created a new form for debugging naval moves. It lists all the sea areas and ports to which a selected group of naval units can move, showing how many movement points each move uses. If is astonishing how many ports are available. For instance, a Japanese unit could only move to 8 sea areas, but has over 50 possible ports available! This will not be part of the released product because it is rather crude.
I made more massive changes to the Production Planning form. For the summary panel, I added hints and filters for each of the 35 statistics. The hints help to explain what the numbers mean. Then when you actually click on a number in the summary panel, the list of resources and factories is filtered to show the resources that make up that number. For instance, if you click on non-oil trade received, just the non-oil resources that are being sent to the current major power are listed. This works for Idle Factories, Convoyed Oil, and all the other statistics too. The code uses the same filter for calculating the numbers and for modifying the list of resources and factories displayed. That was very useful for development/debugging and has the added benefit of being useful to the players. I also added entries to the summary panel for production points received through Food in Flames and for convoys on map and idle. When convoys idle are zero, it is a good idea to build more convoys.
I reduced the number of layouts for the Production Planning form from 4 to 3: Summary, Expanded, and Route. The 4th layout, for Default and Override values, is now incorporated as a standard part of the form and is visible in all 3 of the layouts.
I added the ability to display the overseas route for a single resource on the global map. This lets you go through each of your resources that are using convoys and see the route it is using. Conversely, you can click on a sea area and have the resource list filtered to show the resources that are routed through the sea area. Sometimes major powers use convoys belonging to their allies. To identify those situations, when clicking on a sea area is used to filter the resources, whose convoy the resource is using is also shown. The general thrust of the design for production planning is to let you see both summary and detailed information on resources, factories, and convoys. The filters let you focus on subsets of them. These changes enabled me to delete the old CWIF Convoy Info form.
I streamlined the process of modifying routes for resources shipped overseas. The way it works is you select a resource, select its destination, and click on the series of sea areas in the route you want the resource to use. When necessary, the program finds a departure port and a rail link from the resource to the port. Likewise, when you reach the last sea area in the pipeline, you just click on it a second time (to indicate it is the terminus) and the program finds an arrival port and a rail link to the destination. This is very fast to do and I can reroute all the Commonwealth resources from scratch in less than 5 minutes.
The program stores player specified routes as either Default or Override. Defaults are what you use most of the time; they are saved from turn to turn for automatic reuse. Override routes are for when you want to make a change for just the current turn. They take precedence over the default settings. After the turn is over, override routes are deleted, while the default routes remain available for the next turn. All routes are shown both as table entries and also on the global map, which makes reviewing them easy to do.
Internet - NetPlay
My redesign of the SOP in 2007 added a Game Record Log where all the transformations of the game state are recorded as a series of encoded entries. These are used by both PBEM and NetPlay to keep all computers up-to-date with changes to the game state. They are currently used for Solitaire and Head-to-head play, but 110 record types still need to be converted from CWIF Windows messaging code to MWIF Game Record Log code. By the way, the total number of unique record types is ~550.
I reviewed the 20 forms needed for entering the 22 PBEM Standing Orders. Forms for 4 of the standing orders are done, 6 have been started and 12 have only dummy stub ends in place. I remain focused on fixing bugs, but PBEM is next on my task list once I get the bugs beaten into submission.
Artificial Intelligence (AI)
The AIO decisions are primarily made using scripts written in LAIO (Language for Artificial Intelligence Opponent). This is a rule based language which I created for MWIF. LAIO is fully defined and dozens of test scripts have been written by Peter Skoglund, with help from me.
The test scripts are for setting up units for each of the minor countries in the game, from a single unit for Persia to the more complex setups for Poland, Spain, and Turkey. Peter has also created a script for setting up France in the Global War scenario. These scripts are quite sophisticated, taking into consideration which major power declared war on the minor country, the type and location of enemy units, and possible support from allies. For instance, the script for setting up the single Persian unit has logic for threats from land, air (e.g., paradrops), and sea (e.g., amphibious assaults) from all directions.
To convert the LAIO scripts into actions to be taken by MWIF, (on behalf of the AIO), requires a parser. The parser reads a script and generates a set of commands comparable to what a human player enters using the mouse and keyboard. I’ve written about 80% of the parser code, and debugged that much using the scripts created by Peter. I need to finish the last 20%, but more importantly, I need to have the parser ‘recognize’ ~300 function calls. For example, when a script references a unit’s type, the parser has to ‘fetch’ the unit type datum which is stored internally. There are numerous characteristics of units, unit stacks, hexes, and countries which the program already stores internally. For each of them, LAIO needs a symbol/string defined and the parser needs to translate the symbol, when it occurs in a script, into a function that returns the internal value.
There are 143 decision points in the sequence of play where the AIO needs to decide what to do. 122 of these use universal logic, in that they do not depend on which major power is making the decision (e.g., rail moves, strategic bombing, naval interceptions, placing partisans). For the other 21, the logic does depend on which major power is making the decision. Examples of those are: strategic plans, declarations of war, production plans, and trade agreements. I have 200 pages of text describing strategic plans. Each major power has their own section and the plans are well organized. For the French, I’ve started encoding their strategic plan as data.
The AIO makes decisions using either LAIO scripts (preferred) or by using a routine hard coded in Pascal, but data driven. Which is used depends on the expediency of writing the code. For example, there are a lot of unique decisions that do not deserve spending the time to write a LAIO script. USSR territorial claims, US entry option choices, and routing resources to factories can be handled better by Pascal code than by LAIO code. On the other hand, moving units and deciding about attacks are best done using a LAIO script. That way we can add and remove portions of a script while MWIF is executing and immediately test the effect of the changes. MWIF can parse a revised script “on the fly”, which isn’t possible for Pascal code.
For the 122 ‘universal’ decision points, I start by writing plain text that describes how the decision is to be made. I’ve done 73 of them as plain text so far. The second step is to translate the plain text into a LAIO script. All of that work remains to be done.
Once all 143 decision points have either Pascal code or a LAIO script, the AIO can execute autonomously. In practice, we will introduce the AIO decisions one at a time, evaluating how good each decision is and modifying the script/code until we are happy with it.
I finished the text for the Production Planning form. It runs to 12 pages. Here is the opening paragraph:
The Production Planning form enables you to:
• review resources, factories, and convoy pipelines,
• review the build points available for production,
• choose resource destinations.
• modify convoy pipelines,
• decide whether oil resources/points are to be used in production or saved, and
• choose which resources fulfill trade agreements.
To accomplish this the form has 3 layouts and dozens of filters. Key elements of the form are:
• A list of resources and factories belonging to a selected major power.
• Major power flags to change the selected major power.
• A Summary layout which shows statistics on resources, factories, and production and build points.
• An Expanded layout which doubles the viewing area for the list of resources and factories.
• A Route layout, which shows the hex by hex route for a resource from its hex of origination to its destination.
• An insert map, detailed or global. Both maps display the location of resources and factories. The global map can be used to review and modify convoy routes.
• Filters for displaying a subset of the resources and factories (e.g., those that are idle, traded, or use convoys).
• A default/override table for reviewing the current default/override destinations and actions (i.e., production or saved) for a resource. This table can be used to specify the default trade country for a resource.
• Radio buttons for selecting the default/override destinations and actions for resources.
The current PDF of the draft Players Manual is 368 pages long.
Tutorials, Training Videos, and Context Sensitive Help
Historical Video, Music, and Sound Effects
The MWIF fan site still looks good.
Nothing especially new.
9.3.8 Unlimited Breakdown
This optional rule modifies the restrictions on: (1) breaking down corps/army sized units into divisions, and (2) reforming corps/armies from divisions. When this optional rule is in effect, rather than use the division units in the counter mix for breaking down divisions, 2 new division units are created (out of thin air) when a player breaks down a corps/army unit.
This rule only applies to the major powers. Minor countries, even those that have a division unit as part of their force pools, are still unable to break down corps/army units into divisions or reform divisions into corps/armies (as is the case in WIF FE). During the Breakdown phase you can break down into divisions an on-map, organized corps or army unit that isn't in an enemy ZOC. Only the following unit types can break down into divisions:
• Mechanized, and
Division Unit Types
When a corps/army is broken down using the optional rule Unlimited Breakdown, two (brand new) division sized units replace the corps/army unit (the parent unit). The 1st division is of the same type as the parent and the 2nd is either an infantry or motorized division (the owning player chooses).
The sum of the combat factors of the two divisions is half the combat factors of the parent, rounding up. For example, a 4 strength parent unit breaks down into two divisions with combat factors of 1 each. A parent 5 breaks down into a 1 and a 2; a parent 6 breaks down into a 1 and a 2; and a parent 7 breaks down into a 2 and a 2. When one division has more combat factors, then it is the 1st division that gets the extra combat factor.
The 1st division has the same movement factors as the parent.
The 2nd division’s movement factors are the same as its parent’s, with the following modifications:
• When the 2nd division is infantry:
• if the parent is INF, PARA, MAR, or MTN, same as parent.
• if the parent is MOT or CAV, same as parent, minus one.
• if the parent is MECH or ARM, same parent, minus two, but never less than 3.
• When the 2nd division is motorized:
• If the parent is INF, PARA, MAR, or MTN, same as parent, plus one.
• If the parent is MOT or CAV, same as parent.
• If the parent is MECH or ARM, same as parent, minus one, but never less than 4.
When a corps or army unit is broken down, it is not returned to the force pool (as it would be under the standard rules for breaking down units). Instead, it is placed in a separate pool, called the "BreakDown Pool". MWIF maintains a record of which divisions were created when a corps/army was broken down and will not reform the corps/army unless two identical divisions are used. They do not have to be the same divisions, just identical in type and combat factors (i.e., a 1-4 infantry is a 1-4 infantry is a 1-4 infantry).
When destroyed, divisions created by breaking down corps/armies are placed in the BreakDown Pool. Divisions that are part of the standard counter mix, and therefore either part of setup or built by the player using the normal production rules, are returned to the force pool when destroyed.
Reforming a Corps/Army from Divisions
Players can only reform corps/armies that are in the BreakDown Pool. This is a major change from the standard rules where you can reform on-map divisions into corps/armies that are drawn from the Force Pool. Units in the BreakDown Pool remain there until either: (a) they are selected as the corps/army to replace 2 division units that are reformed into a corps/army, or (b) 2 division units that were created when a corps was placed in the BreakDown Pool are destroyed. You can basically think of the later situation as the two destroyed division units reforming as a corps sized unit that is then returned to the force pool. Units in the BreakDown Pool can never be built during the Production phase while they reside there! To avoid misuse of this rule by players, if two divisions in the BreakDown Pool can be reformed into one of the corps/armies in the BreakDown Pool, they the player must do so. However, he has the choice of which corps/army is reformed. This mandatory reformation occurs during the BreakDown phase.
Because MWIF has a record of which divisions were created when a crops/army was broken down, it permits a player to reform the exact same corps/army from those divisions (or identical divisions). This is a pleasant change from the standard rules because it lets players who reform corps/armies get the exact same unit back that they had originally broken down. Under the standard rules, the process of breaking a corps/army down and later reforming it can generate a weaker corps/army than the player had at the start.
So, here is the revised rule on reforming divisions into a corps/army:
• If, during the reform phase, 2 organized divisions are stacked together on map, not in enemy ZOCs, and their factors match the factors of the original divisions that were created from a corps/army in the BreakDown Pool, the player can reform them into that corps/army.
• If more than one corps/army in the BreakDown Pool satisfies this criteria, the player gets to choose which one is reformed.
• Divisions in the BreakDown Pool can also be reformed, with the same restrictions as for on-map divisions. Indeed, they must be reformed during the BreakDown phase.
Effects on Game Play
One effect of this optional rule is that the division units included in the counter mix are only available to the player: (1) by building them or (2) when specified as part of a scenario’s setup. They are never used when units are broken down into divisions nor can they be used to reform corps/armies. Indeed, when a division unit from the counter mix is destroyed, it is treated differently from one created through breakdown. Those from the counter mix go back into the force pools, while those divisions created when a corps/army is broken down go into the BreakDown Pool when they are destroyed. Whenever divisions are used to reform a corps/army, the divisions are removed from the game.
However, for all other game play purposes there is no difference between the division units from the counter mix and those created when a corps/army is broken down into divisions.
The effect this rule has on play balance is uncertain and controversial. On the one hand it removes a somewhat artificial restriction on breaking down units that was imposed by the counter sheet limitations of WIF FE. On the other hand, it enables the Japanese player, for example, to generate a lot of divisions, place them on SCS units and invade numerous islands and other hexes in the Pacific simultaneously. Note that doing so makes the total strength of the Japanese army units much less, but that is only temporary, until they can be reformed back into corps/armies.
This change also enables the major powers to use divisions more readily for taking casualties during land combat. But that applies to all the major powers, both on offense and defense. Again, breaking down corps/armies will reduce the total combat strength of the forces in the front lines. And one last use for this increase in the number of divisions is the opportunity to hold individual hexes with less expensive division units. This can be of use to Germany in Norway, and Japan for holding islands in the Pacific, as just 2 examples. It also has potential for helping to defend the somewhat porous front line and exposed supply lines in China.
Perfection is an elusive goal.