Why? The current approach used on Zombie Walkers involved modifying Leveled Lists by jamming Feral Ghouls (Zombies) into them so they spa...

New Replacement Approach

Why?

The current approach used on Zombie Walkers involved modifying Leveled Lists by jamming Feral Ghouls (Zombies) into them so they spawn instead of the intended Actor type. This works most of the time, but has a couple of drawbacks:
  • It doesn't work for all actors. Super Mutants for example seam to have all sorts of problems sometimes spawning naked without heads, or spawning as a zombie naked without heads, or spawning as a Super Mutant called Zombie.
  • It doesn't work in all situations. Leveled spawns that have scripts associated with them, like ambushes, often spawn headless zombies. To get around this for ambushes, I ended up not updating the leveled list and doing a literal search/replace in the game cells. This modifies the cells of course and causes issues when users install/uninstall the mod until they manage to get their cells to reset.

New Approach

Instead of modifying leveled lists or replacing them in cells I am moving toward a scripted solution. I already have a quest that runs every 10 seconds to assign special attributes to Zombies, so I am adding more aliases to it to check for Non-Zombies and replace them if a set of criteria matches.

Current base criteria:
  1. Actor does NOT have the SkipZombieReplacement keyword.
  2. Actor is NOT essential.
  3. Actor is NOT protected.
  4. Actor is NOT unique.
  5. Actor is NOT player teammate.
  6. Actor is NOT currently visible by the player.
If it meets these criteria, then we check if it a type we want to replace. The SkipZombieReplacement keyword is added when the actor fails replacement for any reason so that it is not checked again in the future to improve performance. For the first version, I am porting over just the 5 existing replacement categories already configurable in the mod:
  1. Large Creature replacements enabled and has "heavyKnocker" keyword (eg. Deathclaw, Mirelurk Queen, Sentry Bot)
  2. Super Mutant replacements enabled and has "SuperMutantRace" race
  3. Robot replacements enabled and has "ActorTypeRobot" keyword
  4. Animals replacements enabled and has "ActorTypeAnimal" keyword
  5. Creature replacements enabled and has "ActorTypeCreature" or "ActorTypeBug" keywords
Note that you can still set a percentage replacement which is checked each time. I've updated the percentage options to be 50%, 75%, and 100%. You can think of these percentages as "percentage chance to replace if base criteria is matched". For example, there's a 100% chance that a super mutant will be replaced if they are not essential or protected or unique or a player teammate and not currently visible to the player. (Strong is safe since he's essential)

Another thing I am adding is the option to replace a creature with more than one zombie. This was not possible with leveled lists as I had no control there, but now I can let players replace each Super Mutant with 2 Zombies and each Deathclaw with 10 Zombies if they want to. These options will be configurable alongside the current replacement percentage config.

Progress and Testing

I've finished implementation and have been testing the past few days in between publishing updates for the new PS4 version of the mod.

Testing has been going well overall but there are still bugs to work out before I publish the update. If anything, the replacements are working a bit too well and replacing things they probably shouldn't. I'm trying to test edge cases and make sure I don't break people's games (unless they want me to).

There are still some edge cases I haven't tested yet, like DLC robots and captured animals. Unfortunately, I don't have DLC outside of Far Harbor on PC so I may need to fire up my XBox to test those eventually.

For my initial testing I enabled all replacement options at 100% with a 2 to 1 replacement ratio (2 zombies per creature replaced). The only exception is the Large Creatures category which I set to a ratio of 10 to 1 for fun.

Here's some screenshots with captions that explain a few of the things I've run into:

Zombies replaced the 2 Gorillas in the Institute. Funny thing is, they were hostile in color but displayed idle behavior and the Institute scientists didn't seem to care (no combat triggered). This kinda gives the impression that the Institute is involved in starting the zombie apocalypse. Maybe I leave it?

Several zombies spawned in Diamond City and a couple of them killed poor Abbot before I even got to him. It seems they replaced the cats, eyebot, and brahmins. Cats and Brahmin are not always replaced as they are usually marked protected. Abernathy's animals were fine, but the crazy cat trader was overrun when I got there.
Several zombies spawned aboard the Prydwen. They replaced the cat, Mr. Handy, and molerats.

Update (11/25):

I added to the base criteria to address non hostiles being converted in settlements/cities:

7. Actor is hostile to player OR Actor is in ambush mode (will be hostile)

Initially I added just the Actor is hostile part, but I noticed certain ambush types like Molerats and Radroaches would not be replaced. When I researched it I noticed ambush actor types use the same scripts to trigger the ambush. The two main types are:
  • DelayedAmbushScript - start off disabled (but still hostile) and appear upon some trigger like the death of another actor
  • MasterAmbushActorScript - start off enabled but not hostile and become hostile when triggered by player proximity.
The MasterAmbushActorScript types were the issue as the others were being replaced since they were hostile from the beginning. After further research, I figured out you can check if an actor has this script type using the CastAs function. You can use it directly in a conditional statement since it will safely return NONE if the actor isn't of that type.
; returns the target casted to the specified type or NONE
If( target.CastAs( "MasterAmbushActorScript" ) )
After making this change, testing is looking much better. Ambush types are being replaced as expected and no zombies are spawning in Diamond City or the Prydwen anymore. I'm almost ready to deploy and test on my XBox for final verification.

0 comments:

I noticed Zombie Walkers (PS4) is getting some press lately. It was featured in an article from iDigitalTimes as #4 of "5 Of The Absolu...

Zombie Walkers Featured in iDigitalTimes

I noticed Zombie Walkers (PS4) is getting some press lately. It was featured in an article from iDigitalTimes as #4 of "5 Of The Absolute Best Mods To Try On Sony's Console". Click the image below to see what the other 4 are.

0 comments:

Splitting the PS4 Zombie Walkers Mod There seems to be two types of users of the PS4 version of the mod. Some want more zombies and some w...

PS4 Spawn Replacements

Splitting the PS4 Zombie Walkers Mod

There seems to be two types of users of the PS4 version of the mod. Some want more zombies and some want less. To accommodate the latter, I have moved spawn replacements into a separate optional mod and made the main mod much smaller in scope in that it just transforms Feral Ghouls to Zombies (to the extent possible without scripting).
Zombie Walkers: Replace Creatures
Zombie Walkers:Replace Super Mutants

Future

In the event Bethesda and Sony ever agree to allow external assets (specifically custom scripts), I will migrate the main version of the mod to PS4 and deprecate the PS4 version and the replacements spin-off.

I've received a lot of requests for more zombies and more replacements on PS4. I can accommodate those requests through addition plugin mods for replacements, but the extra spawns is very tedious without a generic scripted approach.

I have 8 version of this mod across 3 platforms now. The user comment threads are difficult to keep up with at this point and I've even being tagged in social media comments on YouTube. It is satisfying to create something that so many people seem to enjoy, but it is at the same time a bit overwhelming trying to keep up with it all.

In the short term, I'm going to focus my efforts on mod consolidation starting with the deprecation of the XBox/PC Ambush Replacements mods. The next blog post may be a recap of the new approach to replacements that I'm hoping will make this possible.

Zombie Walkers: Replacements (PS4)

21 comments:

Zombies are attacking Red Rocket Truck Stop! Can you find them in this screenshot? Settlement Attacks vs Sleep Interruption Zombie Wa...

Settlement Attacks

Zombies are attacking Red Rocket Truck Stop! Can you find them in this screenshot?

Settlement Attacks vs Sleep Interruption

Zombie Walkers has had the Zombie Attacks mode for awhile but it was buggy and didn't always work. Also, this mode only worked by interrupting your sleep for an attack. It didn't trigger settlement attacks when characters were awake (usually daytime).

I re-organized the holotape settings to better describe the mode by calling it Sleep Interruption and added a new one called Settlement Attacks. Both modes can spawn attacks at different times and can be configured with different percentage chances (per hour).

Triggering Settlement Attacks

To cut right to the chase, to trigger a settlement attack using the built-in mechanism you must get a reference to the appropriate WorkshopScript and then call the CheckForAttack method with an argument of true for forced. 

I found looking at the games built-in settlement scripts like WorkshopParent to be helpful For example, to get a collection of workshops in the game you add the following property to your script:


In my script, I chose to only trigger attacks when you are present at a settlement. There's nothing worse in Fallout 4 than being notified of attacks on the other side of the map. Also, with how I modified my attack it will begin immediately so you wouldn't get there to help anyhow.

There's a timer that runs to check for an attack every 30 minutes in game. The percentage chance is based on your holotape configuration setting (halved since the holotape setting is per hour).

Sleep Interrupted With No Attack?

The Sleep Interruption mode didn't always trigger an attack when CheckForAttack was called. To debug the issue, I eventually realized you can enable Story Manager debugging with the following ini setting:
bEnableStoryManagerLogging=1
I then saw the following line in StoryManager.0.log:
----Quest 'WorkshopZombieAttack' failed to fill aliases
Eventually I realized that I wasn't giving the game world enough time to load before trying to trigger the attack. Quest alias, like the workshop itself, won't fill if the objects are not yet loaded.

To "wake up" the Player I copied the approach used in the game's built-in survival script which is to call playerRef.MoveTo(playerRef). Moving the player to their current location causes the screen to fade out and back in and the game world to reload, I guess to simulate waking up? To fix, I added a short wait after waking up the player but before triggering the attack with Utility.Wait.

Only Zombie Attacks

The other thing I wanted to do was make sure that when settlement attacks are triggered only zombie attacks would result. To do this I updated the settlement attack quest properties in Character -> SM Event Node -> Script Event. I added a property to each settlement attack quest that basically says only allow this if Settlement Attacks mode is disabled. For my custom zombie attack quest if says only allow this if Settlement Attacks mode is enabled.

Add property to WorkshopAttack quest scripts to disable all but zombie attacks.

Zombie Attack Quest Tweaks

One final thing I did was modify the Zombie Attack Quest itself to add notifications when the attack is beginning and over at the appropriate Quest Stages (see the screenshot at the beginning of this post). The game has similar notifications already, but only for settlement attacks that you are not already present for. Since these attacks are limited to when you are at a settlement, I had to add my own.

The built-in settlement quests also delay the start and end of these quests. The start delay is to accommodate the player making their way to the settlement and the end for them to chat with settlers about helping them. I removed both of these delays by updating the appropriate Quest Stages so that the attack starts right away and the quest is completed once the 'all attackers dead' stage triggers. This allows another attack to immediately happen at any time without delay.

Update 1/23/2017

The settlement attack implementation has been updated to move away from the game's built-in quests. Please see Better Settlement Attacks for details.

1 comments:

Zombie Walkers (PS4) I'm happy to announce the release of a PS4 version of the Zombie Walkers mod. This has been a long time coming ...

PS4 Version Released

Zombie Walkers (PS4)
I'm happy to announce the release of a PS4 version of the Zombie Walkers mod. This has been a long time coming and even a stripped down version is better than nothing.

This version includes most of the Feral Ghoul Overhaul features (no running/sprinting, body part data updates to encourage headshots, more damage, etc.) but has no custom scripting since it is not allowed for PS4 unfortunately. This means no holotape configuration options, headshots only mode, NPC resurrection, etc.

I may add global (non-configurable) spawn replacements if there is enough demand for it.


16 comments:

One Major Restriction It appears Bethesda and Sony have reached an agreement that will bring mods to the PS4 after all. However, there is ...

PS4 Mods Have Returned

One Major Restriction

It appears Bethesda and Sony have reached an agreement that will bring mods to the PS4 after all. However, there is one MAJOR restriction:

"Note - PS4 Mods are Plugins only. No archives are permitted." - source

Before realizing this restriction, I gleefully went to deploy Zombie Walkers to PS4 and received the following message from the Creation Kit:

PS4 does not support archives :(

What it means for Zombie Walkers

Basically this means you are not allowed to add custom scripts and can only modify assets already in the game. Therefore a direct port of Zombie Walkers is not possible. At best I could create a separate very stripped down version that resembles the first version I pushed out in July which basically made Feral Ghouls walk, not dive around, and take less damage to all but the head.

I'm not ruling out this possibility, but this is certainly a setback and makes me sad.

0 comments:

Out with the old, In with the new Top: GeForce GTX 1050ti 4gb Bottom: GeForce 9400 GT 512mb Up until now I have been modding Fallout...

New Graphics Card

Out with the old, In with the new

Top: GeForce GTX 1050ti 4gb
Bottom: GeForce 9400 GT 512mb
Up until now I have been modding Fallout 4 on my Macbook Pro laptop. I used Bootcamp to install a copy of Windows 10 in a separate partition and then tweaked the daylights out of the game and discovered a workaround for a startup issue. At best I can get 40-50 fps in the special QA Smoke room on ultra-low settings (eg. vsync/grass/godrays/fog/etc. turned off).

The trouble is when I enter the real game world the frame rates plummet. In Sanctuary I'm lucky to get in the teens but can't see where I'm going. Needless to say when users report issues with one of my mods in specific areas of the game, it becomes difficult for me to test. Some issues, like game crashes, are impossible to debug on XBox.

Luckily my wife loves me and decided to let me upgrade my graphics card for my birthday (I know you are all jealous). Here's a screenshot comparing old vs new. Note that the old 9400 card pictured below is actually from my PC and performs on par or worse than the integrated Intel HD 4000 in my Macbook Pro.

Screenshot Comparison

The screenshots below show a stark contrast in both quality and performance. The one thing you don't see is that everything about the game is slower on the integrated card (including scripts). Some areas of the game get as low as 1fps depending on how many objects are around.

Fallout 4 on low settings 640x320 @15fps on Intel HD 4000 graphics
Fallout 4 on ultra high settings 1280x1024 @60fps on GeForce GTX 1050ti graphics

Happy days for me as a modder and I guarantee Zombie Walkers will benefit.

11 comments:

I am very happy to announce the release of Zombie Walkers - Far Harbor. This initial version includes spawn replacements for Far Harbor anim...

Zombie Walkers - Far Harbor

I am very happy to announce the release of Zombie Walkers - Far Harbor. This initial version includes spawn replacements for Far Harbor animals and creatures and brings the For Ghouls (renamed Zombie of course) to the Commonwealth.

Look for more updates to follow.


Update 1/29/2017

Please note that this plugin mod was deprecated recently and is no longer available for download. The Far Harbor changes have been rolled into the base mod for PC and Xbox One and include spawn replacements and the spawning of Fog Ghouls in the commonwealth (renamed zombie of course).

0 comments:

Pages (8)1234567 »