Monster Bash HD

Monster Bash HD

Not enough ratings
Level Editor Basics, Tips, and Tricks
By Duskbot
Unfortunately, there isn't much help for the level editor available (that I've found). Hopefully, this will help you understand some of the more confusing aspects of making a level.
   
Award
Favorite
Favorited
Unfavorite
Intro
The built-in level editor for Monster Bash HD can be... tricky to use. There's a lot of things that aren't clearly spelled out for you, and there are other things that seem counter-intuitive. Hopefully, this guide will help you understand the logic behind the editor.

Also: This guide is a work-in-progress. There should already be a good amount of information here, but there's still more info to add.
Some Terminology
For Beginners

Where to find the current (x,y) coordinate in the level editorIf you're completely new to level-editing and tile-based games, you might not be sure what I mean by "tile". Basically, a level is divided up into a grid of Positions. Each position is defined by its (x,y) coordinate; x refers to its horizontal position, and y refers to its vertical postion. You can find the current position of your cursor by looking in the bottom-right corner of the screen, as seen on the right.

Note that in this game, x increases from left-to-right, and y increases from bottom-to-top.

General Notes

When I first started writing this guide, I used "tile" to refer to both the tiles you place on the map, and the positions on which you can place a tile. While both usages are acceptable, it can be confusing to use the same word for both. To make things clearer, I've switched to using Position to refer to the (x,y) coordinate where you can place a tile, and only using Tile to refer to the actual tile elements that can be placed at a specific Position.

However, I haven't fully switched to using Postion yet, so some of the sections I wrote first will still use the word "Tile" to mean "Position".
Getting Started
When you open the level editor, you'll be greeted with a screen that looks like this:

An empty level

This is just an empty level. You can start to plop down tiles and enemies, but you should probably have an idea of what kind of level you want to make first. To get a better sense of what's in your level, you can press Tab to toggle between three different zoom levels. Usually, you'll use the highest zoom level when making precise modifications, and you'll use wider zoom levels when examining your level as a whole.

You probably noticed the red tiles along the edge of the screen. These are the edges of the level. You can place tiles here, but they will always be treated as a hard wall. To adjust the edges/size of the level, we go to...

Setup

To get into setup, just click the gear icon at the top of the screen:



This will bring up the level setup screen:

The Setup Screen

This has all the settings that apply to the level as a whole. Map Name, Author, and Description will show up after you upload your level to the Steam Workshop. If you've ever played a workshop level, these should be pretty self-explanatory.

Level Size

Next, we have the size of the level. By default, this is set to the maximum value of 256 tiles wide by 128 tiles tall. Note that these numbers include the red border tile around the level. Thus the actual playable area's width and height are two less than the visible area's width/height.

However, if you set your level's visible area to less than 256x128, you can still place tiles outside the visible area, so long as it's still within the 256x128 box. These tiles just won't be visible or interactable. This can actually be useful as a scratch area if you want to see how certain tiles would fit together without changing the visible area of your level. In fact, you can construct groups of tiles here, and then copy them over to the main level. See Undocumented Functions for more info on how to copy tiles.

An empty level, shrunk to 32x32

Note that when adjusting your level's size, rows and columns are added to/removed from the top or right side of the visible area respectively.

The same level, expanded to 48x32

Anything that was outside the original boundaries, but within the new boundaries will now be visible and interactable (unless it falls on the border).

Unfortunately, as far as I know, there is no way to add rows/columns to the bottom/left side of the level. Keep this in mind when starting your level, as it may be a good idea to provide some extra space on those sides in case you need it.

Background/Parallax

The "Graveyard Trees" Background's preview in the level editor
Next option is to set the background. Technically, this is a bit of a misnomer, since a few of the "backgrounds" also contain foreground images. In all, a background contains all the parallax elements that scroll at a different speed than the player. Each background contains one or more background "layers" and also possibly some foreground layer(s). To see how they look, you have to test the level itself, but for Graveyard Trees (the first non-empty option), the level editor shows you how it will look in the level.

Where to find the y-coordinate of the a tile
You can also set the height of the background. This will change the height at which the layers start. You'll need to do this if a portion of your level is underground. The height value is the y-coordinate of the bottom of the background. For example, if you set the background height to 12, it will start at the row whose y-coordinate is 12... approximately.

For whatever reason, the background layer(s) is slightly off from the tile layer. I believe this is because the background layers do scroll a bit vertically, so the position changes slightly. You can see this by setting the background height to a specific row, and then placing a block in that row, and see how the two line up.

Setting the background height to 12 and placing a block at y=12That same block, when playing the level.
Notice that the background layer ends slightly above where it appears to end in the level editor. You'll have to adjust the background level and test the level to see how it actually looks to get it right. You can even set the background height to a negative value if you so choose.

Awkward result of setting a swamp background's height greater than zero
Finally, a couple of the background options only really look right when their height is set to 0. In particular, the two swamp backgrounds have foreground elements that just... end abruptly at the bottom of the layer, so they'd look wrong if set at any height greater than 0. They might look alright at a negative height, though. Also note that the swamp backgrounds don't interact properly with some background tiles. I assume this is a bug, though.

The swamp backgrounds don't work well with (some?) background tiles

Effects

I don't know if there's a proper term for these, these are just the togglable options you have for a level. Leaves, rain, and thunder are just visual effects (and sound, for thunder) that give extra atmosphere to a level. Make sure they look alright when testing your level; thunder can look odd when paired with the wrong background.

The other two options are gameplay-based. "Floor is Lava" is a bit of misnomer, as it just makes the bottom border kill Johnny on contact. If you want actual lava, you'll have to use the appropriate foreground tiles. You'll also probably want to use this if you're making a swamp level, or a level that takes place in the sky (e.g. Episode 1's secret level).

Finally, there's the "Broom Riding" option. This allows Johnny to fly on a broom like in Episode 3, Level 8. If you've played that level, you'll know how that works. You can also temporarily turn it on to debug a level.

However, be careful when designing a level with Broom Riding. Some items do not work well when paired with the broom, especially the bouncy chairs/couches. However, you probably won't use broom riding in many levels (except to debug), so this isn't much of an issue.

Placing Elements (Tiles/Objects)
You can't really have a level if you don't have anything in it besides a background and maybe some foreground effects. That's where (what I'll call) elements come in. Elements consist of most of the stuff you see in a level. There are six kinds of elements. which are, from left to right in the image below:

  • Tiles (both foreground and background).
  • Objects
  • Enemies
  • Interactables (need a better name)
  • Items
  • Tile Modifiers

(There's also the hand tool, to the left of the element types, which can be used to alter properties of elements or just delete them.)

Note that Johnny (the player character) can be found in the interactables section.

You'll likely use something from each of these categories when making your level, so I'll go over them one-by-one.

Tiles

Tiles are the bulk of what you place in a level. They make up walls, floors, (static) backgrounds, foregrounds, etc... While there is no official name for dividing tiles into groups, you can divide tiles into groups that have similar behaviour. However, there are a few groups implied by the "Tile Modifier" section:

  • Background Tiles
  • Foreground Tiles
    • Mid-Layer Tiles
    • Front-Layer Tiles

Explicitly marked foreground tilesThere's a lot of unclear aspects about how tiles work, especially since the tile palette doesn't give you any information about the selected tile. There is an exception, though: If a tile has a green F in front of it, then it's a foreground tile; specifically, a front-layer tile.

Background Tiles

Examples of background tilesBackground tiles are pretty easy to understand... as long as you can tell which tiles are background tiles. For the most part, if you've played Monster Bash a lot, you should be able to recognise which tiles are used to make backgrounds. For example, wall paper tiles, the skeleton patterns in the back of caves, etc...

Background tiles have no interaction with Johnny; you can't stand on them, they don't respond to your shots, etc... Also, you can only have one background tile per tile/coordinate. If you try and place a background tile over top of another background tile, it won't do anything, unless you have Tile Overwrite mode on, in which case, it will just overwrite the current background tile.

Testing some unusual background tilesMost background tiles don't have any transparency in them; they fill up the whole 16x16 tile. However, a few don't. You can tell these partially-transparent background tiles apart from foreground tiles with following test: Place both some of the suspected background tiles, and some known foreground tiles near each other. Next, turn on Tile Overwrite. Select a known background tile (wallpapers are a good choice), and place them over top of both the foreground tiles, and the suspected background tiles. The known background tile will appear behind the foreground tile, but will overwrite the partially transparent background tile.

Fortunately, there aren't too many partially transparent background tiles; the only ones I know of are the small pipes.

Foreground Tiles

Some foreground tiles placed in front of the previous background tilesForeground tiles are tiles that can be placed in front of background tiles. To do this, select a foreground tile from the tile palette, turn on Tile Overwrite, and then place the tile over top of a background tile.

Note that unlike background tiles, foreground tiles can have properties that determine how they interact with Johnny (and enemies). For example, here are some common properties of foreground tiles:

Common foreground properties/types
  • Solid
  • Passable platform
  • Dangerous
  • Ladders

Most of these should be pretty clear, with the possible exception of passable platforms. These are just platforms that Johnny can jump up through and then land on.

Trying to place multiple foreground tiles on the same tileHowever, what makes handling foreground tiles hard is that you can only have one tile per "layer"... but it's not clear what those layers are. Usually, these are divided into "Mid" (appearing behind Johnny and other sprites but in front of background tiles) and "Front" (appearing in front of Johnny and other sprites), but there seem to be sub-layers within "Mid" and "Front". As you can see in the video to the right, sometimes you can place three different foreground tiles on the same tile. Other times, you can't place two tiles that would (sort of) make sense to place on the same tile, like the kettle and the wall sword.

I'm guessing this is because the game needs to have an order in which to render tiles (and other objects/sprites) on the same tile. To keep this order consistent, tiles are probably grouped into "layer groups" such that each tile in the level can only have (at most) one tile from each group on it. The other possibility is that tiles in the same position (and same layer) rendered in the order they were placed.

In general, the rendering order of elements/layers seems to be:
  1. Background Parallax Layer(s)
  2. Background Tiles
  3. Mid Foreground Tiles and Objects (Multiple Sub-Layers)
  4. Most Enemies and Sprites
  5. Front Foreground Tiles and Objects (Multiple Sub-Layers)
  6. Some Sprites (e.g. released pets and exploding heads)
  7. Foreground Parallax Layer(s)

There's probably more I should say about foreground tiles, but I'll add more later.

Objects

Some examples of objectsObjects are, for the most part, elements that would have been constructed out of tiles in the original Monster Bash, but are mostly treated as a single "thing". Gravestones, doors, stalactites, paintings, some hazards, and large background elements are all commonly found in the "Objects" section. These objects work more or less like a large grouping of tiles, except you can only delete them when using the hand tool (by shift-clicking). Also, unlike tiles, you can move them around by using the hand tool.

There's also a few objects that move, such as moving broom platforms and those rotating bone platforms.


Special Objects

The two "special" objectsThere are a couple of "objects" that don't represent actual visible things in the level, but are used to handle other objects and interactables.

The first one, shown as "STP LDR" in the image to the right, is used to indicate where a ladder ends after being toggled with a button. Note that a ladder builder will still stop if it meets a solid block, but this can let you stop it before then. For more information on placing buildable ladders, check the "Links and Triggers" section.

Placing endpoints for vertical broomsThe other special object is the one with a red X. This allows you to set where a moving platform (usually a broom) moves to before turning around. Check the video on the right to see how positioning for vertical brooms work, and check the video below to see how it works for horizontal brooms.

Placing endpoints for horizontal brooms

Placing Elements (Enemies/Interactables/Items)
Enemies

Enemies are pretty self-explanatory; they're the enemies that you face in the level. For the most part, you can just place them in the level and they'll appear as you would expect. Like objects, you can move them around with the Hand tool. However, you can also use the Hand tool to change properties of the enemy in question by Right-Clicking. For most enemies, this just changes which way they face (left/right), but for some, it can change more important aspects.

As seen in the video to the right, for snakes, it changes which height they are placed at. There are three different levels of height available. The first level is centred on the tile (like most snakes in Episode 1 level 2), the second level is used for snakes in mouse holes, and the third level is used for snakes that are effectively between two tiles.

To get cannons that walk on the ceiling, you have to use place a wall-walking cannon, and then Right-Click it twice. If you can't find the exact enemy you're looking for, try placing a related enemy and right-clicking it to see if you get the enemy you're looking for.

Also of note: to place a Tiger Plane, you place its Spawn Trigger. When Johnny runs over this spawn trigger, a Tiger Plane will spawn overhead. I don't think you have control over exactly where the Tiger Plane will spawn.

Also, there are a few enemy-like objects and interactables. If you can't find the enemy you're looking for, trying looking through those sections. Spiders, axes, exploding heads, and saw-blades can all be found in the Interactables section, while those weird Snake/Dragon Skull Things can be found in Objects.

Interactables

Examples of InteractablesThe Interactables sections contains a lot of things that Johnny can... interact with. Buttons, doorways, pets, exits, movable blocks, falling platforms, treasure chests, flagpoles, ladder builders, and Johnny himself can all be found in the Interactables section.

Like Enemies, you can change things about an Interactable by Right-Clicking it with the Hand tool. For example, you can use this to change a pet between a cat and a dog. However, unlike with Enemies, you have to be careful when Right-Clicking an interactable, because there are two different meanings to Right-Clicking an interactable.

Linking two doors/passagesIf you Left-Click an interactable and then Right-Click the same interactable, it will toggle between different types of the same interactable, as if you were Right-Clicking an enemy. However, if you Left-Click one interactable and then Right-Click a different interactable, you will form a Link between the two interactables, if applicable. By linking two interactables together, you can link a button to a ladder-builder, a door to another door, or an exploding head to its trigger point.

For more information on making links, read the section Linking and Triggers.

Items

All the possible itemsItems are things that Johnny collects by running into them. Points, Hearts, Powerups, Johnny Voodoo Dolls, and the special items that are used to solve puzzles (Water bottles, keys, and glue).

If you've played the game, you should know how all (or most of) these items work. However, some have slightly different point values than in the original game, so here's a list of the point values they have on different difficulties.

Item
Easy
Medium
Hard/Nightmare
Chocolate Kiss
100
200
400
Rocket Candy
200
400
800
Peppermint
400
800
1600
Jewel
2,500
5,000
10,000
Heart (Full Health)
2,500
5,000
10,000
Heart (Otherwise)
50
100
200
Johnny Doll
5,000
10,000
20,000
Small Treasure Chest
500
1000
2000
Large Treasure Chest
2,500
5,000
10,000

Yes, the Treasure Chests aren't in the items section; they're just here for completeness.
Placing Elements (Tile Modifiers)
Fortunately, the Tile Modifiers section is one of the few parts of the editor that has (some) documentation.

Hidden Tiles

Using a Hidden Tile ModifierHiddent Tiles are the main way to make secret areas in Monster Bash. They convert a usually solid tile into a foreground tile that is fully passable.

One issue with this is that if Johnny is standing up against the wall, he'll appear in front of the unmodified tiles, but behind the modified tiles. You can see this in the clip to the right.



However, you can fix this by using the Wall to Front tile modifier on the rest of the wall tiles on the same wall. This way, Johnny will appear behind all of the tiles of this wall.

Hidden Tile Platform

Using a Hidden Tile Platform ModifierHiddent Tile Platforms work just like Hidden Tiles, but with a passable platform instead of just a full passable tile. For a good example of using these, see the exit from the secret area of Episode 1, Level 1.

Solid Collision

Using a Solid Collision Tile ModifierThis just acts as an invisible solid tile. They're useful to use to block off areas you don't want the player to access, like if an area causes glitches if the player gets into it.

Platform

A Platform makes a tile into a passable platform. This is especially useful on top of tiles that sometimes make sense to be a platform, and sometimes not. For example, the top of a bookshelf, or some of the suitcases and boxes from Episode 1, Level 9.

Thin Top Wall

This makes a tile work like a platform from above, but a solid tile from below.

Wall to Front

This turns a Solid, Mid Foreground tile into a Solid, Front Foreground tile. Usually only useful when combined with Hidden Tile Platforms to make the hidden tile entrance look better (see Hidden Tile Platforms for more info).

Soft Wall

These work like Hidden Tile Platforms, but appear behind Johnny instead of in front. You'll need these when making a ladder that goes between floors.

Wall to Middle

These work quite similarly to Hidden Tiles, except that they appear behind Johnny and other sprites.

Foreground to Middle

These allow you to move front foreground tiles with no collision properties to the mid layer. They work just like the Middle to Foreground pieces below, but in reverse.

Middle to Foreground

These move a tile from the Middle Layer to the Front Layer. Confusingly, these only seem to work on tiles that don't have any collision properties (as you can see to the right).

If you want to move solid tiles to the foreground, use Hidden Tiles if you want to make them passable, or Wall to Front if you don't. Unfortunately, I don't think there's a way to move solid angled ground tiles to the front layer, but I don't know why you'd want to do that.

Linking and Triggers
As seen in the Interactables section, you can link two interactables together to form a relation between the two. Depending on the objects linked, the relation can be one-way or two-way. Triggers (such as buttons) are generally one-way, while passages are generally two-way.

Buttons

Linking a button to a ladder builderButtons are mostly used to trigger ladder builders. They are very easy to link; Left-Click on the button, and then Right-Click on the ladder builder you want it to trigger. You can even have one button trigger multiple ladder builders at once.

Ladder Builders

Showing how Stop Ladder Objects effect Ladder BuildersBy default, a ladder builder will stop once it reaches a solid tile. There are plenty of situations where this is what you want, but sometimes, you want a ladder builder to connect one room to another. You can accomplish this by using the "Stop Ladder" Object along with some tile modifiers.





How ladder builders work in version 1.1.5.2Note that (as of version 1.1.5.2), Ladder Builders don't quite work the same way they did in the original Monster Bash. Visually, they stop one tile below the solid tile/"Stop Ladder" object that causes them to stop building. This results in a (visual) gap between the top of the ladder and the thing that stopped it. You can still climb to the top, but it doesn't look right. Thus when placing your "Stop Ladder" Object, you have two options: (1) Place it where it looks visually correct, or (2) place it where it would end gameplay-wise.

Left: Option 1, Right: Option 2

Using a Ladder Builder between two rooms

Okay, back to the actual task.

First, build the two rooms you want to connect. Then, set up the ladder builder, the button trigger, and the "Stop Ladder" object.









However, if you just try and run this, the ladder will stop at the first ceiling.









To make the ladder go all the way to the top room, first, go to the Tile Modifiers section and select Soft Wall. Now, place three of these modifiers on the Upper floor of the ladder (i.e. just below the "Stop Ladder" Object).






Next, select the Wall to Middle Tile modifier, and place three of them on the first ceiling above the ladder builder.

You're almost done. However, if you don't want Johnny to be able to explore the area between rooms (see below left), and you haven't put solid tiles along the edges of the passage between rooms, you'll have to put Solid Collision modifiers along the edges of the passage (see below right).


Note that making ladder builders this way works if Johnny starts in the lower room or the upper room. Although, if the gap between the two rooms is only a single tile (e.g. one of those building floor tiles from the haunted house levels), you only need to use the upper ceiling portion; i.e. the Soft Wall tile modifiers, as you can see on the right.

Book Triggers and Moving Bookshelves

Using a book trigger to start a ladder builderBook Triggers are only used in the original game to open moving bookshelves. However, they can be used just like regular buttons to trigger ladder builders.







Setting up a standard moving bookshelfTo build a standard moving bookshelf, first build the area around the moving bookshelf (usually standard tile-based bookshelves). Leave an area 4 tiles wide by 5 tiles tall, and fill it will black background tiles. Next, go to the interactables section and select the moving bookshelf. Place it over the 4x5 black area where you want the passage to be. Next, select the book trigger and place it on one of the bookshelves (Note: don't place it on the bookshelf directly to the right of the moving bookshelf). Now, link the book trigger to the moving bookshelf, and then link the moving bookshelf to a standard passage.

Setting up a two-way bookshelf that can only be activated from one sideIf you want to have a moving bookshelf on either side of the passageway, you build it like the previous example, except replace the standard passage with a moving bookshelf. Then, you link the book trigger to Both moving bookshelves.

Finally, you link the first bookshelf to the second bookshelf and link the second bookshelf to the first one. If you only link the bookshelves in one direction, they will act like a one-way passage.

Also note that doing it this way doesn't mean you can activate the passageway from either side; if the book trigger is only accessible from one side, that's the only side you can activate the passageway from at first. If only one side of the passage is accessible at first (as in Episode 1 Level 9), this isn't a problem, since it's only possible to approach it from one side. One thing you can do with this is connect a later portion of a level to an earlier portion of a level to make it easier to navigate the level once you've reached a certain point.

Setting up a moving bookshelf that can activated from either sideIf you DO want to be able to activate the bookshelf passage from either side, you can place a book trigger on either side of the passageway. Then, link each book trigger to Both moving bookshelves. Finally, link both moving bookshelves to each other. Note that after shooting one of the book triggers, the other book trigger will still be shootable, but shooting it won't do anything (unless you link it to more triggerable interactables).





Linking and Triggers (Continued)
Contact Triggers and Exploding Heads

The Contact Trigger interactableWhile I've been using the word "trigger" more generically so far, there is an interactable that says Trigger right on it. To make things clearer, I'll refer to these triggers as "Contact Triggers" from now on. These contact triggers... trigger when Johnny runs over them in the level. In that way, they work like Tiger Plane triggers from the Enemies section, but are more configurable.

In fact, you can use Contact Triggers just like a button trigger, to e.g. trigger a ladder builder. This could be useful if placed near a flagpole, to e.g. provide a way to access an earlier part of the level that would otherwise be inaccessible.

Setting up exploding headsThe main usage of contact triggers, however, is to trigger those Exploding Demon Heads from Episode 2 Levels 1-3. They're pretty easy to set up; just place the contact trigger where you want Johnny to trigger the head, and then link the Contact Trigger to the Head. You can link the same contact trigger to multiple heads, or even have the same head triggered by multiple contact triggers. Note that in the latter case, only the first contact trigger touched will trigger the head; the head won't be re-triggered. The benefit of this is that you can place multiple to make the trigger cover a larger area.

Setting up multiple triggers to the same head

If you do want to re-trigger a head at the same location from different locations, you can just set up several exploding heads and contact triggers, link each contact trigger to a different head, and then use the hand tool to move each of the heads to the same position.

Stoves

Stoves are also found under the Interactables section. This is because they are turned off by triggers. Usually, these are the stove knobs that you can shoot to turn off the stove. As you might have guessed, these knobs are triggers that are linked to a stove, such that when all knobs linked to a stove are shot, the stove turns off.

However, placing a stove itself is a bit complicated. First, you need to select the stove, place it in the level, and then use the hand tool to select what kind of stove you want. Right-Clicking a stove cycles in the following order:

Small Cold Stove (Initial) → Small Hot Stove → Large Cold Stove → Large Hot Stove → ...

Only the hot stoves respond to triggers, since they're the only ones that can be turned off.

However, before you place the trigger knobs, you will probably want to place the stove's... uh, chimney? Heat Escape? Whatever they're called, you can also find them in the interactables section. These work almost like a tile, except you can Right-Click them in hand mode to change which kind of tube they are. By default, they're a standard mid-section (the most common piece), clicking them once yields the piece where they connect to the stove itself, and clicking them twice yields the top piece of the chimney.

Placing stoves/ovens

Placing knob triggersOnce you've got your stoves built, you can then place the Knob Trigger(s) on the stove(s), and then link each knob trigger to the stove it belongs to. Now, when you play the level, shooting all knobs linked to a hot stove will turn off the stove.

One thing you may have noticed is that knob triggers and stoves work differently from other triggers we've discussed so far: You must shoot all knob triggers before a stove turns off. Every other interactable that has multiple triggers will trigger if any of the triggers are hit/etc...

Alternative uses of knobs and stovesInterestingly, this kind of trigger-interactable interaction (a logical-AND interaction) only occurs when linking knob triggers to stoves. If you try to link multiple button triggers to a single stove, hitting any of the buttons will turn off the stove. On the other hand, if you link multiple knob triggers to a ladder builder, hitting only one knob will trigger the ladder builder.
Undocumented Functions (Copying etc...)
There are some very useful features that aren't clearly documented anywhere that I've seen. So far, I've come across these by accident.

Copying Tiles

Basic tile copyingMercifully, there is a (simple) function to copy multiple tiles at once. To use it, switch to tile mode, hold down Ctrl, and drag over the area you want to copy. You can then place copies of that group of tiles you selected (which will appear as a blue shadow under your cursor) easily over empty tiles. When you're done copying, change to the hand tool, and then back to tiles (if needed).




Copying foreground tiles over top of background tilesWhen copying foreground tiles, if you want to copy them over top of background tiles, you'll have to turn on Tile Overwrite, as usual.

Problems with Copying

Where you can run into problems is when you have both foreground and background tiles on the same tile. It seems that copy only copies either the frontmost tile or the most recently placed tile on the tile. In general, it's not a good idea to copy areas where some coordinates have more than one tile per coordinate.

Simple example of problems when copying background/foreground tiles at the same timeExample of problem when copying multiple foreground tiles at the same time
Common usage of copying (Note: I use CapsLock to turn on Tile Overwrite in this example)Fortunately, since the most common uses of copying are copying complex background patterns or copying complex foreground patterns separately, this usually isn't as much of a problem as it could be.

One of the best places to make your patterns to then be copied over is in the non-visible section of the level. Note that this area of the level will only exist if your level's size is less than the max (see Getting Started for more info on level boundaries).

Also, after writing all this, I noticed another issue when copying groups of tiles. There seems to be a limit on the size of the group you can copy. If the length or width of the area you're copying is greater than 10 tiles, copying and pasting won't behave as expected. You won't get the blue ghost square by your cursor, and if you left click, a small portion of what you tried to copy will be pasted.

Fortunately, there's an easy way to check how large the area you want to copy is. Which leads me to...

Measuring

This area is copyable, since it's 10x10 tilesAs it turns out, there's a tool that easily measures sizes of areas. Just point the cursor at one tile, hold down X, and move the cursor to the opposite corner of the area you want to measure. This will give you an answer in the form of (x,y), where x is the number of tiles wide, and y is the number of tiles tall.

Note that this value is inclusive, it counts the number of tiles included in the area measured. If you want to see how far apart two tiles are vertically/horizontally, subtract 1 from the height/width respectively. If you want to see how many tiles are between two tiles vertically/horizontally, subtract 2 from the height/width respectively.

This block of tiles CAN'T be copied, since it's more than 10 tiles wideAlso note that the value presented isn't directed; measuring from Point A to Point B will give the same result as measuring from Point B to Point A.

Also, if you hold down both Ctrl and X while in tile mode, you can copy an area while seeing how large it is. This is an easy way to make sure you aren't copying more than 10x10 tiles.

Other Special Elements
There are lots of elements that may not work as expected, or have subtleties their workings.

"Depths of Hell" Background Object

Not the background Johnny was expectingIf you've tried using the "Hell's Depth" background from the setup menu, you'll have found that it's not the background from E2L3, but rather the background from LeChuck's layer (E3L9).







Where to find it and what it looks like once placedFortunately, unlike all other parallax backgrounds, the Depths of Hell background is available as an object. Placing this object in a level makes a section of the level effectively have a "window" into a parallax background for a section. This means that you can have two different parallaxes in a single level: one for (e.g.) an above ground section, and then the "Depths of Hell" lower down.




Confusingly, the size of the "Depths of Hell" object is not the size of the window into the background; the actual window is significantly larger and


The actual (approximate) size of the window into the parallaxThe distance from the (external) corners of the object to the (approximate) corners of the window
Note: The actual top edge of the window is about half a tile lower than the coordinate listed here; you'll need to make sure that row is covered with tiles if you don't want an obvious background gap.

This works fine if you only need one small/medium area of your level to have this background visible. Things get substantially more complicated if you want to use more than one hell object.

If you've just tried placing them directly next to each other (like in the image to the right), you can end up with... odd results. To compare, the images below has a comparison of different numbers of adjacent objects. The top left has a single object, the top right has two, side-by-side horizontally, the bottom left as three side-by-side horizontally, while the bottom right one has 6, arranged as in the image to the right.



While having two side-by-side might not look all that different, it definitely becomes a problem as you add more and more. This occurs because placing another "Depths of Hell" elements doesn't just add another window, it adds another set of the background parallax layers. Furthermore, each extra parallax layer isn't just visible through its own object's window, it's visible through any "Depths of Hell" object's window.

What happens when you place two objects with a two-tile tall gap between themThis is especially obvious when they aren't aligned vertically. In general, it's a lot easier to get multiples of the objects to work horizontally than vertically.

In fact, there's a simple way to get multiples of these objects to work when placed in a row. Instead of placing multiples of the object right next to each other, leave a gap exactly one objects' width wide between objects. You can accomplish this easily by just placing them in a row right next to each other, but then removing every second object.



This results in a much better looking background, but still looks different from just having a single background object. For example, it's harder to see the volcanoes in the back, since there are more objects in the layers in front of them.

Left: Just one background object, Right: Two Background objects, with the appropriate space in between

I imagine the reason this spacing makes multiple Hell objects look better is that it causes the graphics in the layers to line up pretty closely, covering up any sheer edges from the other objects. I'm guessing the object was designed so that you would never see the edges of the layers through an object's own window. But since you can see any object's layers trough one object's window, you can see the edges of these layers through a different window. For example, if you place the objects at a different width apart, you can end up with these obvious edges, like in the image on the right.

There might be a better distance to place the objects apart, but I haven't found one. I've tried placing them such that the "actual" edges of the objects' windows would be adjacent, but that resulted in a sheer edge for the graphics. If you know a better distance to place them apart, let me know.
File Format Details
Okay, this is where things get complicated. You probably don't need to read this section, since it's more for understanding the underlying representation of custom levels. Note that this holds true for version 1.1.5.2.

The file format is actually extremely simple; it's just a list of elements together with their positions and (if applicable) attributes. It's even just plain text, so you can modify it with a simple text editor. Unfortunately, it doesn't seem like you can change anything by text-editing a level that you can't already change in the level editor. So no changing the par time, no adding hints, etc...

The data is divided up like so:

h: Header/level details mtw: Wall tiles mtwf: Foreground wall tiles mtp: (Passable) Platforms mtf: Front foreground tiles mtm: Mid foreground tiles mtb: Background tiles mtspn: Gentle Background Sloped Tiles mtsps: Steep Background Sloped Tiles mtsfn: Gentle Foreground Sloped Tiles mtsfs: Steep Foreground Sloped Tiles mtatr: Tile Modifiers ed: Objects ep: Items ee: Enemies eo: Interactables

Header

The header works quite differently from all the other sections. It's a comma-separated list of number-value pairs. Each value (more-or-less) corresponds to one of the options in the setup window. It'll look something like this:

h:[0,'Example'],[1,'An Example Level'],[2,'Duskbot'],[3,0],[4,15],[5,11],[6,3],[7,256],[8,128],[9,0],[10,0]

The values are interpreted like so:

Number
Description
Range
0
Level Name
N/A
1
Level Description
N/A
2
Author Name
N/A
3
???
0 to 0?
4
Background Design
0 to 15
5
Music
-1 to 14*
6
Level Effects
0 to 31**
7
Level Width
16 to 256
8
Level Height
16 to 128
9
Background Height
-10 to 128
10
???
0 to over 1000

*For whatever reason, the index of the music in the file is one less than in the editor. i.e. "No Music" is -1 in the file, but 00 in the setup window.

**This value encodes all of the possible effects in a single binary number. The 0 bit encodes Leaves, the 1 bit encodes Thunder, etc...

Element Lists

The rest of the file consists of lists of the elements found in the level. These are all comma-separated lists, and each item in the list has multiple fields. For the most part, these fields are separated by pipes (i.e. |). The number of fields depends on the kind of the element.

All elements have at least two fields: The index of the element, and the position of the element. The index is always the first field, while the position is always the last. Notably, the position is defined in the format x-y.

Tiles, Items, and Objects

Tiles, items, and objects all only have these two fields. This means the elements of the lists ed, ep, and all the lists that start with mt follow this simple format. For example...

mtp:500|4-5,1813|96-4

... would mean that there are two platform tiles in the level: one with index 500 at (4,5), and one with index 1813 at (96,4).

One interesting thing to note is that tiles all share the same set of indices. That is, if there's a foreground tile with index 656, then there's no other kind of tile that has index 656. If you edit the file directly to put a tile in the wrong section, but then re-open and re-save the file, it'll automatically move that tile to the right section. This only works for tiles though, since tiles are the only kind of element that are split up into multiple lists.

Enemies

Enemies have two extra parameters for each item: the form and difficulty level.

ee:1|1|2|33-2

This would give a severed hand (enemy index 1) facing right (form 1) at Hard Difficulty and up (difficulty level 2).

Interactables

Interactables have 3 extra fields in addition to the index and position. They are:

  • Form (same as enemy)
  • Id[entity]
  • Linked elements

The two fields we haven't seen yet are both related to linking. Identity is effectively just the element's position in the interactables list. The linked elements field is a space-separated list of the identities of the interactables it is linked to. Notably, this is the only field that can contain more than one value, or no value at all. For example...

eo: ... 19|0|3|4 5|50-6,33|0|4||58-8,33|0|5||58-3

...contains a contact trigger that triggers two exploding heads. The two heads have identities 4 and 5, which appear in the linked field of the contact trigger.




1 Comments
Ceekur 27 Nov, 2024 @ 1:37pm 
Excellent guide, even as a work-in-progress! Great to have a solid referential handbook to get more out of levels!

Red-X also stops enemies! Works on most patrol types, so you can keep an area visually open and still prevent an enemy walking under where the player will drop onto. Red-X even stops rolling heads, though doesn't work on flying enemies. Can glitch ladders/vines by placing them in a secret wall, apply Hidden Tile [Platform] to the wall, then trigger the ladder. It'll grow to the very top, as the game has it on the wrong layer now, but Johnny can still climb it. Can clone a tile onto the cursor with right-click, when on Tile tab or Tile Modifier tab, a bit related to copying.

While on Enemy tab, hold left-CTRL and press right-click to change difficulty of the enemy you're holding. Though not yet possible to play customs on anything but Medium; also can't change Par time, the editor and main menu displays two different Par times depending where you started the level from!