Shannon V. OKeets
From: Honolulu, Hawaii
It was a rhetorical question.......
Not fair to say nothing has changed - although admittedly you can be forgiven for thinking that is the case. Rest assured, there is plenty of work going on under the surface - keep the faith. In Steve we trust
It must be very well hidden
ORIGINAL: Shannon V. OKeets
May 2, 2010 Status Report for Matrix Games’ MWIF Forum
I released versions 4.01.01, 4.01.02, 4.01.03, 4.01.04 and 4.01.05 to the beta testers this month. They got a new version about every 4 days at the beginning of the month but that paced slacked off once I started working on the rewrite of the supply routines.
ORIGINAL: Shannon V. OKeets
May 1, 2013 Status Report for Matrix Games’ MWIF Forum
In April I released 3 new versions to the beta testers: 10.03.00 (12 fixes), 10.03.01 (8 fixes), and 10.03.03 (8 fixes). The last of those was on April 14th. I have 20 fixes done for version 10.03.04, which is waiting for me to finish supply. Both the number of new versions and fixes (48) are dramatically below my averages. What can I say, debugging supply takes a lot of my time and effort.
CWIF handled supply by calculating supply for all units on the map whenever it was possible that the supply status of a unit might have changed. There were some flaws in precision of the supply calculations, but nothing major. If you wanted to know from where a unit was getting supply, then there was a popup menu item that let you do that. The feedback to the player was a list of hex coordinates, which traced the path from the unit to the ultimate supply source. But it was very difficult to understand what the list of coordinates was telling you.
For MWIF I wanted to made the supply calculations absolutely accurate, so I started from scratch. I considered simply trying to correct the CWIF supply code, but it used recursive calls and had no documentation whatsoever, so I eventually ruled that out. Getting the rules straight was non-trivial, it took many experienced WIF players to determine exactly what supply sources and paths could be used by each secondary supply source and unit. I would guess that fewer than half of the WIF over-the-board players fully understand the rules on supply. Based on some of the discussions in this forum the sad news is that some of them play major supply rules wrong.
Then there was the question of feedback to the player. I want players who are new to WIF to be able to understand supply. Rather than just show "these units are in supply" and "these units are not", I believe it is important to define all the possible supply sources, which ones are currently valid and which ones can not currently be used (e.g., an HQ which is too far from a rail line because of bad weather). In addition, I wanted to display all the out-of-supply units in a list for each major power and minor country. That way a player could know which units he needed to get back in supply (or might want to attack).
So, my first pass on rewriting supply was to define data structures to hold all the information necessary for reporting on supply to the player. Hand in hand with that was creating a new form to display the supply sources and paths. As part of that form was a check box that toggled between showing units in supply and those that were OOS. That took a lot of work - months when interspersed with correctly bugs in the sequence of play and adding other elements to the game (e.g., redesigning the production planning form, finishing code for incomplete optional rules). Eventually concern about other aspects of the game took my attention away from supply completely for a long period.
My second pass was to eliminate any existing bugs in determining supply, and getting it to execute very quickly (i.e., less than 10 seconds in very complicated game positions). All of this was calculating supply from scratch - without any existing information on supply sources or paths. I only finished with that month or so ago. What was most difficult in this pass was coding the search for tertiary supply sources, which can trace to secondary or other tertiary. The reason that was hard was that a secondary (or tertiary) can have multiple supply paths back to different primary supply sources. So, a German HQ unit might be useable by the Italians to trace back to Italy and useable by the Rumanians to trace back to Rumania. Throw in the possibility of overseas supply and a linked list of tertiary supply sources and you can see that things get complex. Right now I have allocated memory for each secondary/tertiary supply source having up to 26 supply paths.
I'm coming to a close on my third pass, which is to recalculating supply using the information previously gathered. The goal here is to make recalculating supply take less than 1/10 of a second. To do that I've written code to determine if supply has changed (usually due to a unit moving, but sometimes because of a massive change in the game like the weather or a DOW). Why not just rerun a full supply calculation like CWIF did? Because to do so every time you move a unit would quickly become annoying beyond belief, even if it only took the program 1 second to accomplish that: move a unit - pause - move a unit - pause - ...
As part of recalculating supply I am also maintaining tables of which supply sources are being used by which units. Plus all the stuff about OOS units. The benefit of all this data is that you can pop up the display supply sources and paths form whenever you want to see which units are tracing supply overseas and through which sea areas. There is a ton if information on supply at the player's fingertips.
But getting the code to execute the rules perfectly and to keep even the newest WIF player well informed concerning supply comes at a cost: the time and effort it takes for me to write and debug the code.
So, in a sense you are right: the progress in completing MWIF is well hidden. A player clicks on a land unit to pick it up and then clicks on a destination hex. The tens of thousands of lines of code that are executed to make sure the move is legal and transform the game state to reflect the changes caused by moving the unit are never seen by the player. What does he care? The game either works or not. If it doesn't, it's a worthless. Personally I feel that way about my car and the faucet in my sink. And so it goes.
Perfection is an elusive goal.