MonsterEvo mapping tutorial

Anything and everything related to the Evolution server.
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

I will make an attempt to clarify content and related issues here....
___________________________________________________________________________________________________
___________________________________________________________________________________________________
step3.a: Using content from other maps or custom-created content
___________________________________________________________________________________________________
This part will covers:
|-- Content
|..........|- default (definition)
|..........|- custom (definition)
|-- external packages/dependencies
|..........|- dependencies implemented into "mylevel" of my map
|-- using content from other maps
|..........|- Textures
|..........|- Static Meshes
|-- Import into my map
|..........|- How to import Textures
|..........|- How to import Static Meshes
|-- mylevel
|..........|- mylevel and Textures
|..........|- mylevel and Static Meshes

Content is the sum of data and in UT is consists of:
Code (can be found in \System directory), Map, Textures, Static Meshes, Sounds, Animations.
All these are located into your UT2004 installation directory under the respective folder, in the form of packages.

Default content is the official content that is included in your UT2004 packages.

Custom content is content created using external data, not included in your UT2004 packages.

I make this distinction here, because, every map is built using packages.
Case 1: If a map is built by using ONLY the packages located within the UT2004 installation directory (assuming you havent placed any extra packages there), then the result map will be a map (e.g. MyMap01.ut2) that all essential files are inside this map file, and will have no external dependencies. In that case, that map will be playable by anyone you share it with, only by sending out the MyMap01.ut2, or in any server.

in that case the only thing he needs to do is place MyMap01.ut2 file into \Maps folder and hit play....

Case 2: If a map is built by using ALSO additional external packages that you found on the web or you created yourself, then the result map will be a map (e.g. MyMap02.ut2) that ONLY the default packages' content will be within the file MyMap02.ut2 and you will ALSO need to provide the external packages (aka external dependencies) to the people you want them to play your map.

e.g. if you have only 1 additional package, which is a texture package you created, (e.g. MyCoolWallTexture.utx)
you ALSO need to sent them the file MyCoolWallTexture.utx, which they should place into \Textures folder, for the map to be playable in their pc (or a server).

you can, at anytime, check external dependencies using a freeware like UnrealDeps v0.1.1.

[offtopic]try to run Xenomorphy to see how many external dependencies you will me missing :devil: :senvy:[/offtopic]


Case 3: Making custom content part of the map so that no external packages are required (external dependencies).
[offtopic]This is also a work-around of Case 2, in which we eliminate the need for the map file MyMap02.ut2 to be dependent on the MyCoolWallTexture.utx[/offtopic]

ps1: if MyCoolWallTexture package consists of 100 textures which all of them are used in your map, just sent out the damn MyCoolWallTexture.utx file to the others to save yourself time ffs

follow this process for each texture inside the texture package
in your texture browser ->File...->Import...->select the texture/texture package you want to import
in the pop-up window use these properties:
Package: mylevel
Group: typesomething
Name: typesomethingelse

then, open texture browser -> mylevel-> select the newly added texture and simply apply it to a surface and save map.

[offtopic]this texture will be in your map (inside mylevel) as long as you have it in one surface at least, otherwise it will vanish[/offtopic]

in that case the only thing someone needs in order to play your map in his pc (or in a server) is the file MyMap02.ut2, which he has to place into \Maps folder and hit play....

That method works for any type of content (Textures, Static Meshes, Sounds, Animations), whether:
a. you found it on the web in the form of a package file
b. you took it from another map
c. you created it and imported in your map


[offtopic]by adding external data Textures, Static Meshes, Sounds, Animations into mylevel package, you are making your map larger....there is plenty of material to use that comes with the game UT2004[/offtopic]

[offtopic]you must make sure (something that you gain from experience with time) how large your map should be, and if is over-stuffed with un-necessary content[/offtopic]

[align=center]___________________________________________________________[/align]

[align=center]taking content from other maps[/align]

99,99% of the content you wanna take from other maps and use it in your map is gonna be Textures and Static Meshes.

one vital thing here (more like a skill you gain in time) is to be able to distinguish if the content is default or custom (in regards to my definitions above).
[align=center]--------------------------------------
For Textures
--------------------------------------[/align]
[offtopic]I will try and write this by memory (and edit it later when I have time to look it into editor)[/offtopic]

After you open the map in your editor, you need to search inside the Textures browser -> In use tab.
First search into mylevel package of the map within the Textures browser.
*If the texture you like is in mylevel ....then its 99% custom (or the mapper is an idiot).....and in that case you need to export it and import it into your map's mylevel package

*If the texture you like is NOT in mylevel ....then its not in mylevel (no SHIT!!!!!!!!)....then its either 100% default texture(google search-it) or it came with an additional external texture package.

[offtopic]if the texture has a weird name like "shfah_gsdgjsj_deck4" then do a google search....it might come up as texture of a default Texture package, which you can locate from your map's texture browser (without the need to import it and make your map larger)[/offtopic]


[offtopic]If the map you got off the web, has only 1 file (*.ut2) then it doesnt have external dependencies but it probably has custom stuff into mylevel package

If the map you got off the web, has many files and folders....then the textures folder you see inside the zip file are where the additional texture packages supplied with that map are

If the map, you got it off a UT2004 server, run a dependency checker software on that map file (*.ut2), so see if there are external packages or not.[/offtopic]

TO SUM UP, try to find if it is part of a default Texture package. if it is, load it as we said so many times.......
If its not, but its only 1 texture, import it into your map's mylevel.
If its 100 textures and are all inside a texture package and you plan on using all, just load the texture package in your map, use the textures anywhere you like, and keep a log to remember once map is complete that the specific texture package is essential to run the map so that you sent it attached......

If anyone knows of a better way, let me know......



[align=center]--------------------------------------
For Static Meshes
--------------------------------------[/align]


here things are easier...

Load the map in editor, find a static mesh and double click....
into the new window (properties)
Display -> StaticMesh

e.g. StaticMesh'Rahnem_Glacier.Base.umbilical_stand_base'
this translates to:
StaticMesh package: Rahnem_Glacier
category: Base
name: umbilical_stand_base

go to your map, in static meshes browser load that package, find the static mesh.....job done!!!!!!

e.g. StaticMesh'myLevel.Door.RightDOOR' this is mylevel (custom probably)
unless you recognize that door from somewhere else (a default package), import it into your map's mylevel and make your map file larger by some KB....


[align=center]--------------------------------------
How to import Textures
--------------------------------------[/align]
1) from another map (method a)
in your texture browser ->File...->Import...->select the map (*.ut2 file)

2) from another map (method b)
in that map....texture browser ->File...->Export...-> typesomething
in your map...texture browser ->File...->Import...-> select that file
save it into mylevel and apply that into a surface, save map.

3) from another map (method c)
Open UnrealEd-> Open other map -> Copy a brush which uses that texture on one of its surfaces -> Open Your Map -> Paste.

4)from a texture-package (*.utx file)
in your texture browser ->File...->Import...->select the texture package you want to import
either save it into mylevel or keep that texture package to sent it attached with your map

5) from a picture file you created
(make sure the output file is 256x256 or 512x512 pixels, 32-bit, BMP or targa format)
in your texture browser ->File...->Import...->select the BMP or targa file you want to import
save it into mylevel and apply that into a surface, save map.
consult this also if you run in trouble: http://wiki.beyondunreal.com/Legacy:Import_The_Texture




[align=center]--------------------------------------
How to import Static Meshes
--------------------------------------[/align]

1) from another map's mylevel
static meshes browser ->click the save package icon ->save it.....and load it in your map
either save it into mylevel or keep that package to sent it attached with your map (if its huge package and you need 1 static mesh, dont)

2) from another map's mylevel (method b)
in your map static meshes browser -> File ->Load-> choose the other map
locate the static mesh, add it in your map somewhere, right-click ->convert to static mesh
mylevel, then select your static mesh from within mylevel, add it in your map, save map

3) from another map's (default package)
we covered this above....

4) from another map
Open UnrealEd-> Open other map -> Select Static Mesh-> Copy -> Open Your Map -> Paste.


[align=center]___________________________________________________________[/align]

[align=center]mylevel[/align]

mylevel is a package stored inside the map file when saved, so you dont need to have external (extra) files (dependencies), but just 1 file (the *.ut2 file)!!!!! (fuck yeahhhhh!!!!!!!!!)
mylevel will store all import-ed content: static meshes, textures etc....

how it works:
you import content (not default) into your map, you save it under "mylevel" package giving it a group and a name, you use that content at least once inside your map, and you save map

[align=center]--------------------------------------
mylevel and Textures
--------------------------------------[/align]

following the process above (import a texture) a pop-up window will appear requesting 3 things
Package, Group and Name
you use the following
Package: mylevel
Group: anything
Name: anything (dont actually type the word "anything")

e.g. if it is a texture for a door
Package: mylevel
Group: Doors
Name: Door001


now, the imported texture is saved into mylevel package BUT, it will disappear if you close the editor, even if you save the map. What you need to do is apply this texture into a brush...

in your texture browser -> locate mylevel-> find the newly added texture, go into 3D-view, and into a wall right click->apply texture, save map

[offtopic]in the future, if you delete that brush or change the texture of this brush, and that was the only brush that you had your texture on, the texture will vanish from mylevel package (oh yeahhh)....A safe way to do this is crate a large cube far from your main-map-area, where you place all imported stuff, so that, even if you delete them or forgot to apply them into your main-map-area, since you used them once inside the other-map-area, they will be saved and not removed from mylevel package. This applies also for Static Meshes added into mylevel [/offtopic]




[align=center]--------------------------------------
mylevel and Static Meshes
--------------------------------------[/align]
same process goes for static meshes too:

either importing a Static Mesh or converting brushes/shapes to Static Mesh
a pop-up window will appear requesting 3 things
Package, Group and Name
you use the following
Package: mylevel
Group: anything
Name: anything

e.g. if it is a column
Package: mylevel
Group: Deco
Name: Column001

in your Static Meshes browser -> locate mylevel-> find the newly added Static Mesh, go into 3D-view, right click->Add static mesh "mylevel_Deco_Column001", save map


[offtopic]let me know if I forget to mention anything......[/offtopic]
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

___________________________________________________________________________________________________
___________________________________________________________________________________________________
step4: Setting the minimum requirements to test our map
___________________________________________________________________________________________________

1. Start Unreal Editor

2. Save map (top bar menu) as AS-testmap.ut2 inside the UT2004\Maps directory

3. Define gametype to DWMonsterAssault.ASGameInfo (step1)

4. Load DWAssaultMapperTools actor (step2)

5. Start designing a few rooms for our indoor-map as described here (step 3):
viewtopic.php?f=78&t=4368&p=42398#p42392

just make a few rooms using brushes, set the height of the brushes at 512 for the player to have room to breathe
you could also use a few static meshes for deco....

6. Start placing monsters (step4)

you can use as starting event: MEBeginAssault
[offtopic]MEBeginAssault is the event that completes once the match is begun. you do NOT need to set a trigger for this event to complete. It auto-completes in every assault gametype.[/offtopic]

this must go (MEBeginAssault) as a Events->Tag to the DWBasicMonsterSpawner

instead, for the first group of monsters you are going to face in the game, if you want them them to spawn later (and NOT as soon as the match begins), then simply procced with a trigger.

[align=center]--------------------------------------
7. Place a PlayerStart
--------------------------------------[/align]

right-click in 3D-view in a surface (brush), bettter aim for a floor surface, choose Add PlayerStart Here

then right-click on PlayerStart actor, ALign -> Align to Floor
also, grab the actor and move him in Top View so that it will not be too close too a wall.....
also, rotate the actor in Top View so that it will not be facing a wall.....
Hit Build -> Save Map

[offtopic]sometimes you spawn dead (Editor glitch). if thats the case either restart Editor, or remove PlayerStart actor and place him again as described.[/offtopic]

The minimum requirement is to have 1 PlayerStart to test/play your map......

[align=center]--------------------------------------
8. Place a Light actor for each room/area of your map
--------------------------------------[/align]

right-click in 3D-view in a surface (brush), bettter aim for a ceiling surface, choose Add Light

then, grab the actor and move him in Top View to be centered.....
then, grab the actor and move him in Front View to be closer to the ceiling.....

Hit Build Lighting-> Save Map

Notes to Lighting:
1. there is no formula to make perfect lighting conditions
2. regarding height of room:
for a room of 512 height, place the light about 100units below ceiling
for a room of 256 height, place the light about almost touching ceiling
make sure there will be no bright spot in the ceiling (if the light is almost touching the ceiling surface)
in front-view, make sure the light actor is always below the ceiling
always hit the Build Lighting to see the effect in the room
3. regarding breadth/width of room:
for up to 512x512, 1 light will suffice
for larger areas, use more lights, (duplicate)
either place them all centered (not one on top of the other), either make them adjacent to the center.....you can see yourself when you Build Lighting what gives the desired result
4. Always Hit Build Lighting-> Save Map

[offtopic]The Light actor with default properties is efficient for most cases. I will discuss their properties in another part.[/offtopic]

[offtopic]Best Method to create more Lights for your map is to duplicate them is Top-View. That way they will be aligned in respect to height [/offtopic]


[align=center]--------------------------------------
9. Place a WeaponLocker
--------------------------------------[/align]

Actor Browser -> Pickup -> WeaponLocker
right-click in 3D-view in a surface (brush), bettter aim for a floor surface, choose Add WeaponLocker
grab the actor and move him in Top View so that it will be touching the floor (for aesthetic reasons).....

WeaponLocker properties:
WeaponLocker-> Weapons
click Add to add weapon types, and set extra ammo if you want to
Pickup-> RespawnTime how often ammo + weapons will become available from previous pickup

[offtopic]Best Method to create more WeaponLockers for your map is to duplicate them is Top-View. That way they will be both aligned with the floor and have weapons, so you wont need to add them all over again, but edit them....[/offtopic]

[align=center]--------------------------------------
8. Add an Objective for your map
--------------------------------------[/align]

Actor Browser -> NavigationPoint -> JumpDest -> JumpSpot -> GameObjective
is the location of all standard assault type objectives....

Lets add an energy core spawn -> delivered
Actor Browser -> NavigationPoint -> JumpDest -> JumpSpot -> GameObjective -> ASOBJ_EnergyCore_Spawn
and
Actor Browser -> NavigationPoint -> JumpDest -> JumpSpot -> GameObjective ->ProximityObjective -> ASOBJ_EnergyCore_Delivery

the first ASOBJ_EnergyCore_Spawn is the item that will spawn and we will need to pick-up
and
the second ASOBJ_EnergyCore_Delivery is the location where the item must be delivered at.

place both actors in your map (choose a reasonable location) ....place close to floor....not in the sky....

ASOBJ_EnergyCore_Spawn properties:
in ASOBJ_EnergyCore_Spawn tab are the sounds and messages that will shown

Assault-> Objective Info Attacker
Assault-> Objective Info Defender
Assault-> Objective Description
are the objective title shown to the player's HUD....

Collision -> Collision Height
Collision -> Collision Radius
is the area we define where a player must be to activate the obj (collect the core)

GameObjective -> bOptionalObjective: False (this means its a primary obj)
GameObjective -> DefencePriority: (this value is the numbering/order of all objectives in map....read below)
GameObjective -> Destuction Message: message shown when you complete it
GameObjective -> Score: the xp you will get

ps1: Collision -> Collision Height and Collision -> Collision Radius...if you plan to use a static mesh so that the core will not be floating on air, make sure the static mesh doesnt block the collision area....to view collision area, in any view, right-click on top-bar of that view, Actors->Radii View

ps2: this is a proximity type objective, means it will be automatically activated when you get inside the collision area.

ps3: GameObjective -> bOptionalObjective: True....that makes it an optional objective....Optional objectives runs simutalneously with the primary objectives of the same numbering (aka DefencePriority)...an Optional objective is not necessary to be completed. Optional objectives disable if not completed, when the primary objectives of the same numbering (aka DefencePriority) are completed.

ps4: GameObjective -> DefencePriority: this value defines when the objective will be active (in the HUD)
to set this value properly in all your objectives, you need to know
a. which is the last objective
b. the order of your objectives
so that, the last objective of the map has a DefencePriority: 0
the pre-last objective of the map has a DefencePriority: 1
the pre-pre-last objective of the map has a DefencePriority: 2
the pre-pre-pre-last objective of the map has a DefencePriority: 3 etc....
also....two objectives can have the same DefencePriority (this means they run at the same time and both must be completed to make the next objective available...in that case, you dont skip a number......
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

___________________________________________________________________________________________________
___________________________________________________________________________________________________
step5: Monster placement/spawing/properties etc

here will discuss both the DWBasicMonsterSpawner and the Advanced Monster Spawner
___________________________________________________________________________________________________
In order to spawn a monster (or more) you will need 3 things
1. something (an action) that will activate the MonsterSpawner (trigger/objective/actor)
2. a MonsterSpawner (there are three types to choose from)
3. a spawnpoint (or more)

In detail:
1. in order the MonsterSpawner to be activated, you need an Event to occur first,and it works like this:
an action occurs ( e.g. a trigger is activated), this completes the Event of this trigger
and each actor that is tag-ged to that Event-name is activated

placing a (proximity) trigger in the map, setting an event to occur when a player gets into the trigger's range
actor class browser->Triggers->Trigger
Trigger properties:
Events -> Event: lala001

2. a MonsterSpawner is the system that controls the monsters that will spawn, what monster type, how many, and all other attributes of monsters....
ps: you can place the MonsterSpawner anywhere is the map, even outside the map

actor browser->keypoint->ThingFactory->creaturefactory->DWMonsterSpawner->DWBasicMonsterSpawner
DWMonsterSpawner properties:
Events -> Tag: lala001
MonsterSpawning
lives: 1
monstername: AlienQueen
monsterpackage: Package_Xenomorphs

monster's list: viewtopic.php?f=78&t=4031

so, I set above, when the action lala001 is completed, to activate the MonsterSpawner , which will spawn 1 Alien Queen...

3. a spawnpoint (or more) is the location that the MonsterSpawner will spawn the monsters you set to spawn....

ps1: you can set up to 16 spawnpoint for 1 MonsterSpawner
ps2: make carefull placing of the spawnpoint ...you want the monsters to spawn inside the map, in reasonable locations
ps3: if you have set 1 monster to spawn only in your MonsterSpawner and you have more than 1 spawnpoint for this, then the 1 monster will spawn in one random spawnpoint

in order to link a MonsterSpawner with a spawnpoint you need to:
a. DWMonsterSpawner properties:
Events -> SpawnPointTag : hahaha

b. place at least 1 spawnpoint
actor browser->NavigationPoint->SpawnPoint
SpawnPoint properties:
Events -> Tag: hahaha

to sum up

the Event of trigger must match the Tag of DWMonsterSpawner lala001
and
the SpawnPointTag of DWMonsterSpawner must match the Tag of SpawnPoint hahaha

ps: these two names must be different

_____________________________________________________________________________________________________________
[align=center]types of Monster Spawners[/align]
_____________________________________________________________________________________________________________
[align=center]DWBasicMonsterSpawner[/align]

its the most basic type, and it can accustom most situations/cases you may consider using. nothing complex here.

how it works:
when its triggered, it spawns the monster type you set into Monster Spawning->MonsterName
the number of monsters it will spawn in total equals Monster Spawning->Lives
if you want to spawn NOT all monsters at once, but spawn a few and keep spawing the rest as soon as one dies
use that value at Misc->MaxMonstersAtOnce
if you want to spawn ALL monsters at once,
use a value at Misc->MaxMonstersAtOnce higher than the value in Monster Spawning->Lives

[offtopic]can be also activated by collision Misc->bCollisionTriggered[/offtopic]

ps1: make sure to use more than 1 spawnpoint for the MonsterSpawner if you want to spawn more than 2-3 monsters,
otherwise it will spawn 1 monster/second from that spawnpoint
ps2: dont forget to set properly the names for Events->SpawnPointTag and Events->Tag as we described above
ps3: Misc->bCollisionTriggered set to False, otherwise it will spawn monsters everytime something is close to that spawner....thats why triggers are for...unless you want to create some sort of ambush/trap to e.g. a healthkit....
ps4: Display->DrawScale, set this value high enough especially if you are converting a map and you want to distinguish your actor icons from these of the default map.....and not spending hours to locate them....

Contents of spawing volumes:
fixed
random
proportional random
proportional fixed
additive proportional
chance to spawn
infinite

If you want to spawn a fixed number of monsters you will just need:
Monster Spawning->MonsterName
Monster Spawning->Lives
Misc->MaxMonstersAtOnce
[align=center]______________________________[/align]
If you want to spawn a random number of monsters you will need:
Monster Spawning->MonsterName
Monster Spawning->Lives
Misc->MaxMonstersAtOnce
and
RandomExtraLivesMax
e.g. lives=3, random=10
this will create total= from 3 up to 13 (=3+10) monsters
[align=center]______________________________[/align]
If you want to spawn a proportional number of monsters to the numbers of players in-game you will need:
Monster Spawning->MonsterName
Monster Spawning->Lives
Misc->MaxMonstersAtOnce
and
Monster Spawning->RandomExtraLivesMax
and
Monster Spawning-> RecalcExtraLives -> bWeighted:True: it will randomly create extra monsters in regards to players in-game, by considering the RandomExtraLivesMax value

[align=center]or alternatively you can use [/align]
Monster Spawning-> bUseAutoRecalcExtraLives: True
Monster Spawning-> RecalcExtraLives -> bWeighted:False: it will create extra monsters in regards to players in-game using a formula
Monster Spawning-> RecalcExtraLives->MaxMultiFactorPerPlayer (e.g. 5 -> then it will spawn 5 monsters/player)

[align=center]or alternatively you can apply the following trick using the Monster Spawning->ReqPlayerstoTrigger [/align]
this might be the best method to control the overall monsters that will spawn at each possible scenario

place 2 or more DWBasicMonsterSpawners and set specific min and max values in Monster Spawning->ReqPlayerstoTrigger, that only when met, the respective spawner will activate....
e.g. method 1 -----> spawner2: 3-12players and spawner3: 6-12players and spawner4: 9-12players
e.g. method 2 -----> spawner2: 4-5 players and spawner3: 6-8players and spawner4: 9-12players

[align=center]______________________________[/align]
If you want a monster to have a probability/chance of spawning you will need:
Monster Spawning->MonsterName
Monster Spawning->Lives
and
Monster Spawning-> ChanceToSpawn with value from 0,01 to 1
if 0 then it will never spawn (why would you even consider that idiot???)
if 0,2 it has 20% chance to spawn the specific group
if 0,5 it has 50% chance to spawn the specific group
if 1 it will always spawn the specific group

[align=center]______________________________[/align]
If you want to spawn infinite monsters you will just need:
Monster Spawning->MonsterName
Misc->MaxMonstersAtOnce it defines how many monsters will be alive at the same time
Monster Spawning-> bInfiniteLives
note: infinite monsters give adr offline, not sure about online....

[align=center]______________________________[/align]


Other settings of the DWBasicMonsterSpawner
place a visual-FX if monsters spawn in front of your face to look nice (bollocks):
Monster Spawning-> bEmitTeleportationEmitter: True, and choose what emitter you prefer Monster Spawning->EmitSpawningemitter

___________________________________________________________________________________________________
___________________________________________________________________________________________________

___________________________________________________________________________________________________
Last edited by christmas on Wed Dec 11, 2013 5:09 am, edited 1 time in total.
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

_____________________________________________________________________________________________________________
[align=center]Advanced Monster Spawner[/align]

this is the advaced type of the Monster Spawner, providing more options etc...

I will make an effort here not to analyse all properties of this actor, but to provide, like with the DWBasicMonsterSpawner, all possible cases that someone will want to activate within game.
the most typical cases of monster spawns, that can be achieved using the DWBasicMonsterSpawner,are covered in that section and will not be referenced here (as to how to accomplish the same result for that cases using the AdvDWMonsterSpawner.)

[align=center]________________[/align]
[offtopic]ps: you gonna need the latest version of DWAssaultMapperTools.u , in order to have the AdvDWMonsterSpawner actor in your actor classes browser. If you dont, download and install the file Sample package fixed here -> viewtopic.php?f=78&t=4239&start=10#p42389[/offtopic]
[align=center]________________[/align]
it is triggered/activated the same way as the DWBasicMonsterSpawner

you will need:
1. something (an action) that will activate the MonsterSpawner. This can be done using a trigger/objective/actor that will cause this action. (In its properties Events->Event)
2. the AdvDWMonsterSpawner that will listen to this event above in its properties: Events->Tag
3. spawnpoints (up to 16) inside the map area, in sensible locations, where the monsters of the spawner above will spawn

the Events-> SpawnPointTag of AdvDWMonsterSpawner must match the Tag of all the SpawnPoints we want to link together
[align=center]________________[/align]
monster's list: viewtopic.php?f=78&t=4031
[align=center]________________[/align]
[align=center]________________[/align]
[align=center]________________[/align]
First off, lets make a short intro on events.

NOt all actions complete Events, that in responce will trigger the following actions, which will activate all these actors that have set that Event name is their Properties->Tag

Actors that can complete events in UT are:
1. Triggers (any type)
2. Objectives
3. Movers
also, the AdvDWMonsterSpawner, under its properties MonsterEvents->KilledEvent
there are more that I cant think of at this time....I will add them once I think more.....

1a. a (proximity) trigger will trigger the Events->Event EVERYTIME someone is into the radii/range of that trigger
so linking that to a monsterspawner will have infinite monsters.....
trigger properties:
Trigger->bInitiallyActive: True
Trigger->bTriggerOnceOnly: True
that will trigger the Event once (only) and disable that trigger actor after that....so its a one time proximity trigger

1b. a usetrigger will trigger the Events->Event EVERYTIME someone is into the radii/range of that trigger and presses the USE key, HOWEVER, for some reason, a usetrigger activates a monsterspawner only once....
so, if its a mover, it will COMPLETE the Event everytime
but, if its a monsterspawner, it will activate it only ONCE.....why is that???? I DON'T KNOW!!!!!

2. an Objective completes its Events->Event once, and only once, and that is when the Objective is completed

3. a mover moves through its key-frames, completing Events (MoverEvents) in all its different states. This is quite complex, I will provide a link for now, and try to explain later when I have time for it...(ps: unwanted results might arise if you link the mover events with a monsterspawner, so better avoid it)

4. AdvDWMonsterSpawner, under its properties MonsterEvents->KilledEvent
KilledEvent: Event that'll trigger when this monster dies.
so set this group to spawn 1 Unique monster, you kill the monster, the Event completes....
if you have 10 monsters in this AdvDWMonsterSpawnes....the Event will complete every time you kill 1 monster of this group....yeah I know, shit shit shit....
[offtopic]you can make a trial part in your map, linking KilledEvent to a mover moving its 4-5 keyframes, to kill each monster and move mover one step every time you kill 1 monster, (set Mover properties to TriggerToggle ). What a sick idea!!!!![/offtopic]

[offtopic]ps: all the actors mentioned above are more than enough to provide Events that can activate your placed MonsterSpawners (by being tag-ged to these events)...and cover 95% of ALL the possible cases you may need to use in your map...the remaining 5% which can be scripted triggering/conditional etc, are cases you may not even consider using in your map,because of complexity or because the above options can accomodate yours monsterspawing activation cases.[/offtopic]

[align=center]________________[/align]
[align=center]________________[/align]
[align=center]________________[/align]
add the actor:
actor browser->keypoint-> AdvDWMonsterSpawner
AdvDWMonsterSpawner properties:
minimum requirement to make it work:
Events -> Tag: link to the trigger's event
Events -> SpawnPointTag : link with this spawner's spawnpoints

Monster Spawning->MonsterClasses->MonsterName what monster
Monster Spawning->MonsterClasses->TableSection the group it belongs to

the 3 properties below, if left as default, will always spawn 1 monster:
Monster Spawning->Lives
Monster Spawning->MaxMonstersAtOnce

SpawningRequirement->ChanceToSpawn :1 (to always spawn)
Last edited by christmas on Fri Dec 13, 2013 4:10 am, edited 3 times in total.
DW_Ant
DW Clan Member
Posts: 2679
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

I just want to clarify on the three different monster spawners.

The DWMonsterSpawner is the original spawner I've first created. It contains the fundamental properties as well as many optional properties.

The DWMonsterSpawner would often overwhelm beginner mappers. Therefore, I created the DWBasicMonsterSpawner. The basic spawner already populates the properties from the monster spawner, and grants the mapper the simple properties they can adjust. Although this spawner has many more limitations, its learning curve is much more lenient.

The AdvDWMonsterSpawner is the most recent spawner in response some of the issues mappers had with the previous spawners. You can see some of those issues in this topic.
When it comes to rapid development, the AdvDWMonsterSpawner has far fewer concerns to worry about (ie: spawn point limitations, max monsters at once conflicts with other spawners, visibility, and spawning behaviors). Beginner mappers should be able to place a AdvDWMonsterSpawner, specify the 'what', 'where', and 'when' settings. And they're done.
However the AdvDWMonsterSpawner contains many various properties for the mappers who want to create specific situations. Additional functionalities include spawning requirements, difficulty adjustments, spawning patterns, event handling, and a debugging utility. There are many properties to test, and I'm still going through these properties in search for some bugs.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.

FFE466

_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

[align=center]______________________________________________________[/align]

[align=center]AdvDWMonsterSpawner Properties:[/align]
[align=center]______________________________________________________[/align]
I will try to list and collaborate a bit more to the properties of the spawner.
original post here: viewtopic.php?f=78&t=4181#p40628

Events
  • Event: The event to trigger when the spawner runs out of monsters to spawn.
    Default value = 'OutofMonsters' I can't think of any use for this event, seriously....unless you want to activate another spawner....to make players' life more difficult
  • FinishedEvent: The event to trigger when the spawner runs out of monsters to spawn, and all of its monsters are dead.
    Default value = 'AllMonstersDead' I want to believe (havent tested yet) that this is different than the KilledEvent of the other old Spawner.
    I mean, I assume this event only completes when you kill all monsters of that spawner, and not everytime you kill 1 monster of that group inside the spawner.
    this property can be very usefull,
    you can have a mover->triggertoggle to that event, to open the new map area
    or activate a new spawner = more monsters/ambush
    or use a scripted trigger (wait for event: kill boss) to trigger next objective
    and many other cases I can think of
    the old spawner limited you to 1 monster only and was glitchy...at least in some cases i encountered.....
  • NukingTag: When a scripted action (clear monsters) is executing, all spawners matching this tag will permanently disable itself and kill all of its monsters.
    Default value = 'ClearMonsters' ps: you can create a sctipted trigger: actor->keypoint->AIscript->Scripted Sequence->Scripted Trigger
    open its properties, and at AIscript->Actions
    0: Action_WAITFOREVENT'myLevel.Action_WAITFOREVENT0'
    externalevent: hitkillbutton
    1: Action_TRIGGEREVENT'myLevel.Action_TRIGGEREVENT0'
    event: ClearMonsters
    and set a usetrigger actor to complete the event: hitkillbutton (or event of an objective)
    so that, once you press button, this completes the hitkillbutton event, which kills all the monsters of the spawners that have NukingTag: ClearMonsters
    ps:use unique name for that event
  • SpawnPointTag: Tag of the spawn points you want the spawner to consider. This determines where to place (location) the monsters.
    Default value = 'SpawnPointTagHere' You need to set the Events->Tag of the spawnpoint actor tha same name as this.
    ps:you can use infinite number of spawpoints for each Advanced monster spawner (there is no limit)
  • Tag: When an event matching this tag is triggered, this monster spawner will respond to the message. By default it will spawn all of its monsters. See [anchor= goto=TriggerType]TriggerType[/anchor].
    Default value = 'SpawnMonsters' you need to set Events->Event of a trigger/objective/actor the same name as this

Monster Events
  • bAggroEventOnce: If true, then the monster can only trigger the AggroEvent at most one time.
    Default value = false
  • bHateWhenTriggered: If true, then the monster will attack the event instigator.
    Default value = true
  • bKillMonsterWhenTriggered: If true, then the monster will die when it's triggered.
    Default value = false
  • bToggleVulnerability: If true, then the monster's god mode property will be toggled.
    Default value = false interesting property, since this value can be toggled, you can have a boss/miniboss to toggle between the two states, but I dont know by what action it toggles between the two states.....a trigger/scripted trigger with timer would be cool, by I see no option on such occasion here....would be could if there was once...
  • AggroEvent: Event to trigger when the monster is aware of the enemy's presence. set an event and set another spowner with that tag, to trigger the second spawner and spawn more monsters....makes total sense
  • KilledEvent: Event to trigger when the monster dies. someone must clarify the diffirence between this property and the property at Events->FinishedEvent...
    ps: this property is also meet at old Spawner
    ps2: when spawner spawns more than 1 monster, result is crappy...
  • MonsterTag: Monster's tag.
  • SpawnEvent: Event to trigger when the monster spawns. Triggers every time a monster spawned from this spawner.
Monster Sounds Don't even bother....leave them as is (default)...if you want you can define specific sounds for DeathSounds and/or ChallengeSounds for 1 boss/miniboss
  • bFullVolume: If true, then the monster's sound volume is maxed.
    Default value = false
  • bPitchedBasedSize: If true, then the monster's pitch will vary based on the monster's size relative to the monster's default size. Small monster's have higher pitch. Big monsters have a lower pitch.
    Default value = true
  • ChallengeSounds: Sounds to play when the monster sees a player.
  • DeathSounds: Sounds to play when the monster dies.
  • HitSounds: Sounds to play when the monster takes damage.
  • MonsterAmbientSound: Sound to loop while the monster is alive.
  • SoundVolumeMultiplier: Multiply the monster's sound volume with this value.
    Default value = 1
[align=center]______________________________[/align]

Monster Spawning
  • bImmediateReplace: When a monster dies, the spawner will immediately attempt to spawn a replacement.
    Default value = true
  • Interval: Time interval needed to spawn another monster. default= 0 = spawn all the monsters of the spawner If 0, the spawner will attempt to spawn all monsters simultaneously.
    If 10, spawns 1 monster every 10 secs.
  • Lives: Number of total monsters to be spawned. Default value = 1-1 = 1 monster in total 0 = infinite monsters.
    1-1 = 1 monster
    5 - 5 = 5 monsters
    5 - 15 = from 5 up to 15 monsters Also this is a ranged number (completely replacing the RandomExtraLives property from the old spawner). It will randomly spawn monsters from min to max value. The max value will be adjusted based on the Difficulty Changes category.
  • MonsterClass: The name of the monster it should spawn. Reference the DWMonsterRoster for a list of monster names. This property will only be considered if MonsterIndex is not 0-0.
  • MonsterIndex: Spawns a range of monsters from Min to Max value. These numbers are the index numbers where the monster is positioned at the DWMonsterRoster.
    Default value=0-0 (Nali Cow)
  • MonsterPackage: The name of the package this monster belongs to. If spawning a monster based on MonsterClass, then this will be a helpful to narrow down the search.
    Default value='SearchWholeTable'
  • MonstersPerTrigger: If TriggerType is equal to GroupedTrigger, then every time the spawner is triggered, it will spawn this many monsters per trigger. If triggered multiple times, then the number of pending monsters is added to the existing pending monsters.
    Default value=1-1
  • MaxMonstersAtOnce: Limit the number of living monsters the spawner can have alive simultaneously.
    Default value = 32 this means, even you have 100 monsters to spawn in total, in will spawn 32, and each time 1 monster dies, it spawns 1 new monster, so the value of alive monsters = 32...until the spawner spawns the total monsters = Lives = 100.
    if you have set Lives = big number, better reduce the MaxMonstersAtOnce value.
    If you want all monsters alive at once (total chaos), set MaxMonstersAtOnce value larger than Lives value.
  • *****[anchor=TriggerType goto=]TriggerType[/anchor]: Determines the spawner's behavior when it's triggered.
    default = Spawn ALL = spawner is activated ONCE, tries to spawn all monsters set at Lives, if Lives > MaxMonstersAtOnce ...you know the drill.....
    • SpawnAll: when triggered, it will attempt to spawn all monsters. It will only pause when it reaches MaxMonstersAtOnce or when it runs out of lives. A monster will spawn once every Interval seconds. (this is default) easiest method, to control the monsters number in your map, very straight-forward
    • GroupedTrigger: when triggered, it will spawn groups of monsters. It will add to pending number of monsters based on the MonstersPerTrigger property. It will spawn 1 monster per Interval seconds. It will pause when it reaches MaxMonstersAtOnce, or when it runs out of lives, or when number of pending monsters reaches 0.
      It spawns GROUPS of monsters, which adds to the existing number .....it works with the MonstersPerTrigger property above.
      Each time the event is triggered, it will add X number of monsters, where X= value at MonstersPerTrigger
    • ToggleTrigger: when triggered, it will spawn monsters (at Interval seconds) until it is triggered again. It will only pause while it's enabled when it reaches MaxMonstersAtOnce or when it runs out of lives. similar to GroupedTrigger
[offtopic]NOTES for GroupedTrigger and ToggleTrigger

ps1: do not use GroupedTrigger or ToggleTrigger in spawner1 with a FinishedEvent of spawner1 to match tag of another spawner....whether its in the same map area....or in another part of the map....

ps2: also careful with scripted triggers and these events/ tag of the spawner.

ps3: also, make sure you set a reasonable value at MaxMonstersAtOnce if you use 1 spawner only in the same area of the map or more than one spawner.... you want to limit (keep it low) the overall number of monsters that will exist at worst case scenario at the same area...
undesired results may arise....

ps4: you could alternatively use 2-3-4 spawners with TriggerType :SpawnAll
and use them in conjuction with FinishedEvent of one to match the Tag of the other.......................
or a random event (e.g. an objective event) to match the Tag of the other, assuming you have 2-3 objectives, like "hold objectives", obj 1a, 1b, 1c, with the same DefencePriority, both critical objectives (not optional)
or using a scripted trigger: Wait for Event1 ->Trigger Event1->Wait for Event2 (or skip that) ->Trigger Event2 e.t.c........
and the cool thing about the alternative method is:
1. you can always control the max number of monsters alive in map/ map area in question
2. no conflicts of any kind (different events/tags for each spawner), all set to be triggered once and only once
3. duplicate the spawners
4. define different spawnpoints for each
5. have different monsters for each spawner
6. have different (or varied) number of monsters for each spawner
7. also add NukingTag to some spawner or all (you decide) to make it more sexy
8. you could also use in conjuction with a scripted trigger to make it even more awesome....to get specific outcome

not that all of the above can not be done by GroupedTrigger and/or ToggleTrigger, but in that case you may come to undesired results, you will not have full control, maybe can't configure things properly, map break (just saying)....
and the last resort to that will be the NukingTag, although some random event could set spawner into motion again....[/offtopic]
DW_Ant
DW Clan Member
Posts: 2679
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

christmas wrote:Event: The event to trigger when the spawner runs out of monsters to spawn.
Default value = 'OutofMonsters' I can't think of any use for this event, seriously....unless you want to activate another spawner....to make players' life more difficult
Not all events lead to more monster spawns. All actors have their own behaviors when triggered. For example, you can open a door or resurrect all players when the last monster is killed.

christmas wrote:ToggleTrigger: when triggered, it will spawn monsters (at Interval seconds) until it is triggered again. It will only pause while it's enabled when it reaches MaxMonstersAtOnce or when it runs out of lives. similar to GroupedTrigger
GroupedTrigger is primarily focused upon spawners with a delay between each spawn. For example, you may want infinite pupae to spawn every 5 seconds until the spawner is triggered again. Compared to GroupedTrigger, it will spawn x many monsters every time it is triggered.



christmas wrote:[offtopic]NOTES for GroupedTrigger and ToggleTrigger

ps1: do not use GroupedTrigger or ToggleTrigger in spawner1 with a FinishedEvent of spawner1 to match tag of another spawner....whether its in the same map area....or in another part of the map....[/offtopic]
FinishedEvent will trigger with these conditions:
The last monster must die
The spawner ran out of lives (but not infinite). When lives equals -1, then this event never triggers.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.

FFE466

_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

DW_Ant wrote:
christmas wrote:Event: The event to trigger when the spawner runs out of monsters to spawn.
Default value = 'OutofMonsters' I can't think of any use for this event, seriously....unless you want to activate another spawner....to make players' life more difficult
Not all events lead to more monster spawns. All actors have their own behaviors when triggered. For example, you can open a door or resurrect all players when the last monster is killed.
No, not when last dead, but when last spawned.... , maybe make a scripted-trigger to spawn a DISPLAY_Message "last monsters you need to kill before you can catch your breath"....
when i said i find no use, i meant it in a funny way, what I mean is, i cant come up with a smart idea of a subsequent event being activated by this event: OutofMonsters....

ps: events can lead to anything....my pre-last post, special reference to Events, is referenced to the link between actions that complete events, than in response trigger MonsterSpawners....If you read this, is not a full review of events/tags, but its a small intro I made to give an idea that and how can someone link these 2 when mapping.....

[align=center]___________________[/align]
DW_Ant wrote:
christmas wrote:ToggleTrigger: when triggered, it will spawn monsters (at Interval seconds) until it is triggered again. It will only pause while it's enabled when it reaches MaxMonstersAtOnce or when it runs out of lives. similar to GroupedTrigger
GroupedTrigger is primarily focused upon spawners with a delay between each spawn. For example, you may want infinite pupae to spawn every 5 seconds until the spawner is triggered again. Compared to GroupedTrigger, it will spawn x many monsters every time it is triggered.
ok.... spawn X number of monsters at each trigger-ing....
(literally: add X number of monsters at each trigger-ing to the Lives property,
if the Event is triggered (again) add to Lives = Lives + MonstersPerTrigger
if Lives > 0 then if Monsters Alive > MaxMonstersAtOnce wait until Monsters Alive < MaxMonstersAtOnce
when Monsters Alive < MaxMonstersAtOnce spawn 1 or X monsters (????) at every time seconds = Interval
until Monsters Alive = MaxMonstersAtOnce or until Lives = 0
if Lives = 0 stop....


so, this spawner SETUP requires to set:
a) Monster Spawning-> MonstersPerTrigger = X
b) Monster Spawning-> Interval

ps: what happens if you set Monster Spawning-> MonstersPerTrigger = 0 -> I assume it wont spawn/add extra monsters, right?

ps: what happens if you set Monster Spawning-> MonstersPerTrigger = -1 -> it wont spawn/add extra monsters, or it will kill 1 monster/trigger-ing of the event???

the main difference of GroupedTrigger and ToggleTrigger, regardless of monsters number or time interval, what I can understand is:
GroupedTrigger will add monsters every time event is trigger-ed while
ToggleTrigger has an opened and closed state, so every second trigger-ing of this event, it will add monsters to the spawner....do I understant that correctly???


[align=center]___________________[/align]
DW_Ant wrote:
christmas wrote:[offtopic]NOTES for GroupedTrigger and ToggleTrigger
ps1: do not use GroupedTrigger or ToggleTrigger in spawner1 with a FinishedEvent of spawner1 to match tag of another spawner....whether its in the same map area....or in another part of the map....[/offtopic]
FinishedEvent will trigger with these conditions:
The last monster must die
The spawner ran out of lives (but not infinite). When lives equals -1, then this event never triggers.
so, in the case scenario of Spawner with TriggerType: GroupedTrigger or ToggleTrigger:
a. when Lives = 0 and
b. when monstersAlive = 0
the Spawner completes the Event set at FinishedEvent .....ok!!!!

but what happens if the above case exists, I mean: that monster spawner is activated, runs out of lives and monsters alive, it triggers the FinishedEvent, and after that, the Event that triggers the above spawner (Events->Tag) is completed again.... will that spawner re-start ...or the spawner becomes useless/destroyed???

you need to collaborate a bit more on the three trigger types: SpawnAll, GroupedTrigger,ToggleTrigger...
not only regarding their behaviour, spawning outcome.....

but, also, in regards to the type of externalevents that are completed within a map....
what I mean is, events (not the spawner events) sometimes are 2-3-4 times completed within a map (the same event)
I mean the events that we tag to activate the spawner

e.g. if i set a (proximity) trigger with bTriggerOnlyOnce = False with the event: bulldog
and set a spawner with trigger type: SpawnAll and tag: bulldog
how many times will my spawner activate?
only once? everytime I pass through the trigger's range?

ps: I will try and provide some typical case scenarios here later on, with specific properties to provide specific result.....which you can correct them.....

[offtopic]Off-topic[/offtopic]
Image
Last edited by christmas on Fri Dec 13, 2013 6:27 am, edited 1 time in total.
User avatar
christmas
1337 Haxor
Posts: 237
Joined: Sun Mar 10, 2013 6:30 pm

_____________________________________________________________________________________________________________
[align=center]types of Monster Spawners[/align]
_____________________________________________________________________________________________________________
[align=center]AdvDWMonsterSpawner[/align]

its the Advanced type, and it can accustom both all typical situations/cases you may consider using and the most complex ones (if you configure the spawner properly)

how it works: when its triggered, it spawns the monster type you set into Monster Spawning->MonsterClasses->MonsterName

the number of monsters it will spawn in total equals Monster Spawning->Lives

if you want to spawn NOT all monsters at once, but spawn a few and keep spawing the rest as soon as one dies
use that value at Monster Spawning->MaxMonstersAtOnce and make sure it is lower than the value Monster Spawning->Lives

if you want to spawn ALL monsters at once,
use a value at Monster Spawning->MaxMonstersAtOnce greater than the value in Monster Spawning->Lives [offtopic]I dont know (cant locate in their properties) if it can be also be activated by player collision to the spawner actor[/offtopic]


Notes/hints/suggestions on advanced spawner: ps1: make sure to use more than 1 spawnpoint for the MonsterSpawner if you want to spawn more than 2-3 monsters, otherwise it will spawn one monster after another from that 1 spawnpoint

ps2: you can use infinite number of spawnpoints (and not just 16 as with the older spawners)

ps3: dont forget to set properly the names for Events->SpawnPointTag and Events->Tag as we described above (in my other post)

ps4: Display->DrawScale, set this value high enough especially if you are converting a map and you want to distinguish your actor icons from these of the default map.....and not spending hours to locate them.... the default value = 1,5

ps5: the best way to disable a spawner is (thats the only actual way I came up and it works everytime) is to go set the Events->SpawnPointTag of that spawner you want disable-d to something not even GOD can guess....that way you can run your map and pay attention to your other spawners without the need to re-kill the monsters of this spawner for the 20th time.... (unless they complete a critical event which you can replace with a trigger/scriptedtrigger etc...) IF ANYONE KNOWS ANOTHER METHOD THAT WORKS 100% EVERY TIME, POST IT....EVERY OTHER METHOD I CAME UP WITH AND TRIED, IT SPAWNED SOME RANDOM MONSTERS AT SOME POINT....

ps6: expect to have undesired results, the more complex the setup of the spawner you create....IN OTHER WORDS, try to keep it simple... [align=center]________________[/align]
adding the actor: actor browser->keypoint-> AdvDWMonsterSpawner minimum requirement to make it work: AdvDWMonsterSpawner properties:

Events -> Tag: link to the trigger's event
Events -> SpawnPointTag : link with this spawner's spawnpoints

Monster Spawning->MonsterClasses->MonsterName what monster
Monster Spawning->MonsterClasses->TableSection the group it belongs to

the 4 properties below, if left as default, will always spawn 1 monster:
Monster Spawning->Lives
Monster Spawning->MaxMonstersAtOnce
Monster Spawning->TriggerType

SpawningRequirement->ChanceToSpawn :1 (to always spawn)

ps1: monster's list at bottom of this post
ps2: you can set monster type by Index number (and NOT MonsterName)
ps3: TableSection prevents spawner from searching whole Monster Table.....so better state it... ____________
________________________
Contents of spawing volumes:
fixed
random
infinite
chance to spawn
proportional fixed Method 1: LM_Stacked
proportional random Method 2: LM_AddWeight
alternative: additive proportional
________________________
____________


If you want to spawn a fixed number of monsters you will just need: Monster Spawning->MonsterClasses->MonsterName
Monster Spawning->MonsterClasses->TableSection
Monster Spawning->Lives set min and max values the same number
Monster Spawning->MaxMonstersAtOnce [align=center]______________________________[/align]

If you want to spawn a random number of monsters you will need: Monster Spawning->MonsterClasses->MonsterName
Monster Spawning->MonsterClasses->TableSection
Monster Spawning->Lives set min and max values different
Monster Spawning->MaxMonstersAtOnce

e.g.
min=3,
max=10
it will spawn from 3 up to 10 monsters maximum. The max value will be adjusted based on the Difficulty Changes category. [align=center]______________________________[/align]

If you want to spawn infinite monsters you will just need: Monster Spawning->MonsterClasses->MonsterName
Monster Spawning->MonsterClasses->TableSection
Monster Spawning->Lives set this value to 0 (zero)
Monster Spawning->MaxMonstersAtOnce it defines how many monsters will be alive at the same time

[align=center]______________________________[/align]
If you want a monsterSpawner to have a probability/chance of spawning you will need: Monster Spawning->MonsterClasses->MonsterName
Monster Spawning->MonsterClasses->TableSection
Monster Spawning->Lives
Monster Spawning->MaxMonstersAtOnce
and
Spawning Requirements -> ChanceToSpawn with value from 0,01 to 1 (default value = 1)

if 0 then it will never spawn (why would you even consider that idiot???)
if 0,2 it has 20% chance to spawn the specific group
if 0,5 it has 50% chance to spawn the specific group
if 1 it will always spawn the specific group
[align=center]______________________________[/align]

If you want to spawn a proportional number of monsters to the numbers of players in-game you will need:
Monster Spawning->MonsterClasses->MonsterName
Monster Spawning->MonsterClasses->TableSection
Monster Spawning->Lives
Monster Spawning->MaxMonstersAtOnce
and
Difficulty Changes -> PlayerDifficultyChanges this category considers into the equation the NUMBER of players

bCountDeadPlayers: true
bUsePlayerChanges: true (definitely)
NewDamageFactor leave it zero (i am not aware of specifics)
NewHealthFactor will change HP of monsters.... 0 = base monster HP

NewLives-> bRecalcExtraLives: true (definitely)
Method :
Method 1: LM_Stacked it creates monsters in proportion to number of players in server by using the Factor property
formula for total Number of Monsters = Rand(Lives.Max - Lives.Min) + Lives.Min + (Factor * numPlayers)
example 1:
Lives: min =5, max =5
factor = 3
it will spawn 5 monsters and 3 monsters per player in-game
so, for 10 players, = 5 + (10 * 3) = 35


alternatively:

Method 2: LM_AddWeight it randomly creates monsters in proportion to how full server is...(full server will probably give Lives = max Lives.... does not consider the Factor property

the way I understand it....
if 1 player in-game, it creates HIGH chance-to-spawn Lives = min Lives
if servel is full , it creates HIGH chance-to-spawn Lives = max Lives
example 1:
if you have Lives min =3, max = 10, then:
if 1 player in-game, it creates HIGH chance-to-spawn 3 monsters and LOW chance-to-spawn 10 monsters
if servel is full , it creates HIGH chance-to-spawn 10 monsters and LOW chance-to-spawn 3 monsters proportional MonsterSpawn methods comparison: Method 1: LM_Stacked I believe this method will give a very precise output = total number of monsters, when number of players is known....
and will only add the variable Rand(Lives.Max - Lives.Min) if min and max values are different

Method 2: LM_AddWeight I assume this method (cant test the hypothesis offline...as many other things) is resticted to the total number of monsters it will eventually spawn, by the 2 values set in Monster Spawning -> Lives -> min and Monster Spawning -> Lives -> max
it will always spawn a total number of monsters between the min and max values set in Lives

[align=center]alternatively you can apply the following trick using the Spawning Requirements -> ->PlayerRange-> max and min [/align] I will just reference to it, its just an alternative method of the above two methods, probably unnecessary, maybe not the best method.

place 2 or more advDWMonsterSpawners and set specific min and max values in Spawning Requirements -> ->PlayerRange-> , that only when met, the respective spawner will activate....
e.g. method 1 -----> spawner2: 3-12players and spawner3: 6-12players and spawner4: 9-12players
e.g. method 2 -----> spawner2: 4-5 players and spawner3: 6-8players and spawner4: 9-12players
will add more case scenarios later on.............

___________________________________________________________________________________________________
___________________________________________________________________________________________________
Other settings of the DWBasicMonsterSpawner
visual-FX when monsters spawn...especially in a visible by the player location: Monster Adv Customization -> SummonAnim: Animation to play when summoning/resurrecting monsters. If null then it will use the monster's default animations.
Monster Adv Customization -> SummonFX: Emitter to spawn for each monster it spawns.
leave the default values here. ___________________________________________________________________________________________________
___________________________________________________________________________________________________
other links Redesigning the Monster Spawner
viewtopic.php?f=78&t=4181

Monster Spawner Tutorial {Unfinished}
viewtopic.php?f=78&t=4148&p=40231&hilit ... ner#p40231

monster's list (name and package)
viewtopic.php?f=78&t=4031
DW_Ant
DW Clan Member
Posts: 2679
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

christmas wrote:No, not when last dead, but when last spawned.... , maybe make a scripted-trigger to spawn a DISPLAY_Message "last monsters you need to kill before you can catch your breath"....
when i said i find no use, i meant it in a funny way, what I mean is, i cant come up with a smart idea of a subsequent event being activated by this event: OutofMonsters....
The Event property property is triggered whenever the last monster spawns. This is an alternative to the FinishedEvent property. The most common use case for this event is you want the players to progress after killing a sufficient number of monsters. For example, you may want to open a door when the players killed 20 out of 30 razor flies (Set lives = 30 and MaxMonstersAtOnce = 10). With the FinishedEvent, the players will have to kill every single monster. The hidden razor fly in the corner would often interrupt the pacing.

I haven't finished reading, but I'll continue when I get back.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.

FFE466

_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
Post Reply