View Issue Details
|ID||Project||Category||Date Submitted||Last Update|
|0024556||AI War 2||[All Projects] Balance Issue||Mar 14, 2021 9:45 pm||May 4, 2021 7:15 pm|
|Status||closed||Resolution||no change required|
|Product Version||Beta 2.757 Super Mega Exciting Sidebar|
|Fixed in Version|
|Summary||0024556: Dark Zenith -- Zombies become "hostile to all"|
|Description||DZ units with zombification are creating hostile-to-all zombies (including hostile to the DZ)|
This is undesirable -- these zombies should be allied to the DZ (dark alliance)
|Tags||No tags attached.|
Mar 14, 2021 9:45 pm
DZ zombies hostil to all.save (355,539 bytes)
We need to define a new zombie faction allied to the DZ, then a new code path for the zombification on-death effect to give the new zombie to the DZ-allied zombie faction.
Chris, this is wholly moddable but requires some expertise, so making it easier for minor factions to make their own friendly zombies might be a nice long term modding improvement
I wonder about this a bit...
Should zombies really be whole other factions, at least in cases like this?
I wonder if it would be possible to have a zombie flag on certain units, that overrides their color, excludes them from normal fire teams, makes them behave like whatever the zombies should do (defensive or offensive turned on, etc), and the allegiances would already all be set up.
The number of extra factions and planetfactions we could wind up with otherwise is kind of intense.
||I guess another alternative would be to have a way to override allegieances on specific units, to say "act like I belong to this other faction for allegiance purposes." That might be the most simple thing for me to code.|
||Being able to override allegiances on a per-unit basis actually opens up a ton of possibilities.|
Okay, that sounds like the most useful thing for me to do, then. It's the easiest out of the various code options (in terms of keeping it performant and having the fewest bugs). There may be some gotchas with that, but I'll look and see.
Targeting might be tough, because that filters by faction first, and then by other things.
THAT said, if just some units had special secondary flags that caused them to be extra-processed in those cases, and certain loops were re-written, I think I could make that happen.
So, I have been thinking about this and looking into this more, and I think that what I can do is basically a subset of certain things, and they will have more narrow utility, but still be very useful.
I'd like for basically certain units from factions to be able to "hate less than their wider faction," which would kind of defacto make them neutral units (immune to being shot or shooting) those new groups that they hate less. I can't make anyone hate MORE, I don't think, but this has a number of different applications and I've figured out a way I can serialize it, etc.
1. The most obvious application is this, with the zombifying. Technically what we could do with zombies in general is make it so that they normally ALL hate everyone except other zombies, and then they copy the friendlyto from their originating factions. That way, if the dark zenith create zombies, then those are friendly to them and their allies, but nobody else. If humans create zombies, they are friendly to them and their allies, but no one else. And so on.
Possibly applying that too widely (as in to humans, for instance) would make it problematic. But for minor factions, this would work really well, I think. It also would work if the AI wants to generate some zombies that hate a specific minor faction, but not the player.
2. When it comes to the waves against specific factions, and the hunter units that result, and even exo war units... right now that's all being controlled by fireteams, and I think that doesn't always work 100% of the time right now for some reason. Sometimes we're winding up with these blockades of units that will kill you if you come near, but they're just camping out for whatever faction.
What I could do with them is basically make it so that any of the normal hates of their faction are blanked out EXCEPT for the one specific faction they are actually after. Possibly I would have a second data structure for "hate only this subset" that makes this more visible, particularly if they are just hating a single faction out of the normal groups they hate.
With a tool like this, then we would absolutely never see mysterious hunter threat against the player, or hunter threat that is not actually hunter threat. I could also make an additional border color setting in the lobby that lets us control the border for these "AI thing that hate somebody who is not you."
The challenging bit of this is that, if they were considered fully allied to you, they would never take shots at you, and you could not shoot them, either. I guess I could make a relaxed version where they can still autotarget you, but they can't actually path to your planets or whatever. Aspects of this have been more complicated as I've looked into it, but there are various bits that seem broken in the game right now, so it's probably worth doing in some fashion.
The zombies case is actually the easiest one, but dealing with the hunters and what can accidentally go on there also seems relevant.
These sort of changes to Hunter would require fireteam modifications I think.
I would actually lean toward "Just define a new zombie type like anti-ai zombies", since there is a time crunch and we know this would work easily. I think you'd get more bang for your buck investing the development time elsewhere. But it's your call of course, and you might see more than I do.
For the hunter ships, aren't you already basically doing this via fireteams? I am assuming that I would just be kind of following up on them.
That said, I suppose what I could do as kind of an interim easier thing is start marking hunter ships by what their initial target faction was, so that if we start seeing anomalies that we can verify, I can deal with that in some way. The problem right now is scattered reports of random hunter ships in too great of numbers suddenly attacking players, and it seems like fire teams that got away, but frankly right now there's no way to know for sure.
Hmmm. Maybe you're right, the existing set of "This should be against a specific faction" code is good enough?
I'm just concerned that making these changes will cause churn and more bugs to chase. You've suggested some things that would be real improvements, no question, but I feel like right now short-term expediency would be preferable. If there's a cheap and simple approach (which there is) then lets just do that and let you focus on more critical stuff. Lets say your improved mechanisms would take you (say) 2 hours to implement and then generate 3 bug reports each of which takes 30 minutes to track down, test and fix. The quick and dirty approach would take 20 minutes and be bug free. I feel like where things are in the development process, the quick and dirty approach would be preferred, and then you can use that extra time on MP bugfixes or Art or something else.
If we want to track down reports of excess hunter, I suggest we add the ability to track some data on each ship in the hunter fleet like "This ship was threat on Murdoch provoked by X that then converted to hunter at time Y" or "This ship is from generic hunter income"; then when a save is reported you can look at that data (basically like the fireteam history).
All that said, if you feel like your schedule affords you time to make these changes then go for it.
||We're going to use a different approach for Sinister DZ|
|Mar 14, 2021 9:45 pm||zeusalmighty||New Issue|
|Mar 14, 2021 9:45 pm||zeusalmighty||File Added: DZ zombies hostil to all.save|
|Mar 15, 2021 2:55 am||BadgerBadger||Note Added: 0060772|
|Mar 15, 2021 2:57 am||BadgerBadger||Note Edited: 0060772||View Revisions|
|Mar 15, 2021 6:20 pm||x4000Bughunter||Note Added: 0060786|
|Mar 15, 2021 6:21 pm||x4000Bughunter||Note Added: 0060787|
|Mar 15, 2021 8:00 pm||BadgerBadger||Note Added: 0060795|
|Mar 16, 2021 11:06 am||x4000Bughunter||Note Added: 0060796|
|Mar 16, 2021 11:54 am||x4000Bughunter||Note Added: 0060798|
|Mar 16, 2021 12:59 pm||BadgerBadger||Note Added: 0060799|
|Mar 16, 2021 1:00 pm||BadgerBadger||Note Edited: 0060799||View Revisions|
|Mar 16, 2021 2:15 pm||x4000Bughunter||Note Added: 0060800|
|Mar 16, 2021 3:12 pm||BadgerBadger||Note Added: 0060801|
|Mar 16, 2021 3:15 pm||BadgerBadger||Note Edited: 0060801||View Revisions|
|Mar 16, 2021 3:30 pm||BadgerBadger||Note Edited: 0060801||View Revisions|
|May 4, 2021 12:07 pm||BadgerBadger||Assigned To||=> BadgerBadger|
|May 4, 2021 12:07 pm||BadgerBadger||Status||new => assigned|
|May 4, 2021 7:15 pm||BadgerBadger||Status||assigned => closed|
|May 4, 2021 7:15 pm||BadgerBadger||Resolution||open => no change required|
|May 4, 2021 7:15 pm||BadgerBadger||Note Added: 0061347|