Post tutorial RSS Mapping Guide - Codename CURE

Level creation guide for Codename CURE, Goes through the custom entities available and includes an example map to demonstrate them.

Posted by on - Intermediate Mapping/Technical


You may need to see the following tutorial in order to get hammer level editor up and running (if you haven't already done so): SDK 2013 Hammer Setup Tutorial.

Example Map:
There is also a basic example map (with vmf) you can download which shows most of the elements described in this tutorial at work: Example Map Download.


This tutorial will be focusing primarily on the custom entities available in level creation for Codename: CURE, (if you want to learn the basics of hammer and mapping for half-life 2/mods, there are plenty of tutorials out there and as everything but the custom entities mentioned here are the same, I need not re-include it).

Spawn System:
In cure the zombie spawn system is handled by the game automatically (similar to the AI director in left 4 dead) so you do not need to work out complex spawn systems, you simply need certain entities (primarily "info_nodes") in place to allow the system to do its thing.

Map Prefix:
At time of writing there is currently only one game mode in cure, this is "Bomb Escape" as such maps for this game mode should be prefixed with "cbe_" so the game can determine which game rules to enforce, your map name should therefore look like this: "cbe_youmapname".

Required Entities:

The following entities are required in order for a cure level to function correctly:

info_player_deathmatch - This is the player spawn entity at least 5 of these need to be in you level in close proximity to one-another (5 because there a maximum of 5 players).

info_node - This is the AI navigation and spawn entity, these need to placed throughout the walkable space in your map (not too close to walls or other objects). These are for both bots and zombies to navigate and used as zombies spawn locations. If you do not want zombies to spawn in a particular walkable area, use the "spawn_controlarea" entity to prevent spawning (don't be tempted not to place any nodes there as this will cause issues with navigation).

info_node_hint - This can be very useful for AI navigation (both bots and zombies) when there
are tight spaces to navigate through (such as doorways, or between obstacles), in the
keyvalues you will need to set "hint" to "Entrance / Exit Pinch".

*note about node placement - You will want to make sure your nodes are connected up and spaced correctly (particularly between areas and obstacles - don't underestimate the value of info_node_hint) otherwise the zombie spawn system may not function as expected, in engine run "ai_nodes" and "ai_show_connect 1" in console and you will see something like this:

(green lines connecting nodes indicate AI can travel between the two correctly - they also make up a node "web" that is used in the spawning algorithm)

bomb_plantarea - This is where players plant the bomb, there needs to be at least one of these, more can be added if you want different paths through the map, a bomb site is selected randomly at the start of each round and the "OnSelected" output (fired from the bombsite that is selected) event can be used to close off different areas of the map (close/lock doors etc...) to give you varied play-throughs. "OnActivated" fires when a player plants the bomb (could be used to open up an escape route), "OnVehicleLeave" fires when a predetermined time (set by you in the keyvalues) is left on the bomb timer, this can be used for example to make your escape "func_tracktrain" leave with 20 seconds to go, and "OnDetonated" fires when the timer reaches zero and can be used to enable a "trigger_hurt" and an "env_shake" to kill players and AI that are not in the designated escape area (thus determining the win/lose scenario).

Optional Entities:

The following entities are not required for the game to function but you may find them useful depending on what you are making:

spawn_controlarea - This is a useful entity for preventing zombies from spawning in particular locations at given times, when enabled it will prevent zombies from spawning at any "info_nodes" visible to it, also when the keyvalue "radius" is set it will only prevent spawning within the radius, it can be enabled and disabled via inputs, and you can have as many as you need. This entity is of particular use when you have blocked off an area of the map for a bombsite path, the "OnSelected" output of the bomb site can be used to enable the "spawn_controlareas" within the blocked off part thus preventing zombie spawns (otherwise zombies will spawn there making the horde much less effective).

- These entities are used for helping players navigate the escape route after the bomb has been planted, and are only shown on easy and normal difficulties. With the "Last" keyvalue set to "yes" this node is the ultimate goal for the players (where players need to be to win) and is shown regardless of difficulty or how far the player has gotten in relation to other nodes (there can only be one last node per map). The other nodes can be used to show players where to go step by step, and are operated via the input/output system, when one node is enabled all others are disabled automatically, and when the "radius" keyvalue is set the node will output "OnInRadius" when a player gets close enough; this can be used to enable the next node, if radius is not set other means can be used to enable the next node, such as the press of a button or opening of a door.

spawn_controlwave - This entity gives mappers the ability to force a wave of zombies, pause all normal zombie spawning and resume normal spawning again using the input system, via the "ForceWave", "PauseWave" and "UnpauseWave" inputs, this can be useful if you don't want any zombies to spawn until players have gotten so far or performed a certain action, or want to force a full wave on that action. The entity also outputs "OnEndForce" when the forced wave is completed, this could be useful for example if you force a wave and only unlock an exit once the wave is survived.


This comment is currently awaiting admin approval, join now to view.


This comment is currently awaiting admin approval, join now to view.


very usefull

Reply Good karma Bad karma+1 vote

This comment is currently awaiting admin approval, join now to view.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.