Holdout Map Setup Guide (Killing Floor 2): Difference between revisions

From Killing Floor 2 Wiki
Jump to navigation Jump to search
mNo edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=Introduction=
[[Category:KF2]]
==Introduction==
This documentation is provided to help you create your own Holdout style Killing Floor 2 map. While most systems for a standard map exist in a Holdout map, there are new kismet functions that exist to make a Holdout map work. The kismet and necessary actors for Holdout gameplay are all setup and included in the template map. This means you can spend most of your time developing your arenas without having to understand how all of the Holdout systems function. However the following documentation will explain the systems.
This documentation is provided to help you create your own Holdout style Killing Floor 2 map. While most systems for a standard map exist in a Holdout map, there are new kismet functions that exist to make a Holdout map work. The kismet and necessary actors for Holdout gameplay are all setup and included in the template map. This means you can spend most of your time developing your arenas without having to understand how all of the Holdout systems function. However the following documentation will explain the systems.


Line 24: Line 25:
{{Col-begin}}
{{Col-begin}}
{{Col-break|width=80%}}
{{Col-break|width=80%}}
<pre style="color: red">The following discusses holdout as set up in The Descent and in the template. Other maps like Nightmare and Powercore tweak the set-up slightly but use the same principles.</pre>
{{Note|The following discusses holdout as set up in The Descent and in the template. Other maps like Nightmare and Powercore tweak the set-up slightly but use the same principles.}}
   
   
Although it may look like it, <u>'''Teleportation does NOT use Trigger Volumes to teleport a player when they 'drop' down.'''</u> Trigger volumes are only used to teleport players that are not in the correct Arena when a wave starts. Instead teleportation happens using a system of KFTeleporters. <br /><br />
Although it may look like it, <u>'''Teleportation does NOT use Trigger Volumes to teleport a player when they 'drop' down.'''</u> Trigger volumes are only used to teleport players that are not in the correct Arena when a wave starts. Instead teleportation happens using a system of KFTeleporters. <br /><br />
Line 36: Line 37:
:There is one other important to pay attention to. The teleporter captures players who fall into its ''<u>node radius</u>''. When the game detects that they enter into this radius, they will be teleported. As the radius is extremely huge it can be hard to see in the editor. However sometimes the radius needs to be adjusted. These values can be found under the KFTeleporter Properties > Collision category > Colision Component. You are looking mainly at '''Collision Radius''' (and Collision Height - but this rarely needs to be changed). See '''Figure 1.3.'''<br /><br />
:There is one other important to pay attention to. The teleporter captures players who fall into its ''<u>node radius</u>''. When the game detects that they enter into this radius, they will be teleported. As the radius is extremely huge it can be hard to see in the editor. However sometimes the radius needs to be adjusted. These values can be found under the KFTeleporter Properties > Collision category > Colision Component. You are looking mainly at '''Collision Radius''' (and Collision Height - but this rarely needs to be changed). See '''Figure 1.3.'''<br /><br />


Maps like Nightmare or Powercore use the same principles as above, but instead of a 'Single Parent Teleporter', they now have multiple Parent teleporters located in each arena. Instead of dropping into an extremely large collision radius, the player runs (or is pushed) into a smaller one instead.
Maps like Nightmare or Powercore use the same principles as above, but instead of a 'Single Parent Teleporter', they now have multiple Parent teleporters located in each arena. Instead of dropping into an extremely large collision radius, the player runs (or is pushed) into a smaller one instead.<br /><br />
 
There are also unique volumes created for Holdout that allow the mapper to fade the screen/camera to black when the player drops down to a teleporter without using Kismet. These are called KFVolume_CameraFade. They are set up in 2 ways:
:;1. Fade the screen to Black when a player drops down
::These are placed 'before' the player enters the 'Parent' teleporter, and usually enough distance away for the screen to fully fade to black as they drop. <br />
:;2. Return the screen when the player lands/teleports
::These are placed around to encompass the Basic Arena Teleporter that the player teleports to. This is so the screen is immediately returned when they get teleported.
 
{{Col-break|width=20%}}
{{Col-break|width=20%}}
[[File:TeleporterTag.png|300 px|thumb|'''Figure 1.1:''' Teleporter Name Tag]]
[[File:TeleporterTag.png|300 px|thumb|'''Figure 1.1:''' Teleporter Name Tag]]
Line 42: Line 50:
[[File:TeleporterRadius.png|300 px|thumb|'''Figure 1.3:''' Teleporter Collision Radius]]
[[File:TeleporterRadius.png|300 px|thumb|'''Figure 1.3:''' Teleporter Collision Radius]]
{{Col-end}}
{{Col-end}}
==Zed Spawning==
==Zed Spawning==


Line 88: Line 97:


You can change your map from 'EGST_Normal' to 'EGST_Descent'
You can change your map from 'EGST_Normal' to 'EGST_Descent'
{{KF2SDKNavBox}}

Latest revision as of 22:36, 10 September 2019

Introduction

This documentation is provided to help you create your own Holdout style Killing Floor 2 map. While most systems for a standard map exist in a Holdout map, there are new kismet functions that exist to make a Holdout map work. The kismet and necessary actors for Holdout gameplay are all setup and included in the template map. This means you can spend most of your time developing your arenas without having to understand how all of the Holdout systems function. However the following documentation will explain the systems.

Template Map Location

A sample template map has been made available to community developers on the off chance that they'd like to make this type of map themselves. It will be used to discuss the Holdout System. It can be located in the SDK section of the steam build:

{BASE STEAM INSTALL LOCATION}\SteamApps\common\killingfloor2\KFGame\BrewedPC\Maps\SDK\Mod_Tools_HoldOut_Template.kfm

Arena Layout in Worldspace

An important thing for you to understand in the beginning is the actual layout of each of the arenas in the editor’s worldspace. There are eleven arenas in total. A starting arena, nine randomly played arenas and a boss arena. Regardless of game length, a match will always start players in the start arena and finish in the boss arena. The game waves in-between the start and boss wave are randomly selected from arenas 1-9 and never repeated. The following is a top-down view of all the arenas. They have been arranged in a line to simplify their layout. Each one has a note in editor stating what arena it is.

You can teleport to locations in the editor/map by using the Bookmark functionality in UDK. Currently the Bookmarks are already set and you can teleport to those locations by pressing keys 1-9(0). In the template, all arenas are hotkeyed in the editor, except for the starting room:

  • Starting Arena: No hotkey, located close to arena 1.
  • Arena 1-9: 1-9
  • Boss Arena: 0

You can set your own bookmarks in any map by pressing Ctrl+Number within the Editor. eg: Ctrl+1.

The importance of knowing where they are and using the hotkeys becomes even more beneficial if you choose to make changes to the Kismet and need to know what Arena you are making changes to. It also speeds up movement and navigation within the editor.

How Holdout Works

!--T:1--> Note Note: The following discusses holdout as set up in The Descent and in the template. Other maps like Nightmare and Powercore tweak the set-up slightly but use the same principles.

Although it may look like it, Teleportation does NOT use Trigger Volumes to teleport a player when they 'drop' down. Trigger volumes are only used to teleport players that are not in the correct Arena when a wave starts. Instead teleportation happens using a system of KFTeleporters.

The map has multiple KFTeleporters, and not all of them are used in the same way; they are broken into 2 different categories:

1. The Basic Arena Teleporter that is placed in each Arena.
These dictate WHERE players will spawn when they get teleported. Within the Object category of the KFTeleporter Properties, they are given a unique tag; usually "Arena_1" (or whatever number). There are 10 of these; 1-9 for waves 2-10 and 1 for the Boss. The teleporter system uses this tag to determine what the next arena is. The name of the teleporter does not matter, ONLY the tag. See Figure 1.1.

2. A Single 'Parent' Teleporter which 'catches' the player and teleports them to the above teleporters.
There is a single teleporter which is used to CAPTURE the players when they 'drop' down at the end of a wave and TELEPORT them to a specific Arena. This teleporter in the Template is 'KFTeleporter_0' and is placed below each Arena. It has the Tag 'KFTeleporter' in its object properties. I recommend increasing the drawscale of this KFTeleporter so you don't confuse it/easy to select from distance.
It also has additional properties under the KFTeleporter category. These contain 10 URLs that list the arena teleporter tags (eg: Arena_1 through 9 + Boss). Basically listing the teleport locations to move the player. See Figure 1.2.
There is one other important to pay attention to. The teleporter captures players who fall into its node radius. When the game detects that they enter into this radius, they will be teleported. As the radius is extremely huge it can be hard to see in the editor. However sometimes the radius needs to be adjusted. These values can be found under the KFTeleporter Properties > Collision category > Colision Component. You are looking mainly at Collision Radius (and Collision Height - but this rarely needs to be changed). See Figure 1.3.

Maps like Nightmare or Powercore use the same principles as above, but instead of a 'Single Parent Teleporter', they now have multiple Parent teleporters located in each arena. Instead of dropping into an extremely large collision radius, the player runs (or is pushed) into a smaller one instead.

There are also unique volumes created for Holdout that allow the mapper to fade the screen/camera to black when the player drops down to a teleporter without using Kismet. These are called KFVolume_CameraFade. They are set up in 2 ways:

1. Fade the screen to Black when a player drops down
These are placed 'before' the player enters the 'Parent' teleporter, and usually enough distance away for the screen to fully fade to black as they drop.
2. Return the screen when the player lands/teleports
These are placed around to encompass the Basic Arena Teleporter that the player teleports to. This is so the screen is immediately returned when they get teleported.

Figure 1.1: Teleporter Name Tag
Figure 1.2: Teleporter URLs
Figure 1.3: Teleporter Collision Radius

Zed Spawning

Spawn Volume Management

Six KFSpawnVolumes have been added to each Arena. You can increase or decrease the amount of volumes in each arena and make any changes you see fit to their properties. However, if you want to add another KFSpawnVolume to any arena, you must link it to the correct 'Toggle Ex' node in Kismet.

ToggleEX Kismet Tool

The “Toggle EX” node turns on the desired KFSpawnVolumes per arena and turns them off for all other arenas - it turns off other volumes automatically.

If you are adding a volume to the boss arena add it to this location:

If you are adding a volume to any of the arenas that are not the start arena or boss arena add them here. Each link on the switch node 1-9, is linked to the arenas 1-9.

Portal Spawn Management

Portal spawns can be implemented in any arena using the standard kismet wiring that is found in any standard map.

Since portal spawns are controlled by what trigger volume a player is in, they will not fire in incorrect arenas. The basic setup for them has been included, however, you will need to wire them up as you add them into you Holdout map. 

They can be added here:

IMPORTANT: If your portals use the parent-child set up, let the parent spawner deal with the activation/deactivation of portals.

You DO NOT need to wire the child spawners up to the trigger volume.

DO NOT wire spawners up to the ToggleEx node.

Pickups

The ammo boxes in use have special properties that force them to all automatically appear and respawn once picked up by a player after a selected amount of time. You can adjust the respawn time in it's properties. The default value is 45 seconds. This ensures that ammo is available in every arena because it removes the randomization of spawning.

Miscellaneous

The player customization screen uses “KFCustomizationPoints”. You can find these off to the side of the start arena.  

Holdout maps can be quite large as arenas are spread out across the World Space. This can actually cause some issues within the map when the player location starts to drift too far from the origin of the map. This is a limitation with UDK Engine where physics and collision calculations can suffer from floating point rounding errors. This can display issues such as players sliding across the floor, players and zeds getting stuck on flat walls when they shouldn't and shadows on textures flickering. To avoid this try keeping the entire map within 80k units from the origin - outside of this will start to see the before mentioned issues start occurring. Although the template aligns the arena in a straight line, it is not always the best set up as it may distribute the map too far, and in cases like this, it is best align them in a cube/grid.

One last thing you can also configure is an option in World Properties to disable the Trader comments about being too far from the trader; as conceptually, there is no real 'distance' between arenas. Under:

World Properties > World Info > My Map Info > KFMap Info > Sub Game Type 

You can change your map from 'EGST_Normal' to 'EGST_Descent'