Barren Planet: April Progress
Saturday, 7th May 2022
April was another slow month for progress on Barren Planet. But at least, last month, nothing went backwards! Most of the work was done around play-by-mail play, which has been giving me a great deal of trouble.
I reimplemented the play-by-mail functionality to the extent that it almost worked. A game would be correctly generated (without crashing) when the first turn file was received by a remote player. Then the two players could play through a whole scenario without issue.
At the end of a scenario, a problem appears, however. If, say, Nuvutech wins the scenario and then takes the first turn of the next one, Nuvutech takes two turns in a row. That means that Avuscorp will want to see two reports. But the game's data structures don't support this: there's only room for one scenario and one report in the turn and game files.
In my test game, Avuscorp was happily playing along with the first scenario and then was suddenly, without warning, presented with a briefing for the next scenario. Because Nuvutech took the first turn of the next scenario before the turn file was sent back to Avuscorp, the turn file no longer contained any information about the previous scenario: no last turn report, and no debriefing.
So, what to do? There are two options. The easier option is to make sure Avuscorp gets a turn at the end of the first scenario, the one they lost. The up side is they'll see the last turn and debriefing of the scenario they lost. The down side is that a whole turn will be dedicated to this. In a PBM game where players swap turns daily, that means a whole day will be devoted to saying "you lost" with no opportunity for Avuscorp to actually play. This is undesirable.
The alternative is to continue to allow Nuvutech to play straight through from their victory of one scenario to their first turn of the next one. This necessitates potential saving of both reports in the turn and game files: the last turn of the previous scenario and the first turn of the current one. It also means the game has to remember which scenario was played previously, so that a debriefing can be presented to the losing player. As mentioned above, the current data structures don't support this.
The latter half of April was devoted to implementing the second solution, and debugging. Internal game and turn structures were updated to support multiple reports, and this worked for human-vs-human games fine. But corruption ensued with turn files, and most of my time was spent trying to debug this issue. As before, the lack of a working debugger has hampered my efforts, although I'm not ready to give up yet.
In the worst case scenario, I will not be able to get this working, and will instead revert to the easier plan. This will result in marginally more turn swapping during play, but doesn't present the headache of juggling multiple reports.
So May will be devoted to resolving this issue one way or another. To avoid getting bogged down, I'll also try to devote some time to the easier aspects of development: the title screen and music, game sound effects and further scenario design.