Loathsomes SwarmSpawner - v1.3 released.

Search, find and discuss about Mutators!
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Loathsomes SwarmSpawner - v1.3 released.

Post by MrLoathsome » Sun Apr 08, 2012 4:36 pm

Basic usage features:

Spawns up to 64 different swarms.

Optionally change the size of the pawns in the swarm.

Advanced usage features:

Optionally adjust up to 16 settings for each swarm.

Able to adjust class default settings for each swarm
prior to spawn, and then restore the original default value.

Able to adjust any pawn class default settings.


More info and download available here: http://ecoop.ucoz.com/load/loathsomes_3 ... 0/1-1-0-46
Last edited by MrLoathsome on Fri May 11, 2012 6:54 am, edited 4 times in total.
blarg

JackGriffin
Godlike
Posts: 3767
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: -Retired-

Re: Loathsomes SwarmSpawner - v1.0 released.

Post by JackGriffin » Sun Apr 08, 2012 6:08 pm

I'm very interested in this Loathe. A couple of questions if you get time.

Does the mod create spawnpoints or make a list from pathnodes? Basically what I'm asking is 'will it work on a non-pathed map?' And also does it take into account the player's positions at all or do the monsters spawn randomly across the entire network? Neither is bad, but if I can use this on MH-HoldTheLine then I need to know how to path for it.

Nice job as always bro. Very inventive work :tu:
So long, and thanks for all the fish

User avatar
Dr.Flay
Godlike
Posts: 3332
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK

Re: Loathsomes SwarmSpawner - v1.0 released.

Post by Dr.Flay » Sun Apr 08, 2012 7:23 pm

I still haven't got round to salvaging my UT99 gaming drive, so I have yet to try this puppy out :(
Damn-it ! I was so looking forward to testing.

I could put a few creatures into 1 of my editing versions, or my older "pre-hi-res" textures backup.
Actually my main candidate for a swarm-fest, is already in my editing versions.
The Cockroach from the WS_industrial pack.

It occurs to me that the ability to over-ride the default physics may be useful with this mod.
I am not sure if the cockroaches are using spider physics. It will be a bit crap if they get stuck behind a box or wall etc.

MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: Loathsomes SwarmSpawner - v1.0 released.

Post by MrLoathsome » Mon Apr 09, 2012 2:34 am

JackGriffin wrote:Does the mod create spawnpoints or make a list from pathnodes? Basically what I'm asking is 'will it work on a non-pathed map?' And also does it take into account the player's positions at all or do the monsters spawn randomly across the entire network?
Jack. This builds its list using almost the same technique as the Zombies spawner mutator.
Here is the actual code that does that:

Code: Select all

	for (N = Level.NavigationPointList; N != NONE; N = N.NextNavigationPoint)
	{
		if ((N.IsA('PathNode') || N.IsA('SpawnPoint')) && !N.Region.Zone.bWaterZone)
		{
			if (NavNodeCount <= 2000)
			{
				PNodes[NavNodeCount] = N;
				NavNodeCount++;
			}
			N.bPlayerOnly = False;
		}
	}
	log("SwarmSpawn Init - Spawnpoint count: "$NavNodeCount@" Number Swarms: "$NumSwarms);
That log line will be written by the SwarmSpawner at the start of each map, regardless of the bDebugMode setting.
In testing, I found only 1 map where this finds 0 spawnpoints. (DM-BDC-Arena][.unr)

When each swarm is about to be spawned, the mutator does check for nearby players when selecting the next spawnpoint
from the list. It attempts to spawn the hordes out of sight of players if possible.

*Edit. Just noticed during some testing that there is an issue online with some maps.
Pre-cache of the Swarm classes is failing, but only on some maps. No clue why at this point. :mad2:

Testing continues.......

**2nd Edit. :idea:

Have discovered what the problem was, and fixed it.
Problem had nothing to do with running it online BTW. I just happened to find the error while testing online... :loool:
The issue is actually somewhat related to Jacks question. (Imagine that... :rock: )

Turns out I was not setting a location when spawning my temporary pawn in the PreCacheLists function.
Guess I just found out that location(0,0,0) is not always a safe place to spawn a temp pawn.
Changed the spawn call to use the 1st PNode set in the function posted above, and the problem vanished.

v1.1 now available at the link in the 1st post.
The person who downloaded v1.0 should put it on hold and use v1.1 (Hi Medor :wink: )

Going to test a few ideas I have been knocking around since I first discovered that the above method does
return 0 spawn locations on some maps. If any of them work, I may be able to add more locations to the list.
That would solve the "non-pathed map" issue I think.

That will be something for v1.2 as it will require changing the type of the PNodes array to a list of vectors
rather than navigation points.
blarg

MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: Loathsomes SwarmSpawner - v1.0 released.

Post by MrLoathsome » Tue Apr 10, 2012 8:02 am

JackGriffin wrote:I'm very interested in this Loathe. A couple of questions if you get time.

Does the mod create spawnpoints or make a list from pathnodes? Basically what I'm asking is 'will it work on a non-pathed map?' And also does it take into account the player's positions at all or do the monsters spawn randomly across the entire network? Neither is bad, but if I can use this on MH-HoldTheLine then I need to know how to path for it.

Nice job as always bro. Very inventive work :tu:
Been testing a few things, and have it selecting sufficient spawn locations even on maps with no pathnodes so it spawn swarms.
Although it still attempts to spawn the current swarm 500UU away from any players, that is the only check made on players positions.
If this works the way I want, you won't need to path for it at all. Monsters will spawn randomly across the level using a list of locations
built during PostBeginPlay.

I have it just grabbing a bunch of starting locations near or at various existing actors locations in the map. So it sort of auto-adjusts itself depending upon
the map.

Question: Are there any other actors I should check not listed below? If a map had none of those in it, would it still be a map?

Here is a list of Actors I been testing with in various combinations:

PathNode, SpawnPoint, PlayerStart, KeyPoint, Decoration, Inventory, Trigger

I was thinking the addition of KeyPoints is redundant, and that adding the Trigger locations might be a bad idea. (I is not a mapper....)

Any feedback or ideas welcome.
blarg

JackGriffin
Godlike
Posts: 3767
Joined: Fri Jan 14, 2011 1:53 pm
Personal rank: -Retired-

Re: Loathsomes SwarmSpawner - v1.1 released.

Post by JackGriffin » Tue Apr 10, 2012 1:40 pm

You are on the right track but I'd remove some of those:
Decoration- because it's often used for lighting and may be very high up on walls or even in the skybox (argh, another check to add in the spawnlist generation. Sorry...)
Trigger- The trigger actor may be anywhere, don't use this one. I've seen them in every nook and cranny, in the sky, driven underground, hidden in BSP.
Spawnpoint- This one is iffy. You have a lot of spawnpoints for flying monsters that sit in the sky. I wouldn't use it.

In fact you might test how hard it would be to do a quicktrace from the actor to level to ensure it's not out floating somewhere. If it is then exclude it. I'd stick to things that are always (or almost nearly always) on the ground like pathnodes, ammo pickups, health even if it makes your potential list smaller. One bad spot where the monsters are spawning out in the open will ruin the effect, especially if the players can't reach them or it ruins the effect (like inside a closed trophy case, etc).
So long, and thanks for all the fish

MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: Loathsomes SwarmSpawner - v1.1 released.

Post by MrLoathsome » Wed Apr 11, 2012 7:39 am

JackGriffin wrote:You are on the right track but I'd remove some of those:
Decoration- because it's often used for lighting and may be very high up on walls or even in the skybox (argh, another check to add in the spawnlist generation. Sorry...)
Trigger- The trigger actor may be anywhere, don't use this one. I've seen them in every nook and cranny, in the sky, driven underground, hidden in BSP.
Spawnpoint- This one is iffy. You have a lot of spawnpoints for flying monsters that sit in the sky. I wouldn't use it.

In fact you might test how hard it would be to do a quicktrace from the actor to level to ensure it's not out floating somewhere. If it is then exclude it. I'd stick to things that are always (or almost nearly always) on the ground like pathnodes, ammo pickups, health even if it makes your potential list smaller. One bad spot where the monsters are spawning out in the open will ruin the effect, especially if the players can't reach them or it ruins the effect (like inside a closed trophy case, etc).
Good feedback.

Removed the Decoration and Trigger locations from the list, just for the reasons you mentioned.

Re: Spawnpoints. Those and PathNodes were the only 2 that the original function in the TWT_Zombies Zombies mutator used.
Not really an issue if the spawnpoints are up high, as the SpawnSwarmer will set Physics Falling, so the pawns just drop down to the floor.
And if they happen to be flying pawns.... So much the better.

My current version now builds a list of locations, rather than NavigationPoints.
On the DM-BDC-Arena][ map, where the original code was finding 0 spawnpoints, this finds 19.
On the CTF-2on2-Crates map, it now finds 53 locations, instead of 14.
(Both very small empty maps.....)

This code fragment is the bit that builds that array:

Code: Select all

	for (N = Level.NavigationPointList; N != NONE; N = N.NextNavigationPoint)
	{
		if ((N.IsA('PathNode') || N.IsA('SpawnPoint') || N.IsA('PlayerStart')) && !N.Region.Zone.bWaterZone)
		{
			if (SpawnLocCount <= 3000)
			{
				SpawnLocs[SpawnLocCount] = N.Location;
				SpawnLocCount++;
			}
			N.bPlayerOnly = False;
		}
	}

	forEach AllActors(class'Inventory', Inv)
	{
		if ((!Inv.Region.Zone.bWaterZone) && (!Inv.Region.Zone.bPainZone))
		{
			if (SpawnLocCount <= 3000)
			{
				SpawnLocs[SpawnLocCount] = Inv.Location;
				SpawnLocCount++;
			}
		}
	}
*Going to test adjusting the Z value for the SpawnLocs added to the list based on Inv.Location. That should
eliminate the 1st collision when the spawner tries to spawn stuff there.
blarg

MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: Loathsomes SwarmSpawner - v1.3 released.

Post by MrLoathsome » Fri May 11, 2012 6:56 am

Bump.

Just released a new version, that addresses Jack's questions above.
Added code to this release that actually checks to make sure a full sized SkaarjWarrior will spawn
at the locations before they get added to the SpawnLocs array.

Seems to be working much better, even on maps that have defective or invalid Pathnodes or PlayerStarts on them.
blarg

User avatar
Dr.Flay
Godlike
Posts: 3332
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK

Re: Loathsomes SwarmSpawner - v1.3 released.

Post by Dr.Flay » Fri May 11, 2012 11:58 pm

Gotta salvage my drive ASAP!