Goodsol Development released Action Solitaire 1.1 yesterday.
We are the developers of Action Solitaire, and more to the point, I am the sole programmer on the project. This new version is, ostensibly, just an update that adds 18 new games, for a total of 52 (a very nice number for card games). There are no changes to the artwork or major functionality within the game, and the only marketing change was actually the removal of an ineffective dialog. This is a free upgrade for all licensed users of Action Solitaire, so even the registration information did not have to change.
Internally, however, this was a major update which actually resulted in rewriting the 34 previous games to use more common code and less custom code for each game. This took a relatively long time to accomplish, compared to just starting to add games in the previously established way, and also added an element of risk, honestly. The payoff once finished, on the other hand, was the ability to add new games quickly. The resulting game code was also easier to understand and much smaller. The entire code base (excluding resources) was reduced by more than 20%, from 1.34M down to 1.05M, despite adding many new games.
The flip side of design and development is game balancing and testing, and in a game like Action Solitaire, this is a significant endeavor. Now that we can quickly add new games, we have to be able to balance them for greater enjoyment. Unlike a casual game such as Pretty Good Solitaire, where one plays each deal individually, Action Solitaire combines the results of multiple rounds, with both timing and scoring being factors in the final score. This means that games must be played to conclusion to determine the difficulty level and make balance adjustments.
For this version, we used a target of 15-20 rounds as an intended length of game for an accomplished player, so with a (roughly) average round time of 2-3 minutes, one could easily spend an hour on a single game. This is a decent playing time for a user, especially since the game design allows/encourages a break between rounds. However, when developing the product in a small team, it can prove rather inefficient. It only takes a few extra attempts at balancing the game before the testing time has exceeded development time, and this is before it ever leaves our studio en route to the beta testers. (The game actually includes code to support 78 games, but 26 variants are not displayed, at least partially for this reason.)
Now that this project has been redesigned internally, the individual game source code is more flexible for use in other ways, just as the interface code portion (not redesigned) is mostly shared with Pretty Good MahJongg. Speaking of Pretty Good MahJongg, one can expect another update of that successful product reasonably soon as well. We are definitely keeping busy.