SOAT update #93
gremlinn, on host 24.12.63.38
Friday, February 15, 2019, at 21:40:29
SOAT update #92 posted by gremlinn on Thursday, September 1, 2016, at 22:08:44:
Today marks 18 years since I started coding SOAT. That's right, SOAT can now register to VOAT! There are some adults in the U.S. who hadn't even been born when the game's introductory scene and first few conversations with NPCs had been typed out. It would have of course been better had I not taken a lot of long gaps between periods of working on the game, especially in the last decade, but that's how things go sometimes.
Latest numbers: 17533277 bytes over 1582 text files. Again, not a great rate of progress since last time, but this time I really do want to get on a roll - starting this weekend! - especially since I may have a nearer-term target of making a third "preview" edition of the game available. If so, it would again be a complete section of the game from the start, but extending much further than the currently available preview. It feels like I might be able to finish by summer if I can keep up the pace, but no promises.
Highlights since the last update: (1) in April 2017, I wrote some functionality in Mathematica (no particular reason other than it being my currently most-familiar programming environment) to allow me to analyze the possible courses of action that can be taken in a number of combat scenes in the game. Unlike most Smash combat sequences, where you just have to navigate a "maze" of possible states and perhaps trigger a few specific actions, a few in SOAT will feature standard RPG-type fare such as hit points, availability of different weapons/armor, and a few special actions. Because winning will require reducing your opponents HP to 0 before yours, it can be difficult to determine by hand what the optimal sequence of moves for completing a fight is, or even for which combination of starting HP, weapons, and armor it's possible to win. So I wrote some code which lets you input a battle's information (conceptualized the form of a flowchart with boxes representing "states" differing by game description, along with arrows representing effects of different actions) and that explores the effect of any arbitrary sequence of moves. At each step, it keeps track of "possibly optimal" combinations of your/opponent's HP that can be achieved at any state, and if a state is reached that has you with fewer or equal HP, and the opponent with more or equal HP, in comparison to a "possibly optimal" sequence, the new sequence can be pruned out. I wasn't sure whether keeping track of everything would be combinatorially explosive, but it turned out to be quite manageable. By this time, I had only written two such fight scenes (years ago) so it was good to be able to verify computationally that the optimal sequences of moves I had determined (manually, by trying to prune out what *looked* like inefficient loops through the state space) were indeed optimal. This will be important in particular because, as people who have played far enough in Preview #2 know, there is a way to effectively skip certain types of puzzles at the cost of forfeiting any points. To allow this "skip" functionality, I need to be able to determine at the start of a fight whether the player could theoretically win with the values of his maximum HP, weapon/armor sets, and other available actions, and only allow the "skip" to proceed if so. All of this went pretty smoothly; most of it was done within a single day.
(2) played through the game twice more, adding extra scenes, puzzles, and locations here and there, and checking off various "to-do" items when I reached them.
(3) took a "break" to make a more up-to-date "walkthrough" of the game as it stands so far (in conjunction with the second of the two playthroughs mentioned above); that took about a month and ended up being 1.2 MB.
(4) started consolidating "to-do" items from various text files, flow charts, and spreadsheets into a single spreadsheet tab to make things easier to keep track of (currently 1528 open items, but there are probably still a good number of things I haven't collected there yet from more obscure notes).
Moving forward, in the interests of getting the next preview version ready relatively soon, I'm planning on putting off further development of the late-game gaps and instead only polishing the parts that come before the preview ending point, along with the (relatively) fewer number of gaps before that point.
A lot of the polish will be adding more NPC conversations. Recently I decided that there will be two tiers of this, one in which your character will directly interact with NPCs, asking them specific questions (most of the dialogue in the game is of this type already, with options representing different lines of questioning), and another which will be more like traditional console RPG NPC interaction, where you'll basically just hear what the NPC is thinking, without any dialogue from your own character. This form might be reserved mainly for the heavily populated areas of the game, where instead of an option to specifically talk with someone, you'll be able to, say, eavesdrop on the local gossip.
(There's actually a third type of NPC conversation, I just realized - discussions you can have with NPCs that are currently following you, which was already implemented for three NPCs in the existing Preview version. These conversations fit more closely with the second pattern in that you just cycle through applicable snippets of conversation relevant to the current area/situation without choosing explicitly from lines of questioning.)
> > 37 locations, 319150 bytes (8625 per location) [2001/03/25] > 54 loc, 438797 bytes (8126 pl) [2001/04/08] > 80 loc, 573649 bytes (7171 pl) [2001/04/30] > 95 loc, 794677 bytes (8365 pl) [2001/05/21] > 115 loc, 949191 bytes (8253 pl) [2001/06/06] > 132 loc, 1105293 bytes (8373 pl) [2001/06/15] * > 145 loc, 1259378 bytes (8685 pl) [2001/06/25] > 152 loc, 1470894 bytes (9677 pl) [2001/07/08] > 155 loc, 1598537 bytes (10313 pl) [2001/07/23] > 158 loc, 1746880 bytes (11056 pl) [2001/08/14] > 166 loc, 1809922 bytes (10903 pl) [2001/09/25] > 179 loc, 2018080 bytes (11274 pl) [2001/10/18] > 209 loc, 2188235 bytes (10470 pl) [2001/11/08] > 220 loc, 2316166 bytes (10528 pl) [2001/11/30] > 285 loc, 2605419 bytes (9141 pl) [2001/12/19] > 296 loc, 2794886 bytes (9442 pl) [2002/01/27] > 301 loc, 2891546 bytes (9606 pl) [2002/02/04] > 304 loc, 3038874 bytes (9996 pl) [2002/02/15] > 309 loc, 3146158 bytes (10181 pl) [2002/02/23] > 311 loc, 3267399 bytes (10506 pl) [2002/03/09] > 311 loc, 3449854 bytes (11092 pl) [2002/03/23] > 318 loc, 3714958 bytes (11682 pl) [2002/04/06] > 330 loc, 3987346 bytes (12082 pl) [2002/05/01] > 412 loc, 5290126 bytes (12840 pl) [2002/06/25] > 417 loc, 5534723 bytes (13272 pl) [2002/07/20] > 445 loc, 5951946 bytes (13375 pl) [2002/09/04] > 451 loc, 6181927 bytes (13707 pl) [2002/10/08] > 451 loc, 6337773 bytes (14052 pl) [2002/11/04] > 454 loc, 6602028 bytes (14541 pl) [2002/12/01] > 456 loc, 6877294 bytes (15081 pl) [2003/02/15] > 459 loc, 6953122 bytes (15148 pl) [2003/03/01] > 460 loc, 7102484 bytes (15440 pl) [2003/04/01] > 460 loc, 7217654 bytes (15690 pl) [2003/05/01] > 463 loc, 7410958 bytes (16006 pl) [2003/06/01] > 464 loc, 7655714 bytes (16499 pl) [2003/07/01] > 464 loc, 8473865 bytes (18262 pl) [2003/08/01] > 464 loc, 8101358 bytes (17459 pl) [2003/09/01] > 464 loc, 8140964 bytes (17545 pl) [2003/10/01] > 465 loc, 8181632 bytes (17594 pl) [2003/11/01] > 486 loc, 8197166 bytes (16866 pl) [2003/12/01] > 486 loc, 8197166 bytes (16866 pl) [2004/01/01] > 485 loc, 8889647 bytes (18329 pl) [2004/02/01] ** > 490 loc, 9614464 bytes (19621 pl) [2004/04/21] > 491 loc, 9854149 bytes (20069 pl) [2004/06/13] > 10063192 bytes [2004/10/23] *** > 10177700 bytes [2004/11/20] > 10179362 bytes [2005/01/01] > 10331884 bytes [2005/01/11] > 10426354 bytes [2005/02/15] > 10503046 bytes [2005/04/01] > 10576958 bytes [2005/05/01] > 10830199 bytes [2005/06/01] > 11004821 bytes [2005/07/01] > 11109205 bytes [2005/08/01] > 11293249 bytes [2005/09/01] > 11261072 bytes [2005/10/01] > 11388432 bytes [2005/11/01] > 11542625 bytes [2005/12/01] > 11355007 bytes [2006/01/01] > 11425523 bytes [2006/02/15] > 11611039 bytes [2006/04/01] > 11640914 bytes [2006/05/01] > 11848769 bytes [2006/06/01] > 11959800 bytes [2006/07/01] > 12043809 bytes [2006/08/01] > 12287368 bytes [2006/11/16] > 12406753 bytes [2006/12/01] > 12620681 bytes [2007/01/01] > 12832810 bytes [2007/02/01] > 12920349 bytes [2007/02/15] > 13234479 bytes [2007/03/01] > 13352602 bytes [2007/04/01] > 13454855 bytes [2007/05/01] > 13660068 bytes [2007/06/01] > 13829000 bytes [2007/07/01] > 14039480 bytes [2007/08/01] > 14041915 bytes [2007/09/01] > 14204068 bytes [2007/10/01] > 14311033 bytes [2007/11/01] > 14317981 bytes [2007/12/01] > 14234894 bytes [2008/01/01] > 14274387 bytes [2008/02/01] > 14278691 bytes [2008/02/15] > 14327569 bytes [2008/03/01] > 14394075 bytes [2008/04/01] > 14989987 bytes [2009/02/15] > 15568134 bytes [2009/06/03] > 16127147 bytes [2009/12/01] > 16328078 bytes [2010/02/15] > 16609169 bytes [2014/03/08] > 16964407 bytes [2016/09/01] > > *, **, *** = change of metric for game size
|