Antlions: Random Spawn: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(cleanup, please check whether {{cleanup}} can be removed)
No edit summary
 
(22 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{tutorial cleanup}}
{{screenshot}}
 
The great thing about these antlions is that they are made to be used with other little tools to make them spawn randomly when the player walks on a specified material, be it sand or any other material.
The great thing about these antlions is that they are made to be used with other litle tools to make them spawn randomly when the player walks on a specified material, be it sand or any other material.


This tutorial will walk you through the making of a simple example of randomly unburrowing antlions.
This tutorial will walk you through the making of a simple example of randomly unburrowing antlions.


==Getting started==
== Getting started ==


First, make a map with sand and rocks. The situation we are attempting to create is that if the player walks on the sand, antlions come out near the player and attack, and the player is forced to walk on the rocks.
First, make a map with sand and rocks. The situation we are attempting to create is that if the player walks on the sand, antlions come out near the player and attack, and the player is forced to walk on the rocks.
Line 19: Line 18:
* [[info_node_hint]]
* [[info_node_hint]]


==Configuring the entities==
== Configuring the entities ==
 
''Cursive text'' is a flag.
 
===npc_antlion===
 
:Name: AntLion
:''Starts Burrowed'': yes
 
===env_player_surface_trigger===
 
:Name: SurfaceTrigger
:GameMaterialToWatch: sand
 
This entity triggers inputs if the player is walking on the specified material.
 
Create the following outputs:
 
OnSurfaceChangedFromTarget, relay_expanse_disablespawn, Trigger
OnSurfaceChangedToTarget, relay_expanse_spawn, Trigger
 
Those mean that if the player starts walking on the surface we have chosen, it triggers the relay OnSurfaceChangedToTarget which enables the npc_antlion_template_maker, and after that that when (or if) the player steps off it, it triggers the relay OnSurfaceChangedFromTarget which stops the spawning.


===ambient_generic===
First create an npc_antlion with the following properties.


:Name: sound_antlion_spawn
{{entity-kvalue-start|[[npc_antlion]]}}
:SoundName: Streetwar.d3_c17_10b_rumble1
{{entity-kvalue|Name|AntLion|}}
:Volume: 8
{{entity-kvalue|Start Burrowed|Yes|}}
:Fade In Time: 1.5
{{entity-kvalue-end}}
:Fade Out Time: 2
:Pitch: 120
:Start Pitch: 90
:Max Audible Distance: 1250


This entity creates the noise when the antlions are emerging.
{{entity-flag-start}}
{{entity-flag|Template NPC|on|}}
{{entity-flag-end}}


===env_shake===
Next, configure the entity that triggers inputs when the player walks on the sand:


:Name: shake_antlion_spawn
{{entity-kvalue-start|[[env_player_surface_trigger]]}}
:Amplitude: 2
{{entity-kvalue|Name|SurfaceTrigger|}}
:Effect Radius: 500
{{entity-kvalue|GameMaterialToWatch|sand|}}
:Duration: 3
{{entity-kvalue-end}}
:Frequency: 100


This entity creates the quake when the antlions are emerging.
{{entity-output-start|}}
{{entity-output||OnSurfaceChangedFromTarget|relay_expanse_disablespawn|Trigger||||When the player starts walking on the surface we have chosen, this entity triggers the relay OnSurfaceChangedToTarget.}}
{{entity-output||OnSurfaceChangedToTarget|relay_expanse_spawn|Trigger||||When the player steps off it, it triggers the relay OnSurfaceChangedFromTarget}}
{{entity-output-end}}


===npc_antlion_template_maker===
Then you will have to create the entity that creates the noise when the antlions are emerging.


:Name: antlion_expanse_spawner
{{entity-kvalue-start|[[ambient_generic]]}}
:StartDisabled: Yes (we do not want the template_maker to start spawning at the beginning of the map.)
{{entity-kvalue|Name|sound_antlion_spawn|}}
:Num. of NPCs: Leave empty because we will check ''Infinite Children'' in flags.
{{entity-kvalue|SoundName|Streetwar.d3_c17_10b_rumble1|}}
:Frequency: 0.35
{{entity-kvalue|Volume|8|}}
:Max Live NCPs: how many antlions can live at same time, 8 for example
{{entity-kvalue|Fade In Time|1.5|}}
:Name Of Template NPC: AntLion
{{entity-kvalue|Fade Out Time|2|}}
:Spawn On HintGroup: antlion_expanse_spawn_nodes
{{entity-kvalue|Pitch|120|}}
:Spawn Radius: 1000
{{entity-kvalue|Start Pitch|90|}}
:Spawn Target: !player (the target that the antlions will attack)
{{entity-kvalue|Max Audible Distance|1250|}}
:Ignore Bugbait: No
{{entity-kvalue-end}}


Now, remember to check ''Infinite Children''.
And the one to create the quake.


Then, add the following output:
{{entity-kvalue-start|[[env_shake]]}}
{{entity-kvalue|Name|shake_antlion_spawn|}}
{{entity-kvalue|Amplitude|2|}}
{{entity-kvalue|Effect Radius|500|}}
{{entity-kvalue|Duration|3|}}
{{entity-kvalue|Frequency|100|}}
{{entity-kvalue-end}}


OnAllSpawnedDead, antlion_expanse_spawner, SetMaxChildren, 8, 8.00
The following entity actually creates the antlions.


That means if all antlions are dead it resets the max number to 8 to prevent any problems.
{{entity-kvalue-start|[[npc_antlion_template_maker]]}}
{{entity-kvalue|Name|antlion_expanse_spawner|}}
{{entity-kvalue|StartDisabled|Yes |We do not want the template_maker to start spawning at the beginning of the map.}}
{{entity-kvalue|Num. of NPCs||Leave empty because we will check ''Infinite Children'' in flags.}}
{{entity-kvalue|Frequency|0.35|}}
{{entity-kvalue|Max Live NCPs||How many antlions can live at same time, 8 for example.}}
{{entity-kvalue|Name Of Template NPC|AntLion|}}
{{entity-kvalue|Spawn On HintGroup|antlion_expanse_spawn_nodes|}}
{{entity-kvalue|Spawn Radius|1000|}}
{{entity-kvalue|Spawn Target|!player|The target that the antlions will attack.}}
{{entity-kvalue|Ignore Bugbait|No|}}
{{entity-kvalue-end}}


===logic_relay===
{{entity-flag-start|}}
{{entity-flag|Infinite Children|on|}}
{{entity-flag-end}}


:Name: relay_expanse_spawn
{{entity-output-start|}}
{{entity-output||OnAllSpawnedDead|antlion_expanse_spawner|SetMaxChildren|8|9.00||..that means if all antlions are dead it resets the max number to 8 to prevent any problems}}
{{entity-output-end}}


Add the following outputs, the numbers this time meaning Delay:
Add the first logic_relay:


OnTrigger, sound_antlion_spawn, PlaySound
{{entity-kvalue-start|[[logic_relay]]}}
OnTrigger, relay_expanse_disablespawn, CancelPending
{{entity-kvalue|Name|relay_expanse_spawn|}}
OnTrigger, shake_antlion_spawn, StartShake, 0.10
{{entity-kvalue-end}}
OnTrigger, antlion_expanse_spawner, Enable, 1.00


This means if this relay is triggered it plays the sound, the ground shakes and the npc_antlion_template_maker enables 1 second after we walked on the ground, which makes an effect like the antlions are coming up.
{{entity-output-start|}}
{{entity-output||OnTrigger|sound_antlion_spawn|PlaySound||||When this relay is triggered it plays the sound.}}
{{entity-output||OnTrigger|relay_expanse_disablespawn|CancelPending||||}}
{{entity-output||OnTrigger|shake_antlion_spawn|StartShake||0.10||The ground shakes.}}
{{entity-output||OnTrigger|antlion_expanse_spawner|Enable||1.00||And the npc_antlion_template_maker enables 1 second after we walked on the ground, which makes an effect like the antlions are coming up.}}
{{entity-output-end}}


===Another logic_relay===
Add another logic_relay...


:Name: relay_expanse_disablespawn
{{entity-kvalue-start|[[logic_relay]]}}
{{entity-kvalue|Name|relay_expanse_disablespawn|}}
{{entity-kvalue-end}}
with the following outputs:
{{entity-output-start|}}
{{entity-output||OnTrigger|sound_antlion_spawn|StopSound||||When this relay is triggered, the sound stops.}}
{{entity-output||OnTrigger|shake_antlion_spawn|StopShake||||Also, the shake stops..}}
{{entity-output||OnTrigger|antlion_expanse_spawner|Disable||0.50||..and the template_maker disables}}
{{entity-output||OnTrigger|relay_expanse_spawn|CancelPending||0.50||}}
{{entity-output-end}}


Add the following outputs, the numbers meaning Delay again:
Another group of entities are to set where the antlions can spawn, you must put one everywhere that the antlion can possibly spawn, and the [[npc_antlion_template_maker]] will pick the one nearest the player.


OnTrigger, sound_antlion_spawn, StopSound
{{entity-kvalue-start|[[info_node_hint]]}}
OnTrigger, shake_antlion_spawn, StopShake
{{entity-kvalue|Hint|AntLion Burrow Point|}}
OnTrigger, antlion_expanse_spawner, Disable, 0.50   
{{entity-kvalue|Hint Group|antlion_expanse_spawn_nodes|}}
OnTrigger, relay_expanse_spawn, CancelPending, 0.50
{{entity-kvalue-end}}
 
This means if this relay is triggered, the sound stops, the shake stops and the template_maker disables.
 
===info_node_hint===
 
These are to set where the antlions can spawn, you must put one everywere that the antlion can possibly spawn, and the [[npc_antlion_template_maker]] will pick the one nearest the player.
 
:Hint: AntLion Burrow Point
:Hint Group: antlion_expanse_spawn_nodes


== Notes ==
== Notes ==


The antlions use [[info_node]] to navigate on the ground, and [[info_node_air]] to navigate while flying.
The antlions use [[info_node]] to navigate on the ground, and "fly" by using loose jump parameters.


To make them follow a precise path, use [[path_corner]]s and set it to the antlion's path corner, and place [[info_node]]s around the way so the antlions can navigate through them.
To make them follow a precise path, use [[path_corner]]s and set it to the antlion's path corner, and place [[info_node]]s around the way so the antlions can navigate through them.


If there is a wall in their way, put some [[info_node_air]]s about 10 units above it, the antlions will use it to fly above the wall.
If there is a wall in their way, make sure there is a jump connection, and the antlions will use it to fly above the wall.


===Quick tutorial to making antlions follow a path===
=== Quick tutorial to making antlions follow a path ===


If you want the antlions to run to a precise target, use [[aiscripted_schedule]], name it and configure:
If you want the antlions to run to a precise target, use [[aiscripted_schedule]], name it and configure:


:Target Npc: Antlion  
{{entity-kvalue-start|[[aiscripted_schedule]]}}
:Search Radius: If there are more than one target, put 0.
{{entity-kvalue|Target Npc|Antlion |}}
:All In Radius: If there are more than one target, put yes.
{{entity-kvalue|Search Radius||..if there are more than one target, put 0.}}
:Ai State To Set: Choose one
{{entity-kvalue|All In Radius||..if there are more than one target, put yes.}}
:Schedule to run: Choose one
{{entity-kvalue|Ai State To Set||..choose one}}
:Interruptability: Choose one
{{entity-kvalue|Schedule to run||..choose one}}
:Goal Entity: Is the target, it can be one precise or a classname, like [[npc_citizen]].
{{entity-kvalue|Interruptability||..choose one}}
 
{{entity-kvalue|Goal Entity||..is the target, it can be one precise or a classname, like [[npc_citizen]]}}
{{entity-kvalue-end}}


Then at the [[npc_antlion_template_maker]], add the following output:
Then at the [[npc_antlion_template_maker]], add the following output:


OnSpawnNpc, AiSchedule, StartSchedule
{{entity-output-start|}}
 
{{entity-output||OnSpawnNpc|AiSchedule|StartSchedule||||}}
== Example Map ==
{{entity-output-end}}
 
[http://www.pcgamemods.com/mod/15620.html Example map]
 


[[Category:Level Design Tutorials]]
[[Category: Level Design]]
[[Category:Tutorials]]
[[Category: Tutorials]]
[[Category:Abstract Mapping]]
[[Category:Abstract Mapping]]

Latest revision as of 00:26, 13 June 2022

Nuvola apps ksnapshot.png
This article or section needs a screenshot to help visually convey the subject.
You can upload screenshots at Special:Upload. For help, see Help:Images.

The great thing about these antlions is that they are made to be used with other little tools to make them spawn randomly when the player walks on a specified material, be it sand or any other material.

This tutorial will walk you through the making of a simple example of randomly unburrowing antlions.

Getting started

First, make a map with sand and rocks. The situation we are attempting to create is that if the player walks on the sand, antlions come out near the player and attack, and the player is forced to walk on the rocks.

These are the entities we are going to need:

Configuring the entities

First create an npc_antlion with the following properties.

Class: npc_antlion
Keyvalues Comments
Name AntLion
Start Burrowed Yes
Flag
Checkbox-on.png Template NPC

Next, configure the entity that triggers inputs when the player walks on the sand:

Class: env_player_surface_trigger
Keyvalues Comments
Name SurfaceTrigger
GameMaterialToWatch sand
My output Target entity Target input Parameter Delay Only once Comments
Entity-output-icon.png OnSurfaceChangedFromTarget relay_expanse_disablespawn Trigger When the player starts walking on the surface we have chosen, this entity triggers the relay OnSurfaceChangedToTarget.
Entity-output-icon.png OnSurfaceChangedToTarget relay_expanse_spawn Trigger When the player steps off it, it triggers the relay OnSurfaceChangedFromTarget

Then you will have to create the entity that creates the noise when the antlions are emerging.

Class: ambient_generic
Keyvalues Comments
Name sound_antlion_spawn
SoundName Streetwar.d3_c17_10b_rumble1
Volume 8
Fade In Time 1.5
Fade Out Time 2
Pitch 120
Start Pitch 90
Max Audible Distance 1250

And the one to create the quake.

Class: env_shake
Keyvalues Comments
Name shake_antlion_spawn
Amplitude 2
Effect Radius 500
Duration 3
Frequency 100

The following entity actually creates the antlions.

Class: npc_antlion_template_maker
Keyvalues Comments
Name antlion_expanse_spawner
StartDisabled Yes We do not want the template_maker to start spawning at the beginning of the map.
Num. of NPCs Leave empty because we will check Infinite Children in flags.
Frequency 0.35
Max Live NCPs How many antlions can live at same time, 8 for example.
Name Of Template NPC AntLion
Spawn On HintGroup antlion_expanse_spawn_nodes
Spawn Radius 1000
Spawn Target !player The target that the antlions will attack.
Ignore Bugbait No
Flag
Checkbox-on.png Infinite Children
My output Target entity Target input Parameter Delay Only once Comments
Entity-output-icon.png OnAllSpawnedDead antlion_expanse_spawner SetMaxChildren 8 9.00 ..that means if all antlions are dead it resets the max number to 8 to prevent any problems

Add the first logic_relay:

Class: logic_relay
Keyvalues Comments
Name relay_expanse_spawn
My output Target entity Target input Parameter Delay Only once Comments
Entity-output-icon.png OnTrigger sound_antlion_spawn PlaySound When this relay is triggered it plays the sound.
Entity-output-icon.png OnTrigger relay_expanse_disablespawn CancelPending
Entity-output-icon.png OnTrigger shake_antlion_spawn StartShake 0.10 The ground shakes.
Entity-output-icon.png OnTrigger antlion_expanse_spawner Enable 1.00 And the npc_antlion_template_maker enables 1 second after we walked on the ground, which makes an effect like the antlions are coming up.

Add another logic_relay...

Class: logic_relay
Keyvalues Comments
Name relay_expanse_disablespawn

with the following outputs:

My output Target entity Target input Parameter Delay Only once Comments
Entity-output-icon.png OnTrigger sound_antlion_spawn StopSound When this relay is triggered, the sound stops.
Entity-output-icon.png OnTrigger shake_antlion_spawn StopShake Also, the shake stops..
Entity-output-icon.png OnTrigger antlion_expanse_spawner Disable 0.50 ..and the template_maker disables
Entity-output-icon.png OnTrigger relay_expanse_spawn CancelPending 0.50

Another group of entities are to set where the antlions can spawn, you must put one everywhere that the antlion can possibly spawn, and the npc_antlion_template_maker will pick the one nearest the player.

Class: info_node_hint
Keyvalues Comments
Hint AntLion Burrow Point
Hint Group antlion_expanse_spawn_nodes

Notes

The antlions use info_node to navigate on the ground, and "fly" by using loose jump parameters.

To make them follow a precise path, use path_corners and set it to the antlion's path corner, and place info_nodes around the way so the antlions can navigate through them.

If there is a wall in their way, make sure there is a jump connection, and the antlions will use it to fly above the wall.

Quick tutorial to making antlions follow a path

If you want the antlions to run to a precise target, use aiscripted_schedule, name it and configure:

Class: aiscripted_schedule
Keyvalues Comments
Target Npc Antlion
Search Radius ..if there are more than one target, put 0.
All In Radius ..if there are more than one target, put yes.
Ai State To Set ..choose one
Schedule to run ..choose one
Interruptability ..choose one
Goal Entity ..is the target, it can be one precise or a classname, like npc_citizen

Then at the npc_antlion_template_maker, add the following output:

My output Target entity Target input Parameter Delay Only once Comments
Entity-output-icon.png OnSpawnNpc AiSchedule StartSchedule