*DISCLAIMER*
This tutorial may be a bit chaotic, as I will try to cover different practical issues with the mapper as they come up. I hope it will get more organised in time. I am not a mapper veteran, so if anyone notices any mistakes, or has some additional info, feel free to contribute. Finally, some of the views on composition, scenery usage etc are my personal opinions.Here's a small re-writing of Sky's tutorial, with my personal notes and some additional info. This is a work in progress of course.
Before you start:First of all, making a map takes time. Don't even try this if you're not patient, a normal sized (encounter size) city map might take more than 20 hours of your time, if it's very detailed.
The mapper
does not support FO and FO2 map formats, as well as older FOnline map formats. The Fonline mapper format is *.fomap.
Maps have to be put in data/maps folder in the mapper directory in order to load them without using full path.
Look at some random maps, you can learn a lot just by examing the existing maps and how they were done.
You can also edit a map without an editor, to alter some of more finer details, but that will be covered later.
Remember, mapper does not currently have any undo or save-in-background option, so
think twice before deleting large chunks of tiles, walls, scenery etc, and most importantly,
save often.Before minimizing mapper window, or switching to another, block scrolling (Press F8). This will save you some time when youre back to the mapper.
While scrolling through items, walls, scenery and such - if you happen to stumble upon something that might be useful later in the map -
even if you dont need this piece right now - put in somewhere in unused space, or beyond scroll blockers. This will save you
a lot of time, and you wont have to look for that item later.
Hotkeys - I will emphasize those most practical:Enter: Show/Hide console
F7: Hide/Show the main panel.
F8: Enable/Disable scrolling with mouse.
F9: Hide/Show the object properties window.
Shift + Escape: Exit the mapper.
Del: Delete the selected objects.
Ctrl + X: Cut objects.
Ctrl + C: Copy objects.
Ctrl + V: Paste objects.
Ctrl + A: Select all.
Ctrl + S: Enable/Disable ignoring of scroll blockers.
Ctrl + B: Show impassable hexes. Red are impassable, and not shootable through. Green are impassable, shootable through.
Very useful function!Ctrl + M: Display NPC information over their heads (this has few modes of display).
Ctrl + L: Save the log to a txt file.
Tab: Change the type of objects selection (diamond or rectangle).
+/-: Change time by 1 hour. It might not work on keyboards without a numpad. Use numpad emulating software. Note that this won't work when console is on.
Spoiler
F1: Enable/Disable display of items.
F2: Enable/Disable display of sceneries.
F3: Enable/Disable display of walls.
F4: Enable/Disable display of critter.
F5: Enable/Disable display of tiles.
F6: Enable/Disable display of frequently used objects.
Shift + F7: Fix the position of the main panel (enabled by default).
Shift + F9: Fix the position of the object properties window (disabled by default).
F11: Set rain.
Basic Console commands - you will use only those for the most of the time:"~<map name>" - load a map
"^<map name> [/text] [/nopack]". "/text" to save it in text format, "/nopack" to save it in unpacked version.
"*new" create a new map.
"*unload" unload the current map.
"*size <w> <h>" set a new map size.
Additional console commands:Spoiler
"*scripts" list of scripts.
*dupl" search for items with the same pids, placed on the same hexes.
"*scroll" search for scroll blockes, around which there are less than two other scroll blockers.
"*pidpos <pid>" search for all items with a given pid.
"*hex <hx> <hy>" search for all objects on a given hex.
Moving around the mapper:To add an object to the container or inventory, click it with Alt on the object selection panel. To remove alt-click again.
To put an object in a critter's slot (hand), click the item in it's inventory with Shift. You put things in both slots this way.
To apply a change in the object properties window to a range of selected objects (of the same type), click
To All button.To add an object to Ignored objects list, click it with Ctrl on the object selection panel.
To remove selected object(s), press Del.
To change direction of a critter, select it and press middle mouse button.
To add a range of objects to already selected objects, hold Ctrl.
To change zoom, use mouse wheel.
To move a critter, select it hold down Shift and click the desired position. Double clicking makes the critter run, provided it has run animation. Also good for testing passability,
use it frequently combined with Ctr+B.Free-offsetting - Hold Shift while dragging the object. Used to move a wall/scenery/tile more precisely. Keep in mind that if the object has a blocker, that blocker will remain in its original place. Also
a very useful function.. Offsetting can be also done by editing object properties in the properties window.


To speed up scrolling of objects in the panel, use the following:
Shift - one page,
Ctrl - 100 elements,
Alt - 1000 elements.
Scripts:Spoiler
To run a script function, use "#". Executed function must be of prototype "string FuncName(string)", string argument is passed from a console, and function results will be displayed in the message box. Default module is "main", to execute a function from another module use "@" (for example, "#module@MyFunc").
Example:
In console, "#MyFunc Hello wo";
In script, "string MyFunc(string my) { return my + "rld!"; }";
Result in the message box: "Result: Hello world!".
Scripts are placed in the "/data" directory. List of loaded scripts is in scripts.cfg. The main script is mapper_main.fos, which contains all reserved functions, and basic list of API functions.
Main Panel:
From upper left to right, there are various buttons, let's take a look at them. Most of the time, when you click one of the categories, a small drop-down menu will appear with a list of sub-categories. If there is a lot of them, like in Tile,
you can scroll them with mouse wheel.
If you don't remember which sub-category you should look in for the object your seeking, use "all" subcat and scroll through the items slowly until you find it.
If you're sure that a certain object will be used on the map, put it in some free space, beyond scroll blockers for example,
even if you were looking for something else. You can move it/copy it/etc later, this will save you a lot of time.
Arm - Armors
Drg - Drugs
Wpn - Weapons
Msc/Msc2 - Miscellaneous
C/D - Containers and doors
Grd - Grids, stairs, staricases, ladders and such.
Gen - Generic scenery, a lot of subcategories there, you will use this often.
Wall - Self explanatory. Walls, but also some of the uncategorized items are in the end of the list, those include additional scenery, special items, etc. Important note: As of now, there are no useful sub-categories in this button, so it can be quite tedious to find the wall that you want. Try to remember the approximate wall pids (the numbers shown below the thumbnail), and use shift-scroll and alt-scroll often to save time.
Some of the walls are spread out through this category, so be throrough in your search, if you can't find a particular wall around the pid ~5600, it may as well be well beyond 6000 pid range.
Item - Items. Most of things can be found here, in various sub-cats. A side note: There are a few instances, where an item is "missing" from its category. I personally recall a dark round staircase and some BoS door missing from their categories. If you think you're missing something, look in their respective "all" subcat first, then in the "all" subcat in Items section.
Tile - The other important category. You will use this often too. As tiles have no pids, they are only categorised by their filenames. It is very advisable to remember most popular ones, to save time. They can be used both as ground, and as roof tiles. To switch between the ground and roof editing mode, use middle mouse button.
Crit - Critters.
The second panel below has a range of buttons that
toggle the visibility of the objects by their type. (Item, Scenery, Wall, Critters, Tiles, Roof tiles, grids/blockers/light etc). Very useful when putting roofs, checking stuff behind walls, etc. Remember that containers and doors are counted as items, and tiles only applies to the ones on the ground, roof tiles are separately listed (deselected as default).
The last panel on the right is used for choosing the active selection. For example, if you have "item", "wall", "scen" and "crit" buttons turned on (this is default), when you select something, only those things will be selected. Tiles and roofs will be ignored, regardless if they're turned visible or not. (See previous panel).
Other buttons:Fast - displays list of often used items, most of them are various blockers, light hexes and grids.
Ign - Ignore, shows ignored objects that are not rendered on the map, I don't use that function really.
Inv - Inventory, shows objects inside a container or inside critters' inventory.
Lst - List, shows all loaded maps and allows to switch between them.
Further info:
Blockers: There are few kinds of them:
"EG" hex stands for exit grid. The default values in the properties window will move character to Worldmap
Green "S" blocker - Passability blocker. A player cannnot move through it, but can see and shoot through it.
Light hex - used for placing light. Will be covered later.
"SAT" blocker. Dont know of any uses of this one yet.
"T" hex is a trigger, used for scripts, dialogs etc.
"Ent" blocker. Infamously called "Entire", my guess it was to be called "Entry", but well, Cvet thought otherswise. It's mostly used as of point of entry of a player into a map, though it can have other uses.
White "S" blocker. A scroll and passability blocker. It is place along the edges of the map. As a rule of thumb, all maps should have rectangular, or square shape. Test it with Ctrl-S.
Light blocker - used for blocking light, also will be covered later.
Green "W" blocker - Wall blocker, also blocks light. A player can not see, walk or shoot through it.
Yellow "W" blocker - Wall blocker, does not block light. A player can not see, walk or shoot through it.
Most of the time, you will use only scroll blockers, S and W blockers.
Map objectsRemember that some of the walls and items have built in blockers, but even so,
there is only one a kind in a given scenery/wall. For example if you want put a truck wreck on a map, you
have to put Wall all blockers in and around it (in general it is better to place blockers also inside, not only on the edges, but it takes much more time, also it only required in some specific cases, f.e encounter maps),
to prevent player/critter from going through.
Walls usually have built-in wall blockers, but
some don't, mostly intersections. Check often if you didin't miss them out, use Ctrl+B and/or put some critter and make it walk though the wall to test the passability (Shift+click or Shift+doubleclick while the critter is selected). See the example below. Press Ctrl-B when finished making a wall structure, then hide walls and look at the places without the wall blocker (marked red). A character will be able to pass through that place, unless additional wall blocker is put manually.
The most efficient way to do this is to check passability in the end of making a map, ie. when all the tiles, walls, scenery, roofs etc. are placed.
Tiles are used for two things: Floor and roofs. Currently, FO2 does not support passable levels of various height in one map (high buildings, stairs etc), though it can be mimicked by using appropriate tiles. When you see a building that has more than one level (New Reno, some quests...)
everything above the walls(green) is done with tiles placed on roof (red)
Another example of unorthodox usage of tiles. Tiles typically used for roofs, mimicking walls (yellow) are placed on the ground to avoid blocking view. Unless blocked, they are passable.


To switch between ground and roof editing modes,
use middle mouse button. If you wish to make a 4 storey building, you need to make separate maps for each level.
It is not generally recommended to overlap the tiles (especially on roofs, which can lead to a whole lotta mess), or to use free-offsetting on them, though there are some rare cases in which this can be useful. To free offset a tile you have to select it first.
To be continued...