SwarmSpawn v2.0 - Final(Not)

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!

Re: SwarmSpawn v2.0 - UT99 Preview Release II

Post by MrLoathsome » Sun Jun 12, 2016 3:27 am

PVS wrote:Sadly, but I think - I can not properly understand / translate what you guys mean... The only thing for which I use SwarmSpawn - spawn bots, I understand that this is not his main purpose. Spawn monsters, weapons, items, etc. - it is another task for which the SwarmSpawn is written.

I try different CheckRate options of course, but it does not help for this task. I think, I understand how SwarmSpawn works and CheckRate not can help for spawn bots task. I'd rather wait for the latest version for tests and to speak correctly.
Good plan. The previous version had a glitch or 2 that was still causing the list to not always be processed sequentially when it should.
So the assignment of the bots names via my above horrible hack ini example would work sort of randomly.....

I believe I have fixed that now. (And it is running even faster than before....)
Got sidetracked a bit here the last day or 2 testing and adjusting some details to get the spawning of clones of itself and other mutators all working right.

Next version should be able to Spawn/adjust all the items you mention, as well as spawning those insane U1 bots into the map.
(They are mean. Using whatever default settings those classes have....)
blarg

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

Re: SwarmSpawn v2.0 - UT99 Preview Release II

Post by Dr.Flay » Mon Jun 13, 2016 12:25 am

I tried editing the SwarmSpawn.int to make it editable in the advanced options window, but they don't seem to behave :(

Code: Select all

[Public]
Object=(Name=SwarmSpawn.SS,Class=Class,MetaClass=Engine.Mutator,Description="SwarmSpawn v2.0")
Preferences=(Caption="Mutators",Parent="Advanced Options")
Preferences=(Caption="SwarmSpawn",Parent="Mutators",Class=SwarmSpawn.SS,Immediate=True)

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: SwarmSpawn v2.0 - UT99 Preview Release II

Post by MrLoathsome » Mon Jun 13, 2016 9:31 am

Dr.Flay wrote:I tried editing the SwarmSpawn.int to make it editable in the advanced options window, but they don't seem to behave :(

Code: Select all

[Public]
Object=(Name=SwarmSpawn.SS,Class=Class,MetaClass=Engine.Mutator,Description="SwarmSpawn v2.0")
Preferences=(Caption="Mutators",Parent="Advanced Options")
Preferences=(Caption="SwarmSpawn",Parent="Mutators",Class=SwarmSpawn.SS,Immediate=True)
I am guessing that some of the EditPackages I removed so that this would work with 227 might be causing your issue there?
(Maybe?) Currently this compiles with just Core, Engine, UnrealShare and UnrealI. (Think I could lose UnrealI from that list also....)

Check Post 1 on this thread for the latest, greatest update for this.

*Edit: Just checked, and the Advanced options all seemed to load and display correctly with the current release.
Did not actually test changing them. I use Notepad for that.

Am now thinking it didn't work with the Preview Release II is because 1024 is just too damn many items. (Maybe?)
(Never did try with that version of the thing...)

That reminds me of a detail I failed to include in the Readme. :what:

If you modify any default config variables via the SSet options for any mutators you load with this, it WILL trigger a SaveConfig(), and update/overwrite the existing
ini for that mutator. Not sure if it does this for other actor classes you load with it that have an ini file of their own. It might.
This can of course be avoided by having all the default/config variables for the mutator SwarmSpawn is loading already set in its ini file so SwarmSpawner doesn't
need to modify them.

Have 2 things on my list now for the final, one of which is adding your tweak to the int file. (And including int files for the SSx2, SSx3 etc...)
Last edited by MrLoathsome on Mon Jun 13, 2016 12:32 pm, edited 1 time in total.
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: SwarmSpawn v2.0 - UT99 Preview Release

Post by MrLoathsome » Mon Jun 13, 2016 12:28 pm

FXANBSS wrote:This topic can fit better in UnrealSP.org, guys loves monsters there.


TRIVIA: Did you know that in EXU2, there are over 600 custom monsters? You CAN'T put all them in your mutator, but don't worry, we have different monster spawning mutators, like the MonsterSpawn 304.
BTW, i use SwarmSpawner and MonsterSpawn for maximun Insanity.

Talking about EXU2, there is a new G59, now you can update it, for your server.
Here is the topic to save your time:
http://unrealsp.org/viewtopic.php?f=37&t=3984


Oh, check how insane is my config. Oh yeah. Needs some SSet stuff but it's for later.

Code: Select all

[SwarmSpawn.SS]
CheckRate=20
bSpawnAtStart=False
SwarmInfo[0]=(SwarmClass="Jigoku.G59AdvancedSkaarjFiend",Qty=66)
SwarmInfo[1]=(SwarmClass="Jigoku.G59Agidyne",Qty=99)
SwarmInfo[2]=(SwarmClass="EXU.DemonSkaarjMaster",Qty=66)
SwarmInfo[3]=(SwarmClass="EXU.SuperCharger",Qty=33)
SwarmInfo[4]=(SwarmClass="Jigoku.G59RoyalDemonSkaarj",Qty=99)
SwarmInfo[5]=(SwarmClass="FXBPawn.FXBSunBarrelSlith",Qty=3)
SwarmInfo[6]=(SwarmClass="Jigoku.G59TonatiuhMH",Qty=3)
SwarmInfo[7]=(SwarmClass="Jigoku.G59RoyalDemonSkaarjLord",Qty=77)
SwarmInfo[8]=(SwarmClass="Jigoku.G59MagatsuBot",Qty=33)
SwarmInfo[9]=(SwarmClass="Jigoku.G59MagatsuBotAlpha",Qty=33)
SwarmInfo[10]=(SwarmClass="Jigoku.G59MagatsuBotBeta",Qty=33)
SwarmInfo[11]=(SwarmClass="Jigoku.G59MagatsuBotOmega",Qty=33)
SwarmInfo[12]=(SwarmClass="Jigoku.G59Morax",Qty=5)
SwarmInfo[13]=(SwarmClass="Jigoku.G59MagatsuNova",Qty=55)
SwarmInfo[14]=(SwarmClass="Jigoku.G59MagatsuGuardian",Qty=66)
SwarmInfo[15]=(SwarmClass="Jigoku.G59DactylCore",Qty=33)
SwarmInfo[16]=(SwarmClass="Jigoku.G59MoraxII",Qty=4)
SwarmInfo[17]=(SwarmClass="Jigoku.G59ErisI",Qty=3)
SwarmInfo[18]=(SwarmClass="Jigoku.G59ErisII",Qty=3)
SwarmInfo[19]=(SwarmClass="Jigoku.G59ErisIII",Qty=3)
SwarmInfo[20]=(SwarmClass="Jigoku.G59Naberius",Qty=2)
SwarmInfo[21]=(SwarmClass="Jigoku.G59NaberiusCoop",Qty=2)
SwarmInfo[22]=(SwarmClass="Jigoku.G59TheBlackKnight",Qty=3)
SwarmInfo[23]=(SwarmClass="Jigoku.G59Tonatiuh",Qty=3)
SwarmInfo[24]=(SwarmClass="EXU.Archdemon",Qty=4)
SwarmInfo[25]=(SwarmClass="EXU.HellFighter",Qty=5)
SwarmInfo[26]=(SwarmClass="EXU.HarmonicDisruptor",Qty=4)
SwarmInfo[27]=(SwarmClass="EXU.Hellbomber",Qty=2)
SwarmInfo[28]=(SwarmClass="EXU.Thunderhead",Qty=2)
SwarmInfo[29]=(SwarmClass="EXU.Firefucker",Qty=1)
SwarmInfo[30]=(SwarmClass="EXU.BarrelSlith",Qty=11)
SwarmInfo[31]=(SwarmClass="EXU.LargeMargeMerc",Qty=11)
SwarmInfo[32]=(SwarmClass="EXU.FourHundredthPawn",Qty=4)
SwarmInfo[33]=(SwarmClass="Jigoku.G59BaalBerith",Qty=1)
SwarmInfo[34]=(SwarmClass="EXU.FusionAnnihilator",Qty=5)
SwarmInfo[35]=(SwarmClass="EXU.ExtremelyExtremeShockBerserker",Qty=11)
SwarmInfo[36]=(SwarmClass="EXU.AdvancedDoomOrbSB",Qty=2)
SwarmInfo[37]=(SwarmClass="EXU.SniperCharger",Qty=11)
SwarmInfo[38]=(SwarmClass="EXU.VerminBagger",Qty=7)
SwarmInfo[39]=(SwarmClass="EXU.ShadowCreature",Qty=99)
SwarmInfo[40]=(SwarmClass="EXU.ShadowManta",Qty=99)
SwarmInfo[41]=(SwarmClass="EXU.ShadowSquid",Qty=99)
SwarmInfo[42]=(SwarmClass="EXU.BigShadowCreature",Qty=22)
SwarmInfo[43]=(SwarmClass="Jigoku.G59Hastur",Qty=3)
SwarmInfo[44]=(SwarmClass="Jigoku.G59RoyalSkaarjFiend",Qty=66)
SwarmInfo[45]=(SwarmClass="EXU.RageReactor",Qty=3)
SwarmInfo[46]=(SwarmClass="EXU.BiohazardBomber",Qty=2)
That insane config file should work much better with the current update. (You should tweak it a bit, and make use of the bHorde option for some lines....)
In theory, you CAN now use this to add all 600+ EXU pawns and more in your games. (Might have to compile a few extra SwarmSpawn "Clones".)

And you can set CheckRate a lot lower than 20, although with that ini file you may not want to as you would just get instantly Swarmed.

I have been testing the new SwarmSpawn and UT2U1 on my EXU server for the last 3 hours. Seems to be working
well. Haven't tried using the updated UT2U1 with offline SP/Oldskool/EXU stuff yet. It might help things if it runs.
I am thinking it will. 8)

*Edit:

Try using SwarmSpawn to spawn MonsterSpawn. It should work, and will keep the length of your server startup line shorter.

Configure the files so MonsterSpawn is spawning default UnrealShare/UnrealI monsters, and SwarmSpawner is spawning the
fixed MonsterSpawn versions of those monsters.
That should also work.

I need a nap...... :omfg:
blarg

User avatar
PVS
Novice
Posts: 16
Joined: Fri May 27, 2016 6:41 pm

Re: SwarmSpawn v2.0 - UT99 Preview Release II

Post by PVS » Tue Jun 14, 2016 8:03 pm

MrLoathsome wrote:Good plan. The previous version had a glitch or 2 that was still causing the list to not always be processed sequentially when it should.
So the assignment of the bots names via my above horrible hack ini example would work sort of randomly.....
Yes, in the new version I did not observe this problem, my insane U1 bots spawn most always with the correct names in the scoreboard, thanks!

However, I see some problematic maps on which earlier seen 'fell out of the world' in log, now something has changed in this spawn process for such situations, right? I see something like "Invalid Zone. Spawn Aborted...".
For DMLiberatiMei (my earlier example) SwarmSpawn not can spawn nothing at all, log is clear:
Spoiler
Show
ScriptLog: Add mutator SwarmSpawn.SS
ScriptLog: SwarmSpawn.SS: Begin PreCacheLists
ScriptLog: SwarmSpawn.SS: Swarm# 0 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Kurgan (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 1 UnrealI.MaleOneBot
ScriptLog: SwarmSpawn.SS: Swarm# 2 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Ash (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 3 UnrealI.MaleTwoBot
ScriptLog: SwarmSpawn.SS: Swarm# 4 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Gina (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 5 UnrealShare.FemaleOneBot
ScriptLog: SwarmSpawn.SS: Swarm# 6 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Skaarj (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 7 UnrealI.SkaarjPlayerBot
ScriptLog: SwarmSpawn.SS: End PreCacheLists
ScriptLog: SwarmSpawn.SS: Begin Init - Spawnpoint count: 0 Number Swarms: 8
ScriptLog: SwarmSpawn.SS: End Init - Number Active Swarms: 0 - Number Replacement lines: 0
Map DmSunSpeak (from RtNP) just a hard situation for SwarmSpawn, sometimes he succeeds to spawn 2 or 3 bots:
Spoiler
Show
ScriptLog: Add mutator SwarmSpawn.SS
ScriptLog: SwarmSpawn.SS: Begin PreCacheLists
ScriptLog: SwarmSpawn.SS: Swarm# 0 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Kurgan (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 1 UnrealI.MaleOneBot
ScriptLog: SwarmSpawn.SS: Swarm# 2 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Ash (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 3 UnrealI.MaleTwoBot
ScriptLog: SwarmSpawn.SS: Swarm# 4 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Gina (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 5 UnrealShare.FemaleOneBot
ScriptLog: SwarmSpawn.SS: Swarm# 6 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Skaarj (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 7 UnrealI.SkaarjPlayerBot
ScriptLog: SwarmSpawn.SS: End PreCacheLists
ScriptLog: SwarmSpawn.SS: Begin Init - Spawnpoint count: 191 Number Swarms: 8
ScriptLog: SwarmSpawn.SS: Swarm #0 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Kurgan (bot)
ScriptLog: SwarmSpawn.SS: Swarm #1 UnrealI.MaleOneBot
ScriptLog: SwarmSpawn.SS: DMSunSpeak.MaleOneBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: Swarm #2 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Ash (bot)
ScriptLog: SwarmSpawn.SS: Swarm #3 UnrealI.MaleTwoBot
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: DMSunSpeak.MaleTwoBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: Swarm #4 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Gina (bot)
ScriptLog: SwarmSpawn.SS: Swarm #5 UnrealShare.FemaleOneBot
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: Invalid Zone. Spawn Aborted...
ScriptLog: SwarmSpawn.SS: DMSunSpeak.FemaleOneBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: Swarm #6 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Skaarj (bot)
ScriptLog: SwarmSpawn.SS: Swarm #7 UnrealI.SkaarjPlayerBot
ScriptWarning: DeathMatchGame DMSunSpeak.DeathMatchGame1 (Function Engine.GameInfo.BroadcastRegularDeathMessage:0036) Accessed None
ScriptWarning: DeathMatchGame DMSunSpeak.DeathMatchGame1 (Function UnrealShare.DeathMatchGame.Killed:0086) Accessed None
ScriptLog: SwarmSpawn.SS: DMSunSpeak.SkaarjPlayerBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: End Init - Number Active Swarms: 0 - Number Replacement lines: 0
I have are a couple of similar examples for such problematic maps. Maybe you can advise to me try something for such situations?
RUSSIAN DESCENT OUTPOST

User avatar
sektor2111
Godlike
Posts: 4139
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: SwarmSpawn v2.0 - UT99 Preview Release III

Post by sektor2111 » Tue Jun 14, 2016 8:18 pm

When this module will get finished I'm gonna convert it to state timed controlled and removing timer. I did some changes at NsTDM (perhaps I have to put public updates) using only states and getting rid of both timers used (AI and Swarming). It's sliding smoother like a butterfly except first pre-cache moment, when a very tiny lag occurs (it's normal after all) the rest of game-flow looks just great, even if I keep those radius checks with a false Box. Probably XCGE helps a lot...
Heh, I have to rewrite NsCTF and NsDM as well.
Last edited by sektor2111 on Tue Jun 14, 2016 8:37 pm, edited 1 time in total.

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: SwarmSpawn v2.0 - UT99 Preview Release III

Post by MrLoathsome » Tue Jun 14, 2016 8:21 pm

That DMLiberatiMei map seems to be defective.
If there are no pathnodes found on the map, SwarmSpawn does nothing at this point.

Unsure why that other map might be having an issue.....
blarg

User avatar
sektor2111
Godlike
Posts: 4139
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: SwarmSpawn v2.0 - UT99 Preview Release III

Post by sektor2111 » Tue Jun 14, 2016 8:37 pm

This will need an actor in order to work. Spawning subclass of PathNode using an INI for mapping locations, then... let swarmer to work. Worth effort ?

User avatar
Barbie
Godlike
Posts: 1722
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: SwarmSpawn v2.0 - UT99 Preview Release III

Post by Barbie » Tue Jun 14, 2016 11:15 pm

MrLoathsome wrote:That DMLiberatiMei map seems to be defective.
If there are no pathnodes found on the map, SwarmSpawn does nothing at this point.
That map has a broken navigation network. No InventorySpots exist for the 48 InventoryItems the map contains. And 112 PathNodes exist, but there is no path network what indicates that the map was not rebuild after modifying Inventory items or PathNodes. I guess that »LevelInfo.NavigationPointList« is empty.
DMLiberatiMei.jpg
<EDIT>
Invalid PathNode0 of map DMLiberatiMei.unr
Show
Begin Actor Class=PathNode Name=PathNode0
Level=LevelInfo'MyLevel.LevelInfo0'
Tag=PathNode
Region=(Zone=LevelInfo'MyLevel.LevelInfo0',iLeaf=1459,ZoneNumber=1)
Location=(X=3191.260498,Y=-2.562776,Z=-741.861816)
OldLocation=(X=3194.740723,Y=-2.562776)
bSelected=True
Name=PathNode0
End Actor
Example for a valid PathNode
Show
Begin Actor Class=PathNode Name=PathNode0
Paths(0)=733
VisNoReachPaths(0)=InventorySpot'MyLevel.InventorySpot197'
VisNoReachPaths(1)=InventorySpot'MyLevel.InventorySpot196'
VisNoReachPaths(2)=InventorySpot'MyLevel.InventorySpot195'
VisNoReachPaths(3)=InventorySpot'MyLevel.InventorySpot194'
VisNoReachPaths(4)=InventorySpot'MyLevel.InventorySpot170'
VisNoReachPaths(5)=InventorySpot'MyLevel.InventorySpot109'
VisNoReachPaths(6)=InventorySpot'MyLevel.InventorySpot108'
VisNoReachPaths(7)=InventorySpot'MyLevel.InventorySpot85'
VisNoReachPaths(8)=InventorySpot'MyLevel.InventorySpot84'
VisNoReachPaths(9)=InventorySpot'MyLevel.InventorySpot59'
VisNoReachPaths(10)=InventorySpot'MyLevel.InventorySpot58'
VisNoReachPaths(11)=PathNode'MyLevel.PathNode53'
VisNoReachPaths(12)=PathNode'MyLevel.PathNode52'
VisNoReachPaths(13)=PathNode'MyLevel.PathNode14'
VisNoReachPaths(14)=PathNode'MyLevel.PathNode13'
VisNoReachPaths(15)=PathNode'MyLevel.PathNode11'
visitedWeight=10000000
bestPathWeight=899
nextNavigationPoint=Spawnpoint'MyLevel.Spawnpoint87'
previousPath=InventorySpot'MyLevel.InventorySpot26'
Level=LevelInfo'MyLevel.LevelInfo0'
Tag=PathNode
Region=(Zone=LevelInfo'MyLevel.LevelInfo0',iLeaf=1377,ZoneNumber=2)
Location=(X=3456.297363,Y=2.354004,Z=117.000000)
OldLocation=(X=3840.000000,Z=117.000000)
Name=PathNode0
End Actor
</EDIT>
MrLoathsome wrote:Unsure why that other map might be having an issue.....
Not sure about PathNodes without paths, but maps with Inventory items without an InventorySpot are common.

So your previous version of detecting spawn points was more robust than relying on NavigationPointList. Because filling your spawn point list is done only once per map, I'd iterate over all Actors and use such like

Code: Select all

function bool IsValidSpawnPoint(Actor A) {
 // InventorySpot is left out because it is a subset of Inventory.MyMarker's
	if (PathNode(A) != None || SpawnPoint(A) != None || PlayerStart(A) != None || Inventory(A) != None)
		return A.Region.Zone != None &&  ! A.Region.Zone.bWaterZone && ! A.Region.Zone.bPainZone
	else
		return false;
}
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett

User avatar
PVS
Novice
Posts: 16
Joined: Fri May 27, 2016 6:41 pm

Re: SwarmSpawn v2.0 - UT99 Preview Release III

Post by PVS » Wed Jun 15, 2016 12:32 am

I do not remember correctly where I got this map, I have it for a long time in my U226... Maybe this DMLiberatiMei not for bots, but only for human players? :)
In any case, if it is something wrong - then it is a bad example, and does not refer to the SwarmSpawn work.

I'm never work in UnrealEd, only intuitively: open this map in editor -> Build -> Build Options -> Build, save map As...
After this modification SwarmSpawn spawn bots normally on this map:
Spoiler
Show
ScriptLog: Add mutator SwarmSpawn.SS
ScriptLog: SwarmSpawn.SS: Begin PreCacheLists
ScriptLog: SwarmSpawn.SS: Swarm# 0 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Kurgan (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 1 UnrealI.MaleOneBot
ScriptLog: SwarmSpawn.SS: Swarm# 2 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Ash (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 3 UnrealI.MaleTwoBot
ScriptLog: SwarmSpawn.SS: Swarm# 4 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Gina (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 5 UnrealShare.FemaleOneBot
ScriptLog: SwarmSpawn.SS: Swarm# 6 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: SSet0 - Set Engine.GameInfo DefaultPlayerName Skaarj (bot)
ScriptLog: SwarmSpawn.SS: Swarm# 7 UnrealI.SkaarjPlayerBot
ScriptLog: SwarmSpawn.SS: End PreCacheLists
ScriptLog: SwarmSpawn.SS: Begin Init - Spawnpoint count: 176 Number Swarms: 8
ScriptLog: SwarmSpawn.SS: Swarm #0 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Kurgan (bot)
ScriptLog: SwarmSpawn.SS: Swarm #1 UnrealI.MaleOneBot
ScriptLog: SwarmSpawn.SS: DmLiberatiMei.MaleOneBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: Swarm #2 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Ash (bot)
ScriptLog: SwarmSpawn.SS: Swarm #3 UnrealI.MaleTwoBot
ScriptLog: SwarmSpawn.SS: DmLiberatiMei.MaleTwoBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: Swarm #4 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Gina (bot)
ScriptLog: SwarmSpawn.SS: Swarm #5 UnrealShare.FemaleOneBot
ScriptLog: SwarmSpawn.SS: DmLiberatiMei.FemaleOneBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: Swarm #6 Engine.GameInfo
ScriptLog: SwarmSpawn.SS: - Class default adjustment: Set Engine.GameInfo DefaultPlayerName Skaarj (bot)
ScriptLog: SwarmSpawn.SS: Swarm #7 UnrealI.SkaarjPlayerBot
ScriptLog: SwarmSpawn.SS: DmLiberatiMei.SkaarjPlayerBot0 spawned
ScriptLog: .
ScriptLog: SwarmSpawn.SS: End Init - Number Active Swarms: 0 - Number Replacement lines: 0
It's just for testing, so procreating clones of maps do not need, of course. But DmSunSpeak - this is official Return to Na Pali map for U1, maybe just old map already...
RUSSIAN DESCENT OUTPOST

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: SwarmSpawn v2.0 - UT99 Preview Release III

Post by MrLoathsome » Wed Jun 15, 2016 4:43 am

Well, this is good.

All 3 of the last posts seem to be exactly correct. :rock:

Barbie has confirmed that the map is just broken, as far as use with any mutator such as this.
Will look at that new SpawnLoc search line you posted there for the final. (I knew there was a reason I did it that other way 3 years ago....)

As PVS mentions, broken maps of this nature will only work with human players.
*Even if you could get bots on the map somehow, they would be lost...... :roll:
No time to look at the DmSunspeak thingy yet. Probably some odd quirk with the map, but who knows?

@Secktor.
Re: Fixing/Re-pathing broken maps via mutator or server actor or something...

That is a question that has crossed my mind a few times, but would indeed require a bit of effort I think.
If it could be made to work in a reliable fashion, that would kick ass. And avoid having to rewrite all the borked up
shit, and then deal with the duplicate versions of everything.....
blarg

User avatar
sektor2111
Godlike
Posts: 4139
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: SwarmSpawn v2.0 - UT99 Preview Release III

Post by sektor2111 » Wed Jun 15, 2016 6:18 am

MrLoathsome wrote: Fixing/Re-pathing broken maps via mutator or server actor or something...
Not really... let's put things together. We sort for spawn NavigationPoints... perhaps not enough. We can add to stage a sort of actor Navigator even a Keypoint after all. Building paths in Level without C++ looks impossible (I tried this already). Then we have PlayerStart actor (one of them as example). Now... the dumb thing. Tracing in a few random directions using the same Z for free places in level - valid zone etc. If nothing blocks PlayerStart spawn some reference (NavPoint, Keypoint, etc.) a bit smaller and Let it fall on ground to match height. If it falls on a death-zone destroy it. Wait 2 ticks (destruction if needs) and then start recording SpawnLocation. We don't need to put up everything in PostBeginPlay. We can work after 2 seconds as well, I don't see a problem.
Perhaps it's possible a future development of such spawning problem, it could help in those stupid null Levels, even A.I. is useless there - perhaps doesn't worth 1 cent of effort...
Or maybe Higor want to help with a pathing module, no spectating, no pawns, just pure pathing stuff in run-time...

Aside. if Map has PathNodes but NO links (I found such dumb shit) then I warmly recommend you "foreach AllActors (class 'NavigationPoint', N)" as UT does by itself in case of NavigationPointList = None when it wants to find playerstart - yes it uses iterator for finding everything not only linked navigationpoints. Wait, stupid me, I'm gonna use that...
Edit: Details about...
If Level is only saved without "paths define" but having PathNodes this one

Code: Select all

for (N = Level.NavigationPointList; N != NONE; N = N.NextNavigationPoint)
Won't get anything.
You will want

Code: Select all

foreach AllActors (class'NavigationPoint',N)
instead. It's simple, NavigationPointList doesn't exist in such Levels even are full of PathNodes (people's stupidity is fascinating sometimes but it do keeps you warm). So in this case almighty power goes at "foreach" iterator.
The rest of troubles might show up if you have a broken Path-Net. I must do stuff for that case (when some Boss recommends deleting InventorySport - stupid move... - because in his mind an Inventory is already a path, not sure where this story is described but, anyway... drugs have strange effects sometimes). Then we have to remove all paths but I still cannot promise that game won't crash, said removing paths not NavigationPoints and then... "foreach" will be needed.
Then... define in a list these rammed Levels or trying to get broken stuff directly ? Does It crash or not ? Next point = None but we have 200 NP and Navlist stops at 20, oh well... sometimes I think at "trying to archive deleted..." Deleted const for retrieving NP back.

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: SwarmSpawn v2.0 - UT99 Preview Release III

Post by MrLoathsome » Fri Jun 17, 2016 2:59 am

I am gonna test an idea when I get back to tweaking the Final Release for this thing, but I suspect it won't work.
There are just too damn many ways for broken maps to be broken....... :loool: :noidea
And with the number of things that are bStatic or Constants, there is no way to touch them without the map
being rebuilt properly. (I think. Maybe. I don't know nothing about no maps....... 8) )

Will be making a few adjustments so that SwarmSpawn Final should be able to work with more broken maps than it already does. :tongue:
blarg

User avatar
sektor2111
Godlike
Posts: 4139
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: SwarmSpawn v2.0 - UT99 Preview Release III

Post by sektor2111 » Sat Jun 18, 2016 7:36 am

Constants can be screwed as well but there might be some consequences... We prefer to leave them alone as much as possible brutalizing them only if it needs to...

After finishing my race through "modifying spree" of my stuff (a later speech about) I will take a look and give a try at something pretty simple and perhaps faster. I'm not only intend to record SpawnLoc proposed by test monster spawned but I intent to record NavigationPoint in cause. Why ? Triggering SpawnLoc with query to a FastTrace with Np - in purpose to get data if monster has spawned "REACHABLE" because I'm not interested about those behind Walls. FastTrace solution is probably way faster than a Radius check round for NP and I guess I can discard using "!isColliding" bool which did not help me too much anyway.

Off Topic a bit
The rest of coding spree will involve that starting from now on I'm gonna get rid of "return;" which I used in my codes by calling a "GoTo NoExecute" labeled jump. I'm not speaking about bools and others I'm speaking about that "return;" used alone preventing execution and I think is not the right way.
/Off Topic a bit

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: SwarmSpawn v2.0 - UT99 Preview Release III

Post by MrLoathsome » Sat Jun 18, 2016 8:53 pm

I have been on quite the "coding spree" myself lately. :roll:

Think the current RadiusActors check I have is using a small enough radius so that any performance difference between it and FastTrace is negligible.
It is far superior to the redundant checks I was doing in previous versions of this. It only happens once, before the actual 'target' actor is even spawned.
(An actor is spawned, but it is not colliding with anything anyway at that point.)

For this case, where the goal is to spawn actors, the default engine spawn code seems to eliminate the need to check for crap behind walls.
(Now that I have figured out how to detect and skip spawns that would cause things to "fall out of the world". Related....)

Re: Return

Sometimes, you will still need to use that.

Consider this code fragment:

Code: Select all

event Tick(float DeltaTime)
{
	if ( ThePlayer == none || ThePlayer.bDeleteMe )
	{
		Destroy();
		return;
	}
	if (ThePlayer.bAltFire == 1 && FireCnt == 0) { log("AltFire!!  Bailing!"); disable('Tick'); }
.
.
.   More 'Tick' stuff.....
.
.
If I remove that return; statement, the log file blows up with Accessed = None warnings. (Which I do not tolerate.... 8) )
Without the return there, the rest of the current tick still happens, but ThePlayer has been destroyed.....

Note initial version of that fragement, had another return; statement after the disable('Tick');.
That one was unnecessary as disable('Tick') appears to stop the processing in the current Tick right away.
(And in this case I did not want to destroy the player, just shut off the Tick.)

If I am wrong about any of this, somebody please explain how and why.

*Never use that tiny font again. My eyes are old.
blarg

Post Reply