Author Topic: Another mapping tutorial - by a newb for newbs (WIP)  (Read 7330 times)

Rikers

  • Developer
  • Full Member
  • *****
  • Posts: 243
  • nazi pixel
    • View Profile
*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 objects


Remember 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...




« Last Edit: May 17, 2014, 02:29 by Rikers »
vacation until further notice

barabbas

  • Guest
Re: Another mapping tutorial (WIP)
« Reply #1 on: May 16, 2014, 15:50 »
This looks amazing. Sorry if my post is in the way of next part of tutorial, I will delete. But I have question - do you really have to make map 1 hex at a time? I try making map and it seems so. But you can't have exact hex twice in a row or it looks bad. And you have to scroll for 30-60s to find hexes you are looking for each time.  For example after using desgen tool I try to make a structure. I make 1 hex of a wall, then try to find next hex that will look right when connected. It take me half hour to make 2 hexes of wall. I feel like there must be a faster way :) Maybe at least way to 'bookmark' certain hexes so you dont have to scroll to find them?
« Last Edit: May 16, 2014, 15:52 by barabbas »

Rikers

  • Developer
  • Full Member
  • *****
  • Posts: 243
  • nazi pixel
    • View Profile
Re: Another mapping tutorial (WIP)
« Reply #2 on: May 16, 2014, 16:04 »
Hi there, thank you for kind words. No need to delete your posts, in fact, if anyone one has questions I will try to answer them and also include those questions & answers to the tutorial.

About achieving diversity, be it both walls and tiles - it depends on the particular wall/tile. I will try to cover it with some screens and examples when I'm back from work. Walls are not categorised, but they are usually in groups. Sometimes in more than one, as I wrote in the tutorial. My advice is to build the basic wall "structure" first. So, use only 2 alternating wall types for x and y axis, then delete the unnecesary ones and put intersections, windows, and all other stuff as needed.

If you're referencing those grey "interior" walls, some of them with stains etc... I found that they seldom fit each other, or, even if they do, it takes a helluva time to match them. My advice is to mask them with scenery, like pipes, exhausts, torn wallpapers etc. Example here.

About bookmarking... I can't think of any way of doing it, besides putting some needed walls on the map before their actual, accurate placement. F.e. If I scroll through walls, searching for some intersection, and I stumble upon some other walls, which will be most probably needed later. So i put those walls on the map, in any free place; when I'll need them, I will just copy & paste or move directly on the map them to their final destination - without the need to look for them all over again. All subcategories are bookmarks, you can even make your own, but this is tedious work, and I always have better things to do ;) Anyway, the tutorial to make your own subcats is somewhere on the Fodev forums.
« Last Edit: May 16, 2014, 16:52 by Rikers »
vacation until further notice

Rikers

  • Developer
  • Full Member
  • *****
  • Posts: 243
  • nazi pixel
    • View Profile
Re: Another mapping tutorial - by a newb for newbs (WIP)
« Reply #3 on: May 17, 2014, 02:06 »

Now, that the basics are covered, let do some practice!


First, load a generic desert encounter map (type "~e_desert1")

Toggle the selection shape (Tab)

Add tiles to active selection:



Select an area roughly in the middle of the map. It should like like this:



And then press Del. This will erase all active objects, in our case - scenery,walls, items, critters and tiles:



Now, its time for some planning. For convenience, I will use some marker-tiles to count the neessary space and to avoid later tile overlapping:





And then, lets put a couple of pavement border tiles (curb tileset):



Since we dont have anything else that can be selected besides tiles, lets select those four tiles, and copy&paste them. Next, lets put some other tiles, so the pavement is two tiles deep:



Next, lets place a road. (Look for road tileset) Make a small rectangle, then copy it all over along the pavement:










Next, lets fill the gaps and make some new ones by deleting some of the road tiles. Tilesets used: road, edg and edgs.





A note on transition tiles.

Some of the tiles (examples below) are transition tiles. Look on some city encounter maps (type f.e. "~e_city6") and look at their placement. Learn the patterns and use them. This will make your ground look natural.



Practice a bit placing them, and avoid situations like this:



Back to our example. Now, using the same method as with tiles, lets place walls in X-Axis. Walls used here are ~5500 pid range. Wall in X-axi usually have two variants (the wide and narrow one), which should be placed one after another. Y-axis is different, as it only has the narrow variant. Place two variants, then copy them all along the pavement; finally, place corners. Note how the corners are placed, it is easier to place them correctly after you surround the whole shape with tiles.







Next, lets place pavement around in a rectangular shape, for now well omit adding the details. Then, place a wall along Y-Axis.



Next, lets place interior walls. This is a bit harder, as the walls that are going to be used, are popular, but have major drawbacks. It takes a lot of time to fit one wall to another, be it X or Y axis. The best way to circumvent this is to make a small portion of a wall that roughly fits, and then copy it all along. Finally, place an appropriate corner, and do the same for Y axis. Walls used are from ~5580 pid range.







Next, lets build some walls inside of the building. Toggle wall visibility (turn them invisible), and place tiles roughly in the middle of the southern wall. Dont use just one tile, alternate between them. Tileset used: enfl, the theyre in the end of the section, enfl044 to enfl047. Then you can place a doorspace.







Next, copy them all along to the northern wall. Toggle wall visibility again (turn it on) and select the eastern wall. Remember to avoid selecting corners. Paste it two times along the floor you just made:







Next step will be the X-axis. Place some tile helpers first:



And then copy and paste the northern wall so all looks similar to the screen shown below. If the walls you copied are too short, add the missing parts accordingly, until there is only a small space left and placing another wall would make them intersect with outer structure:




To be continued...
« Last Edit: May 17, 2014, 02:10 by Rikers »
vacation until further notice

bs2crew

  • Sr. Member
  • ****
  • Posts: 252
    • View Profile
Re: Another mapping tutorial - by a newb for newbs (WIP)
« Reply #4 on: May 16, 2016, 20:02 »
Hello,

How i can block this menu before any action? When I put any objects in ground this menu pops up.
http://postimg.org/image/ba9hv7kk1/

Feather

  • Hero Member
  • *****
  • Posts: 1485
  • Don't Panic!
    • View Profile
Re: Another mapping tutorial - by a newb for newbs (WIP)
« Reply #5 on: May 16, 2016, 20:08 »
Hello,

How i can block this menu before any action? When I put any objects in ground this menu pops up.
http://postimg.org/image/ba9hv7kk1/
Press F9.

bs2crew

  • Sr. Member
  • ****
  • Posts: 252
    • View Profile
Re: Another mapping tutorial - by a newb for newbs (WIP)
« Reply #6 on: May 17, 2016, 09:46 »
thanks

bs2crew

  • Sr. Member
  • ****
  • Posts: 252
    • View Profile
Re: Another mapping tutorial - by a newb for newbs (WIP)
« Reply #7 on: May 17, 2016, 09:54 »
I want to help you about painting. If i can paint materials? can you put in mapper ? I worked 3 years in animation studio / painted ui / modelling / concept art