Commands used in this guide
Here you will find the complete list of things you will need to design a map and make it functional.
Intro & Structure
How is a BAR map made?
Well, for starters, a BAR-certified map is what we want, and to get to that level, a new map consists of many different parts that need to work well together. There is quite some tweaking involved to get all of them working. Generally there are 4 different things needed to start:
1. A Photo-editor like Photoshop or Gimp
2. Mapping Software: World Machine
3. A text editor to do some code editing
4. A set of additional tools to compile and edit/finetune your map
List of tools and useful links
- Spring Map Compiler: Github.com/Beherith
- DNTS painting, Object Placement and heightmap finetuning with SpringBoard Editor
- Zipping/unzipping SD7: 7-Zip
- Example map-file of: Crescent_Bay_Clean_v3.tmd World Machine tips
- Advanced mapping guide and World Machine tips: Advanced SpringRTS Mapping Guide by Beherith
- Converter script for feature-file from Springboard to SD7 map-file: Get it here
- Do's and don'ts regarding map style/design: BAR Mapping Design Philosophy
- When you're almost done: Final Map Pre-release Checklist
- Upload map to Springrts.com: https://springfiles.springrts.com/ (you will need a legacy springrts account)
A typical map consists of 3 components that are combined in your final mapname.sd7 file.
- A compiled set of 2 mapfiles, the mapname.smf and mapname.smt
- A custom set of additional map textures like normalmap, specularmap, splatmap, and more.
- The mapname.sd7, which is a zipped folder that contains all kinds of extra's and the important mapinfo.lua
1. Making & Compiling the basic map assets
To compile the basics of a map you need a minimum of 3 maps. The all have unique and specific formats.
Some of these maps can/will be made manually with a photo-editor.
Though you can also generate/make these within World Machine.
The dimensions are linked to your final map size.
A 20x10 map has a 1281 x 641 px heightmap.
Calculate: 64 x [yourmap size] + 1
Full RED (255,0,0) is max metal. Preferably use a sharp pixel pen with the exact color-value you want with a 4px radius dots (no anti-aliasing/smoothing). Simply paint where you want your metal to be.
A 20x10 map has a 640 x 320 px (1/4 or 25% of the heightmap).
Calculate: 16 x [yourmap size]
1.3 Texture (or Diffuse)
With the heightmap alone you can already render the map texture from World Machine.
A 20x10 map has a 10240 x 5120 px texture.
Calculate: 512 x [yourmap size]
This map is optional, but often nice to have. Shades of grey/white are used to link these to specific types of terrain. Usually a typemap contains at least 2 types for basic terrain types like: flat ground, hard/rock/cliffs. But you can add things like sand, snow, muddy, ice, etc.
A 20x10 map has a 640 x 320 px (1/4 or 25% of the heightmap). Values are linked/defined in mapinfo.lua.
Calculate: 16 x [yourmap size]
The minimap can be auto-generated during compiling, but you can also set a manual one.
The minimap is a 8-bit RGB BMP, though in yourmap.sd7 (the final file) you use .PNG and .DDS
The minimap always is 1024x1024 px
Important for extra details & quality. You want to use the highest possible resolution, preferably always 8K.
A 20x10 map has a 10240 x 5120 px normalmap (1:1 with the texture). For smaller maps below 12x12 you could even go double resolution (2:1) for the normalmap.
Calculate: 512 x [yourmap size]
This map is also important to give the map extra toning in both color and how much lighting it reflects.
This map can be half res, like 4K, but 8K is also fine.
A 20x10 map has at least a 5120 x 2560 px specularmap
Calculate: 256 x [yourmap size]
Shades of grey/white are used to set the density of the grass.
You can also paint grass live in the game, and export from there.
A 20x10 map has a 320 x 160 px (1/8or 12.5% of the heightmap).
Calculate: 8 x [yourmap size]
2.4 DNTS Splatmap
The most important map for high res/quality detail textures. It uses a 4 channel RGBA format. This can be PNG or TGA.
Always use width/height with the ^2, ideally at least 2048 px.
A 20x10 map has a 2048 x 1024 px splatmap
2.5 Four separate DNTS textures
These 4 custom DNTS textures are painted with the DNTS splatmap. There are lots of textures to be found in other maps, and the size/intensity can be tweaked in-game and in the mapinfo.lua.
Most DTNS textures are 512 x 512 or 1024 x 1024 px and in DDS, PNG or TGA format
This one is also important to get high quality toning/colors/reflections. There are various skyboxes available.
Skyboxes are special cubemaps in the DDS format.
2.7 Reflect map
This is optional, and rarely used, but on icy or (very) reflective materials this can work very well. You will need a very good/fitting skybox to get the most out of a Reflectmap. For most normal terrains you don't need this, the Specular map (2.2) will suffice.
Ask Beherith what dimensions/format is best
The last part is combining all the above maps into one big .SD7 file.
This is in fact just a zipped folder, which generally consists of these parts:
- /Features (for map objects and their stats)
- /mapconfig (for placement of all map objects)
- /maphelper (needed to make it run)
- /maps (contains all maps from part 1 & 2)
- /objects3d (contains all models for all map objects)
- /unittextures (contains all textures for all map objects)
- mapinfo.lua (contains the full config/setting of the map)
- mapoptions.lua (optional for custom preset-setting - not all used in current lobby)
Soon(ish) available as well
Part #2 Heightmaps & Basics on Rendering
We will explain as much as possible about heightmaps, World Machine, textures and how to get all that ready to compile.
Part #3 Additional Maps & Details Painting
We will explain how get the additional maps (normal maps, specular maps) in shape, what formats to use, and how the DNTS splatmap works, including DNTS painting in Springboard.
Part #4 Objects & Grass
We will explain how to place objects (features) and Grass in a map. This involves Springboard and the in-game Grass Editor. You also learn how to export/convert it to be ready to use in your .SD7 map file.
Part #5 Your Map Config file
wWe will explain how to config your mapinfo.lua and also how to test and do final tweaks and polish
Part #6 Ready?
We will explain how to make your map ready for release.