• Check out the results of the Techtree Contest #19!
  • Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

Cliffs as 3d models

Standard cliff models are found at these paths:
  • Doodads\Terrain\Cliffs\ – standard natural cliffs
  • Doodads\Terrain\CliffTrans\ – cliff transitions (ramps)
  • Doodads\Terrain\CityCliffs\ – city/castle walls
  • Doodads\Terrain\CityCliffTrans\ – city cliff transitions
The textures for cliffs use ReplaceableTextures\Cliff\Cliff0.blp (natural cliffs) and ReplaceableTextures\Cliff\Cliff1.blp (city/artificial cliffs).

If you want custom cliffs as 3D models to place manually (like doodads),

Look for things like "Frozen Cliff", "Rock Cliff", or "Ruined Wall". Import them just like any other model, and you can place them as doodads to create custom cliff edges that aren't tied to the terrain height system .

The limitation is that the game's built‑in terrain cliffs (the ones you paint with the terrain palette) only support two types: natural (Cliff0) and city (Cliff1). To add more cliff types to the terrain palette, you'd need to edit CliffTypes.slk and create a custom .mix archive which is advanced modding territory . But if you just want cliff-like models to place as objects, downloading from Hive is the easy way.
 
Can i insert these cliff 3d models as doodads already? Or will i need to import them first?
You can use the built‑in cliff models as doodads without importing anything. In the Object Editor, go to Doodads or Destructibles, create a new custom object, and set its Art – Model File to one of the paths I mentioned, like Doodads\Terrain\Cliffs.mdl The model will appear in the editor and in-game. For custom cliffs downloaded from the Hive, you'll need to import the .mdx and its textures first, then set the path accordingly.
 
The limitation is that the game's built‑in terrain cliffs (the ones you paint with the terrain palette) only support two types: natural (Cliff0) and city (Cliff1). To add more cliff types to the terrain palette, you'd need to edit CliffTypes.slk and create a custom .mix archive which is advanced modding territory . But if you just want cliff-like models to place as objects, downloading from Hive is the easy way.
@the.Axolotl Ah good that I found this, seems that you know the truth! You know things about cliffs.
See on this picture, I replaced feelwood's tileset textures to be like this, but I have visual problem with cliffs, seems that they are looking for old grass and dirt that messes with mine. How do I fix that? I did allow local, so this will be replaced for all maps, but seems only cliff0 and cliff1 works when I change that, every cliff in other tilesets got messed up so I cannot touch those.
cliff error.webp
 
@the.Axolotl Ah good that I found this, seems that you know the truth! You know things about cliffs.
See on this picture, I replaced feelwood's tileset textures to be like this, but I have visual problem with cliffs, seems that they are looking for old grass and dirt that messes with mine. How do I fix that? I did allow local, so this will be replaced for all maps, but seems only cliff0 and cliff1 works when I change that, every cliff in other tilesets got messed up so I cannot touch those.
View attachment 588718
Yeah, that's because cliffs are not driven purely by the terrain tile textures themselves. The cliff meshes reference specific cliff texture assets separately, which is why replacing only the ground tiles leaves the cliff walls still looking for the original dirt/grass blends.

From what I understand, Cliff0 and Cliff1 are the only globally shared built-in cliff sets (natural/city), while the other tilesets reference their own cliff texture combinations internally. So when you replace Felwood textures globally, the cliff wall textures for other tilesets still expect the original assets and the blending breaks visually.

Try one of these:

- replace the corresponding cliff textures too (the cliff wall BLPs, not just ground tiles);

...or edit the tileset/cliff definitions in SLK data so the cliffs point to your new textures properly

or try importing custom cliff models/textures per map instead of globally replacing terrain assets....

I know the theory behind it, but I haven't personally gone deep into editing CliffTypes.slk + custom MPQ/MIX archives enough to give you an exact production-safe workflow 😅

But the issue itself is definitely the cliff texture references, not the terrain tile replacement alone.

I found these resources, might be helpful looking into them:

 
Last edited:
Thank you for response man!
- replace the corresponding cliff textures too (the cliff wall BLPs, not just ground tiles);
I tried that, seems not working. If I am correct there is C_Cliff0.blp and C_Cliff1.blp for Felwood, and thats not working.
...or edit the tileset/cliff definitions in SLK data so the cliffs point to your new textures properly
THis! But ido not know how to do this since its all i ncodes and weird names ans fields there. Totally confusing.
or try importing custom cliff models/textures per map instead of globally replacing terrain assets....
That works but I need globally because I adapted tileset to something else and will affect stock maps as well.
But the issue itself is definitely the cliff texture references, not the terrain tile replacement alone.
Yeah, I do not know why they made this so stupid. As you have many tilesets, like normally tiles, there should be simple cliff for each, each one having cliff 1 and 2, so if we have 12 tilesets there should be 24 and thats all. They made this hell complicated.
 
Thank you for response man!

I tried that, seems not working. If I am correct there is C_Cliff0.blp and C_Cliff1.blp for Felwood, and thats not working.

THis! But ido not know how to do this since its all i ncodes and weird names ans fields there. Totally confusing.

That works but I need globally because I adapted tileset to something else and will affect stock maps as well.

Yeah, I do not know why they made this so stupid. As you have many tilesets, like normally tiles, there should be simple cliff for each, each one having cliff 1 and 2, so if we have 12 tilesets there should be 24 and thats all. They made this hell complicated.
Np, brate 😄

Yeah, terrain system is honestly ancient black magic at this point. The annoying part is that cliffs are not handled nearly as cleanly as regular terrain tiles. Terrain textures are relatively straightforward, but cliffs seem to be tied into multiple internal references depending on tileset combinations, mesh variations, and SLK definitions.

And yeah, I also expected it to be something simple like:
  • Tileset A -> Cliff0/1
  • Tileset B -> Cliff0/1
done.
But instead Blizzard made this hybrid system where:

  • terrain tiles,
  • cliff meshes,
  • cliff texture atlases,
  • and tileset metadata
all reference each other in weird ways 😭

If replacing C_Cliff0.blp and C_Cliff1.blp alone did not fix it, then the engine is almost certainly still pulling cliff combinations from the SLK definitions or from additional texture references tied to the tileset itself.

Honestly, at that point I'd probably start by looking into:
  • TerrainArt\CliffTypes.slk
  • Terrain.slk
  • maybe TilesetData.slk
and tracing which cliff texture paths the tilesets actually request internally.


I wish I could give you a clean workflow, but this is one of those deep engine areas where even experienced modders mostly learned through experimentation instead of documentation.
 
Np, brate 😄
CARE CARSKI CARINO IZ CARIGRADA :cgrin:
I wish I could give you a clean workflow, but this is one of those deep engine areas where even experienced modders mostly learned through experimentation instead of documentation.
Well in other words I have two options:
1. To ignore those two tiles that cliffs are using (meaning for lordaean summer if we have 7 tiles, then I can edit 5, leaving these two) to prevent visual issues with current maps
2. To open any map and import cliff0 and cliff1 to solve this.
 
Back
Top