Note .. Since this was first published, changes to photoshop have made editing of maps a little easier.


Hi all,

Since the Slitherine forum won’t allow a noob like me to post spammy pictures I’ve copied the post here ..

This has been deterring modders for some time so hopefully this will ease their confusion . Hopefully …

I’ll try to give a quick run down on how to prepare the campaign maps. It’s not difficult or complicated but Photoshop makes it a pain in the backside. Maybe its easier with Gimp or some other tool because it’s Photoshops colour profiling that makes things awkward. I had long discussions with Adobe people about it but, while they were very helpful, their response was .. that’s the way it’s meant to work.

So if you’ve done any texturing work you’ll understand the principal of using texture channels for things other than colour. ie. RGB can be used for things other than Red, Green and Blue. They can represent the glossiness, height, opacity, spec.. etc.. Well the campaign maps work the same way. There are three bitmaps that make up each map. The first two are basic colour maps that you see on screen, each coloured to represent one side of the conflict. I won’t discuss these here as you can approach that however you like.

The three bitmaps.

It’s the third, the CampaignDisplayMap, which uses its channels to define the different areas on the map, that needs some explanation as seems to be the bane of modern lives. ¬†Again most of the process of creating it is down to you and your choice of software as the principal is the same.

The RGBA channels are used for

R – Used to define the areas. Solid black and white. No anti Aliasing.
G -Contains the selection outlines. So when you mouse over an area and you see the pink outlined edging, That’s defined here. You can create this while you’re making your main map images.
B – Not used.
A – The greyscale values here (0-255) are used to give each area a number. This allows the game to know one area from another so you’d fill the first area with 0 the next with 1 then 2 and so on in some kind of order. These numbers are referenced in the .dat file but I’ll leave that to Richard to explain. (no anti aliasing.)

The R, G and A channel. I’ve increased the contrast in the A so its more obvious

If you’re signed up for Photoshop then I need to outline the dificulties with the Alpha since this is the most crucial element you won’t figure from just looking at the files.

Problem : When assigning greyscale values, Photoshop doesn’t support 0-255 .. you can only input percentages .. 0-100. You can’t input the range of values actually supported.
Solution : Use the RGB values instead. eg. (1,1,1) (130,130,130) (5,5,5). Create the image in a regular RGB document and then copy/paste it into the A channel of the final map.

Problem : Copying RGB values into a greyscale channel forces Photoshop to use a colour conversion profile. Unless you’re using some kind of linear profile (which is very unlikely) then these conversion profiles do not match 1:1 on a straight line. ie 128,128,128 RGB does NOT map to 50% grey. It will depend on the colour profile you’re using. The result is that Photoshop won’t give you a 128 value of grey (its often 1 or 2 points out) and adds dithering to your solid colour. Noise.

An example of the kind of noise Photoshop will introduce with incorrect colour profiling.

Solution (Partial) : In your Colour Profile, if RGB is set to sRGB .. ensure your Gray profile is set to sGray. RGB and Gray have to use the same profile. By default they don’t.

Problem : This works for the lower end, the blacks. Its probably ok for the first 30 values which should be enough but you’ll still get noise in the higher values – the white space.
Solution 1: Paint out the noise. This is more awkward than it sounds since it’ll be near impossible to tell a 254 pixel surrounded by 255 pixels and automated noise reduction tools make it worse.

So the trick is to use a levels layer adjustment to compress the colour range ( resulting in expanded values .. 254 becomes, for example, 100 ) to something you can see. Then paint 255 over the noise. This can also be used to paint any of the black areas that have noise but you’ll have to set the sampling/inkdropper tool to sample the correct value from the underlying layer. Tell it to ignore the affect of adjustment layers from its drop down. The chances are you’ll miss some but as soon as you get it into the game it’ll stand out like a sore thumb . . black or pink noise looking really bad.

Solution 2: Use a flood fill of 255 with a low tolerance threshold. This should fill in over the 254 pixels since they’re close to 255 but should ignore the dark grey blocks. The one aspect of this I don’t like is that it can be difficult to tell if something has screwed up. If the tolerence is set correctly then this is very unlikely and you can also do this for the grey blocks. Watch out for small areas where the flood fill cannot reach.

I’m sure that’s clear as mud but most of it will be obvious when you open up the relevant files.


EDIT: Just wanted to add that there’s another file .. .. that is used when selecting a campaign .. you’ll need Nvidias texture tools for Photoshop to be able to save out and load the .dds. Naturally it’s old, buggy and Nvidia, despite it being the only tool available to support their own graphics cards and file format, no longer support it (!!). It also doesn’t work in Photoshop CC. You need CS5 or 6. Unfortunately Adobe also refuse to support .dds. It would appear that, yet again, many free programs do a better job than the stupidly expensive professional.

NOTE : it does now work in Photoshop CC 2018. You’ve got to copy it to the correct folder manually.

Nvidia Texture Tools

or search for the Intel dds plugin. It offers slightly different features and should be installed alongside Nvidia.