Difference between revisions of "Mapping"
(Began redoing the mapping page) |
|||
Line 1: | Line 1: | ||
== | == So, you want to make maps == | ||
this is the guide to mapping! | Well, this is the guide to mapping! Using the power of mapping, you can create stations, prefabs, random rooms, and adventure zones. There's a lot to do, and not all of it is easy to grasp straight away, but if you stick with it, you'll be mapping like a pro in no time. | ||
== Getting started == | == Getting started == | ||
Look at the [[coding]] guide for how to download and set up a local Goonstation repository to start mapping on. | Look at the [[coding]] guide for how to download and set up a local Goonstation repository to start mapping on. This is a critically important step: your map editor won't know what objects are in game unless you have a copy of the code on your device, ideally in the form of a remote branch from your forked repo upstream. If you don't know what that means, you should find out before trying to map things out. | ||
Some terms that will come up a lot (if you're familiar with coding in dm, you should know all these): | |||
* '''Parents''' and '''subtypes'''. A subtype is something that inherits properties and code from its parent. Every single thing in the game is a subtype of the base type, the datum (/datum), which is essentially what a programmer would call an object; a collection of variables and functions (called procedures or procs in dm) lumped together into one thing. Programming languages that use them are known as object oriented programming languages, and dm (what byond runs in) is one of them. | |||
* An '''Atom''' (/atom) is a direct subtype of the general bog standard coding object, the datum (/datum). Basically, it's a datum with a location: something that exists on the world map. Atoms come usually in the four main subtypes: | |||
** An '''Area''' (/turf), which tells the code which part of the map is part of which room or zone. Useful for linking APCs, Gang Objectives, having rad storms ignore maintainence, etc. Every tile needs at least one area, and if you delete it, it reverts to the default: area/space. They are invisible and unchangable during a round, and layer on top of everything else in the map view. | |||
** A '''Turf''' (/turf), which is essentially the floor (and although walls are also turfs, windows are not). Every tile needs a turf, and deleting it gives you the default turf, which is /turf/space. An empty map starts out filled with this turf. Also, code wise, every turf "contains" the stuff on its tile in its src.contents, which means that the turf sort of ''is'' the tile. They layer below everything else. | |||
** A '''Mob''' (/mob), which is short for mobile. It refers to any living things that can move around, characters (player characters and NPCs) and critters. Note that some creatures are still saved as objects, which is being worked on in what's known as the mobification. | |||
** An '''Object''' (/obj), which is ''different'' to the programming object (and is why we use the term datum). It refers to pretty much everything that isn't an area, turf or mob (it also refers to some mobs, as mentioned): all furniture and interactable items, as well as invisible non player facing things like spawners and gps markers. Most objects are subtypes of subtypes of subtypes of objects (for instance, /obj/reagent_container/glass/bucket/red is a red bucket), and the object tree is quite vast. | |||
== | == Map Editors == | ||
Once you have your repository, you then need a map editor. Technically speaking, you can use the default, which is Dream Maker, but there are other programs that let you make maps for Space Station 13 too, and most of them are far better. A few alternatives include: | |||
* [https://github.com/SpaiR/StrongDMM StrongDMM]: The premier map editing software for SS13. This is the most common map editor in goonstation. | |||
* [https://fastdmm2.ss13.io/ FastDMM2]: Runs entirely in your browser! | |||
"But why not just use Dream Maker?" I hear you ask. Well, it's because Dream Maker is <del>peepee poopoo</del> a little outdated interface-wise. Generating the object tree also takes an unreasonably long time, and Dream Maker's mapping interface does not have the quality of life features the above mentioned alternatives have, such as: | |||
* A quicker object tree loading time | |||
* Easier tree navigation | |||
* Hotkeys for things like setting object directions | |||
* etc. | |||
== Planning Things out == | |||
Before you open up your map editor, it might be useful to doodle a rough map layout so you can build in a more organized fashion. It's very easy to get distracted by the massive amount of atoms you can use. | |||
What thing are you making? Most people come into mapping with grand plans for making a station or ship, but they're not the only things that mappers create. Also, sometimes you aren't here to make something from scratch, but instead to edit something existing. Here's a short list of all things that mappers mess with. | |||
* '''[[Z-Level|Zlevels]]'''. This includes the '''station level Z1''', and the '''debris field Z3''', which start out fully realised and with full detail. At present, new stations aren't being accepted by the dev team unless they're significantly different from the other maps in rotation and provide a different experience, with new features (see [[Nadir]], which replaced [[Destiny]]). They are, on the other hand, continuously maintained and updated alongside the code, which is why there's so few maps in rotation (each map is a truckload of work to maintain, see) and new maps tend to replace old ones. For Goonstation, station maps should be '''300x300''' with only '''1 z level''', and will be loaded in as Z1 when the game loads. | |||
** '''Adventure zones''' are loaded into '''Z2''' (or Z4 if it's secret content, only editable by admins). If you're making one, you can make it of whatever size, really (not too massive of course) and it's slotted into place on one of these two levels. Z2 is filled with not only adventure zones, but also VR areas, shuttle transit, the loading screen, and the afterlife. Looking in Z2 can be massive spoilers for some of the adventure zones though, so some avoid it. | |||
* '''Prefabs'''. A prefab is a setpiece which isn't locked into a z level, and is spawned in at some point slightly after the main maps load. The mining level (or the trench) for instance is fully made out of prefabs of asteroids and other things. These are pretty much always being accepted. There are some special prefabs which require a certain size or shape, too: | |||
** '''Random rooms'''. These generally spawn in the station, and are randomly picked when the world generates. These have fixed sizes, 3x3, 3x5 and 5x3. [[Nadir]] also has some outdoor 'rooms' which spawn in the acid sea, which are 7x5. These can be submitted at any time. | |||
** '''Shuttles'''. Escape and Merchant shuttles are picked from a list of variants. There's a base type escape shuttle which is the usual default, but sometimes admins will pick one of the stranger ones as a replacement. It's always worth having more. | |||
== SAVE. Also save == | == SAVE. Also save == | ||
'''Whenever you make any change that took any amount of time, save and make sure there's a backup.''' Dream Maker can sometimes corrupt maps, or simply not save your work, and you'll either lose part of your map or break the whole thing. | '''Whenever you make any change that took any amount of time, save and make sure there's a backup.''' Dream Maker can sometimes corrupt maps, or simply not save your work, and you'll either lose part of your map or break the whole thing. StrongDMM, less often, but it still happens. | ||
If you don't have some sort of fancier version control (i.e. git) that automatically keeps revisions when you save the map, you can make a backup by doing "save as" and adding a version number to the filename, i.e. mapname_ver(number). | If you don't have some sort of fancier version control (i.e. git) that automatically keeps revisions when you save the map, you can make a backup by doing "save as" and adding a version number to the filename, i.e. mapname_ver(number). | ||
== | == Constructing a Structure == | ||
General order of map creation should be something like: | General order of map creation should be something like: | ||
Line 48: | Line 78: | ||
* Wait a bit and you will be notified in your debug logs whether the test succeeded or failed. | * Wait a bit and you will be notified in your debug logs whether the test succeeded or failed. | ||
---- | ---- | ||
{{Community}} | {{Community}} | ||
[[Category:Contribution Tutorials]] | [[Category:Contribution Tutorials]] |
Revision as of 03:34, 18 May 2023
So, you want to make maps
Well, this is the guide to mapping! Using the power of mapping, you can create stations, prefabs, random rooms, and adventure zones. There's a lot to do, and not all of it is easy to grasp straight away, but if you stick with it, you'll be mapping like a pro in no time.
Getting started
Look at the coding guide for how to download and set up a local Goonstation repository to start mapping on. This is a critically important step: your map editor won't know what objects are in game unless you have a copy of the code on your device, ideally in the form of a remote branch from your forked repo upstream. If you don't know what that means, you should find out before trying to map things out.
Some terms that will come up a lot (if you're familiar with coding in dm, you should know all these):
- Parents and subtypes. A subtype is something that inherits properties and code from its parent. Every single thing in the game is a subtype of the base type, the datum (/datum), which is essentially what a programmer would call an object; a collection of variables and functions (called procedures or procs in dm) lumped together into one thing. Programming languages that use them are known as object oriented programming languages, and dm (what byond runs in) is one of them.
- An Atom (/atom) is a direct subtype of the general bog standard coding object, the datum (/datum). Basically, it's a datum with a location: something that exists on the world map. Atoms come usually in the four main subtypes:
- An Area (/turf), which tells the code which part of the map is part of which room or zone. Useful for linking APCs, Gang Objectives, having rad storms ignore maintainence, etc. Every tile needs at least one area, and if you delete it, it reverts to the default: area/space. They are invisible and unchangable during a round, and layer on top of everything else in the map view.
- A Turf (/turf), which is essentially the floor (and although walls are also turfs, windows are not). Every tile needs a turf, and deleting it gives you the default turf, which is /turf/space. An empty map starts out filled with this turf. Also, code wise, every turf "contains" the stuff on its tile in its src.contents, which means that the turf sort of is the tile. They layer below everything else.
- A Mob (/mob), which is short for mobile. It refers to any living things that can move around, characters (player characters and NPCs) and critters. Note that some creatures are still saved as objects, which is being worked on in what's known as the mobification.
- An Object (/obj), which is different to the programming object (and is why we use the term datum). It refers to pretty much everything that isn't an area, turf or mob (it also refers to some mobs, as mentioned): all furniture and interactable items, as well as invisible non player facing things like spawners and gps markers. Most objects are subtypes of subtypes of subtypes of objects (for instance, /obj/reagent_container/glass/bucket/red is a red bucket), and the object tree is quite vast.
Map Editors
Once you have your repository, you then need a map editor. Technically speaking, you can use the default, which is Dream Maker, but there are other programs that let you make maps for Space Station 13 too, and most of them are far better. A few alternatives include:
- StrongDMM: The premier map editing software for SS13. This is the most common map editor in goonstation.
- FastDMM2: Runs entirely in your browser!
"But why not just use Dream Maker?" I hear you ask. Well, it's because Dream Maker is peepee poopoo a little outdated interface-wise. Generating the object tree also takes an unreasonably long time, and Dream Maker's mapping interface does not have the quality of life features the above mentioned alternatives have, such as:
- A quicker object tree loading time
- Easier tree navigation
- Hotkeys for things like setting object directions
- etc.
Planning Things out
Before you open up your map editor, it might be useful to doodle a rough map layout so you can build in a more organized fashion. It's very easy to get distracted by the massive amount of atoms you can use.
What thing are you making? Most people come into mapping with grand plans for making a station or ship, but they're not the only things that mappers create. Also, sometimes you aren't here to make something from scratch, but instead to edit something existing. Here's a short list of all things that mappers mess with.
- Zlevels. This includes the station level Z1, and the debris field Z3, which start out fully realised and with full detail. At present, new stations aren't being accepted by the dev team unless they're significantly different from the other maps in rotation and provide a different experience, with new features (see Nadir, which replaced Destiny). They are, on the other hand, continuously maintained and updated alongside the code, which is why there's so few maps in rotation (each map is a truckload of work to maintain, see) and new maps tend to replace old ones. For Goonstation, station maps should be 300x300 with only 1 z level, and will be loaded in as Z1 when the game loads.
- Adventure zones are loaded into Z2 (or Z4 if it's secret content, only editable by admins). If you're making one, you can make it of whatever size, really (not too massive of course) and it's slotted into place on one of these two levels. Z2 is filled with not only adventure zones, but also VR areas, shuttle transit, the loading screen, and the afterlife. Looking in Z2 can be massive spoilers for some of the adventure zones though, so some avoid it.
- Prefabs. A prefab is a setpiece which isn't locked into a z level, and is spawned in at some point slightly after the main maps load. The mining level (or the trench) for instance is fully made out of prefabs of asteroids and other things. These are pretty much always being accepted. There are some special prefabs which require a certain size or shape, too:
- Random rooms. These generally spawn in the station, and are randomly picked when the world generates. These have fixed sizes, 3x3, 3x5 and 5x3. Nadir also has some outdoor 'rooms' which spawn in the acid sea, which are 7x5. These can be submitted at any time.
- Shuttles. Escape and Merchant shuttles are picked from a list of variants. There's a base type escape shuttle which is the usual default, but sometimes admins will pick one of the stranger ones as a replacement. It's always worth having more.
SAVE. Also save
Whenever you make any change that took any amount of time, save and make sure there's a backup. Dream Maker can sometimes corrupt maps, or simply not save your work, and you'll either lose part of your map or break the whole thing. StrongDMM, less often, but it still happens.
If you don't have some sort of fancier version control (i.e. git) that automatically keeps revisions when you save the map, you can make a backup by doing "save as" and adding a version number to the filename, i.e. mapname_ver(number).
Constructing a Structure
General order of map creation should be something like:
- Basic skeleton of turfs (walls, floors)
- Objects in rooms (airlocks, machinery, etc)
- Area placement (important for APCs, teleportation, etc)
- Wiring (including APCs) and disposals
- Detail work; lighting+switches, access spawners, firelock stuff, door names, bot waypoints, teleporter beacons etc.
It's okay to look at existing maps for reference when configuring objects, but it's heavily recommended you create new instances of objects and change any necessary variables when making your map - this is less likely to introduce unintended consequences, and makes you more familiar with var-editing.
I have a map and it seems to work, now what
For a general checklist, reference the Goonstation Map Submission Guidelines - they're an excellent source of ways to validate your map's functionality. As a rule of thumb, if your map hasn't been tested, there's something wrong with it - don't be afraid to ask for help fixing or testing things.
What is this about a disposal pipe tester?
To test your disposal systems, Haine and Spyguy made a handy little proc you can call as an admin to test if they actually work as intended! To use it:
- Use the Advanced ProcCall verb (found in the Debug tab assuming you've already made yourself an admin.)
- Run
/proc/test_disposal_system
. Next, enter the X and Y coordinates of where stuff that goes in a disposal pipe is supposed to go, right at the end of whatever disposal pipe adventure you've created. Usually this will be the final conveyor belt right at the crusher door. - Wait a bit and you will be notified in your debug logs whether the test succeeded or failed.
Community | |
---|---|
Contributing | Guide to Contributing to Wikistation · Goonstation Development Guide · Goonstation Contributor Guidelines · Spriting · Goonstation Spriting Guidelines · Coding · Goonstation Code Guide · Hosting a server · Mapping · Goonstation Map Submission Guidelines · Goonstation Audio Guidelines · Contributing to Requisitions |
Members | Admins |
Culture & Art | Terminology · Storyline (Old Storyline) · Basic Lore · Fan Videos · Fan Art |
History & Happenings | Changelog · Pre-2016 Changelog · History of SS13 |
Tales & Humor | Sex and the Singularity · Maintenance Doggs · The Rapper · The Trial of Heisenbee · Albert and the Deep Blue Sea · The uWu Interrogation · HeadSurgeon · Tales of The Devil · IT'S ALIVE! It died. IT'S ALIVE! It died. IT'S ALIVE! · The floor is now explosions · My god, it's full of butt · The Crashwich · The Doom Peel · Jugglemancy |