|
Post by zaimoni on May 25, 2017 3:53:31 GMT
REVIVED 0.9.9 CHANGES ------------------ * keypress buffer of size one implemented. Only the last keypress survives. * new command line option --socrates-daimon. Enables cheat commands; cf the RS Revived Manual. * new command line option --PC. Cf. the RS Revived manual for details. * Savefile format has been broken * Vintage games no longer overwrite options that are forced (the forcing is handled elsewhere) * PC zombies are on the same skill upgrade options as NPCs. * hours until needing to sleep is correctly reported (will not jump around at sunrise/sunset) * Waiting now guarantees maximum realistic energy rating on the next turn. * You may stop running even if too tired to run.
AI overhaul includes but is not limited to * Followers should have far less difficulty finding their leader now. * The police are learning what organized force means. ** They now can sweep the districts (cheating eidetic memory, but mostly not using the exact location of unsighted z). This includes limited cross-map pathfinding, but it does account for non-vintage mode sewers being unclearable. *** CHAR building codes have requirements on the police accessibility of residential basements. You plausibly have three to four game hours to get any survivalist grenades before the police do. **** There were RNG side effects. If you use a seed from 0.9.8 ***** The overall map layout is the same. ***** All items should be where they were. Random quantities are expected to be different. ***** A noticeable minority of livings will have different name/gender. ***** The type of z of the day-zero cold start are completely inconsistent. Positions are consistent. ** If you have an active police radio, the chatter may be informative. ** Threat tracking and newly interesting locations to see have transparent overlays for police. The minimap also reports on these, with inconsistent color coding to the overlays.
The next planned version is 0.10.0. The planned massively breaking changes to configuration files mean I have to reset the patchlevel.
This release was called based on availability of testing time.
|
|
|
Post by zaimoni on May 25, 2017 5:21:39 GMT
Current change plans, subject to revision based on discussion: * Start: slow technical code cleanup that doesn't change file format, to give time for bug reports to land before radical changes land. * Name generation: both new names, and reclassifying names, is on the table. We have several instances where the women's spelling sounds the same as the men's spelling, and is assigned to men. * Actors.CSV: the stamina column will be revised out. This particular statistic should be space-time scaled; the current unconditional 60 stamina for all livings is 30 time ticks of stamina regeneration. I need this hardcoded so it automatically does the right thing when TURNS_PER_HOUR (the fundamental space-time scale parameter) is adjusted. * Actors.CSV: reduce the entries to those exemplars required to construct the others. It's the simplest way to introduce a policewoman model (to complete the bluffing being a cop mechanic). * Remove the Wait command. It's a death trap, and doesn't play nice with multiple player characters. * More reasonable survivalist basement stockpiles. * Police station layout adjustments.
Then we hit the high-risk subproject: taking down the peace walls. 1) Universally existing exits for both ground level and sewers levels; the absence of an exit is equivalent to it being blocked i.e. no more surprise losing turns when changing districts. This may happen late enough to not radically alter level generation, but given how many unexpected side effects I've hit with level generation I wouldn't count on that. The peace walls aren't gone, but they're porous. 2) Enabling cross-district pathfinding. This is technically simple (the heavy lift was cross-map pathfinding), but is likely to expose bugs. It also triggers massive CivilianAI revisions (e.g., livings now can change districts to get food, rearm, etc.) 3) Optionally, outright take down the peacewalls i.e. enable line of sight/line of fire across the district boundaries. This may be impossible to do with a reasonable ETA, and can only be attempted because I'm using proper source code control. Success triggers another round of CivilianAI revisions.
After completing #2 and rejecting or completing #3, I can consider thematic adjustments.
E.g., a new difficulty option may be provided, stating the general politics of the city before the z apocalypse in U.S. terms: RED CITY,RED STATE (default): No changes; game will be balanced around this. The law is so far from world standards that those gun shops are registered, legal businesses and general stores are allowed to stock firearms, etc. Pre-apocalypse, civilians can be licensed to conceal-carry firearms (and this is implied by starting with the Firearms skill).
The nearest real-world analogs, outside of the named cities/states in the U.S.: Yemen. No other nation has Internet-documentable legal gun shops as of 2013 (when I last checked).
Extra names stereotypical for this difficulty option will be considered for revising in.
BLUE CITY,RED STATE: Changes from RED CITY, RED STATE: Gun shops won't be found near the police station (two district radius: police station in C2 allows in A0/A4/E0/E4 in a 5x5 district game, but no others). General stores can still have ammo, but not ranged weapons.
RED CITY, BLUE STATE: Changes from RED CITY, RED STATE: Gun shops won't be found near the police station, one district radius: police station in C2 disallows in B1/C1/D1/B2/C2/D2/B3/C3/D3. General stores can still have ammo, but not ranged weapons. Pre-apocalypse, civilians cannot be licensed to conceal-carry firearms; residences will not spawn with pistols, but still can spawn with rifles or shotguns. Survivalist caches are not affected.
EUROPE: Changes from RED CITY, RED STATE: Gun stores banned (none in the city). General stores will not have either ranged weapons or ammo. Pre-apocalypse, civilians cannot be licensed to own firearms; residences will not spawn with either ranged weapons or ammunition. Survivalist caches are not affected, again.
|
|
|
Post by zaimoni on May 27, 2017 3:56:47 GMT
REVIVED 0.9.9.1 CHANGES ------------------ * CivilianAI/GangAI no longer hoard canned food * hard crash in release-mode melee behavior fixed * going to bed had pathing difficulties. Estimates of the cleanest fix behind developer-untestable performance issues, reported on Bay12 and Reddit, are not in yet.
|
|
|
Post by zaimoni on May 28, 2017 21:53:51 GMT
REVIVED 0.9.9.2 CHANGES ------------------ * Self-defense when killing a cop, or a follower of a cop, will not prevent murder charges.
|
|
|
Post by zaimoni on May 31, 2017 17:20:46 GMT
REVIVED 0.9.9.3 CHANGES ------------------ * hard crash in release mode fixed
|
|
|
Post by zaimoni on Jun 6, 2017 14:14:27 GMT
Work schedule flare forecast for at least 3 weeks; no way I will be able to schedule extended regression testing or get the R&D for the police station re-layout done until that's over. Unclear whether taking down peace walls is grindable. (It certainly will not speed anything up, due to having to tolerate formerly invalid map coordinates for ground level and sewers).
|
|
|
Post by ckraniak on Jul 2, 2017 18:23:16 GMT
My fluent languages are : C++ (first one, have been using on-and-off since 1986), Perl (using since 2000). Thoughts on Perl6? I've been reading up on it (seems to have finally come out) and it sounds cool, I just need to find a project for it. Also lots of respect for your perseverance.
|
|
|
Post by zaimoni on Jul 3, 2017 0:23:00 GMT
Perl 6 ... finally. Installed. It was cool and had a sketchy alpha implementation in 2002. I'd prefer not to have a strong opinion without actually trying it out, but "just from the keywords" I'd say it's a strong contender for one of C#'s niches (data-flow driven event programming). And, knowing the devteam, it should have Perl's awesome upward compatibility i.e. runs almost all core Perl 5 code unchanged The modules situation would be expected to be problematic. I don't see recommending any sort of upgrade to Perl 6 to my boss anytime soon.
|
|
|
Post by ckraniak on Jul 3, 2017 18:29:32 GMT
Looking at RogueGame.cs I think one ought to be able to cut it down to like 3-5k loc by moving huge chunks of that hard coded game data into files / arrays stored elsewhere.
Maybe consolidate the drawing code? I think I remember seeing that in 3 different places.
|
|
|
Post by zaimoni on Jul 5, 2017 15:58:14 GMT
Perl 6: took a closer look...intentional syntax breakage (justifiable) regarding function prototypes and dereferencing. No other syntax-breaking changes documented.
RogueGame.cs: Yes, but I don't personally feel problems just from "large file size". (Z.C++'s CSupport.cpp is ~16340 lines of code+comments).
RogueGame.cs is "fundamentally large" because the RogueGame class is the only file that actually creates in-game messages; anytime anything else needs to trigger an in-game message has to access the moral singleton RogueGame object. Other than that, it's not actually trying to be a god object. I'm intentionally avoiding maintaining the player orders to NPCs code because that is up for 100% ditch-and-replace (any order the player can give, the AI should be able to give...right now AI never gives orders to AI.)
The drawing code is up for massive restructuring anyway. Profiling says merely drawing the screen is taking ~1 second, so I'm looking at a build time option of using the Windows.System.Media API rather than the GDI+ API (they have incompatible classes for preloading images). That won't happen until taking down the peace walls has either succeeded or failed; that's an AI buildout blocker. (It makes a huge difference whether AI can cross district boundaries or not; completely different heuristics are indicated for things like searching for food/ammo, etc).
If I get a good change plan on how to restructure the police station, that takes priority. I need to restructure the police station so that when the normal prisoners flee for the surface, they won't look stupid for ignoring the police armory on the way out. The other changes that are useful are mechanical adjustments, but the named objective is a show-stopper: it has to be possible for the PC to get at the armory, but not the released prisoners.
|
|
|
Post by ckraniak on Jul 5, 2017 19:48:34 GMT
It's less the file size and more that there were lots of switch cases and such I thought could be consolidated into indexing into arrays built elsewhere. Plus the file is about half data and half code. Well maybe not that bad, but still, my point is I think some reorganizing could get it way smaller.
I did take a look at the AI code and I think I will need a solid week of reading that to understand it well enough to comment. Now I will have to do that at some point just for my own ambitions but that is still a lot to digest.
Police station: a key in a nearby chest that the AI does not value picking up? (Plus adding some text to steer players into figuring out how to get in without a wiki.) That superficially sounds easier that restructuring the station layout.
What I need to do is sit at a hotspot somewhere with my laptop and clone this and mess around. And install VC#.
|
|
|
Post by zaimoni on Jul 5, 2017 21:18:36 GMT
Right, static analyzer doesn't like those switch statements either. (Last attempts to use the static analyzer that ships with System.Diagnostics.Contracts crashed Visual Code to desktop after about 8 hours from RAM shortage. Interrupting the static analysis is responsive only for the first 15 minutes or so).
Yes, considered the key option (that is how the subway station worker ID is implemented). Ensuring that it's not overlooked is tutorial-like behavior (but this particular hint should be unavoidable!)
Objectives are: 1) allow the PC and police into the armory (0.9.9 and higher have police restocking from the police armory after clearing that district on day zero). Final decision regarding civilian police followers hasn't been made yet; legacy AI has them following their leader but I can see other options being defensible. Whatever the key is, the police all have it. 2) Ideally, the PC should be blocked from entering the jails without adequate means for handling the MacGuffin. 3) When the normal prisoners make a break for it, they should ignore the armory (easy) and not look stupid for ignoring the armory (hard, that's either layout change or key).
I'm then clear to install a second power generator in the police station (that is much easier to get to, and does the usual light levels rather than operate the gates) and micro-optimize the armory layout.
|
|
|
Post by zaimoni on Jul 15, 2017 15:57:58 GMT
Finally, technically ready to test cross-district visibility/targeting but no responsibly scheduled time to playtest. (Pushing cars/shoving actors won't work just yet. If the define NO_PEACE_WALLS is turned on, everything else "should just work" i.e. it's ready for big bang integration testing.)
Thus, there should be time to work on code cleanup, etc.
|
|
|
Post by zaimoni on Jul 21, 2017 6:04:32 GMT
It's less the file size and more that there were lots of switch cases and such I thought could be consolidated into indexing into arrays built elsewhere. Enumerable's Concat, combined with refactoring the full-screen menus into a central function family RogueGame::ChoiceMenu taking function pointers as parameters, was worth ~700 lines of code there. Turns out the design width/height of the screen when simulating a text console, is 120 characters by 51 lines.
|
|
|
Post by ckraniak on Jul 23, 2017 3:48:15 GMT
700 sounds good. I need to take a look again. Sorry, I haven't been around internet recently except on my phone (which apparently likes to freeze on 5kloc files) and work (which blocks proboard and I would rather not have gamedev logged by IT) and this past week has been health issues.
|
|