Shannon V. OKeets
Posts: 22095
Joined: 5/19/2005 From: Honolulu, Hawaii Status: offline
|
September 1, 2012 Status Report for Matrix Games’ MWIF Forum Accomplishments of August 2012 Project Management I monitored all the threads in the MWIF World in Flames forum daily. Regrettably, I was only able to work effectively 3+ hours a day in August. More about my health in the next 2 paragraphs, but feel free to skip that. I had a final visit with my cardiac surgeon, who says I’m doing fine. My cardiologist wants to see me again in October, mainly because I was only using 95% of my full lung capacity - I think that has been rectified in the two weeks since I saw him. Likewise my internist wants to see me again in October, when he’ll draw blood and do an analysis of its chemical composition. When they did that 2 weeks ago, my blood sugars were back to normal so I am no longer taking insulin. I’ve also cut my dosage of one med in half to 12.5 mg twice a day. That med was making me sleepy and impairing my ability to focus (i.e., work on code). After reducing that med a couple of days ago, I’ve increased my work hours to 4 a day. I would like to get back to 5-6 hours productive hours. Right now I am taking low dosages of 4 meds daily, which I guess will continue for the foreseeable future. This coming week, as a scheduled 6 month followup, I’ll have sonography done on my kidneys, looking for kidney stones. That should be a non-event since I routinely drink 60-80 ounces of water/milk per day, which aggressively flushes my kidneys. The following week I’ll be in Philadelphia for 5 days for a scheduled annual followup on my eye surgery (on my left eye). I hope I can persuade them to let me have the cataract in my left eye removed and replaced with an artificial lens. The radiation treatment appears to have accelerated the formation of that cataract. In May I was able to read text with my left eye, but now it is so bad I can’t use it to count my toes. Hardware and Software Matrix/Slitherine Games programmers made more revisions to the code at the NetPlay server end. I haven’t tested those changes yet. The goal is to cut the login time from 10 seconds to under 5 - perhaps that has been achieved. The open items for Theme Engine remain unchanged: (1) scroll bars for the detailed map, and (2) its inability to display detailed listings of file directories (i.e., the dates and stuff when opening or saving a file). Beta Testing In August I released new versions 9.08.04 (12 fixes), 9.08.05 (13 fixes), and 9.08.06 (14 fixes) to the beta testers. That’s only 3 new versions and 39 fixes. I’ve made 8 more fixes for version 9.08.07, but I won’t release that until I’ve gotten my rewrite of the supply determination code done (there is a long discussion of that in Game Design below). I whittled away at the air/naval/land movement and combat bugs. I now have these down to 17 total, some of which are important, some of which are not, and some of which are so old I am not even sure they still exist. 17 is a small enough number that if I just bear down on them for a week, I should be able to eliminate them all. Saved Games I added a couple of AutoSave calls so they happen whenever a new major power has something to do in the Reinforcement phase. I also added the subphase to the name of the saved game file for that phase. Map, Units, and Scenarios I received some more naval unit writeups from Warspite. Optional Rules I fixed a couple more bugs in the optional rule Off-city Reinforcements where it had interactions with the optional rules for Territorials and Divisions. I improved the display of information in the Universal Unit Data Panel on lost production points and damaged factories. The UUDP is part of the omnipresent Main form, so when the player moves the cursor over a hex, the UUDP updates with information on how many production points have been lost to strategic bombing and the status of factories in the hex. Also included is info on damaged oil resources (e.g., in Ploesti). During game play it’s important to know these things when planning strategic bombing missions. Game Engine The beta testers have been nagging me for a long time to fix the bugs in (mostly overseas) supply. My solution for the various supply bugs was to rewrite the CWIF code from scratch. I completed most of that last year: 1. identifying valid primary supply sources for major powers and minor countries, 2. identifying possible secondary supply sources for same, 3. identifying valid secondary supply sources by finding a railway path to a primary supply source, 4. using overseas supply links for secondary supply sources only when no pure land link exists, 5. identifying which valid supply sources can be used by cooperating major powers and aligned minor countries, 6. determining which units are in supply by tracing a link composed of basic path hexes overland and/or overseas to a valid supply source. I devoted the last half of August to working on supply. There were some bugs in the last item listed above that I just spent the last 6 days tracking down and correcting (hence this report being late). What was completely uncoded was identifying tertiary supply sources: those are potential secondary supply sources which could not trace a railway path to a primary, but can trace to either a valid secondary or tertiary. As of today I’ve fixed all the bugs in the supply code I’ve written, and I have tertiary supply working for major powers. Still left to do is: 7. writing code to differentiate between tertiary supply sources which are ‘pure’ for a major power and those which rely on supply sources from cooperating major powers; the latter cannot be used by minor countries, 8. taking the code for determining tertiary supply for major powers and cloning it for minor countries, 9. writing a routine to determine if a supply path, that was previously valid, is still valid; this will drastically reduce the time required to recalculate supply, 10. check and evaluate when supply is calculated/recalculated during game play (the beta testers have reported instances when it hasn’t been recalculated when it should have), 11. reduce the time required to calculate supply the first time (i.e., from scratch). All except the last item are straightforward. Getting the time down to under 3 seconds for the original supply determination is going to be difficult. For small scenarios, like Barbarossa and Guadalcanal, calculating supply is always instantaneous. That’s also true for scenarios where there aren’t many units on the map (e.g., at the start of the Global War scenario). But for the later scenarios, like Brute Force and Decline and Fall, where there are hundreds of units spread out all over the map, the original supply calculation is taking 1-2 minutes, which is totally unacceptable. I need to do some more timing studies to see where the program is spending/wasting all that time. One place is when it tries to find a railway supply path for the Commonwealth from Baghdad to India, going through the USSR, China, and Burma. For instance, it is conceivable that a railway path could be found from Baghdad through the USSR and China to the rail hexes in Burma and overland to the rail hexes in India and then to a primary supply source; or from Baghdad to Murmansk and from there overseas to England. I’ve timed that [failed] search at ~15 seconds. I have a plan for how to reduce it drastically, but that will require some new code. I should be able to finish up supply in the first couple of weeks of September. While I am working on this, I set virtually everything else aside. It takes my full involvement in the supply code (11,000+ lines) to keep it straight in my head. Side jaunts into naval combat and production planning have to be delayed for later. Here are 4 screenshots of supply determination in MWIF. The units’ supply status indicators, some of which are incorrect, were calculated using the old CWIF code. In the upper left von Bock is supplying units in the Crimea, during rain, via the Black Sea. Because von Bock is in the port Nikolayev, the basic path hex (BPH) cost from the Black Sea is only 1. That’s shown in the path for the 5th Mtn. Division. It also lets the Alpine mountain corp trace 1 BPH to the port Evpatoria (which the Italian units are occupying) and 1 BPH to von Bock for a total of 2 BPH (in rain the maximum BPH for a path is 2). I think many over-the-board WIF players are likely to not see this path - I was surprised and thought it was a bug at first. In the upper right screenshot, von Bock has moved 1 hex east of Nikolayev but the 5th Mtn. Division is still in supply by going through Nikolayev to reach von Bock. The screenshot in the middle of the figure shows Rommel as a tertiary supply source tracing to Graziani (who is in an adjacent hex). Graziani then traces through Benghazi to the Eastern Med and from there to Greece and ultimately to a primary supply city in Italy (Graziani’s supply path is not shown). Note that as a tertiary supply source Rommel is able to provide supply to 3 other German units in North Africa. The Commonwealth units are out of supply (yellow status indicators in the upper right of the unit counter) because they do not have a convoy or transport in the Eastern Med. The fourth screenshot, at the bottom of the figure, shows Balbo as a tertiary supply source in Iraq, tracing to Graziani in Syria. Graziani is a secondary supply source and his supply path back to Genoa is shown above the screenshot on the right. Guderian is also a tertiary supply source - he traces to Balbo. Appended at the end of this report is an overview of the MWIF process for determining supply, with some of the variables involved. Player Interface Nothing new. Internet - NetPlay I went through half of the 28 Naval Combat subphases revising them to support NetPlay (I still need to do the other half). This entails making sure that the players controlling the major powers that need to make decisions are given the opportunity to make those decisions, and that the other players are informed about which major powers need to decide. As decisions are made everyone is kept informed, and once all necessary decisions have been made, the program advances to the next subphase. What is especially tricky about this is making sure the opportunity to spend surprise points is offered to the player who has surprise points to spend - those decisions intrude on the normal sequence of play in several places. PBEM Nothing new. Artificial Intelligence (AI) Nothing new. Player’s Manual Nothing new: both the Players Manual and Rules as Coded are in the hands of the Matrix Games graphics person, who is doing the final layouts for how those will appear as PDFs and in print. Tutorials and Training Videos I still have one bug to fix for the tutorial on Production (so production can be performed for multiple countries within the tutorial). Otherwise the tutorials are done. I need to re-record the 6th and create the last three Training Videos: 10th, 11th, and 12th. The 6th (main form and drop down menus) needs redoing because I have seriously modified some forms since I recorded that video in December of 2009. The last 3 training videos are for naval movement, naval combat, and production/politics. Historical Video, Music, and Sound Effects I now have all the files I need as WAV files. What’s needed is for me to insert calls into the sequence of play to activate these glitz elements. Marketing Nothing new. // **************************************************************************** // For determining supply, the following sequence of tasks is performed: // // Primary Supply Sources. // // 1 - Identify fixed primary supply sources for each major power and all minor // countries that are at war. Primary supply sources are cities in the home // country. The country cannot be conquered and the city has to have been // controlled for the entire turn. All Commonwealth member nations are // equivalent in providing primary supply sources for the Commonwealth. // 2 - Add to the list of fixed primary supply sources identified in #1, the // primary supply sources from major powers with which a country cooperates. // 3 - Identify mobile primary supply sources for each major power and all minor // countries at war. These are either: (1) an HQ on which a Supply Point // has been expended this turn, or (2) an HQ which has been used to provide // Emergency Supply this impulse. An HQ providing Emergeny Supply has slots // which identify the units being so supplied. The number of slots equals // the HQ's reorganization number (maximum of 5). For an HQ to serve as a // primary supply source for a country, the HQ has to cooperate with the // given country. // // Secondary Supply Sources. // // 4 - Identify fixed secondary supply sources for each major power and minor // country. For a major power these are either: // (1) the capital of a controlled/aligned minor country or // (2) the capital of a conquered country (major or minor). // For a minor country, only cities in (2) are secondary supply sources. // Since both (1) and (2) are cities, the city has to have been controlled // for the entire turn. // 5 - Identify mobile secondary supply sources for each major power and all // minor countries that are at war. These are simply HQs that are on land. // For an HQ to serve as a secondary supply source for a country, the HQ has // to cooperate with the given country. // // Railway Paths from Secondary Supply Sources to Primary Supply Sources. // // A - These paths are Railway Paths regardless of whether a rail link is used // or not. // B - The shortest path is taken, without using an overseas link if possible. // This permits the use of the single overseas link to be preserved for use // by another link. // // 6 - Find the shortest path from each fixed secondary supply source to a fixed // primary supply source. For a primary to supply a secondary, the owner of // the primary has to be the major power that aligned or conquered the // secondary. // 7 - Find the shortest path from each fixed secondary supply source still out // of supply to a mobile primary supply source. For a primary to supply a // secondary, the owner of the primary has to be the major power that // aligned or conquered the secondary. // 8 - Find a path from each mobile secondary supply source to the closest fixed // primary supply source. For a primary to supply a secondary, the owner of // the primary has to be a major power with which the secondary cooperates. // 9 - Find a path from each mobile secondary supply source still out of supply // to the closest mobile primary supply source. For a primary to supply a // secondary, the owner of the primary has to be a major power with which // the secondary cooperates. // // Basic Paths from Tertiary Supply Sources to Secondary or other Tertiary // Supply Sources. // // C - A tertiary supply source is a secondary that cannot establish a Railway // Path to a primary supply source. // // 10 - If there is no secondary supply source for a major power, then there are // no tertiary sources either. For all tertiary supply sources that are out // of supply, find a Basic Path to a secondary or tertiary that is in // supply. Repeat this until all tertiary supply sources are in supply or // until the previous pass through this routine caused no new additions to // the list of in-supply tertiary supply sources. // // Basic Paths from units to Primary, Secondary, or Tertiary Supply Sources // // 11 - Find the shortest path for all non-HQ units on land to a primary, // secondary or tertiary supply source. To be a valid supply source for a // unit, the source must be controlled by a country with which the unit // cooperates. Some units do not need supply: Forts, Partisans, Synthetic // Oil Plants, Supply Units, and Oil and Build Points. If a path can not // be found of any length, the unit is isolated. If a path exists but is // too long, the unit is out of supply. // **************************************************************************** The following variables are for each major power and each minor country that has units on the map. // **************************************************************************** // Variables for supply links, connections, and paths. Since these are primary // sources, they are always valid supply sources. // // Entries in any Coop list only provide supply for SubC. // For minor countries these are the supply sources directly controlled by their // controlling major power. For instance, German primary supply sources, HQs, // and the capitals of conquered countries can provide supply any minor country // aligned to Germany. Note that many supply sources that are available to // Germany are not available to Germany's aligned minor countries. For // instance, the capitals of aligned minor countries do not provide supply to // other aligned minor countries. Similarly, secondary suply sources for // cooperative major powers do not provide supply to any of the minor countries // aligned to Germany. // // For major powers Coop entries can include supply sources from cooperative // major powers and from aligned minors. Although in the latter case only HQs // and capital cities provide supply, and then it is secondary supply. // **************************************************************************** PriSupCities: TSupplySourcesList; PriSupHomeCities: TSupplySourcesList; // For conquered territorials. PriSupHQsTurn: TSupplySourcesList; PriSupHQsImpulse: TSupplySourcesList; PriSupAlignHQsTurn: TSupplySourcesList; PriSupAlignHQsImpulse: TSupplySourcesList; PriSupCoopCities: TSupplySourcesList; PriSupCoopHQsTurn: TSupplySourcesList; PriSupCoopHQsImpulse: TSupplySourcesList; // **************************************************************************** // The secondary sources with All at the end are all possible secondary sources. // **************************************************************************** SecSupCitiesAll: TSupplySourcesList; SecSupHQsAll: TSupplySourcesList; SecSupCitiesAlignAll: TSupplySourcesList; SecSupHQsAlignAll: TSupplySourcesList; SecSupCitiesCoopAll: TSupplySourcesList; SecSupHQsCoopAll: TSupplySourcesList; // **************************************************************************** // These secondary and tertiary variables have valid supply connections back to // a primary supply source. Both secondary and tertiary are subsets of the // secondary supply sources listed immediately above. The difference between a // secondary and a tertiary supply source is that only the former can trace a // rail path to a primary supply source. // **************************************************************************** SecSupCities: TSupplySourcesList; // Active lists are subsets. SecSupHQs: TSupplySourcesList; SecSupCitiesAlign: TSupplySourcesList; SecSupHQsAlign: TSupplySourcesList; SecSupCitiesCoop: TSupplySourcesList; SecSupHQsCoop: TSupplySourcesList; TerSupCities: TSupplySourcesList; TerSupHQs: TSupplySourcesList; TerSupCitiesAlign: TSupplySourcesList; TerSupHQsAlign: TSupplySourcesList; TerSupCitiesCoop: TSupplySourcesList; TerSupHQsCoop: TSupplySourcesList; OOSUnits: TUnitStack;
_____________________________
Steve Perfection is an elusive goal.
|