Comprehensive information about Mindustry mapping goes brr

Playing Community maps with friends in Mindustry is a wholesome sort of activity. Maps are often found in the steam workshop or mapping community, and have been made for many reasons, whether it be for friends, servers or even for fun! In this article, I’ll be trying to help mappers of any experience brush up on different areas, so let’s go!

(Note: this guide is focused largely towards the terrain of Survival and Attack maps which use natural terrain, not megabases of enemy blocks or map art. You may still find something helpful here if you make those sorts of maps specifically in gentools. I am absolutely not against those types of maps, but I mainly make and play modded campaign maps so that’s where most of this advice will come from.)

The main topics this article covers in order are as follows-
-Layout of the editor
-Tools in the editor
-Creating terrain
-Generating features with gentools
-Biomes and environmental features

let us now dive into the main topic, that being–

How does the the map editor work?

Upon opening up a new map in the map editor there’ll be several things to explore. The main ones are the generation dialog, wave screen, rules dialog and the actual editor itself. <Insert images for each list element> This guide will go over each of them in extra detail, but just know that these are the main areas to cover when starting out.

I’ve left out sector generation as while it’s powerful, personally I think it prevents newcomers from learning how to shape terrain. However, I would recommend coming back to it with a bit more experience as it’s a great tool to get inspiration from, or to tinker with numbered sectors.

Intro to making maps/tools

Heading over to the editor, you’ll find six icons at the top left. Thees are your main drawing tools. When you right click them, you can open up their mode.

If you’ve ever used a painting app, most of them should be quite familiar; the pencil is a draw, the paint bucket is a fill, and the line is a line tool. The slider down below saying “radius” is the area of effect for your tools. With a radius of two, you can get a nice plus shape, and a radius of three gets you’re a three-by-three square. Very helpful for rough details. You can also draw teams, which might be confusing, but its situationally helpful.

Basic terraining

Onto shaping terrain, a very useful skill. It’s often what sets apart newer mappers from more experienced ones. Basic maps feature rough shapes for every terrain, but intentionally making things smooth can make areas stand out. <Insert screenshot here> Usage of large props is highly advised, since they help vary up any cliff-face’s silhouette.

Converting your walls to cliffs can lead to interesting maps, and I’d recommend playing with them. Remember: it’s ok to make mistakes (I would know, hehe). When trying to make a Mindustry-styled map in terms of layout, I’d start making rooms and filling terrain in around them. Just make basic circles, since you’ll detail them in later. This is based off the Serpulo method of sector generation, which uses a similar method.

<screenshot of code vs room code>

Now we can start to roughen out the walls or add features like rivers. <screenshot of examples>
There is a way to make rivers than hand-drawing them fully that in my opinion is both faster and easier to work with. This is with the power of…

Generation/filters

Onto gentools. As a reminder, gentools should be thought of not as a way to a generate map, but the base for it. You can end up underutilising them if you’re not careful, and they save a LOT of time. Personally, I’ll often start with terrain generated by the Terrain tool since its quite powerful.

It uses a form of perlin noise (which for those who didn’t know, essentially makes connected random patterns).

  • Scale affects the generated detail’s sizes.
  • Magnitude affects how much of the space is covered in walls.
  • Threshold is the threshold for when floors become walls. Higher values mean more open space
  • Circle scale carves out a space in the middle of the terrain. A larger circle scale means more circle-ish maps
  • Octaves is how many “noises” are used. A higher amount usually makes more detailed-looking maps. I’d stick to around 3-5
  • Falloff is like how connective/claustrophobic you want your space to be. Low values look like the base noise, while higher values get you very rough walls
  • Tilt is how much the map leans after distortion.

After this, I’d recommend using noise and scatter. Noise is similar to terrain without walls. Instead of being walled or not walled, you have whether or not to replace something. Similar controls, but you can specify a target. For more scattered patterns (Ex: rock props) you can use scatter. To get spongy looking terrain, you can use the Median tool, and for distortion the Distort tool. I… don’t actually know how theese work. If you’re a more technical player, you can view the filters here.

River noise is another type of noise1. It has two threshold parameters, and at higher scales with falloff and octaves you can make some quite nice-looking rivers, or even be a bit innovative and make islands!

A little note about generating air; while it’s not possible to do so, flip the fill tool to the erase connected by right clicking this paint bucket. Just select the option again to turn it off once done. You can also use the clear gentool if you don’t need as much control. Use a placeholder block, target the block with your clear filter and then set the placeholder to air. If you can find use in generating air instead of drawing it, good job!

Now onto more advanced techniques. You can paint “biomes” (Explained later on) by painting a floor to use as a marker. I like to use red stone because it stands out. After that, use a noise and clear targeting your flag floor. One for your first block, and the other to fill the rest in. It works like magic.

Another technique is getting a third block in river noise. Use the blend tool. Blending your outside block with sand, ignoring the inside block gets you nice sandy bands. You can repeat the process to get muddy banks. Add in a median or distort and you’re good to go.

Last one in this article, ever wonder how to generate walls from floors? The Clear tool has got you covered. It has the ability to turn any targeted tile’s floor/wall into a new one, including non-air blocks. This also includes ores! Auto-genning titanium on shale is a lifesaver for certain styles of maps.

Block pallets and environmental features

If you’re having trouble choosing blocks or shapes of Terrain to use, then I’d recommend looking through this chart

These are some example biomes I made, but you should feel free to play around. Another thing, blocks with different detail consistencies or textures. E.g: Basalt and Arkycite floors don’t really mix, as there is a loss of detail consistency. Shale on Erekir also doesn’t work too well, since most Erekir floors are striped and are generally a secondary/stony colour. The thing is, these aren’t “rules” as such, but more suggestions, so if you can find a way to make cracked basalt look good next to moist Arkycite stone, go for it!

Another thing is ore shapes and placement. This chart includes different shapes and styles of ores and their background floors.

Try to mix these, but please don’t use boxfort ores. Seriously. There are better options. Derelict ruins or even scrap would be better than this. Certain patterns fit in with some biomes more than others. An example from vanilla would be Titanium on shale.

An honourable mention is derelict structures. I’d treat these as mini-biomes, since you can mix in metal walls, floors and rugged terrain to create a convincing ruin.

The Objectives system

When making an attack map (or even a unique survival one) you may want to use Objectives. I’d recommend you finish Erekir if you haven’t, since it’ll give you some inspiration for ways to use them. They’re a way to control the flow of a map alongside Logic blocks.

The basics of objectives is flags and connections. Flags are global markers that can be on or off. This is how Objectives communicate with World Processors. This guide will only go briefly into how to use Objectives, and their name should be self-explanatory.

In the menu, go to Map Info -> Objectives to access them. You can press the “add” button to get a new one and press the pencil icon on them to edit them. Here you’ll have multiple fields, but they always have a

-Details field

-flagsAdded or flagsRemoved

-Markers

Details are text that only you can see; they will affect nothing. Say I have a Destroy Blocks objective aimed at an enemy core. I could put its location in the details, and don’t worry I’ll get into flags again at the world processor section.

Markers, meanwhile, come in a few flavours: text, shape, shape text and minimap. Text is self-explanatory, so is shape and shape text. You can set the font size of text, and also toggle around with a shape’s

-Size

-Radius

-Outline thickness

-if they’re outlined

<Screenshot goes here>

Timer objectives are objectives where time is set in seconds, not ticks (for those technical players out there, a “tick” in Mindustry is 1/60th of a second.)

Balancing waves and terraining with intent

After finishing the map’s terrain, you may be wondering two things. “Is it fun?” and “Does it look good?” While both of those thoughts are perfectly valid, personally I’d focus on the fun aspect of a map (Unless you’re making map art by hand, in which case well done!) There is one more aspect of a map though, and that is how it respects a player’s time.

What do I mean by respects a player’s time? Firstly, you’re not playing Mindustry to manually mine things, right? Playing maps is a time investment, and generally you’ll want to have fun in the time you spend on that map, not have to be hauling over 30 copper a time from an ore out of range of the core. There’s also the option of taking the Erekir’s maps’ approach — giving the player a starting base so they can focus more on the fun unit combat that Erekir provides.

A subset of this is also balancing waves. It’s more fun to deal with multiple T1s earlier on than a single T3 each wave, but people don’t stay in early-game forever. I’ll leave map specific tips out of this, but try and make wave units interact with each other in a positive way. E.g. Pulsars refreshing Quasar shields, or Pollies with logic healing other air units. There is also using the appropriate type of unit for your map. Legged units do better with rough terrain while Tanks and Mechs face bases straight up. These simple tricks go a long way in keeping people interested enough to finish your map. Fromeeth, lead mapper of Serelia perfectly summarises this:

its not like you can use bunch of units #3423425º43245 that has a lot of legged units in a open area
where mechs could pose an actual threa

Fromeeth, 7/25/2023

World processors and cutscenes

The final thing in this guide is a basic rundown of using World Processors. I’d recommend moving onto a video after this is you’re interested, such as <this>. When placed in the editor, they blend into the background wall’s darkness. When editing in-game, you can click the pencil icon in its configuration.

World Processors have access to special logic commands, but I’ll only be going over making cutscenes briefly here as I’d instead recommend joining the official Mindustry discord server for a more indepth understanding of processors. You’ll need a jump block, and a getFlag block. You can add blocks from the bottom right. In the “getFlag” block, set the right-most name to your flag. Set the left to a name, maybe “flag”. Now you’ll want to grab an “end” block, and a “setFlag” block. You’ll want to drag the arrow from the “jump” block onto the “setFlag” block. Inside the “jump” block, you have to make sure it says “flag == 1” or “flag == true”. Either one works for this guide. After that, grab a ”cutscene” block. This is the thing that manipulates the player’s camera. “Pan” means to move the camera. Make sure the x and y correspond to a place on the map (E.g. x: 293, y: 153). After that, put a “wait” block. The time next to it is in seconds. Finally, put another “cutscene” block and click the word underlined on the left. Then, change it to stop. You should have something that looks like this at the end.

Afterwards, use your newfound knowledge of Objectives, and set your flag to true using a Timer for example.

Closing notes 🙂

Practising all the topics shown in this guide will allow you to springboard yourself into more complex mapping. Try to make small maps to begin with as otherwise you’ll get something known as “scope creep”.2 I hope you had a good time reading through this guide! If you have any questions feel free to leave a comment below.

  1. https://en.wikipedia.org/wiki/Perlin_noise ↩︎
  2. https://en.wikipedia.org/wiki/Scope_creep ↩︎

Leave a comment