After I implemented all the main mechanics of the game and finished playing around with procedural assets I started to work on levels blocking. In one of my previous articles I already wrote that I tried to block out test level, but the process of blocking felt not very productive and effective. That’s why before blocking out real levels I decided to research this topic a bit more to save more time in a long run.

In this article I will explain the most common level blocking tools in Unity and also will share some very interesting findings that influenced my final decision about what tool to use on my project.

Usually when we talk about blocking there a couple popular solutions:

  • Build level from primitives provided by game engine (cubes, spheres, capsules, etc.)
  • Creating geometry using some basic modeling tools like adding new edge loops, extruding faces and moving vertices. In Unity you can do it with plug-ins like ProBuilder or UModeler.
  • If we are talking about 2D games then tile maps take place.

I tried all 3 approaches from above and now I’m going to explain in a bit more details why why they didn’t fit my requirements.

Quick reminder to give you more context: I’m making 2.5D game where characters and environment are 3D models but gameplay is on 2D plane with side view perspective.

Build level using standard primitives

This one probably the most cheap and accessible method, but less effective. I used this approach for creating test level.

Basically all you need to do is to create a cube, scale it to desired size, place it in right position and rotate if needed.

The problems start when become concerned about precise sizes and distances between platforms. For example you need to place several platforms and make sure that your character will be able to jump from one to another. You can use grid snapping or write X, Y and Z coordinates manually. But if later you will decide to adjust size of one of the platforms you will also will have to adjust it position and probably position of other platforms. This happens because by default the pivot is in center of the object and when you scale it both sides (left-right or upper-lower) are moving.

Also problem may appear when you will try to create and connect slopes. To make sure there are no cracks or corners pointing out you might use vertex snapping but then all following block also should be connected with vertex snapping because they will not be aligned on the grid anymore. You can live with it but its nit very convenient.

Modeling geometry

ProBuilder

This method is very common for blocking levels for First and Third Person Shooter games. Even though the tools are much simpler than in professional 3D modeling software like Maya or Blender, they allow you to see and edit block-mesh right inside a level context skipping import/export phase.

For my needs this approach felt a bit overkill. Yes, you can create block-mesh geometry of desired shape but the amount of steps that you need to perform to do so adds significant time overhead. To create more or less complex shape you almost always have to do the following steps:

  • Add edge loop ;
  • Move new edges to desired place;
  • Switch from Side View to Perspective View (it is impossible to edit geometry staying only in Side View which makes sense when you are working on side view game);
  • Select faces;
  • Extrude faces;
  • Adjust vertices’ positions.

You will need to repeat this sequence all the time

That was not for me so I continued my research.

Working with tile maps

TilEd

When I look at modern tools for tile map I always think that these are one of the best tools on terms of speed and simplicity of work.

There are some native tools like Unity Tilemap Editor as well as third-party solutions that you can use regardless of game engine, like TilEd (Carrion, Axiom Verge, Shovel Knight).

You create sprite palette, then pick sprite you need and draw this tile on the grid using brush. Modern tools also make use of “smart” tiles that makes the process of creating levels even faster and easier.

I wanted to have similar pipeline for my project. All these tools suppose to work with 2D sprites and my game contains of 3D models and thats the problem… or is it?

Using tilemap editor for 2.5D game

I was looking for the way to adapt tilemap tools and pipeline for my project.

At some moment I even thought that maybe I should temporary rewrite character controller and all main gameplay mechanics to work with Unity’s Physics2D. That would allow me to work with 2D sprites and use tilemap editors for level blocking.

…But I found better solution.

During my research I stumbled upon this Unity Repository.

This package extends Unity’s basic 2D tool set and one of the features was exactly what I was looking for!

Let me explain a bit. When you add Tilemap Editor package to your project you have only default tile brush available.

Default tile brush

But if you install 2d-extras package on top of it you will see this:

Extra tile brushes

There are several new brushes and one of them is GameObject Brush that allows you to “paint” on the grid with literally any GameObject or Prefab. Problem solved!

You can use Unity Tilemap Editor for placement of 3D objects on the level using tile grid and tile brush.

You can also create prefabs palette the same way you do it for tiles to quickly pick desired prefab and instantly start painting.

In practice it looks like this:

GameObject brush

The only thing that I don’t like about this method is that this 2d-extras package is not available in Package Manger and you have to install it manually, but on GitHub page there is detailed instruction how to do so.

Now the only missing part is “building blocks”.

Creating prefabs for Tilemap Editor

I decided that for each setting I want give to the player new context to use each ability. To start blocking out level I had to implement these new mechanics first. Below you will find some existing and some new mechanics and building blocks adapted for Tilemap Editor.

Simple spikes

Deal damage on contact. Impossible to pass through.

Simple spikes

Destructible wall

Crumbles after player crawled on it wit spider legs. Reappear after cooldown.

Destructible wall

Spiky wall

Wall that becomes covered with spikes after player crawled on it. Spikes disappear after some time.

Spiky wall

Fire / Lava

Deals damage on contact. Player can pass through using snake dash ability.

Fire lava

Sand

Solid obstacle, doesn’t deal damage. Player can pass through using snake dash ability.

Sand

Dash destructible

Objects and obstacles that cannot be destroyed by sword but with snake dash.

dash destructible

Sticky wall

Wall that player can attack to with tentacle (usually tentacle can attach only to special handles).

Sticky wall

Cages and bars

Player cannot pass through (even with snake dash) but can extend tentacle. For example to pull a lever.

Cages and bars

Static handle

Player can attach and pull himself towards it.

Static handle

Moving handle

Moves on predefined trajectory. Animation loops infinitely.

Moving handle

Handle trigger

It starts moving at the moment when player attached to it. After that rolls back to initial position.

Handle trigger

Upstream

Allows player to move upwards using bat wings.

Upstream

Wind

Blows player away in specified direction.

Wind

What’s next?

Now I have all the building block and it’s time to build some levels.


To support project please add King, Witch and Dragon to your Steam Wishlist. To get more updates and materials about the project follow me on Twitter and Instagram.