CM13 Mapping Crash Course

From CM-SS13 - Wiki
Under Construction.png
Under Construction.png
Work in Progress
This page has been designated as a work in progress. To locate any other work in progress pages head here


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.

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.

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.

Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example
Example Example

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.

2. Navigating Maps

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.