Shannon V. OKeets
From: Honolulu, Hawaii
October 1, 2008 Status Report for Matrix Games’ MWIF Forum
Accomplishments of September
Our current plans are to release MWIF product 1 in late March, 2009. There is still some uncertainty about NetPlay. If Dan can get it working in October, then we should make the above date. But if he doesn’t, then I am going to spend the month of November writing the technical code for NetPlay. That will delay the release by a month.
I monitored all the threads in the MWIF World in Flames forum daily and uploaded versions 11.00, 11.01, and 11.02 (later today) to the beta testers.
Patrice make a few more adjustments to the map data which I included in version 11.01. He also was in communication with the WIF players on the Yahoo forum and Harry Rowland about a poorly worded rule. We have that straightened out now, so I can code it.
Dan has been very busy with his consulting company. While things are going well for him personally/professionally, it hasn’t left him with any time for NetPlay.
Peter Skoglund continues to help with developing scripts for the AI Opponent.
Robert Nebel uploaded a revised version of the Test Scripts.
Michael Andersen started work on the convoy pipelines for the Global War scenario.
Nothing new on unit writeups.
No information from Matrix about getting a price on a printed copy of the map.
No communications with Chris Marinacci or Harry Rowland.
Hardware and Software Development Tools
I have not installed ThemeEngine July/2007 - the status on this is unchanged.
I uploaded 11.00 and 11.01 in the latter part of September. After posting this status report, I will upload 11.02 for the beta testers. The first half of September was devoted almost exclusively to finishing digressions which necessitated changing the content/structure of saved games. Because this invalidated all previously saved games, I delayed uploading 11.00 until the variables for all the digressions were finalized.
The changes in all the 11.xx versions have been to do with phases and digressions. Along the way I fixed some bugs. Actually, the bugs were what motivated me to make the changes regarding the phases and digressions: it was simply too difficult to figure out the ramifications of the interdependencies in the code one bug at a time. After restructuring, I was able to solve a half dozen problems almost immediately, because I knew where to look in the code. Equally import, I didn’t have to worry about causing new bugs since the interdependencies had been removed.
Units, Map, and Scenarios
Mediterranean weather for southern California and a few other scattered relocations of cities in the US have been Patrice’s changes over the past month. Some of the Faeroes Islands became mountainous terrain. Nothing new with the units except for one Mexican air unit than needed a 1 changed to a 0 in its data file.
Nothing new, though in the process of restructuring code I reviewed and documented numerous phases, many of which included optional rules (e.g., defensive shore bombardment, emergency HQ supply). In all I knocked another 10 hours off the task list for optional rules (there are now 100 hours remaining).
I expanded the use of the Selectable Units List, which enables the player to click beside any of its displayed units to have the map center on the unit. Clicking on the unit itself, “picks the unit up”, just as if the player had done so from the Flyouts or from the hex. I still need to add a “right click” popup that shows all legal destinations for a unit in this list.
The purpose behind the Selectable Units List is to relieve the player of the task of finding all the units that can move in a phase. This is intended for use when there are only a handful of units available in the phase. Therefore, it is not used in the land or naval movement phases, since dozens, if not hundreds of units might be capable of moving.
Currently, the phases for which the Selectable Units List is displayed are: all air phases (subphases: CAP, attacker/defender fly bombers/escorts, attacker/defender fly interceptors, anti-aircraft fire, return to base), Naval Air, Unload Land Units, Invasion, Emergency HQ Supply (part of Land Combat), Defensive Shore Bombardment, Offensive Shore Bombardment, Defensive HQ Support, Offensive HQ Support, Air Rebase, Reform, and Factory Destruction.
I am also using the Selectable Units List during digressions: Relocate Units, Rebase Overrun Units, and Return Units to Base.
Internet - NetPlay
I am waiting on Dan, but I am also clearing my desk of other tasks, so if need be I can focus on NetPlay for the entire month of November.
Aside from the MWIF Game Engine changes described below, not a lot happened here. I did spiff up the Reorganization form, which is used when reorganizing units during an impulse: by ATR, HQ, or TRS. I also modified the Air-to-air Combat form so it no longer uses drag and drop to arrange units, but the simpler method of pressing the left and right arrow keys to reposition air units so they are arranged as you desire for air-to-air combat.
As I worked on giving each phase its own module, I added Game Record Log (GRL) entries for the phase. These are required for all modes of play, but especially for NetPlay.
MWIF Game Engine
Once the digressions were mostly finished (I still have overstacking and naval interceptions to do), I was able to tackle the fragmented code for each phase. What I have been doing this year is to place the code for each phase into its own module (i.e., Pascal file). Earlier this year I did this for the DOW phase (1700 lines of code) and I just finished the last of the 8 air phases this month; they average 1800 lines of code per air phase module. I had already done most of the early phases: Lending, Choose Action, Initiative, etcetera.
Most of the remaining phases are markedly smaller. This month I completed the modules for the phases: Air Rebase, Air Reorganization (the 8th air phase, using an ATR), Emergency HQ Supply, End of Turn, HQ Reorganization, Naval Reorganization (using a TRS), Offensive HQ Support, Defensive HQ Support, Land Combat Declaration, Liberation, Notional Units, Partisans, Defensive Shore Bombardment, and Offensive Shore Bombardment. Except for Air Reorganization, most of these are only 250 lines of code or so.
What is gained by having the code for each phase in its own module is that I can structure each module to deal with the 4 tasks required in a phase: initialization, processing, completion by a major power, and termination. When I need to make changes to the sequence of play for PBEM, that will be easy to do: all the relevant code for each phase will be isolated from all the other code. CWIF grouped code by task, so, for instance, initialization of all phases was in one place. But then to understand how, say, the Ground Support phase was initialized, I had to read through the code for the other 59 phases.
Besides handling the initialization of variables, the initialization routine determines which major powers have decisions to make in the phase. If there are none, then it skips to the next phase. When there are major powers that have to decide, the initialization routine calls WhoNeedsToDecide which handles the dissemination of that information to all the players (i.e., computers) so everyone knows what is happening.
The processing tasks generally rely on either the player moving units about on the map or making decisions using a form. For instance, Action Choice uses a form, while HQ Support is done using the map. All of the air phases use the map for moving units around, and also use the Air-to-air Combat and Anti-air Combat forms. One of the major difficulties in programming MWIF is that each of the 60 phases and 82 subphases has its own unique characteristics. Those 82 subphases are for the 14 phases that have subphases, including the sub-subphases for the air-to-air combat subphase.
As each major power completes its decision making in the phase/subphase, the program passes that information along to everyone and determines if there is more to be done. For example, after you have decided on an Action Type for Germany, the program brings up the same form for Italy, and later for Japan. Once all major powers have completed their decision making, the phase is terminated and the last task of the module is to clean up all the temporary variables that were generated. Game Control then advances to the next phase.
This is a clean design and it is only possible because I have pulled all the code for digressions out and given those their own separate module. The Digression module handles the numerous oddities in the sequence of play (e.g., forced rebasing due to overruns). Those were described in last month’s report, so I will not detail them here.
This seems to be working ok.
Nothing was scheduled.
Nothing was scheduled.
Historical Detail, Animations, and Sound
Help System and Tutorials
I have been making a few touch ups to the Rules as Coded (RAC) document over the past couple of months. I guess it is time for me to type those up and disseminate a new version to the beta testers.
After going through RAC carefully so I could write the code for the digression correctly, I reviewed the diagrams I had created for the sequence of play. In several places I made edits, mostly for clarity, rather than of substance. Because these diagrams form the basis for the tutorial pages on the sequence of play, I now have the task of someday going back to the Tutorial #10, Sequence of Play, graphics and making those same edits.
Peter Skoglund has been working through dozens of minor countries laying out alternative setups for them when they enter the war. With each setup he has the conditional rules defined as to when the setup should be used. Because he has been posting these to the MWIF forum, he has been able to refine these scripts based on feedback from forum members.
I haven’t found the time to write the last section of the documentation for LAIO.
My quartet lost its tenor, who moved to South Carolina last week, sigh. We could scramble around and try to find another tenor except it looks like we will lose our baritone in January or February 2009 when he moves to Maui. For now, I am not thinking about the quartet, since I am heavily involved in preparing for the convention we are hosting October 29th to November 1st. I spent almost an entire week in September working on that.
September summary: Completing more of the Digression code and restructuring the sequence of play so each phase has its own module consumed almost the entire month.
Tasks for October
Continue monitoring the forum threads.
Map and Units
Upload versions weekly. [est. 2 hours]
Redesign of MWIF Game Engine
Continue to work through the sequence of play giving each phase its own module. [est. 100 hours]
Convert CWIF style internet formats to Game Record Log Formats. [est. 20 hours]
Finish the code for determining and displaying supply lines. [est. 10 hours]
Complete the Task Forces forms. Implement Task Forces as a new “unit type”. [est. 30 hours]
Create hex destination lists for air missions. [est 10 hours]
Review, comment, modify, and create code for optional rules [est. 20 hours]
Implement the bidding capability using NetPlay. [est. 10 hours]
Incorporate the Indy10 code for the two player system into MWIF. [est. 20 hours]
Incorporate the multi-player (more than 2) system into MWIF. [est. 10 hours in November]
Define LAIO variables with their supporting functions. Design the parser for LAIO. Create a few more rules as text and encode them for testing the parser. [est. 30 hours]
Help System and Tutorials
Nothing scheduled until February.
Nothing scheduled until January.
Historical Detail, Animations, and Sound
Nothing scheduled until February.
I have been doing a lot of work scheduling Pan Pacific 2008 Convention events (October 29th to November 1st) that we are hosting for 850 barbershoppers in Honolulu. In September this took up a week of my time - an all volunteer organization with no clear chain of command results in very inefficient operations. I expect to spend another week on this in October, including the last 3 days, when the actual convention will take place.
October summary: Keep the beta testers busy and respond to their bug reports. Continue work on Game Record Log conversions to support NetPlay for the rest of the sequence of play. Finish giving every phase its own module.
Perfection is an elusive goal.