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.


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.

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.

MCC Fig1.jpg

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.

MCC Fig2.jpg

Right now, you probably don’t have an Active Object, which is to say if you click,

nothing is going to be placed down. To change that, hold Shift, and then move your cursor over one of the “strange trees”. It should highlight green. Left click to make it the Active Object.


MCC Fig3.jpg

Place a few in the river, and then their undo placement with Ctrl + Z (You can also redo with Shift + Ctrl + Z). If you click twice on a tile, even though it doesn’t look like it, two trees will have been placed down. To confirm this, right click the tile. From there, you can highlight the second tree and then delete it. You can fiddle with the Dir and Offset settings, but we won’t be covering those until later.


Place two trees in a row next to one another. Now, hold Ctrl, and drag a selection box around them. Ctrl + Drag, on Fill and Select Mode, deletes the topmost objects of the selected type on a tile. The selected type does NOT refer to the Active Object, rather only if you have an Area, Turf, Object, or Mob as the Active Object. Top most deletion is handy when you need to quickly clear an area of a lot of objects, but not all of them. The last placed object (usually) is the top most object on a tile.


Undo, or place two more trees down. Holding Ctrl + Shift, click on one of them. It should highlight in red. This will delete the object. Deleting this way allows for deletion of any object, turf, mob, or area that’s currently visible. You have to be able to click it to delete it, so if it’s not enabled per the Layers Filter, no dice.


Undo, or place two more trees down. Now, select a new object, such as some of the flowers, or one of the reed bushes in the river and make it the Active Object. Go back to one of your trees, and this time Ctrl + Shift + RMB, instead of LMB. This will replace the tree with the Active Object.


Copy, Cut, Paste

Copying, cutting, and pasting are tools that, if used effectively, can greatly speed up the mapping process and cut down on the time spent combing the Environment Tree for the right object. Combined with picking the Active Object from already placed ones, you might not even have to use the environment tree at all.


Before we can copy, cut, or paste, we’re going to need to learn how to use the Selection Mode, which can be accessed by pressing 3. Notably, you cannot change tile placement and selection modes by using the Number Pad on an extended keyboard.


In Selection Mode, the mouse’s basic click functions follow special behaviors. Without any selection, you can LMB + Drag to make a new selection. Repeating the same action, LMB + Drag anywhere within the bounds of the selection will drag the selection relative to the mouse on the tile grid, replacing all content it’s floating over when you release the mouse. If you want to clear your selection, press Ctrl + D. When moving selections, the original tiles will be cleared. Only content on enabled layers will be selected and moved.


Copying, cutting, and pasting work exactly the same in regards to mouse controls. Notably, when pasting a selection onto a map, the content will overwrite everything around it. Pastes always are relative to the cursor, starting at their origin tile in the bottom left of the selection. If you paste a selection while not in Selection Mode, you will not be able to manipulate it after pasting, which can be frustrating. As such, make sure you do the most of your Cut, Copy, and Paste while in Selection Mode (3).


Instancing Objects

This segment covers the basics of instancing, and only the basics. Advanced instancing is something you’ll encounter on a case by case basis, and it’s best to get live help than refer to a guide for those cases.


Firstly, lets get familiar with the concept of instances. What are they, and why do we want to use them?


An instance is a variant of an object that is different in any way from its original state. An instance is NOT a child object further down the typepath.

Common instances include: renamed items and airlocks, changed item descriptions, APCs and NanoMeds offset to appear on walls, and floor tile variants. Mapping without instances can be done, but it requires a lot of extra code that isn’t needed. Why define a new child of an object that only has a different name, when we can instance the name instead?


Instances are stored on a map by map basis, and are not shared between them. However, StrongDMM is able to recognize instances between map windows if you have two or more open, which can be useful in certain situations.


MCC fig4.jpg

Reselect our friend the strange tree. Looking in the bottom left, you’ll spy there are already two instances of the strange tree being used on the map. This bottom left window is the instance viewer. Clicking either of the other instances will display the differing variables to the right of the initial window. You’ll notice the top most instance reads “Empty (instance with initial vars)”. When you

reset an object to default, it’s this topmost variant of itself that it will return to. Try placing any of these instances.


Let’s make some more instances. Right click any of the three and hit Generate Instances from Icon-States… This should make a bunch new instances for us to screw around with. You can always hit New Instance… if you only want to make one more, though unless you know exactly what you’d like to make, it’s usually a safer bet to generate from icon-states or directions.


Be careful when generating instances! You’ll notice that a bunch have been made when we hit Generate Instances from Icon-States…, maybe even too many. Some Icon files are very large, and have a lot of icon states shared between objects, turfs, and others. If you need to clear that list, close the map and re-open it. They should be gone when the map gets reloaded in the editor.


MCC fig5.jpg

If you have a lot of instances that you are using you can add additional rows to the instance window by clicking on the cog icon (upper right of the window). Let’s cover automatic instancing. Moving south of the river, head over to the medical dome and make one of the folding metal chairs the Active Object. You’ll notice it already has instances of all its directions in the lower left. Moving down the Environment Tree, select the comfy child object. Right click the initial instance, and hit Generate Instances from Directions… Now we have all the cardinal directions of the comfy chair for our mapping leisure. Not all objects have directional variants. When in doubt, you’ll probably have to check the icon file itself. While we can’t open the Icon in StrongDMM (or any map editor for that matter), we can find it easily.

Place down one of the new comfy chair instances anywhere on the map, and right click it. You’ll notice in the right click menu we can see all objects, regardless if their layer is enabled or not. Moving the cursor over the comfy chair will give us some extra options to explore.


This right click menu is known as the Quick Edit Menu, and gives you access to Edit Commands as well as more specific object functions.


Your first set of options is the ability to Nudge. Nudging allows you to offset the object on its tile, without actually moving it from the tile to another. This can be useful for decorative purposes or for wall mounted machinery, like NanoMeds, or APCs. Play around with the two sliders, but make sure you’ve got Nudge set to Pixel Nudge in your Preferences.You’ll notice that with each release of the mouse from the nudge sliders will make a new instance of the object. Making just three nudges, makes three objects! Remember, you can clear unused instances by reloading the map file after saving.


Secondly you’ll notice the Dir (Direction) slider. This can be used to rotate your object in various cardinal directions. If the object has directional sprites in it’s icon-state, they’ll be automatically applied.


Under those two aesthetic adjusters, you’ll notice the Move To Top, and Move To Bottom buttons. You can read about those in the Key Mapping Terms. You won’t really be using these.


Most importantly, we get to our two unfamiliar commands, Edit… (Shift + RMB) and Reset to Default.


Reset to Default does exactly as it says, and restores the object to its original initial variable state, or the top most instance of that object’s type.


Edit… (Shift + RMB) more importantly brings up the Variable Editing window (VarEdit shorthand). From here we can directly modify any variables associated to this object in the code. Before we get into anything in this window, make sure to tick the box next to By Type. This’ll group variables by what typepath they’re associated with.


If you tick the Modified box, only the currently modified variables will appear. You’ll notice that Dir, and Nudge (pixel_x, pixel_y) are both variables. Anytime you change a single variable, a new instance is made.You can also filter variables (or search them, it’s the same function) at the top bar.


You can also filter variables (or search them, it’s the same function) at the top bar.


MCC fig6.jpg

Finally, let’s figure out how to locate the actual icon file our comfy chair uses. Filter for, or look for the term “icon”. The resulting variable gives us the path to the icon file, you need only locate it in Windows Explorer now if you’d like to actually inspect the .dmi file.


For now, that’s all we’ll cover on variable editing. As said, you can edit everything via instancing, but you can’t change the direct code. In this case, if you wanted you could tell the comfy chair to find an entirely different icon file if you wanted to! Assuming of course you had the correct path punched in.

Common Variables