RED HOT VENGEANCE

RED HOT VENGEANCE

40 ratings
Comprehensive Guide to Making Levels
By kill my ass
This is a comprehensive guide to making levels for RED HOT VENGEANCE using the in-game level editor.
   
Award
Favorite
Favorited
Unfavorite
Introduction
This is the official guide for RED HOT VENGEANCE's map editor. I designed the map editor for to be simple to use, but there are still some things that probably need explaining. That's where this guide comes in. I'll try to keep things brief where I can, but this guide should contain everything you need to know.
Editor Controls
Hotkeys
  • 1-5 - Switch layers
  • Q - Change grid size
  • W - Show/Hide grid
  • Alt (hold) - Toggle grid snapping
  • E - Toggle editing multi-layer editing
  • Ctrl (hold) - Select multiple objects
  • R - Rotate object (when selected)
  • Ctrl+C - Copy selected objects
  • del - Delete selected objects
  • Middle Mouse (hold) - Pan camera
  • Shift+LMB - Pan camera
  • Mouse Wheel - Zoom in/out
  • Ctrl+S - Save level

Controlling the camera
The camera controls are very basic.
You can pan the camera around the editor with two different methods:
  • Holding down the middle mouse button (mouse wheel) and moving the mouse.
  • Holding down shift and the left mouse button and moving the mouse.

You can zoom in and out by scrolling the mouse wheel up and down.
Overview
The Editor
When you first boot up the editor, you'll see this:
You'll see a series of buttons along the top of the screen. We'll talk about these first.

Saving, loading, & creating a new level
These 3 buttons create a new level, load a saved level, or save the current level, respectively.

After starting the editor, you will already start with a blank level (you wont need to click the new level button). You can start editing a new level right away.
If you click the "new level" icon (the one on the far left), you will be prompted with a confirmation window, and should you click "yes", the current level will be saved.

Clicking the Load icon will prompt you with a box like this:
I've already got some levels there for testing, but if you haven't made a level yet, this list will be blank.

To load a level, simply select it from the list and click the big "Load" button at the bottom. You'll get a confirmation window for loading the level.

To close the window without loading the level, click the X at the top right.

To delete a level, select it from the list and press del on your keyboard. This will also ask you for confirmation.





If you click on the save icon, the current level will be saved with it's current name. If there is no player start point in the level, one will be automatically created at (0,0).


Object types
When making a level, the objects you place in your level are divided into five layers, one for each type of object: Level Geo, Game Objects, Items, AI, and Furniture.

You can switch the active layer using these buttons, respectively.


By default, only one layer can be edited at a time.

Editor settings
These buttons control the grid. The first 3 change the grid size, and the 4th toggles grid visibility.


This button toggles multi-layer editing. When this is enabled, you will be able to select and manipulate objects on any layer without switching the active layer.


If you are making a level that has multiple floors, these buttons control which floor you are currently editing. Your level can have up to 10 floors.


Level
Use this button to play-test your level. You need to have a player start point in order to test the level.


This button will open the level settings window. We'll go into detail on that in the next section.


Miscellaneous
The button on the left is used to upload your level to Steam Workshop. There will be more on this in a later section.
The button on the right will display the editor hotkeys.
Level Settings & Objectives
As previously mentioned, clicking the gear icon will open the level settings window. Clicking on it will open this window:


General Settings
The first options at the top allow you to enter the name of the level and a short description. This description will be used when you eventually upload your level to Workshop and will also be displayed at the "My Levels" screen for you, and the "Subscriptions" screen for users who download your level. You can always edit the workshop page after uploading if you want a longer description, but only the short description will appear in-game.
Note: Saving a level with the same name as another level will not overwrite it. There will just be 2 levels with the same name.

The "Floors" is used to set how many floors your level will consist of. You can freely add more with the [+] button, but pressing the [-] will ask you for confirmation, because removing a floor will delete it permanently. Pressing [-] will always delete the top-most floor.

Make sure you don't have more floors than you need. Beating one floor will take the player to the next, and when the player beats the top floor, they'll have won the level.


Special Objectives
The next 3 tickboxes are for level objectives.
  • None - The only objective will be to get from the spawn point to the finish area.

  • Kill all enemies - The objective of the level will be to kill all enemies. If a level finish object is present in the level, then the player will have to kill all enemies and then go to the finish

  • Time limit - The objective will involve a time limit

Selecting the time limit option will present you with even more options!
In the "min" and "sec" fields, you can specify how many minutes and seconds the timer will last.

If "Countdown" is checked, the level will start with a countdown of 3 seconds before starting the timer and giving control to the player.

If "Win on finish" is checked, the player will win when the timer runs out. If not checked, the player will instantly fail.

Like the "Kill all enemies" option, the behavior depends on whether or not a level finish object is present in the map. If "Win on finish" is checked, with a level finish area present, the player will have to survive for the time limit, THEN go to the finish to beat the level. If there is no level finish area, then the player will instantly win.


Music
The final option will let you choose which track will play during the level.
Clicking the field will open a new window:


There are 12 tracks to choose from, and you can choose to have no music at all if you want.
Placing & Manipulating Objects
The Object Panel
This is the Object Panel. Depending on which layer is currently selected, this contents of this list will change.

In this screenshot, the Level Geo layer is currently selected, so all the pieces used map out the level itself are visible.

Placing objects
To place an object, click on it from the Object Panel and then click somewhere in the level to place it.
When you place a new object, it will automatically be selected.


Resizing objects
Some objects can be resized using the handles that appear when selected.
THIS IS IMPORTANT! Instead of placing down lots of floor and wall objects to create your level, place down one at a time and then stretch them to fill the area you need. Creating lots of objects is bad for performance.

I specifically chose to not allow placing of objects by holding the mouse button down because I want to encourage resizing one object instead of placing down hundreds of the same thing.

Placing walls
When placing down walls, you don't need to worry about corner pieces for it to look right. The mesh for the walls are generated based on wall placement when you play the level. Just stick them together WITHOUT overlapping them and the system will work its magic.


Selecting & Moving Objects
You can click on an object to select it. Clicking on the object and dragging will move the object around. You can also click and drag to select multiple objects at once.


Deleting Objects
To delete objects, select them and press "del" on the keyboard.


Copy/Paste Objects
To copy and paste an object, select it, then press Ctrl+C. A copy of that object will appear at the mouse. Click to place it down. You can also copy multiple objects at once.


Rotating Objects
Some objects can be rotated by pressing R when they are selected. Here you can see me selecting a door from the Level Geo list, rotating it by pressing R, then placing it.
You'll notice that I also changed the grid size by pressing Q to help me position it correctly.


Locking Objects
Locking an object will prevent it from being moved or deleted. This is helpful for when you want to use multi-layer editing without accidentally moving specific objects (useful for floors and walls)
To lock an object, select it and press L. Pressing L again will unlock the object.


Grid Snapping
Holding Alt while moving an object will disable grid snapping, allowing you to place objects with precision.
The Properties Window
This is the object properties window.


Right now there is nothing in it because there are no objects selected.
When you select an object, a list of property fields will show up in this window.

Here I selected a floor object. Floor objects only have one property, and that's the texture.


If I click on the texture field, a new window will appear with a list of textures available as floor textures.


To select a texture, click on it and then click "OK". I'm going to pick tex_floor_tile
Now if I test the level, the floor is now using the tile texture.


Other types of properties may be a boolean, integer, or string.
A full list each object's properties can be found in the later sections.
Game Logic
Some of the game's objects have the ability to be triggered when the player or an enemy enters a trigger volume. These objects are represented by pink icons in the editor and can be found under Game Objects. Descriptions for these objects and their properties can be found in the later sections.

In this example, I'm going to make a TriggerVolume that triggers an explosion near the player
Here I've made a simple level with two rooms. I'm going to select the TriggerVolume and place it in the doorway.


After placing the TriggerVolume, we can see it has a lot of properties. For now, we can ignore them.


Now, I'm going to place down a TriggerableExplosion object.


You'll see that when I place it down, a line running from the TriggerableExplosion to the TriggerVolume is visible, showing that these two objects are connected.
Notice how the TriggerVolume and the TriggerableExplosion both have a variable called trigger_id

When a trigger volume is activated, all objects with a matching trigger_id will be activated along with it.
In my example, both the TriggerVolume and the TriggerableExplosion have a trigger_id of 0, so it should work.

And it does. When I walk through the doorway where I placed the TriggerVolume, the explosion is activated.

There are a lot of things you can do with trigger volumes and the given tools, like run a signal through a delay timer. Here I've edited the example a bit so the explosion occurs after 1 second has passed.


Some triggerable objects, such as the Delay, have 2 trigger_id variables: trigger_id_in and trigger_id_out. To make this scenario work, the TriggerVolume has a trigger_id of 0. The Delay object's trigger_id_in is also 0, so the signal from the TriggerVolume is passed to the Delay. The Delay trigger_id_out is 1, and the TriggerableExplosion trigger_id is also 1. The Delay object's delay field is measured in game steps. Because RHV is designed to run at 60fps, 60 steps = 1 second.

Now we'll test the Delay object.


The explosion is now triggered after one second has passed after entering the trigger volume.
Level Thumbnail
To capture the level thumbnail, first test the level by pressing the red play button.
Then, press escape to pause the game and select "Capture Thumbnail"

From here, you can frame up a shot for your level's thumbnail.
The camera controls in this mode are visible in the top left corner. When you're ready, Left Click to take a screenshot and then press ESC to return to the pause menu.
Uploading to Workshop
When you're done making your level and you've captured a thumbnail, click the upload button in the upper right corner.


Clicking this button will open a new window where you can begin the upload process.


In this window, you can choose which tags you want to apply to your level.
The first 4 are the difficulty. You can only pick one of them.
The next 5 should be filled out in a way that accurately describes your level. But if you're not sure about some of them, it's not that important. There is a tag that is not shown here called multiple floors. This tag is automatically applied if your level has multiple floors.

Once you fill out the tags, click on "Upload" and the upload process will begin.
After it's finished, you'll either see this message, or an error if the upload failed.

In this window, you can choose which tags you want to apply to your level.
The first 4 are the difficulty. You can only pick one of them.
The next 5 should be filled out in a way that accurately describes your level. But if you're not sure about some of them, it's not that important. There is a tag that is not shown here called multiple floors. This tag is automatically applied if your level has multiple floors.

Once you fill out the tags, click on "Upload" and the upload process will begin.
After it's finished, you'll either see this message, or an error if the upload failed.
Important Guidelines
One of the most important things you should know before going into the map editor is that there are no arbitrary restrictions on how you can place objects in the level. I did this because I want you guys to be creative. But this also comes with some caveats.

Be careful how you place level geometry, especially doors
Due to the way the AI pathfinding works in this game, it will calculate the "open" positions for every door on the map and adds those locations as obstacles on the AI's navmesh (this was the best way that I found to get doors and AI working together). This means that if a door is too close to a wall, the AI cannot go past. Take a look at this gif. The enemy can hear me shooting, and it looks like he should be able to just run over to my side of the room, but he can't because the potential position of the door is blocking him.



Looking at the editor view, you can see how the door is too close to the upper wall.


The solution is to either move the wall and the door down a bit to make more room, or just to not have a door at all.

What it comes down to is that this game wasn't meant to have a level editor from the beginning, and I just designed the campaign and everything else around these limitations. It's likely not going to be fixed but it's important to know why this happens when you're making levels.
Object Documentation - Level Geo
This section outlines Level Geo objects and their parameters.

Floor

A rectangle that appears as the floor. Use these anywhere you want there to be a floor.
  • texture - The texture to appear on the floor.

RoadHorizontal

A rectangle that appears as the floor with a 2-lane street texture.

RoadVertical

A rectangle that appears as the floor with a 2-lane street texture.

WallHorizontal (32)

A 32x32 size horizontal wall.

WallVertical (32)

A 32x32 size vertical wall.

WallHorizontal (16)

A 16x16 size horizontal wall.

WallVertical (16)

A 16x16 size vertical wall.

WindowHorizontal

A horizontal window object. Spawns glass inside the frame.
  • spawn_glass - If true, the window frame will spawn with glass
  • boards - If true, the window will be boarded up

WindowVertical

A vertical window object. Spawns glass inside the frame.
  • spawn_glass - If true, the window frame will spawn with glass
  • boards - If true, the window will be boarded up

WallInvisible

An invisible wall.
  • show_when_close - If true, the invisible wall will fade into view when the player is near.

Door

An interactive door object. Can be damaged if locked is false.
  • locked - If true, the door will become a locked door object. Locked doors are indestructible and can only be opened with a keycard or by an enemy. To open a locked door with a keycard, you need to use a KeycardActivator object found in Game Objects.

DestructibleWall

Similar to a door in that it can be damaged, but it cannot be moved.


Object Documentation - Game Objects
This section outlines Game Objects and their parameters.

PlayerStart

Where the player will initially spawn. There can only be one per level and it can only be placed on the first floor.
  • player_health - How much health the player starts with
  • sidearm1 - The secondary weapon that appears in the right-hand weapon wheel slot
  • sidearm2 - The secondary weapon that appears in the left-hand weapon wheel slot
  • primary - The primary weapon that appears in the bottom weapon wheel slot
  • mag_sidearm1 - How much ammo in the magazine of the first sidearm
  • mag_sidearm2 - How much ammo in the magazine of the second sidearm
  • mag_primary - How much ammo in the magazine of the primary weapon
  • ammo_pistol - How many pistol bullets the player starts with
  • ammo_smg - How many SMG bullets the player starts with
  • ammo_shells - How many shotgun shells the player starts with
  • ammo_rifle - How many rifle bullets the player starts with

PlayerFloorEntrance

This is where the player will spawn on a floor other than the first one. Only one can be placed per floor and it can't be placed on the first floor at all.

LevelFinish

The ending zone of a floor or level. Upon entry, the player will be taken to the next floor. If the player is on the top floor, the level will end. Depending on the level objective settings, this object may spawn disabled until a goal is met.

ObjectiveArrow

A red arrow which appears on the ground to indicate the location of the objective. By default, it will start invisible and appear when the LevelFinish becomes enabled.
  • always_show - If true, the arrow will always be visible

Loadout

A red, interactable circle on the ground. Upon interaction, this will open the loadout menu.
  • pistol - If true, the pistol will be available in the loadout menu.
  • mac10 - If true, the MAC-10 will be available in the loadout menu.
  • hk45 - If true, the HK45 will be available in the loadout menu.
  • sawnoff - If true, the sawnoff shotgun will be available in the loadout menu.
  • mp5 - If true, the MP5 will be available in the loadout menu.
  • shotgun - If true, the Pump-action shotgun will be available in the loadout menu.
  • m4a1 - If true, the M4A1 will be available in the loadout menu.
  • bat - If true, the baseball bat will be available in the loadout menu.

TriggerButton

A red, interactable circle on the ground. Upon interaction, it will trigger any connected objects.
  • trigger_id - The ID of the objects to trigger
  • uses - How many times this button can be used

TriggerVolume

A red, interactable circle on the ground. Upon interaction, it will trigger any connected objects.
  • trigger_id - The ID of the objects to trigger
  • start_enabled - If true, the player will be able to activate this trigger volume from the start of the level.
  • enable_id - The receiving end of a signal used to enable this trigger volume. If start_enabled is false, then other triggerable objects can enable this trigger volume.
  • trigger_at_start - If true, then the trigger volume will send a signal immediately at the start of the level, regardless if it has been activated by the player or something else.
  • trigger_on_exit - If true, then the trigger volume will send a signal when the player exits the trigger volume, instead of when the player enters.
  • uses - How many times this trigger volume can be used
  • use_by_player - If true, then the player will be able to activate this trigger volume
  • use_by_enemy - If true, then enemies will be able to activate this trigger volume
  • use_by_civilian - If true, then civilians will be able to activate this trigger volume
  • use_by_bullets - If true, then bullets will be able to activate this trigger volume

Delay

A Delay will pause before triggering any connected events. After receiving a signal matching trigger_id_in, it will wait for delay number of game steps before sending a signal with an ID = trigger_id_out.
  • trigger_id_in - The ID of the signal to receive
  • trigger_id_out - The ID of the signal to send out
  • delay - The delay in game steps. 60 game steps = 1 second.

Repeater

Will loop a signal loops number of times.
  • trigger_id_in - The ID of the signal to receive
  • trigger_id_out - The ID of the signal to send out
  • delay - The delay between loops in game steps. 60 game steps = 1 second.
  • loops - The number of times to repeat the signal

RandomRelay

Will relay a signal to a random trigger ID within the given range (inclusive). In other words, the signal from trigger_id_in will be converted into a random signal between trig_id_min and trig_id_max
  • trigger_id_in - The ID of the signal to receive
  • trig_id_min - The lower bound of the range
  • trig_id_max - The upper bound of the range

SoundEffect

Will play a sound effect when triggered by a signal.
  • trigger_id - The ID of the signal to receive
  • sound - The sound effect to play
  • loop - If true, the sound effect will loop forever.

TeleportLocation

When activated, the player will teleport to its location.
  • trigger_id - The ID of the signal to receive

TriggerableExplosion

When activated, an explosion will spawn at its location.
  • trigger_id - The ID of the signal to receive
  • uses - How many times this explosion can be activated

InstantWin

When activated, the player will win the floor or level.
  • trigger_id - The ID of the signal to receive
  • end_level - If true, the level will have been beaten regardless of whether or not the player is on the top floor.

InstantFail

When activated, the player will fail the floor or level.
  • trigger_id - The ID of the signal to receive
  • reset_level - If true, the level will restart from the first floor. If false, the player will start at the beginning of the floor.

Message

When activated, a message will appear on the floor.
  • trigger_id - The ID of the signal to receive
  • start_enabled - If true, the text will be visible from the start of the level
  • text - The string of text to display
  • rotation - The rotation of the text

EnemySpawner

When activated, an AI agent will spawn at its location.
  • trigger_id - The ID of the signal to receive
  • enemy_type - The type of agent to spawn
  • agro - If true, the enemy will immediately know the player's location
  • hp - How much health the enemy will spawn with
  • drop_weapon - If true, the enemy will drop his held weapon
  • drop_ammo - If true, the enemy will drop an ammo box of the appropriate ammo type
  • armor - If true, the enemy will be wearing body armor (cosmetic only)
  • exploding - If true, the enemy will explode upon being killed

KeycardActivator

This object is required for locked doors to function. If the player is near this object and has picked up a keycard, then it will unlock the nearest locked door.

ExplosiveBox

A crate that explodes. When the crate takes too much damage, it will catch on fire and eventually explode on its own, if not helped along by damaging it further.
  • hp - How much health this crate has.
Object Documentation - Items
This section outlines the item pickups like ammo, health packs, and weapons.

AmmoPistol

A box containing pistol ammo.
  • ammo_count - How much ammo is in the box

AmmoRifle

A box containing rifle ammo.
  • ammo_count - How much ammo is in the box

AmmoShells

A box containing shotgun shells.
  • ammo_count - How much ammo is in the box

AmmoSMG

A box containing SMG ammo.
  • ammo_count - How much ammo is in the box

HealthPack

A health pack.
  • hp_restore - How much this health pack heals the player.

Keycard

A keycard that can be used to open locked doors. Locked doors require a KeycardActivator to be opened. See KeycardActivator in the previous section for more details.

WeaponPistol

A pistol that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponNailgun

A nailgun that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponMac10

A MAC-10 that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponHK45

An HK45 that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponSawnoff

A sawnoff shotgun that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponM4A1

An M4A1 that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponShotgun

A pump-action shotgun that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponMP5

An MP5 that can be picked up.
  • mag_ammo - How much ammo is in the magazine

WeaponBat

A baseball bat that can be picked up.
  • mag_ammo - How many hits this bat has left.
Object Documentation - AI
This section outlines the different types of AI.

Navblocker

A resizable rectangle that designates an area that the AI can't walk on.

EnemyMafiaPistol

A mobster armed with a pistol.
  • hp - How much health this enemy has
  • direction - Which direction this enemy faces when sitting
  • sitting - If true, the enemy will spawn sitting down (make sure you put a chair under him)
  • drop_weapon - If true, the enemy will drop his weapon
  • drop_ammo - If true, the enemy will drop an ammo box containing the ammo type corresponding to his weapon
  • armor - If true, the enemy will be wearing body armor (cosmetic only)
  • exploding - If true, the enemy will explode upon being killed

EnemyMafiaMac10

A mobster armed with a MAC-10.
  • Same as EnemyMafiaPistol

EnemyMafiaMP5

A mobster armed with an MP5.
  • Same as EnemyMafiaPistol

EnemyMafiaM4A1

A mobster armed with an M4A1.
  • Same as EnemyMafiaPistol

EnemyMafiaShotgun

A mobster armed with a pump-action shotgun.
  • Same as EnemyMafiaPistol

EnemySwatMP5

A SWAT officer armed with an MP5. SWAT enemies walk instead of run.
  • Same as EnemyMafiaPistol

EnemySwatShotgun

A SWAT officer armed with a pump-action shotgun. SWAT enemies walk instead of run.
  • Same as EnemyMafiaPistol

EnemyPolicePistol

A police officer armed with a pistol. Police enemies run like mafia enemies.
  • Same as EnemyMafiaPistol

Civilian

An unarmed civilian. Civilians will run away from the playerground ey see him or if they are shot at.
Note: civilians need to have a Floor object underneath them to function correctly.
  • hp - How much health this civilian has
  • direction - Which direction this enemy faces when sitting
  • sitting - If true, the enemy will spawn sitting down (make sure you put a chair under him)
  • exploding - If true, the enemy will explode upon being killed
Object Documentation - Furniture
This section outlines the furniture objects. These are all decorative objects that don't need much explaining, so I'll only include the ones that have parameters you can change.
Remember that most of these objects can be rotated by pressing "R".

Computer

A model of a monitor and keyboard+mouse.
  • z - The position of the model on the z axis

Corpse

A dead body.
  • type - The model pose to use (0-2)
  • add_rotation - A value to add to the rotation to get a more precise angle.

PileOfGuns

A pile of guns
  • z - The position of the model on the z axis

Staircase

A staircase.
  • bottom_floor - If true, the staircase model will appear lower on the z axis.
25 Comments
hamudimudy Nov 21, 2022 @ 1:11am 
how to make an elevator door?
FireUpNinja Nov 8, 2022 @ 7:42am 
Its cool man, thanks for answering though:AviciiThumbsUp::cozybethesda:
kill my ass  [author] Nov 7, 2022 @ 9:47pm 
sorry I never coded AI to use melee
FireUpNinja Nov 7, 2022 @ 9:25pm 
Hi @kill my ass, is there a way to make the enemies use the bat or act like they are using a melee weapon? I want to make a survival zombie like level but I don't know if its possible.
TBgλmer May 5, 2022 @ 5:48am 
trigger explosions dont activate explosive boxes though, i was trying to make a level where if you mess up, everything explodes
kill my ass  [author] Nov 17, 2020 @ 9:48pm 
sorry @98Kun, that's not possible in the editor
94Kun Nov 17, 2020 @ 9:10pm 
@kill my ass,Could you plz tell me how to make a vehicle move forward and explode? Like the Police Station in the Campaign?
Farmire Nov 11, 2020 @ 7:39am 
This is kinda out there; but is there a way to retain information from one floor to an another? Like if I want to make a level with a split path, where each of the roads take's you to a different floor, or a different starting position on the next floor?
kill my ass  [author] Nov 8, 2020 @ 5:16am 
@Monstenire, click the gear icon to open the level settings and add floors there
Mostenire Nov 8, 2020 @ 5:09am 
I'm still a little confused. How do you make a new floor within the editor? I know how to make a level finish object but I can't add new floors.