Mapping Contributor Guides

From Nuclear 14
Revision as of 22:27, 9 October 2024 by Peptide (talk | contribs) (start)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Intro

This is the mapping guide for Nuclear14.

Upstream Mapping Guide for reference which I wrote. Sections that are useful to us are under workflow and are "Start Mapping", "Common Tools and Commands" and further down "Decals".

The main differences between mapping for SS14 and Nuclear14 are that we predominantly use our mapping server, so no setup is required for mappers and you can map together in multiplayer, and that we use planetmaps rather than space stations. More on that soon.

Getting Started on the mapping server

  1. Connect to the mapping server with the direct connect button in the launcher at this address: **ss14://game.nuclear14.com:1401**
  2. Once in game hit the tilde key to open the console (left of 1) and type `lsmap`. This is the list maps command and will output a bunch of numbers usually 1 to 5 or more. These are the map IDs. Beside that number is the map name if it has one, whether it is initialised or paused and the number of grids / grid entity ID. We run this command to see if anyone is already mapping or has created a map to work on since the last time the server restarted.
  3. We typically write a high number to map on like map 100, 200 etc, so if no such number exists, assume nobody is mapping and jump to step 4. If there is a high map number or you know someone is mapping, jump to step 5.
  4. If nobody is mapping we can follow the [upstream start mapping guide](https://docs.spacestation14.com/en/space-station-14/mapping/guides/general-guide.html#start-mapping) by opening the console and typing `mapping 100 [filename.yml]`, which creates a new map on map ID 100 with our file name. For example `mapping 100 Maps/sunnyvale2-1.yml` would open the sunnyvale map on map 100. If map 100 is occupied, change that to 200. This should then teleport you to that map in mapping mode as an aghost.
  5. If someone is already mapping, make sure to first run the `aghost` command in console to turn into an admin ghost. When mapping the map is paused and not initialised, so you can't move there as a player and shouldn't place mobs as they won't work or save. So always change to an aghost first, then teleport to that map either with the tpto command followed by a grid ID, through the admin menu in F7 > Objects > Right click the map or grid and teleport, or by using teh ghost warp to a warp point.

Mapping

Congratulations, you should now be on a map or ready to map. Jump to the next relevant sections as you need for a quick guide.

Creating a planet map

Note: This is for reference only, we no longer use planet maps. Use a normal map instead in space and use procgen tiles for biomes.

To create a planet map, open the console and type `planet` followed by the map ID you're working on, then `wastes` as our biome. This will convert your existing map into a planet map.

If you need additional planet guidance, check [here](https://docs.spacestation14.com/en/space-station-14/mapping/guides/general-guide.html#planets). The difference between planets and stations is that there is no space, Tiles that are destroyed turn to the default biome tile specified in code which in our case is wasteland tiles. Biomes are also procedurally generated. More on that below.

If you use the zoom command in console, for example `zoom 5`, you'll notice the map is all black apart from where you are. The black tiles are procedurally generated when the map is initialised. Therefore they will be filled in with tiles, entities and decals when we run the map. To avoid the map deleting what we make, we must first place down a tile before we put any of our own entities on top. Check out the "placing things" section below. For now this means if you want to place something in the wasteland, like a tree, corpse, some loot or anything at all, you place a wasteland tile down first. If you want to place buildings or roads, feel free to place any tile you want. You might want to surround anything you build with a single wasteland tile so that things aren't generated too close to it. Once you place a tile though that's it. No more procgen there, so be careful or you may need to reload an older save or autosave.

Tools, Tips and Spawn Menus

First thing to address is we're mapping in an engine made for space station 14. That means there will be a lot of things in the entity and tile menu that we won't want to use. For the most part we will try and remove these over time but until then, most entities are prefixed with N14. So in the entity spawn menu for example you can type `N14Door` to get a list of doors, `N14Wall`, `N14Weapon` etc etc. This isn't always the case and it can get clunky so experiment and search.

Entity Menu

The entity menu can be accessed by pressing `F5` or in the `B` menu. See the note above regarding entity IDs.

Make sure to rotate entities to their correct directions. If they don't have an obvious direction just place them south. Some entities have directions specified in their name suffix such as certain large shelves. Make sure to place them facing that direction otherwise their bounding box will be wrong. To check this press `B` and at the bottom of the list `showbb`.

Some entities also use their rotations for totally different or special versions of the sprites, for example road signs use the rotations for different sign heads, and counters have different east west sprites depending on if they are the end of the counter, or the middle of a counter.

In general avoid using any SS14 assets unless you must, if you must, make a note and request a fallout version in discord from our spriters.

Tile Menu

Now menus can be quite buggy, so try not to have too many open at once (especially the decal menu) or press too many things at once. The tile menu can be accessed by pressing `F6` or in the `B` menu again. There are a lot of SS14 tiles in there as well as tons of our own. Try not to use SS14 ones where possible. In addition we have some high quality tiles with the name / ID prefix `MS13`. Use these where possible.

You'll notice in the tile menu there's a load of different sprites in a row for most of the tiles. These are variants. When you're done mapping you can type the `variantize` command in console followed by the grid number and it will randomise all the tiles on the map to other variants. Good for breaking up patterns. Find the grid number by typing `lsgrid` in console to list grids.

Decals

By far the clunkiest and most problematic menu to use. Make sure to close all other menus when dealing with decals. This menu can be accessed again through `F8` or the `B` menu. There's lots of decals in the menu again that aren't applicable to us, this will be reduced over time.

By default left click will place a decal and right click will remove it. You can't use shift or ctrl click like with entities so you have to place them manually. The sprites will have their default color as specified in their sprite file however you can tick the `custom color` box and mess with the RGB slider, OR hit the palette button to get pre determined colors. In that new tab there's the `advanced` drop down at the bottom with lots of other color palettes in.

Snap to tile is a handy option for placing things like dirt or centrally placing lines but freehand is best for anything natural like plants, grass etc.

Cleanable allows the decal to be removed with cleaning products in game, especially important for dirt decals so players can reclaim areas.

Rotation is important as a lot of sprites are singular and need rotated to 90, 180 or 270 degrees to fit areas.

Draw depth allows you to overlay sprites correctly e.g. warning tape over other sprites.

And finally remember your alpha channel when placing decals. Things aren't pristine anymore even in the vault, you'll want some level of weathering and to do this use the alpha.

Spawners and Loot

So you can't directly place mobs in mapping mode, you must place a spawner and when the map is initialised it will spawn the correct mob. To see spawners, including player spawn points, warp markers etc hit `B` then `show spawns`.

There are some timed spawners which will spawn an animal at an interval X amount of times all defined in yaml.

There are also random loot spawners which will pick an item at random from its list based on probability and spawn it on round start.

We also use certain loot spawners but these aren't typical spawners like we mean here, those are filled storage variants of certain entities, structures and furnitue, more on that soon.

Z-Levels, Ladders, Stairs Elevators

Z Levels in Nuclear14 aren't true Z levels and instead rely on teleporting the player between totally separate maps.

For maps to load together with another map, an `AdditionalMapComponent` needs added to the maps prototype file. In addition, the additional map will need to be modified in a text editor to remove the `paused: true` line, otherwise it will spawn paused.

Ladders work by placing a ladder entity at the start and a warp marker at the destination then editing both of their `WarperComponent`s in view variable to make their IDs match. You'll need to do the opposite at each end so that players can return through a ladder.

Stairs work differently. You can place the `StairsBase` entity or any other stairs entity with the `autolinking` suffix and once you place the second entity, it will link to the first one you placed. No need for warpers as they act as a portal so can take objects and structures through them that are thrown or pushed. BEWARE WHEN MULTIPLAYER MAPPING - If you place one, and someone else places one, they will link! So warn other mappers when placing stairs so you don't mess up the link.

Guidelines

Saving and Loading maps on official servers

When mapping on the official Nuclear14 server be sure to follow the below guidance on saving and loading maps to help reduce conflicts or loss of work.

Loading

When joining the server, first check to see if anyone else is online in chat or by typing the command `adminwho`, which will return a list of any mappers online. Alternatively check the discord for recent activity in the **mapping** channel. If nobody is online you can run `lsmap` to see if any maps are currently open and in use. Usually this is a high number like 100 or 200, different from the first sequence of numbers. If nothing comes back, you're free to follow the guidance above for starting or creating a map. For **Loading** an existing map, be sure to load the latest version sorted by date, this should be in the superior format of DD-MM or day-month. This will look something like `mapping 100 /Maps/0307/sunnyvale.yml` If you want to make sure you're on the newest version, try the date ahead like `/Maps/04` and if it doesn't autocomplete then it doesn't exist. If the current date doesn't work, try the next date before. Usually `Maps/0` `Maps/1` and `Maps/2` will return a list of autocomplete options. Find the newest one. DD-MM is superior for a lot of reasons but for us, the day is the most important as the files will be pruned regularly so it will rarely be a different month.

Saving

When saving the map, use the above logic. Tell anyone else on the server you're about to save and to what directory so that they know what to save it to later on. For example you might be in a different timezone to them, so they might save it on `Maps/MapName/0407` then sign off, then you might save your work on `Maps/0307` and your work will be lost, as the next person on will load `0407`. Try to remember to save in `EST` or `UTC-5` for remembering your dates, as this is the local time of the server and can be used to locate backups easier.

Power

If your building is intended to have power or did have power before the war, place a breaker box which is ID `N14APCBreaker`. These have zero power storage like in SS14 and are purely a way to convert MV power to LV power. It is up to you the mapper on if these are fully working or an APC frame, whether they are wired with LV or have been stripped or broken up.

Most buildings should have at least one Breaker however not many will have their own generators. In towns or cities there should be one building designated for a substation `N14Substation` which may or may not have its own generator, `N14GeneratorFusioncore` or `N14GeneratorPrewar`, the latter can take fuel oils for power. For bunkers you can use the enclave fusion generator, for the vault the mini fusion generator or vault-tec reactor. The pre-war reactor in the floor is for the main power station of a map.

The end goal is to have a main power station on the map that can fully power the map, with one of the optional goals in a round being to restore the power network. What this looks like right now is unknown as running HV cables everywhere is ugly.

Loot

When mapping for the roleplay gamemode, avoid using any respawning or refilling loot containers. Generally all loot filled variants of objects have the ID `N14Loot` and their suffix in brackets will tell you what loot pool it is using, e.g. domestic, medical, military etc.