Rise of the Triad: Ludicrous Edition

Rise of the Triad: Ludicrous Edition

50 ratings
OFFICIAL Editor Guide
By The Real GooberMan and 1 collaborators
So you want to make Rise of the Triad: Ludicrous Edition maps. Excellent. You're going to need an instruction manual on what makes a level tick, and how to set it up so it doesn't crash on a user's machine when you upload it to the workshop.

This guide is a one-stop shop on all you need to know to make a Rise of the Triad level with the built-in editor. The creativity part, well, that's up to you.

This guide was written by Ethan Watson, a programmer and level designer on ROTT:LE.
3
2
4
   
Award
Favorite
Favorited
Unfavorite
Tutorial 1: A basic map
The Minimum
A Rise of the Triad map needs exactly four things to run without errors:
  • An enclosed area
  • Area tiles
  • Player start
  • An exit
This requires you to use and become familiar with the three sets of planes that a ROTT map comprises:
  • Walls
  • Sprites
  • Info
These planes are easily selectable in the top bar of the editor, highlighted here:


Making an enclosed area
The first thing you need to do is ensure you're editing on the on the Walls plane. When in this mode, you will be presented with a list of Wall Tiles on the right hand side. This scrollable list contains every texture that you are allowed to manually place in a ROTT level. For the purposes of this tutorial, select any texture you want before the glass windows in the list.

With your preferred texture selected, you now need to paint some tiles in the main viewport. But first, we need to know how to navigate around our map.

There are two major forms of navigation:
  • Panning - achieved by holding down space while moving the mouse
  • Zooming - achieved by scrolling the middle mouse wheel up and down
With navigation out of the way, now we can worry about painting tiles. To do that, you need to select one of several brushes available to you illustrated below:


The brushes available to you are:
  • Single - paint a single tile
  • Outline - paint the outline of a rectangle
  • Filled - paint a filled rectangle
  • Flood - paint every empty tile radiating outwards from the cursor, stopping at non-empty tiles
Select the Outline tool. Hold down the left mouse button and drag the cursor out, creating a box shape that you're happy with. Upon releasing the mouse button, the outline previewed to you will be committed to the Walls layer.


We know we need to place an exit in our level though, so what we need is an exit corridor. Select the Single brush. Move the cursor to a tile in the middle of the upper painted row. We need to delete this tile. This is achieved by clicking the right mouse button while over the tile. It's that easy. Now we need to make a corridor. Go ahead and paint a few tiles upwards, making sure to close the tunnel at the end.


Now let's make it look like an exit. Scroll down the Wall Tiles list and find the archway with stairs tile. This is a solid tile, so place it at the end of your corridor. Now find the archway with a blue background. This is a masked tile, meaning you can see through it in-game where the blue colour renders. This tile in particular can be walked through by the player and any object in the game, so we want to put it at the corridor junction.


With that out of the way, we have finished our enclosed area.

Placing area tiles
In simple terms, an area is a part of the level where an object is expected complete access to. Without area tiles, no enemies or traps in the game will wake up and operate in the expected manner. While this is an automatic process in other contemporaneous games like Doom, for ROTT you need to manually manage areas.

There are 46 area tiles available to you. All we need to worry about for this example is area 1. Scroll right down to the bottom of the Wall Tiles list. There you will find a series of coloured tiles. The first one, Area 01, is a blue colour. Select it, and then select the Flood brush. Now we need to fill in the area inside our box, as well as our exit corridor. It should look something like this when done:


Placing a player start
So far, so good. But now we need to be able to actually get in to the level to test our work. To do this, we need to move over to the Sprites layer. Go ahead and select it from the top bar. You'll be presented with a list box on the right with sprite categories. These are collapsable items, and can each be expanded by clicking on the triangle icon next to their name.

This is the easy part: Expand the Players menu, select Player Start Up, and place it using the Single brush inside your enclosed area looking at the exit arch. That's it, that's all you need to do to define a player start.


Placing an exit
This is where it starts to get a little bit tricky. Placing an exit requires two components:
  • An exit sprite
  • A destination placed on the Info plane
The first point is as simple as it sounds: Expand the Exits menu, select Exit Trigger, and place one on the exit arch.

The second point requires us to edit the Info plane. In short, the Info plane is a series of modifiers for objects placed on the Walls and Sprites planes. Much of the dynamic functionality you see in ROTT comes from directions given to various objects on this plane.

Choose the Info layer from the top bar. The right panel will now become the Info panel. It is separated in to various pieces of functionality, navigable by tab items. We don't need to worry about what most of them do for now. Just go ahead and select the Exit To Map tab.

By default, the destination will be the first map. This is a perfectly fine option. However, by clicking on the dropbox you will see the Finish the game option. This instructs the game to return to the main menu. Select whichever one you perfer, for the purposes of this tutorial it does not matter.

Once you've made your choice, move your cursor over to your exit tile and with Single brush mode activated press the left mouse button. Your exit tile will now have a cyan box in the upper left corner, and hovering your mouse over it while editing the Info plane will reveal that it will indeed finish the game.


Save and run your map!
You have now created an entirely functional ROTT map. Save it to disk by selecting the Save Mapset As... option in the File menu. With your work safely written to disk, now you can go ahead and test it. Press F5 to bring up the launch menu. Configure your preferred options from the dropdown boxes and give it a go!


Protip: Doug Wendt is the slowest character in the game. As such, any platforming should be tested with him at all times - hence why he is the default selected character. If you're not testing with Doug, you're not making a level that every character can complete
Tutorial 2: Area connectivity with doors, windows, and pushwalls
A bit more on areas
Areas aren't just for defining the play area. They also handle three other very important pieces of functionality:
  • Actor visibility and active states
  • Sound propagation
  • Lighting changes
Making a successful ROTT level full of the traps and surprises that players expect requires building a fundamental understanding of areas and how they can be best exploited. This guide, however, will just tell you the basics.

Defining more than one area
As you may recall, there are 46 areas available for you to use. In the previous tutorial, we set up a single area with a player start and an exit. Let's split that in two.

Select a wall tile of your choosing. Select the Outline brush. Now find someone in the middle of the left or right side of your room. Click and hold the left mouse button on one of those wall tiles. Now drag it to the other side of your map, creating a single line of tiles highlighted by a green border. Release the mouse button, and you've now split your room in two.

However, the map still isn't quite right. We've got two geographically distinct areas, but only one area tile applied. This is easy: just pick Area 02 and apply the flood fill operation as in the previous tutorial. Fill the area around the player just to keep things simple. And that's it!



Adding a door
Doors themselves live on the Walls plane. Adding a door to your level once you've got two areas separated by a wall set up is as simple as selecting a door from the tile list (highlighted on the right), picking your desired brush, and placing it on the map. In the case of our tutorial map, place one in the middle of the walls you just created separating the two areas.



Want a wider door? Just add more doors to the side of that one. The engine will automatically detect and link all doors together, you don't need to do anything else.



What about those cool doors with multiple different textures? Just place the door tiles in the correct place, and again the engine will link them all together for you.


Now is a good time to save and test your map. Go interact with your new door and see how cool it is for yourself.

Adding windows and fences
In much the same way that you want to define new areas when you want a door connection, you will also want to do this for window connections in many cases. Good news too - placing them is as easy as placing doors. However, it's not just windows you can place. You can choose fences and dog walls for example. As a result, these are grouped together and known as masked textures. Using them is simple - just pick your preferred masked texture and go for it.

So let's go ahead and do that. Set up a new area on either side of your map, sharing walls with both Area01 and Area02. Fill it with Area03. Now select a window tile of your choice (highlighted on the right) and, just like with doors, replace some walls with it.



Adding pushwalls

Pushwalls are a bit different - they are a Sprite that you place on any solid wall tile. Head on over to the Sprites plane, expand the Active Elements menu, and finally expand the Walls menu. The first nine entries are various pushwall types. The first one, Pushwall Any Direction, is a pushwall that the player can activate from any side. The remaining eight correspond to the direction that the pushwall will move when activated.

There are a few constraints that you need to be aware of:
  • For a pushwall to move, it must have at least one free space available to it in the direction it travels.
  • A pushwall will only move two spaces at most.
The good news is that we've already set up our map to handle these constraints. Let's pick a pushwall with a direction - in the case of this example map, we want it to travel left - and place it on the lowermost wall tile on the left that borders two areas.

As you will notice your tile now has a green arrow placed on it, indicating it is a pushwall and the direction it travels. Feel free to change the texture if you wish. Otherwise, once again, this is a good time to test and save your map. Push that wall!
Tutorial 3: Switches and Touchplates
Remote activation of objects
The last major bit of functionality you'll want to get used to is switches and touchplates, a major part of making a ROTT level feel dynamic. These are objects that can only be activated by the player, and do everything from open doors to turn off traps impeding the player's progress.

So which one is which?
  • A switch is a Wall tile, and must be used by the player to activate
  • A touchplate is a Sprite, and must be stepped on by the player to activate

Switches
Let's start with making our pushwall operable by a switch. There are six switch textures available to you, but for the purposes of this tutorial we will stick to the most commonly used one - the big grey ones.

Pick the switch that is in its off state. Place it anywhere in your map that is accessible to the player from the start - for this tutorial, we will place it right next to the pushwall. Now we need to switch to the Info plane, specifically the Links tab.


Notice the Pick Tile button. Press it. It will now change to a Cancel button. Now go to your switch tile and click on it. The Pick Tile button will reappear, and the numbers in the Link Tile X and Link Tile Y boxes will have updated to be the tile you just clicked on. Now move your cursor to the pushwall tile that you placed in the last tutorial and click on it. The tile will now have a red square in its upper left corner; and when hovering over it with your cursor, an arrow pointing back to the switch and a popup telling you the tile it links to will appear.


This pushwall can no longer be activated by the player directly - the must use the switch. Save and run your map to confirm this.

Touchplates
Touchplates operate in a nearly identical manner - place them in the level, link your object back to them, and be merry.

There are four different types of touchplates you can select from, each with different sizes. The Huge and Large touchplates are the most likely for a player to notice; while a Tiny one will be difficult for a player to notice.

Let's make the door operable with a touchplate. Pick a touchplate Sprite of your choosing. Place one in front of your door, the middle tile is a good spot. Now link the middle door tile to your touchplate.


Save, run, and notice that the entire door can now only be opened with the touchplate. Just as the engine links up doors placed together normally, it also makes them locked together when linked to a touchplate or switch.

You're done!
Armed with this knowledge, you can go ahead and make as many levels as you want. You will, of course, want to place enemies about the levels. You will find them in the Sprites plane, along with everything else you could possibly want to interact with. You have enough information now to explore those features by yourself, so get cracking and see you on the Workshop!
Managing your campaign and maps
The Map Editor contains everything you need to define a campaign, including episode definitions. This document will describe the options available to you with the three buttons available in the top bar: Campaign Settings, Map Slots, and Map Settings.

Campaign Settings
  • Title - The name of your mapset. Displayed in the main menu.
  • Description - What your mapset is about. Anything at all, really.
  • Hint Text - Used in the top bar of the main menu.
  • Author(s) - Your dog's name. Or your own, don't let me limit your creativity here.
  • COMM-BAT mapset - Defines every map in this mapset as multiplayer maps.
  • Episodes - Complete management for episode settings. You can add and remove episode titles and shuffle their order around. Note that reordering an episode only changes the tile of that episode, it does not update every map in the campaign order.

Map Slots


A ROTT mapset allows you to have a maximum of 100 maps. The Map Slots button allows you to manage them by adding, removing, and selecting the current map to edit. You'll notice one button is green while the others are not - this indicates that it is the currently selected map for editing. Any button that says "Add New" is an unused map slot, and pressing that button will create a new map in that slot for you to edit. Each map is stored in memory at all times, so you do not need to worry about losing your progress when switching to a different map.

The Import button on each map slot will allow you to select a mapset on your drive, allowing you to copy a map from one of its slots in to the corresponding slot you've selected. If the mapset only has one used map, it will automatically copy; if there are two or more maps, it will display another dialogue allowing you to select the map you want to copy.

Map Settings
  • Floor and Ceiling - The texture used map-wide on your level. The Ceiling drop-down will allow you to select sky textures.
  • Map Height - How tall your map is in tiles.
  • Sky Height - The default offset of the sky texture. Higher values drift further up the texture.
  • Brightness Level and Light Fadeout - Modify the base light level and distance lighting of your level.
  • Music Track - The bangin' tunes that play while you play. If you're not sure what track is which, try the Preview button.
  • Lightning - Flashes the sky and plays the thunder sound periodically.
  • Light Icon - Turns on lighting and allows light sources to affect the overall brightness of the area they are placed in.
  • Don't count lights - When Light Icon is on, light sources will not affect the overall brightness of an area. Very useful for Ludicrous Lighting's lightmaps on dark levels.
  • Fog - Turns fog on in your level. All lighting effects are disabled when fog is on.
  • Level Type - Select from the following to change certain behaviors (mostly related to the load screen):
    • Normal - Plain old ordinary level.
    • COMM-BAT - Multiplayer level.
    • Secret - A level not part of the regular flow.
    • Boss - A level typically reserved for the end of an episode where a special boss enemy is used.
    • Chase - A special level type meant for the Oscuro Head chase, as seen in Dark War E4A9.
  • Enter Cinematic and Exit Cinematic - The type of cutscene that plays when entering and exiting a level. Note that the Dark War Finale will cause the current level to loop unless all Oscuro Eggs in a level are destroyed and accounted for.
  • Skip Boss Obituary - Don't show the tombstone screen on exiting a level.
  • Count Oscuro Eggs - Required if you don't want the Dark War Finale cinematic to loop the current level.
  • Oscuro Snake Behavior - Defines what behavior Oscuro Heads take when placed on the level:
    • None - No behavior. If you attempt to run a map with this defined and an Oscuro Head placed, it will crash.
    • Retreat After Human Form - Find the nearest pushwall tile on an area tile and use that for guidance once human form Oscuro runs away like a little wimp. Requires human mode Oscuro to be placed instead of a head.
    • Chase - Starts off as a snake that runs away from the player when its rear-most head enters line of sight.
    • Boss Battle - No more wussing out, the snake is ready for a throwdown.
  • Enable Wind - Allows the wind sprite to make noise when placed in a level.
  • Map Title - Displayed on the loading screen and automap.
  • Author - Displayed under the Map Title on the loading screen.
  • Episode - The episode that this map belongs to. Used to show a number on the load screen, and categorisation in the warp cheat menu.
  • Area Number - The number used in the ExAx string on the load screen.
Locked doors using keys, and advanced tile links
How to implement a locked door
Simply place the required key sprite on every door tile that uses it. The engine will not automatically link up key types across all connected door tiles, so you must manually place a key on every tile.


Multi-trigger door
A door can have a different link on each of its tiles. Useful for setting up a line you need to walk across to open a door and not have to limit the player to crossing a single tile only.


Timed door
Timed doors are one of the most complicated things to set up in ROTT. Their functionality is to open the door at a certain time, and close it at a certain time. The map format is pushed beyond its limits to accommodate this.

There are four steps you need to perform to set up a timed door:

1. Place a Clock Instance in the Sprites plane
2. Place a beginning time on a door tile in the Info plane
3. Place an ending time on the tile next to the prior door tile in the Info plane
4. Place a link on the clock tile pointing to the beginning time on the door tile

That last step is particularly counter-intuitive, as it is the opposite of how every other linked tile in the game works.

Once you've worked all that out, your door should look something like this:


To implement a multi-tile timed door, those four steps must be repeated for every tile on the door as the engine does not automatically link up timed doors.
Moving objects, and how to direct them
Types of objects
There are six basic types of objects that move that you can control the path of:
  • Floor/ceiling firejets
  • Floor/ceiling blades
  • GADs
  • Robots (both the Guard and Ballistikraft types)
  • Movewalls
  • Chained pushwalls
Each of them follow the same pathing rules, with chained pushwalls having one minor (but critically important) difference.

Guiding your moving objects
A moving object follows some fairly simple logic:
  • Move forward in the current direction
  • Check if on middle of a tile, do nothing if not
  • If true check if tile contains a pushwall sprite, do nothing if not
  • If true, change direction to that of the pushwall sprite
As such, setting up complicated paths is as simple as placing pushwall sprites on valid area tiles.

Setting up a simple blade trap to ping pong between two endpoints is thus accomplished with a grand total of three sprites: A blade with a direction, and pushwalls on either side of it pointing back the way they came.


As you don't need to place a pushwall on every tile in a moving object's path, you can set up some reasonably complicated paths. Here's an example of a blade following a figure eight path, where its path crosses exactly at the junction point of both parts of the loop.


Moving objects are also not required to begin on their final path. Here's an example where firejets join a looping path that other firejets are already on to create a non-broken flamewall of death.


As the firejets outside of the loop are given the exact amount of tiles to enter in an empty space in the loop, the end result is that it looks like it was always one continuous flame trap.


Setting up movewalls
Movewalls are set up almost exactly like pushwalls - place a wall tile down, place a movewall sprite on them, set up a path as described above, and stand back unless you want them to squash you. Just like a pushwall, any non-masked and non-door texture can be used.

There are two types of movewalls, both illustrated in the following screenshot:
  • Normal, that move at the same speed as a pushwall. Their direction is illustrated with a yellow arrow.
  • Fast, that move at a much faster speed. Their direction is illustrated with a red arrow.


Chained pushwalls
Pushwalls can normally only move one or two tiles at most. However, they do have the ability to move further than that. There are two required pieces of setup:
  • Link the pushwall to a switch or touchplate
  • Place pushwall sprites every second tile along its intended path
Chained pushwalls will entirely ignore pushwall sprites that are not two tiles away. The sole exception to this is if there is a wall two tiles away - at that point, it will check the tile it has stopped on and then move along if necessary.

In the following example, two pushwalls are linked to a switch. One space to their side are pushwall sprites instructing path followers to go the other way. However, as these are chained pushwalls they will ignore those sprites and move on to the next tile across. At that point, they will be instructed to move themselves in to the alcoves created just for them.
Toggleable sprites - lighting, traps
Lighting
By default, every light in the game is on. This is pretty obvious as far as flame sources go but this also applies for Floor Lamp 2, an obviously electronic light source. Being electronic though, it means you can toggle them on and off.

Simply link Floor Lamp 2 to a switch or touchplate and you now have the ability to toggle the lights on and off.

Traps
By default, every trap in the game is on. If you place them in the level and do nothing else to them, they will activate as soon as their area gets activated. However, there are some traps that can be toggled on and off via switches and touchplates. These traps are:
  • Fire Cannon
  • Moving ceiling/floor blades
  • Gas grate
  • Rolling balls
  • Movewalls
Linking them is done exactly as you've done it before - pick a switch/touchplate tile in the Info plane and apply it to your hazard.

Initial state
The initial state of your object is determined by what kind of object it links back to:
  • Touchplate - off
  • Off switch - off
  • On switch - on, with the exception of movewalls
As a further note on movewalls, once they've been toggled on they can never be toggled off again.

Door hack
By default, a switch used to control a door will only let you operate it once. You can work around this limitation by placing a dummy Floor Lamp 2 off in a self-contained area the player will never access and link that lamp to the same switch that the door controls. This will now give the switch the ability to reopen a door that has already shut.
Elevators
Your standard everyday teleportevator
Elevators in ROTT are not constrained to the laws of Euclidean geometry. They are in fact fancy teleporters. To set up a believable elevator in your level, you need a few things.

To start with, room geometry at the source and the destination that match. Make a single-tile square room for this. On one wall of the room, place a door (a perfect time to use the custom elevator door tiles). Opposite that door, place the special elevator switch. On that single square, place an Elevator sprite. Now do the exact same thing at the destination. That's it, you now have a working elevator.


You are limited to eight total elevators in your levels.

Oscurovators
Setting up an elevator actually only requires a minimum of two things:
  • An elevator sprite on the Sprite layer at both the source and the destination
  • The special elevator switch wall tile on the Walls layer at the source
With this knowledge, for Extreme ROTT a bit of map trickery known as an Oscurovator was developed. These were signposted by the elevator interior walls being the animated blue Oscuro face texture. These were in every way a standard elevator at the source (excepting EROTT E4A10 as a strong example). At the destination, however, was no copied geometry. It was regularly just a matching Elevator sprite in the middle of a room.

Use this knowledge wisely. Or try to troll harder than EROTT did, whatever makes you happy.
Info tiles - Working with heights
Sprite types
Most sprite types in the game accept heights. The most common ones you will work with include:
  • Life tokens
  • Weapons
  • GADs
  • Enemies
This particular part of the guide will focus specifically on GADs. The information presented here can be applied equally to any other supported sprite type.

Height increments
By default, sprites start their life on the ground (with the exception of a handful of light types, and GADs). Their height can be incremented by 4 units at a time by selecting the Heights tab in the Info plane panel. Increment and decrement (or just plain type in) the height you want, and then click on a GAD. It will now spawn at the specified height instead of its default.


The one exception to this is the Raising GAD. When applied, it will limit the GAD's height to that value instead of allowing it to raise all the way to the top of the level.

Height considerations
Sprites are generally considered 64 units high by the engine. As such, if you want the player to be able to walk under a GAD it must be at least 128 units high.

Actors can step up GADs and other objects. The maximum height difference between objects must be no more than 24 units.

Special height setters
There are two types of special height setters found in the General tab of the Info panel:
  • Items placed in arc between two jumppads
  • Items placed in a diagonal line from a jumppad
The first one provides an arc for all items placed in between two jumppads. Just make sure a line of items has a jumppad placed on each side, apply the Info tile, and the engine will take care of the rest.


The second one requires a single jumppad on one side of a line of items. Applying this Info to each item will spawn them in a straight line from the floor to the ceiling.
Info tiles - Upper textures
By selecting the Alt. Upper Texture tab in the Info plane's right panel, you can modify the look of a level vertically. In all but one exception, the textures selectable from this panel will replace the second tile in height upwards with the new texture.

Tiles that have such textures applied are easily identifiable with the purple square in their upper left hand corner.

There are three types of tiles that you can place upper textures on:

1. Solid wall tiles of any kind. Switches and animated tiles are perfectly acceptable targets.


2. Masked textures, excepting the fence.


3. The masked switch texture - however, for this one specific case, the masked texture will apply to every level except the top one.
Info tiles - Catwalks, masked walkways, and the rest
Setting up three-dimensional walkways
There are two types of three-dimensional walkways that you can set up in your maps:
  • Catwalks - the scaffolding that you see in every level
  • Masked walkways - originally limited to 1 texture, now any solid (non-animated) wall tile can be turned in to a walkway
Both are set up in the same manner - applying the necessary value to the Info plane - but with one important difference: catwalks are placed on area tiles only. Otherwise, they both follow the exact same rules.

Found in the General tab in the right panel for Info planes is a drop down box with several options. The values required to set up masked walkways are:
  • Pass through top catwalk, perpendicular to wall
  • Top blocking only catwalk frame
  • Bottom blocking only catwalk
  • Bottom and top blocking catwalk
  • Top and middle blocking catwalk
  • Middle blocking catwalk
  • Bottom and middle blocking catwalk
Top means the top-most vertical tile will have a walkway applied; bottom means the bottom-most; and middle means every tile between those two.

When applied to a tile, their upper left hand corner gains a yellow square. Highlighting while in the Info plane will pop up the type of walkway that has been set.


Examples of how every type of walkway looks in-game follow:




Note that while Pass through top catwalk, perpendicular to wall and Bottom and middle blocking catwalk look like the exact same thing, both have their uses. The perpendicular option can help you when the engine just can't get the orientation of your catwalk correct, as it will force it to orient in a T shape to the nearest wall it finds.

Sky tiles
Applying a Sky Tile info to any valid tile will turn it in to a sky tile. All other functionality of the tile will cease, it's sky now.

Actor facing settings
Most actors with orientations have separate sprite types that you can spawn for this purpose. The only sprites that pay attention to this setting are:
  • Flags
Yep. That's it. Flags. This entire feature exists solely to orient flags. Enjoy.
Map Verification
Because ROTT is fragile
The map verification pass when attempting to launch your map from the editor is there to catch any possible problem that can cause an error during normal gameplay. The ROTT codebase is full of error conditions that stop a map from getting past the load screen; as well as circumstances that can arise during gameplay that cause hard crashes with no error message.

This section will document the conditions account for by the verification pass, as well as their reasoning. (This section is also currently incomplete and will be updated with more cases in the future)

Note that starting a map without verification is possible in many cases, but the map as a result will be in a state where something could go wrong and cause the program to quit.

Movewall paths
When a movewall encounters a Wall tile that does not have any tile applied - be it solid tiles or area tiles - the game will crash. The verification pass will detect all movewalls and follow their paths to ensure they are on looping paths.

NOTE: This does mean that the infamous I'M FREE! quit condition will not pass verification. The vast majority of ROTT maps will never use or rely on this behavior, and as such the verification tool is designed to cater to that overwhelming majority.

Linked tiles
If a linkable object links to a tile that is not a switch or touchplate, a map will refuse to start. The verification pass will look for linkable objects and check that their links go back to the right kind of tile.

Links applied to non-linkable objects will cause the map to not start. The verification pass will also ensure tiles with links are of the correct kind.

Exits
A map without an exit sprite can cause the end user to get softlocked in your map; and on boss levels it will cause an error and quit the game after killing the boss. The verification pass will ensure that there is at least one exit in your map.

An exit sprite without a target will cause the game to error on the level complete screen. The verification pass will ensure every exit sprite has a valid target.

NOTE: Many maps in the original campaigns have loose exit sprites with no targets defined. While these were always placed in inaccessible areas, Ludicrous Edition has introduced a noclipping cheat. We do not want to cause errors as a result of using this cheat, therefore we check for valid targets.
Bosses - Oscuro Snake chases
Setting the snake behavior
By default, placing an El Oscuro Head in your level will cause the game to error immediately after starting it. In the original ROTT, the snake behaviour would only be set up correctly on E4A7, E4A9, and E4A10, with each level providing specific behavior that affected how it spawned. Ludicrous Edition entirely removes this requirement and allows the user to setup the correct behavior on any level.

To set up a chase snake, ie as originally featured in E4A9, you simply need to set “Oscuro Snake Behavior” to “Chase” in your map settings.


Placing the snake
To place a snake, you simply select one of the four “El Oscuro Head” actors in the actor list according to the direction you want it to spawn in.


There is one constraint, however, that you need to keep in mind: You are only placing one part of the head chain, yet the snake has multiple heads when it moves.

The game will spawn additional heads in the direction that it is facing. For example, placing an El Oscuro Head Down will spawn additional heads in a downward direction from its spawn point. Using the potted plants as reference, you can see that it requires an additional five tiles in its spawn direction to set up correctly:


Guiding the snake’s movement
The snake has very similar movement rules to a movewall. It starts travelling in one direction and will keep moving until it encounters a pushwall sprite, at which point it will change its direction to match that of the encountered sprite.

It is, however, jankier than a movewall. The code expects to find any sprite on every tile it encounters, and currently crashes if none is found. As such, you need to place a pushwall tile on every tile you expect it to move on.


From here, the snake is free to move along the defined path. Normally, it is idle in the map and will not move. The only time it will move is when the rearmost head has line of sight to the player. As soon as it cannot determine line of sight to the player’s position via a simple point-to-point raycast, it stops moving.

Hiding the snake from the player’s view
As a chase object, the snake is expected to disappear from the player’s view past a point where the player will exit the map. The original E4A9 achieved this by constructing an additional tunnel beyond the exit arch for the snake to run into.


As line of sight is determined by the rearmost head, the end result is that the snake actually stops immediately inside that tunnel. It is, however, a very good idea to set up that looping path thanks to the fact that we now have a noclipping cheat and there’s absolutely nothing to stop the player from taking a peek at where the snake actually goes. If you don’t provide this looping path, it will eventually hit a tile that it can’t find a sprite on and crash the game. Or find the edge of the map and crash the game. Trust me, it'll find a way to crash the game.

There is, however, one additional trick up our sleeves: the snake will travel through wall tiles exactly like a movewall. This means you can create a setup where the snake disappears in to the exit stairs tiles, or have it move out of view with some other visual trickery etc.


This setup is all that is required to provide the “El Oscuro running away from the HUNT like a coward” functionality.

Best Practices
  • Don’t place any wall tiles in between the snake and the player except for masked tiles such as glass panes, fences, etc. As movement is based on line of sight, even if the geometry looks cool you’ll have the snake stuck still until the player gets in just the right spot for it to move again.
  • Thanks to the line of sight rules, placing the snake directly in front of the player is a sure fire way to get it to move. However, placing it perpendicular to the player in a tunnel is also very effective, as it will wait until line of sight is achieved before speeding into the player’s view.
  • As this snake is one speedy boi, placing it in a normal gameplay area is a surefire way to ensure the player will never see it. The snake is best used either as a full chase level snake, or as something you see in the end area of your map.
Bonus Section - Tricks of the trade
Ambient lighting
You might find it hard to control the ambient light level of an area if you've turned the Light Icon setting on and have placed a good number of light sources. One way to do it is to enable the Don't count lights option, but that will keep the level uniformly one light level. What if you want some rooms to be brighter and darker than others, but use light sources to paint bright spots in your map?

The way that lighting works is that it counts up the number of area tiles, counts up the number of light sources on each area, and creates a ratio from which it alters an area's ambient lighting. We can exploit this to our advantage by creating dummy areas inaccessible to the player and using the same area tiles for the area we want to control.

To make an area brighter, keep the number of area tiles in your dummy area small. Just one for each light source you want to add. Keep adding area tiles and light sources until the light level is to your satisfaction.

To make an area darker, you want to increase the number of area tiles. Make a big inaccessible area of your map and keep painting area tiles until the ambient light lowers to where you want it.

You can also use this method combined with Floor Lamp 2 to create toggleable light levels in your area that can't be destroyed.

Magic light source
This is a sprite that is invisible in game and cannot be destroyed. It simply adds a light source to the map. Very useful if you want to highlight an area of your map without introducing other visual elements. The HUNT Continues uses these light sources on wall tiles that have lights in them to give the impression the tile itself is radiating light. Note that because placing a light source on a wall tile means you are not placing it on an area tile, you will also need to employ the dummy sector method mentioned above if you want to raise the ambient light level of your area.

Stationary ballistikraft turrets
Ballistikraft travel in one direction until they find a pushwall sprite, or until they hit a wall. They won't make any intelligent decisions upon hitting a wall. They will keep trying to move through it for all eternity.

As such, make a little alcove for a ballistikraft and spawn it facing in to a wall. Whenever it fires at the player, it has a small warning thanks to the sound it plays and the fact that it needs to rotate around to face the player. After the player leaves its line of sight, it will rotate back towards the wall and be the "unstoppable force/immovable object" meme until you quit the game.

Note that if you spawn it facing in to a masked texture, there is a chance that it will turn around and wander off somewhere else after it has finished firing at you. In these circumstances, you can force it to bend to your will by placing a pushwall sprite next to the ballistikraft immediately outside the alcove telling it to go back to trying to move through that wall.


Unleash the GADs!
Moving objects that follow paths, as illustrated earlier in the guide, can join loops that they don't start on. As such, it's entirely possible to use moving GADs to provide access to later parts of the level via a switch or touchpad.

This requires a pushwall setup that fully exploits them only paying attention to every second tile. Set up a pushwall with some moving GADs behind it. The pushwall must be set up in the same direction the GADs are travelling. Now set up a switch or touchplate to activate that pushwall. It will move forward two tiles. GADs check for pushwall sprites every single tile. As such, when they move in to the space the pushwall started at it will find a pushwall sprite and keep moving in the same direction.

This leaves the currently-empty tile in between where the pushwall started and where it ended. Place a pushwall sprite here that guides the GADs to either side of the pushwall. Now they are free. Add more pushwall sprites as necessary to guide them to the loop you want them to be in - or as seen in Mission: Void Warranty in The HUNT Continues, guide them in to a wall to provide a new bridge that didn't previously exist; and even new staircases as seen in Follow The HUNTer.
Bonus Section - Mapping guidelines used in The HUNT Continues
Note that these are just guidelines, not hard rules to follow. It's okay to ignore a guideline or two in a map. If you ignore several though, the map will suffer as a result.

Box rooms are boring
Yes, it's a grid-based level format. That doesn't mean you need to make boxes everywhere. Add some character to the room by filling in the corners. And on that note:

Symmetrical rooms are boring and confusing
If you want the player to get lost, make rooms that look the same from all entrances. Put weird shapes in. Give the player something to anchor their sense of direction to.

Avoid long walls with no variation
The easiest way to ensure your map feels like a bland maze is to make long stretches of walls with little to no variation. If it's a sky map, add windows or fences. If not, add some kind of decorative feature. Just break it up with anything.

Decorate all the things
If a patch of your level looks empty, add trees or plants or columns. Room's a dud? Add a couple of tables and stools to make it look like a recreational area. Go nuts with making masked walls. Abuse the Alt. Upper Texture feature. Everything is there to help you break the monotony of 1992-era memory and design limitations.

Make the results of switches visible
It can be tricky with the limitations of tiles and the grid-based layout, but where possible make sure the player can see the results of what they just did. Windows, fences, and catwalks are good ways to show the player what they just did and lock them in to whatever trap you've just unleashed at the same time.

Guide the player with lighting
Put some light tiles next to your critical path doors, and paint them with magic light sources. The player's view will naturally be drawn to a feature that is not present in many other places. Use the animated directional light tiles to indicate which direction the player should travel in (and to highlight hard-to-spot switches).

The only reliable way to guide a player is with weapons, powerups, and enemies
Even that lighting trick isn't enough. Some people just won't go where you've pointed them unless you put something that they want in their path. Health isn't enough for this purpose, it needs to be a weapon or a powerup. Life tokens can work, but not always. A newly unlocked area showing enemies is a surefire way to get a player to move forward, since they'll expect health and bonuses and doors for progression on the other side.

Looping back on a level is good
Loopbacks help anchor the layout of a level in the player's mind. The more they see the same area or unique piece of geometry, the better it helps them navigate the entire level.

Purposeful backtracking for progression can be bad
Did you unlock more enemies on the path back? Did you change the geometry on the path back? If the answer is no to both of the above, then place an elevator. Backtracking is otherwise a boring slog.

Pistol start every level
No one likes single pistols. Place a second pistol somewhere near the start. It doesn't have to be before you encounter enemies, but try to not prolong it. Likewise, the MP40 should be available in the map (secret MP40s are totally cool).

Embrace the silly
Random powerups are fun if you can nail the risk/reward factor of the environment around them. Don't be afraid to use powerdowns to punish players for mistakes. Dog Mode is less of a "Win the level" powerup than God Mode, and it's sillier, so it's a perfect one to use more of. ROTT is meant to be ludicrous, so have fun.

Twist the game's mechanics
A run-and-gun level has been done countless times. The design space for ROTT is still largely unexplored. See what happens when you use enemies and traps in unexpected combinations. Pick one mechanic and riff on it. Do whatever you can to make the map anything but a run-and-gun throwdown.