|
Post by zaimoni on Dec 21, 2023 3:28:55 GMT
Technical heads up for other developers: I just eliminated the Data.ActorSheet class from RS Revived. (Per commit log, I moved the SkillTable to the Actor class, and all other fields to the ActorModel class (which does not reach hard drive).)
I had also introduced Data.Model.MapObject a week or so back (i.e., a model object for MapObjects). That isn't quite complete yet: the enum for map object id types still needs de-duplication, as of this time.
|
|
|
Post by zaimoni on Dec 7, 2023 4:59:49 GMT
Ok...heads up regarding gameplay changes for RS Revived: - I have re-specified RS Revived's rapid fire to be more like a snap shot or fanning a pistol, rather than a 2-round burst. No more "firing at nothing". Think further UI and AI changes are useful.
- Trunk's combat helper is currently unreliable (downstream of changes that prevent being double-moved by z when wearing CHAR armor, that are also needed for motorcycles.)
- I want to re-introduce proper burst fire as a new mode, used by army rifles and machine pistols. I also did some data design regarding shotguns, but I don't know how the AI would cope with the revised fire arc.
|
|
|
Post by zaimoni on Dec 1, 2023 18:08:54 GMT
RS Revived trunk is now on .NET 8.0 (two-line change, much easier to go from .NET 7.0 to .NET 8.0 than usual).
Note that the Rogue Survivor family are Windows Forms programs. That's why System.RunTime.Serialization.BinaryFormatter is still working (only WinForms and WPF have working binary serialization on .NET 8.0, other targets are intentionally broken with no override by Microsoft).
|
|
|
Post by zaimoni on Aug 22, 2023 19:47:12 GMT
Note that RS Revived profiles as 12% of CPU in the GDI function that draws images to screen. Switching away from GDI to "anything" should be a fairly easy win.
|
|
|
Post by zaimoni on Jun 1, 2023 5:22:14 GMT
New edge build released. I'm considering some invasive changes: - I don't feel good about livings being double-moved by slower zombies.
- I still want motorcycles. And helicopters. Data design for these is awful.
- Some of the inventory changes I'm considering, motivate removing Classic mode (the only mode without corpses; World War Z is Classic with corpses).
|
|
|
Post by zaimoni on May 6, 2023 1:52:49 GMT
If something "went wrong", it'll likely do so when the bikers try to invade. Biker invasions are world-ending. The latest edge build (released Cinco de Mayo, May 5th, "Day of the Dead") is far more stable. This edge build also has the new stance crouching. This stance is "automatic", and exists solely to make ground inventories mostly usable at range 1. (The PC-only Unload command for ranged weapons, still requires actually standing on the ground inventory to use against a gun on the ground. Yes, this is an AI bug -- just hard to specify its fix.) EDIT Test game backing this edge build is up to Day 6 Hour 16.
|
|
|
Post by zaimoni on Apr 23, 2023 14:10:00 GMT
Yes. I went ahead and redid the invite link post in Off-Topic, to make it clear that the sub-Discord is still "current".
|
|
|
Post by zaimoni on Dec 13, 2022 4:18:08 GMT
Jess I ran a longish game but never came across any discarded sprays that were empty, only ever partially used ones. There's code to delete empty spray cans and scent sprays when dropped by the player and NPCs. Are you certain you saw empty ones? I had to counter-fix RS Revived to apply the same destruction test when outright killed, as when dropping. Idea | Pros | Cons | Delete certain random stuff at the start of each new day | Simplest to implement | Might delete stuff that a player has deliberately left there | Delete stuff that's been untouched for X amount of time | Less likely to affect the player's stash | CPU overhead not worth it? How to differentiate between spawned and dropped items? | Give the player a "destroy item" option | Least impactful method | The player isn't a cleaning maid. Who would want to sit there and tidy up for ages | Don't drop an item if there's already too many of those sitting around | Might be ok for unpopular items, like spray cans and planks | Not fun for the player if they miss out on something they needed/expected |
RS Revived has implemented a "crush weak melee weapon to make space" option. It doesn't fix all cases of "crushed important items at bottom of stack", but mitigates things enough that I find the results tolerable. Indestructible items will not be crushed.
|
|
|
Post by zaimoni on Dec 10, 2022 17:27:36 GMT
... i know there's a "Those guys" gps, but its batteries are drained really fast when enabled and cant be recharged.... Right: if your fortress doesn't have an accessible generator, nothing battery-powered is going to be recharged. (I do not consider the hospital generators "accessible": ~10 hour round trip to use.)
|
|
|
Post by zaimoni on Nov 14, 2022 3:33:41 GMT
My current reference game for RS Revived has a file size of 25MB at turn 0; about 4 seconds to save, 90 seconds to load. (This is due to the police tourism and threat tracking database maintained by their pre-apocalypse radios.) JSON should be at least 100MB. I really don't have any good options (I parked the hand-rolled replacement subproject May 2022(?) when it became obvious that Dictionary<string, object> had to be handled.) Testing a save/load corruption issue involving inventory found that the System.Runtime.Serialization code is highly inefficient. (it calls custom serializers once *for each reference* to an object, not just once. That means thousands of redundant calls which theoretically slows down saving dramatically.)
RS Revived did not have any major issues just from upgrading framework versions (I was able to go all the way up to 4.7.x from 3.5.x without issue). Going to .NET 5 from Framework 4.7.x was painful (bad documentation...instructions for converting to *.csproj were flaky, I needed a full calendar day to repair the instructions enough to get a working build). That's when my source code picked up a local copy of the Microsoft RNG -- they made it non-serializable for .NET 5 for no objective reason. .NET 5 to .NET 6 was maybe an hour, again due to undocumented breakage in the build system. (It also gave a 20% CPU reduction per-turn without any source code changes whatsoever....shouldn't be observable for other forks/variants.)
The biggest technical advantage when upgrading was C# 8: having static member variables available for interfaces, means you can have "almost singletons".
|
|
|
Post by zaimoni on Nov 11, 2022 22:41:58 GMT
I cut a checkpoint two days ago, immediately before attempting upgrade to .NET 7. It is not properly tested (the last tested binaries are the edge binaries for the prior release). If something "went wrong", it'll likely do so when the bikers try to invade. Note the unbreak-build diff: github.com/zaimoni/RSRevived/commit/5630b59974723957c48f666a593238b39cd6beb1 . Yes, I am having to instruct the build system that using System.Runtime.Serialization is not a compiler error. Outright replacing it is becoming "urgent" again, not just "important". MP : it appears that the earliest .NET that could be considered for the (bloated) JSON savefile format is .NET 7: the JsonPolymorphic attribute is needed to avoid problems with the MapObject and ActorController class hierarchies. (Need to see whether proper handling of reference cycles is in, now -- that would still be a show-stopper.)
|
|
|
Post by zaimoni on Sept 22, 2022 3:26:26 GMT
I cut a checkpoint a few days ago, to lock in some crash fixes before starting on savefile-breaking changes (to try to give the C# JIT a leg up). I expect there to be a drop-dead release when .NET 7/C# 11 is released. I don't want to commit to what the next iteration will be pushing for, at this point -- depends on what turns out to be "easy from where the game is at". New content (either from Staying Alive, or specific to the encircling highway zoning) will be after fundamental design. (The data design for even motorcycles proved to be awful. If they land on this iteration, they will be PC-only because the AI simply will not be able to cope with how radically different the movement options are.)
|
|
|
Post by zaimoni on Aug 27, 2022 16:03:23 GMT
I can see it being abused by players who want to manuever a neutral into a trap for example. But I assume this could be solved by allowing the AI to "resist" the swap in such cases. RS Revived allows NPCs to swap with non-hostile NPCs, with mutual consent (that is, if the swap helps the other NPC gets where he wants to go). The PC/NPC version is not built out. This mainly addresses what had been truly awful traffic jams in CHAR Offices on Day 0/Day 1.
|
|
|
Post by zaimoni on Aug 25, 2022 17:35:38 GMT
HMM...making the NPC hostile by attacking him/her in melee (Break vertically) isn't great.
My variant has several AI changes to mitigate this (some non-cheating like "don't sleep on vertical exits", others cheating like "move off a vertical exit whose destination has an NPC, etc.")
|
|
|
Post by zaimoni on May 28, 2022 1:24:35 GMT
Trunk is currently not-crashing I got the .NET 5.0 conversion wrong -- do not copy-paste the example that throws on cancellation, just return. You won't see the player-dead screen otherwise. CPU/turn is holding at ~10 seconds/turn worst-case (test game ended at Day 16 Hour 21). This is with the encircling highway and the re-positioned refugee entry methods, but no changes to other living event types. I need to make some judgment calls regarding how much UI cleanup is to be done; release needs to be cut before trying anything radical, like gas stations from Staying Alive.
|
|