[Tutorial] Making a Continent Map invisible.

Posted on Friday, October 9, 2015

I was asked how I was able to create a planet that had no continents on it yet still worked in game as a habitable planet like in my asteroid planet post:

So here is a quick guide on how I accomplish this.

As anyone who has attempted this already, simply removing the <CustomContinent> text in PlanetArtDefs will Automatically default the planet to a randomly generated continent. The avoid this you need to create a custom continent .dds texture file what when used in game will be recognized as continents but also be effectively invisible on the surface.

For this tutorial I have used the default Jupiter texture "" but your able to use any texture you like.

1: Create a new document the same size as the base texture, in this case 2048 x 1024.

2: Fill the entire image with a flat purple color. It needs to be R: 128 G: 128 B: 255 or Hex: 8080ff. The reason for this is the game is looking for height-map information in order to generate the continents in the game. R: 128 G: 128 B: 255 for a height-map is in fact 0, or in other words its telling the game it is the lowest point of the height-map and therefore don't change the colors. Other values will variate the color of whatever map you place it on which removes the seamlessness we are trying to achieve.

3:Now you want to create an alpha channel for the texture, in channels press create new channel which automatically creates an alpha channel.

For the alpha you want an exact copy of the black and white original image, the Jupiter image in this case. Now add pure black to pretty much the entire image except areas that you want the player to be able to place initial buildings. I used squares because it is the easiest way to prevent artifacts, which ill talk about in a minute. Also because they will be invisible to the player it wont matter what shape you make them, the only thing that matters is that there are areas like in the example image below that the game can read and recognize. Keep in mind that if you dont make the areas big enough you could run into an issue where the game wont let the player place addition terrain/tile upgrades as it will run out of available space. Unless that is the result your wanting.

Now if you were to save and test the texture as it is now you might notice artifacts around the edges of where the invisible continents are. As seen in Fig.A there is a blur/feathered edge around the continents edge. You must make sure that there is a solid black edge with no feathering (Fig.B ) otherwise the alpha map when applying the continent over the top of the base texture will cause the variations. Also the base texture you turned into the alpha must be unaltered and overlap exactly with your original base texture. Otherwise this might also cause artifacts. This is why I used squares as its the easiest to avoid this issue.


4: After all that is done the texture should be ready to save and use. If using photoshop with the DDS saving plug-in the settings you want to use are as follows:

Save Location: Galactic Civilizations III\Gfx\planets\custom_heightmaps

Things to note is the map needs to be 32 bpp and have an ARGB (Alpha, red, green, blue) channel. Under MIP Map Generation 'Generate MIP maps' must also be ticked. The File for this should also be around 10mb in total, if not check the DDS settings or check to see if your image is correctly 2048 x 1024 .

One thing to keep in mind, which I havnt come across but is worth a look if you have followed all these steps exactly and are still seeing artifacts is. If you reopen the DDS file, as you can see as in the DDS Clean-up image, that the second alliteration of the map when saved has blurred those lines that you have previously fixed. On lower end pcs or lower graphics settings I have no idea if the game uses that texture instead. I have a feeling it dosnt but worth a consideration.

5: if you already know how to edit the xmls to get it in game it should look something like this. Otherwise keep reading to see some basic important info about the xmls.

I wont go into full details as there are already other posts about getting your xmls working, but here are some of the important changes.

You need to add an entry in ContinentDefs:

 Set <EstimatedClass> to 1, which allows the game to be any PQ when generated. The PQ can be changed to a number in PlanetDefs.
Edit/add an entry to PlanetDefs:


<PlanetType> must be changed to Habitable, <PlanetClass> to whatever you like, I picked 5. keep in mind this number is limited by available space you have given in the alpha map for the custom continent.

And now we need to edit the PlanetArtDefs to actually apply the new continent to Jupiter.

Editing PlanetArtDefs:

-You must add <AltLatGradientTextureFile> and make it the same gradient texture the planet is using.
-Under <BaseLayerDiffuseColor>, <Alpha> must be set to 255. Otherwise it will change the color of your continent.
-<CustomContinent> must be added, and reference the internal name of your new <ContinentDef>





And that's it, unless i have missed something you should now be able to make any type of planet you like have invisible continents. Feel free to ask any questions