More actions
CM13 Mapping Crash Course
Disclaimer: BEFORE YOU START!
This guide assumes you’re using the most recent of StrongDMM, and already have a working knowledge of how to use Git, and are familiar with CM13's general Git Practices. As long as you know how Git works, and you have StrongDMM installed you’re ready to start mapping.
- You can learn about Git, and how to use it here.
- You can read about CM13’s specific Git Practices when they're finished.
- You can get a copy of StrongDMM here.
If you’re looking for the guide on how to make Nightmare Creator (NMC) inserts, it will be here when they're finished.
You can still use Byond’s map editor, but we strongly recommend you use StrongDMM for your own sanity. If you’re using Byond’s built in map editor, or fastDMM you’ll need to use Map.
Merge 2 (hyperlink to how-to-use-section at end of this article) before committing your map(s) to
Git.
Merge Requests with un-merged maps cannot be accepted. You will need to use MM2 or StrongDMM if you want any chance of submitting a mapping change!
For international readers, this guide is written assuming your keyboard is using the US Standard
QWERTY Layout. Some keystrokes may be different, or not work entirely. Unfortunately,
StrongDMM (And Byond’s built in map editor) cannot have their hotkeys rebound.
This document is a work in progress, some information may be incorrect, there might be
typos, and some information outright may be missing.
StrongDMM Reference
File commands
Command | Description |
---|---|
Open Environment... |
Opens a dialogue to locate a compiled DME file. Note: Only one DME may be loaded at a time. Loading a DME will close all map windows. You will be asked to save all unsaved changes. |
Recent Environments... | Opens a side menu listing recently opened DME files. |
New Map...Ctrl + N | Creates a new map. You will be asked to enter X and Y bounds, as well as the amount of Z levels to include.
Note: CM13 does not use traditional Z levels, so always enter 1. |
Open Map… Ctrl + O | Opens any map on a local hard-disk.
Note: Opening a map will open a new map window, and will not close any other open map windows. |
Open Available Map… Ctrl + Shift + O | Opens any map recognized in the current DME. |
Recent Maps | Opens a side menu listing recently opened .dmm files for the currently loaded DME. |
Close Map Ctrl + W | Closes the current map window. |
Close All Maps Ctrl + Shift + W | Closes all open map windows. |
Save Ctrl + S | Saves current changes to the open map.
Note 1: This will save the currently opened map using the map format selected in the Preferences window. Make sure to use the TGM format always! Note 2: If the currently opened map is of a different format than the selected format in preferences, it will be saved in the new format, even if no changes were made. |
Save All Ctrl + Shift + S | Saves current changes on all maps. |
Save As... | Opens a dialogue to save the current map under an alternate title.
Note: The newly saved version will not be automatically opened in the program. The new file will also not be appended with a valid file extension, you will need to type .dmm yourself in the save dialogue |
Preferences... | Opens the program Preferences window.
Note: Make sure you’re configured for CM13 properly. |
Exit Ctrl + Q | Exits the program.
Note: This closes all map windows, you will be asked to save all unsaved changes before quit. |
Edit Commands
Command | Description |
---|---|
Undo Ctrl + Z | Moves a step back in edit history.
Note: One step in edit history is one action, click, keystroke, etc, that makes a change to the map that can be saved. |
Redo Ctrl + Shift + Z | Moves a step forward in edit history (if there are any available). |
Cut Ctrl + X | Removes the current selection from the map, and adds it to the clipboard.
Note: Cut only removes content from the currently enabled layers. |
Copy Ctrl + C | Copies the current selection of the map, and adds it to the clipboard.
Note: Copy only copies content from the currently enabled layers. |
Paste Ctrl + V | Pastes the current clipboard at the turf closest to the cursor.
Note: The clipboard is always pasted relative to the bottom left corner of the clipboard selection. |
Delete Delete | Deletes the current selection.
Note: Delete only removes objects from the currently enabled layers. |
Deselect All Ctrl + D | Deselects the current selection. |
Set Map Size... | Opens a dialogue that allows you to edit the X and Y bounds of the map, as well as add or subtract additional Z layers.
Note 1: CM13 does not make use of Z layers in its map files, as such you shouldn’t need to ever touch this option. Note 2: There is no 0,0 coordinate, the origin coordinate is 1,1 located in the bottom left corner of the map |
Find Instance… Ctrl + F | Opens a dialogue that allows you to find all
instances of a certain typepath. Once an object or instance is found, the search results menu will appear, allowing you to jump to each located object, as well as replace the objects via typepath substitution. Note: This dialogue also functions as the Find and Replace function native to Byond’s Map Editor. |
Options Command
Command | Description |
---|---|
Layers Filter... | Opens up the Layer Filter menu. Checking the box next to a typepath, enables it. Unmarked boxes are disabled. Permits precise filtering of typepaths.
Note: Layer in mapping terms refers to Areas, Turfs, Objects, and Mobs, and aids in filtering what needs to be viewed while mapping. What actually controls how objects layer in game, is the layer variable locally stored on objects. |
Toggle Area Ctrl + 1 | Toggles the Areas “Layer” appearing.
Note: The Area Layer is never rendered in game, and can obstruct the cursor during the mapping process if not disabled. |
Toggle Turf Ctrl + 2 | Toggles the Turf Layer appearing. |
Toggle Object Ctrl + 3 | Toggles the Object Layer appearing. |
Toggle Mob Ctrl + 4 | Toggles the Mob Layer appearing. |
Frame Areas | When enabled, draws a white frame at and
around Area borders, scaling with viewport zoom level. |
Synchronize Maps View | When enabled, forces all open map windows
viewport cameras to mirror. Note: This is used to match Z levels together across map files, since CM13 doesn’t use Z levels like this, you probably won’t need this option. |
Screenshot... | Opens the Screenshot dialogue, allowing you
to export either the full view of map, or the current selection. Note 1: The “Full” screenshot option does not work, and renders a black image. To export your entire map, make a full map selection. Note 2: The Area Layer, and white borders from the Frame Areas option will not be rendered in the screenshot. Note 3: The .png file extension needs to be manually typed in the save dialogue. It will not auto-append. This does not affect the saving process. |
Window Commands
Command | Description |
---|---|
Reset Windows F5 | Moves all floating UI windows to their default
positions. |
Fullscreen F11 | Makes the application fullscreen, or
windowed if already fullscreen. |
Help Commands
Command | Description |
---|---|
Changelog... | Opens up the Changelog window. |
About... | Displays Copyright Information, Program
License, and Revision #. |
Viewport Controls
Command | Description |
---|---|
Drag Viewport MMB | Drags the viewport relative to cursor
movement. |
Adjust Viewport ← → ↑ ↓ / Arrow Keys | Moves the viewport one tile distance in the
direction pressed regardless of zoom level. |
Zoom Viewport Scroll Up / Down, Ctrl + +,
Ctrl + -|| Zooms the viewport in or out relative to the tile closest to the cursor. There are 14 zoom levels. |
Mapping Hotkeys
Command | Description |
---|---|
Place Object LMB | Places the Active Object on the tile beneath
the cursor. The Active Object will be placed above all other existing objects of its type. If the Active Object is a turf, it will replace the current turf on the tile. |
Delete Topmost Object Ctrl + LMB | Deletes the top most object on the clicked
turf. Note: Only deletes objects from enabled layers. |
Make Active Object Shift + LMB | Makes the currently highlighted object the
Active Object. Only works on enabled layers. Note: StrongDMM uses the term Active Object and Selected Object interchangeably. This guide will use the term Active Object for all instances of Selected Object for clarity’s sake. |
Quick Edit Menu RMB | Brings up a menu containing most all of the
Edit Commands. This menu also contains all objects on the clicked turf, including one’s on disabled layers. You can edit objects from here as well. |
Edit Object Shift + RMB | Opens up the variables window of the
highlighted object. Note: All edits made to variables generate new instances, even if all edits were made at the same time! Unused instances are cleared when the map is saved. Don’t worry about making extras. |
Delete Object Ctrl + Shift + LMB | Deletes the highlighted object. |
Replace with Active Object Ctrl + Shift + RMB | Replaces the highlighted object with the
Active Object. Note: This command, in-editor is called Replace with Selected Object. |
Reset To Default | Resets the clicked object to its most basic
form, removing all instance edits. Note: Only available through the Quick Edit Menu. |
Tile Mode 1 | Changes placement mode to single tile.
Note: This is the closest you’ll get to a brush tool in StrongDMM. |
Fill Mode 2 | Changes placement mode to square
selections using LMB + Drag. |
Selection Mode 3 | Changes mode to Selection only.
Note: Selection Mode has its own unique mouse behaviors, listed below. |
Select Area LMB + Drag | Selects a square area relative to the initial
click, and where the cursor is dragged. The selection will be highlighted and given a green border. Note: Only selects objects from enabled layers. |
Move Area LMB + Drag | Moves the selected area relative to the
cursor, overwriting tile contents when LMB is released, and leaving blank space where the original selection was made. |
Edit Direction / Dir Slider | Allows manipulation of an object’s cardinal
direction in the form of a slider, creating an instance if required. Note: Only available through the Quick Edit Menu. Can also be done through Variable Edits. |
Nudge X/Y-Axis | Allows manipulation of an object’s offset via
Step, or Pixel, from its origin on a tile, creating an instance if required. Note 1: Only available through the Quick Edit Menu. Can also be done through Variable Edits. Note 2: Never, ever edit Step_X or Step_Y. The default nudge type can be set in the Preferences window. |
Move To Top / Bottom | Sends an object to the top, or bottom, in
terms of Byond sorting, of the same type. Note: Only available through the Quick Edit Menu. |
Instance Commands
Command | Description |
---|---|
Find Instance On Map | Brings up the instance locator menu, as well
as the search results. The instance locator menu can be used to locate instances identical to the one you’ve got selected. Note: You’ll need to manually define the search rectangle though, as it’ll default to the single tile you have selected. |
Find Object On Map | Brings up the instance locator menu, as well
as the search results. Instead of having an instance ID entered by default, the typepath of the selected object will be searchable instead. |
New Instance... | Opens up a variable editing window. Any
changes made to this window will generate a new instance in the instance viewer window for use later. Note: Instances not placed on a map will be deleted upon the next load, and will have to be made again if you wish to use them. |
Generate Instances from Icon-States | Makes instances of the active object out of all
other valid icon-states within the icon file the active object is derived from. |
Generate Instances from Directions | Makes instances of the active object out of
any valid directional icons stored within its original icon-state. |
Key Mapping Terms
Tile: Byond maps are giant grids. Each grid mark is a tile. Tiles always contain a space turf, this is as empty as a tile can get.
Active Object: The object currently selected / active. This is the object you’ll be placing down
when you click. The object will be viewable in the Environment Tree to the left, and highlighted.
If you have an instance selected, it will be highlighted in the instance window below.
Area(s): Areas are part of how Byond handles maps, and for CM13 it’s how we determine what
portions of the map are valid for fire missions, what does, and does not require power (and thusAPCs), where resin, tunnels, Xeno Structures, Marine Structures, and other things are allowed
or disallowed. Areas are never drawn in game. Anywhere without an area will not have lighting,
and will kill any mob that enters it, just very very slowly. Areas are like the nervous system of a
map. Without it, maps just don’t function.
Turf(s): Turfs are the walls, and the floors that make up the world. There can only be one turf
per tile. If you’ve managed to get two on one, you’ve made a big mistake. Turfs are like the
skeleton of a map.
Auto-Turf(s): Floor turfs that dynamically place borders around them when the map loads, or
when they take damage in game. They look nice, but can get expensive when used en-masse.
If your map’s tileset is primarily made of Auto-Turfs (Ice Colony and Kutjevo are good examples
of this), make sure to be sparing on the Decals and other objects.
Open (Turf): Turfs that aren’t walls. Mobs can move through these.
Closed (Turf): Turfs that are walls. Mobs cannot move through these.
Invisible Wall Blocker: A type of Object (see below) that acts like an indestructible Closed turf.
Used to deny access to areas that are out of bounds, but composed of Open turfs.
Reinforced Wall: Walls that are destructible, but require extra effort to punch through. They can
only be melted by higher tier Aliens, and stronger explosives (they may need multiple to break).
Hull: Walls that are indestructible. Usually denoted in-editor with a different icon. Often the subtype of another wall type.
Mob(s): These are Aliens, Humans, and NPC mobs. Mobs are divided into two categories,
Carbons, and Simples. Carbons are complex and simulated, while Simples aren’t. For Example,
Humans and Aliens are Carbon mobs, while Jones and AI Aliens are Simple mobs. Mobs have
no comparative bodily analogy, sorry.
Map Sorting Layers: In StrongDMM, what is, and isn’t enabled in the viewport is referred to as a ‘Layer’, which can be sorted. This isn’t wholly accurate, but it is the term that gets used. Sorting Layers are NOT the same as Byond sorting, or CM13’s Object Layers. var/layer: This is the CM13 Object Layer, which is used to determine visual hierarchy in terms of drawing objects on a tile. Take note, this variable can be edited, though some map instances are overwritten upon server initialization, so it doesn’t always work!
Top / Bottom: When numerous objects of the same type are on the same visual layer (not to be
confused with map sorting layers), some will appear above others and obscure them, this is
determined by what is on Top, and what is on Bottom. This is what we’ve been referring to asByond Sorting. Since Byond isn’t 3D, Z-fighting isn’t possible, though if that could happen, this is
what would prevent it. You usually don’t need to mess around with this at all. Players may also
bring objects to the Top, or Bottom ingame.
Object(s): These are guns, clothing, windows, window frames, and pretty much everything else
that isn’t a wall or floor. Everything you can interact with (save for mobs), are objects. Objects
are the meat of a map.
Effect: A subtype of Objects, these are a whole host of things, from the holes Aliens melt in
walls and the acid that gets vomited on items, to the sparks that come off of explosions. You
shouldn’t be manually placing these unless they’re Decals or Landmarks.
Landmarks: A subtype of Effects, these are map objects that do something when the server
loads the map, or function as a saved set of coordinates for a specific event (like the CORSAT
teleporter). You’ll mostly be placing these as spawn points for various factions, and not much
else save for a few other cases.
Decals: A subtype of Effects, these are non-interactable details on maps. Blood is the most
common decal. Fun fact: The catwalks on Sorokyne Strata are also decals. Decals get
expensive when placed en-masse, so try to be sparse with them
.
Item: A subtype of Objects, these are all the things you, as a player can pick up, ranging from clothing and guns to cigarettes and unplanted Alien eggs.
Structures: A subtype of Objects, these include pretty much anything static (with some
exceptions) on a map. Some examples include: chairs, lockers, windows, window frames,
platforms, tall grass bushes, and potted plants.
Machines / Machinery: Machines, a subtype of Structures, are objects (mostly static) that have
some sort of interaction with other objects. For example, Thermal Generators, APCs, wall lights
are machines. All atmospheric objects are machines, but they have their own terminology.
Pipe: This is what a single pipe object is referred to in terms of Atmospherics.
Piping: This is what two or more pipe objects that are connected, are referred to in terms of
Atmospherics. Note: This term should not be confused with the Pipeline, which more
importantly, refers to the process by which Gitlab, CM13’s code hosting service determines if a
Merge Request has no compilation conflicts, and passes all supplied unit tests. This is known as
“Pipeline Passing”.
Pipe Machine: This is what one unconnected vent, scrubber, valve, cooler, port, etc, is referred
to in terms of Atmospherics. Anything that isn’t a regular pipe, but can connect to pipes, is a
pipe machine.Pipenet: This is what when one or more pipes are connected to pipe machines are referred to
as in terms of Atmospherics. Xenos may freely traverse completed pipenets that have valid
entrances and exits (Vents and or Scrubbers).
Powernet: This is the abstract power supply available from all active generators (Thermal /
Portable) available on a single Z level. Powernets are localized entirely to their Z Level.
PSU (Power Storage Unit / SMES): This object allows one to meter the power leaving the
Powernet into machines, while also viewing total available power within the powernet. You need
to place at least one per Z, preferably near a Generator.
Generator: Usually refers to a G-11 Thermal Generator map object, which when repaired puts
power into the Powernet for use by PSUs and APCs. You need to place at least one per Z,
preferably near a PSU and an APC.
APC (Area Power Controller): This object allows players to control the interaction between the
Powernet, and Machines in the local Area (see above) the APC is placed within.
Spawner: A general term that refers to something (usually a landmark) that makes something
on map load, and then deletes itself.
Detailing: Refers to the aesthetic qualities of a map, or area in terms of objects, unique turfs,
and other aesthetic sensibilities, such as color palette, and visual design.
Detail Density: An aesthetic term that describes how detailed one area is vs another, as
determined by the amount of objects, unique turfs, and others. It can also be used as a broad
term to refer to a map as a whole in reference to total detailing, and potentially, performance
deficits.
.DMM (Dreammaker Map): The file format that Byond maps are stored in. They’re actually
plaintext, and can be opened with Notepad, or a code editor of choice.
TGM (TG Map): TGM is a .DMM format. It stores information in a far more humanly readable
way, and also allows for Git Conflicts to be resolved in a far less messy manner. Map Merge 2
converts Byond Maps to TGM. TGM is not an extension type.
Map Merge 2: A python tool that converts Byond maps to TGM format, while also resolving
conflicts between versions, if any are found.
Dictionary Key (Dict-Key): Byond stores map information in what are called Dictionary keys
(dict-keys for short), which are a sequence of three letter characters contained at the bottom of
the map file in a sequence. Dict-keys are first defined when a new combination of area, turf,object, and mob are placed on a tile. If this specific combination is ever reused, instead of
defining those lines again (Byond maps are plaintext), the existing Dict-Key is used instead.
Corruption: Your map got done fucked up son. This happens in pretty much any Byond map
editor. The Save As function is notorious for corruptions. Make sure to utilize Git Version control
to ward away the setbacks of a map corruption.
Dictionary Corruption: Your map’s Dict-Keys have somehow been scrambled or altered.
Depending on the extent of corruption, can, or cannot be fixed by hand. These are easy to spot
when the Area Layer is enabled.
Variable Edit (Var-Edit): Usually refers to the act of editing the variables of an object (the
information stored within it) in game. However you can also do this in-editor, which leads to
instancing.
Instancing: The creation of variants of an object that differentiate from the original because of
edited or alternative variables. These child objects are called Instances.
Instance: An object that has different variables than it’s base definition. Not to be confused with
a Child Object in terms of Object Oriented Programming.
Typepath: The path of an object in-game and in-editor. Objects further down the typepath are
Child Objects.
Environment Tree: This is the set of nested dropdowns of objects, and a visual representation
of typepaths within the code. Get used to navigating it quickly and efficiently, as that is key to
successful and intuitive mapping.
DME (Dream Maker Executable): The compiled game binary, used to run servers, and read by
map editors to know what objects can be placed in maps.
Map Window: The tab/window in which a map is currently open. One map window per map.
Viewport: The actual visuals within the Map Window, these two terms will likely get used
interchangeable in conversation with maintainers, and this guide.
.DMI (Dreammaker Image): PNGs wrapped up in a different file format. These contain all the
sprites in the game. In the code, DMI files are called as var/Icon.
Icon: This is the actual file in which an Icon-State is stored. Icons are typically .DMI filesIcon-State: This is a specific ‘state’ within an Icon. To check what states are valid, you can
open the DMI, or have StrongDMM generate instances based on Icon-States in the instance
context menu.
Tile Set: A specific set of icons, and code, that combine to create a thematically grouped
collection of floors and walls. CORSAT, Sorokyne, Prison Station, and Solaris Ridge all have
their own unique Tile Sets.
Tile/Object Palette: An analog to the art term, palette, your object (or tile) palette is the
collection of frequently used tiles (and objects) that make up your map. Distinct from a Tile Set,
in that it’s defined by frequent usage, and not necessarily consistency. For example, water tiles
and atmospheric pipes are both part of your map’s palette, but aren’t part of a tile set.
Part 1: Using the Editor
Introduction
If you’re starting here and haven’t read anything yet, make sure you go read the disclaimer at the top, please, seriously. You won’t get anywhere without making sure you’re following what’s said there first.
For this guide we’ll be using StrongDMM, which is an alternative editor to Byond’s included Map
Editor (sometimes referred to as BaseDMM). The reason we’ll be using StrongDMM is because
it is more user friendly, (generally) has better performance, and most importantly, saves natively
in TGM.
Part 1 will walk you through it all, from opening maps and making your first edits to creating
instances in baby steps. If you’re already experienced with mapping software, or don’t want your
hand held by a document and its contents, you can probably safely skip over to Part 2: Mapping
Theory, and make use of the StrongDMM Reference when you need it.
1. Setting up StrongDMM
Before we can get started, we need to configure StrongDMM for CM13. Navigate to the File tab, open it up, and click Preferences… Make sure to set the Map Save Format drop down to TGM. Make sure Sanitize Variables and Clean Unused Keys are also both enabled. Lastly, ensure that Nudge Mode is set to pixel_x/pixel_y. Having this option set to step_x/step_y will break smooth movement in-game, and we don’t want that.After that’s all set, feel free to fiddle with the settings to your liking. When you’re ready to continue, X out of the menu.
To start things off, let's open your compiled CM13 DME file (if you don’t know how to do that, check out the guide here (hyperlink me later)). Navigate to the File tab, and hit Open Environment… Once the loading bar at the top of the screen disappears, you should see a now populated Environment Tree to the left, and a blank screen. Double check in the upper left, it should read “ColonialMarinesALPHA - StrongDMM”.
From here, let’s open up a map file. Navigate to the File tab, and hit Open Map. This’ll open a
Windows Explorer window in the base of your local repository. Head into the Maps folder, and
select Z.01.LV624. You can open the map by hitting the Open button, or by double clicking.
Your window should now look something like
the left. Those funny colors and tiles that say ‘SW’ over them is the Areas Layer. In CM13, Areas are used to control what places need power, allow or disallow certain activities, such as construction or tunneling, and also what places can accept fire missions or CAS lasers. For now, we don’t need to pay attention to Areas. They can be safely toggled off by hitting Ctrl + 1 (Toggle Area Layer).
You might (or might now) see some white outlines around and at the borders of where Areas
met. These borders will persist even when the Areas layer is disabled. If you find them
distracting, you can disable them going to the Options tab, and unchecking Frame Areas.
There’s still a lot going on in our viewport, but before we can dive into what’s going on, let’s get
used to navigating the map, and using viewport controls to get around.
First, let’s use MMB (Middle Mouse Button) to pan around the map. Click in the MMB, and
release to stop panning. You’ll notice the editor slows down while panning quickly, or when
panning over areas with lots of objects. This is completely normal, even for more robust
hardware setups.
You can also Scroll up or down with your mouse wheel (or track pad, gesture commands that
emulate scrolling also work) to zoom in and out of the viewport. Note, that when you zoom, it all happens relative to where your cursor is, and more specifically, which tile it is hovering over. You’ll pan further when zoomed out more.
Panning and zooming are the primary forms of navigating maps in StrongDMM.
If you’d like to make a more precise viewport adjustment, the arrow keys allow you to move the
viewport by one tile in the cardinal direction you just pressed. This movement is relative to the
current viewports positions, and won’t snap the viewport to be turf accurate, it’ll only move the
viewport the distance of one turf at the current zoom level. There are 14 total zoom levels.
Basic Editing
Now that you’re comfy with moving around the map, we’re going to cover barebones editing controls. Navigate up to LV River, just north of Hydroponics.
For reference, in Byond mapping:
Up - North
Right - East
Left - West
Down - South
Zoom in to the river, and press 2, to change your tile placement mode to Fill. Tile mode, which
can be activated with 1, can be useful, but we suggest you do the majority of your mapping on
Fill mode, it becomes far more intuitive the more you use it.