Jump to content

Ideas for Zombie AI Variability


Josh B

Recommended Posts

Up to this point Zombie AI has always been run off of one central system.

 

     Whether you are in a house looting or at your base on blood-moon the zombie AI always acts the same.

The problem with one central AI is that it can be easily exploited. When you know the rules it is easy to find a way to bend/break them. And one of the two major ends of the zombie encounters suffers. Either the zombies swarm you base in Alpha 16 like hungry but dumb locusts (very good) and Swiss cheese up every POI in game (bad), or in Alpha 18 they path perfectly through POI's that they are familiar with (which is good) and are engineering geniuses on horde night with buildings they have never seen (ridiculous)

 

To fix this problem why don't we have TWO MAIN AI systems? The first would be for horde nights, screamer and wandering hordes where MOST of the zombies would act like the Alpha 16 AI.

 

And second one is for scavenging and looting through POI's. Use the Alpha 18 model. It makes sense that they can navigate through building they are familiar with.

 

 

Did you notice I said that MOST zombies for horde nights would run off of the base Alpha 16 AI. To add further chaos, fear. and fun to horde nights so that you cannot easily cheese them give them a bit of variety.

 

     You would vary the AI for the type of zombie involved:

Give the structural engineering genius Alpha 18 pathing to the Engineer Zombies. It makes sense that they can see what blocks are weakest.

Have the Biker Zombie enter a Rage so that he picks any random block within a radius to beat on when he can't immediately path to you.

For the Military Zombies have them path in a line and all attack the same block to cut through your walls, then have them path through you base to search for you.

Put screamers in horde night and have their cries rally the normal zombies to them and or change their behavior.

 

With just a few AI differences it makes it difficult to properly predict what the horde will do, and thus defending your base is much more fun and interesting.

 

Most of the tools for this are or have been present in previous versions to accomplish this without too much issue. And I believe the game experience would be greatly enhanced.

Link to comment
Share on other sites

What the AI can do is limited by performance, in at least a couple of key ways.

 

While we've had some of the pieces you're talking about in the past, we haven't had them together at the same time.  That's because all of the zombies are sharing a brain where pathing is concerned.  There's a single pathing grid at any given time, to which the zombies refer to find a path to the player.  This is cheaper computationally than each zombie figuring the world out for itself, which ultimately allows for as many zombies at once as we see today.

 

The last I heard, faatal wasn't even willing to do a second pathing grid for crawlers, who could in theory take a path with a 1-block-high ceiling that other zombies couldn't.  So while zombies can have different stats and attacks, pathing in different ways is apparently a problem.  I think you could probably flip a switch on horde night to make them all go to dumb, more-zombie-like pathing.  You'd just compute the pathing grid differently at that time.  But some doing this and some doing that may not fly.

 

Which leads to the other point.  Zombies spinning around you aimlessly in A16 was not very good, at least from a perspective of utilizing limited system resources efficiently.  Consider this:

 

Point: It would be more zombielike to have hundreds or thousands of easy to kill zombies, so that the real threat is their sheer number.

Counterpoint: You can only have so many zombies on screen for performance, so each one has to be able to take a beating to compensate.

 

Point: It would be more zombielike if one zombie scratching couldn't destroy strong materials like brick, concrete, and steel.

Counterpoint: Zombies that don't reach the player are a waste, so each one has to be powerful enough to 'do its job' given the chance.

 

Point: It would be more zombielike to have zombies that mill about all over the world, just waiting indefinitely until you deal with them.

Counterpoint: A zombie that isn't engaging with you is a waste of resources, so each one has to just time out and expire if you haven't killed them after a while to allow fresh zombies to spawn.

 

This is the same kind of thing.  It would be more zombielike for zombies to not know the best path to you and at most thrash ineffectually against a random wall or what have you... but zombies that do that aren't engaging.  They're basically eye candy, tying up resources without doing their jobs as the enemies in a tower defense game.

 

My mantra for this game to work is that everything on horde night be engaging, challenging, and balanced.  So in my view, A16-style zombies that weren't engaging in too many situations shouldn't be in the game.

Link to comment
Share on other sites

I very much like the idea of having different behaviours for each zombie type and even having some zombies such as screamers that randomly change the pathing class some zombies refer to. But on the other hand I understand the technical challange. However, maybe it is still possible to implement it even with a single pathing grid..? 

 

Assuming that the pathing grid is able to provide a path for the zombies to the player, the most obvious way to create a second pathing for some zombies would be to not use this grid and instead take a straigth (dumb) line until they hit a block and start attacking. This could be applied for random zombies, a type of zombie and/or for a random time until the zombies decide to follow the pathing grid again.

 

Additional zombie behaviour classes could be created by not using the player position as target for the zombies but maybe the position of a screamer or a random spot around the player. I guess this is technically already somehow possible to support multiple players defending the same base on a single server, right?

 

For me it seems that the required effectiveness of each zombie to kill the player due to the limited numbers of zombies that can be spawned at once is the main blocking point. But isn't that something that needs to be solved anyway? I mean how many players play with less than max. 64 zombies?

Link to comment
Share on other sites

  • 2 weeks later...

I hear what you are saying. Perhaps having multiple AI "brains" is too computationally expensive to accomplish our goal of breaking up the horde dynamic.

 

Is there another angle? I think so.

 

Joel was mentioning that he wanted to take out the irradiated zombies completely once the team figures out a universal design concept to tie them all together. He talked about zombies "buffing and resurrecting others" and even holding weapons such as a club. Perhaps we can use these "special zombies" to accomplish the same task.

 

We already have different behaviors in the cop zombies, vultures, screamers, spiders, demo's ect. These are faceted into the single AI already. The AI has a rage mechanic, there is also a destroy everything mechanic, why not build a few different behaviors in to the AI that are activated by these special zombies? Expand the rage mechanic to include different levels that only some zombies can activate. (When the Beserker Zombie Roars, so do all those nearby, and for a period of time share his rage) Have other zombies interrupt the pathing of nearby zombies to form a horde around her, buff them, and then reset their path. (The Feral Mother Calls, and all nearby are summoned to her, responding with now glowing eyes)

 

These are just a few examples.

 

 

If you build these into the AI and zombie abilities, I believe you should have all the tools necessary to modify the horde dynamic. The best thing you can give us as a player, is unpredictability. Not total unpredictability, but just enough to keep us afraid.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...