Complete.Org: Mailing Lists: Archives: freeciv-dev: November 2002:
[Freeciv-Dev] civ3 graphics system
Home

[Freeciv-Dev] civ3 graphics system

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] civ3 graphics system
From: Jason Dorje Short <vze49r5w@xxxxxxxxxxx>
Date: Fri, 22 Nov 2002 01:36:27 -0500
Reply-to: jdorje@xxxxxxxxxxxxxxxxxxxxx

Jason Dorje Short wrote:
Raimar Falke wrote:

On Thu, Nov 21, 2002 at 07:19:50AM -0500, Jason Dorje Short wrote:


While I don't have any clue about how does the graphic engine of civ3
works the contents of this modpack
http://www.civfanatics.net/uploads2/cordy-terrain.zip reveals that
they also work with a system which is similar to our old one. Leaving
the extra height out of this the tiles of Mountains-snow.pcx are very
similar to our 16 tiles. In the x* files they blend three terrain
types. And yes these are a lot of tiles.

I've been looking at this civ3 modpack. The tile system is slick, very slick. But it is nothing like either our civ1 or civ2 tile systems.

Most of the terrains are not properly tile-based - they draw the intersections of tiles.

For instance, look at the xdgp file. This file contains a 9x9 grid of graphics. But none of these graphics corresponds a freeciv "tile" (which is a map square). Rather, they contain the 3^4 = 81 different ways that _d_esert, _g_rassland, and _p_lains can intersect. Thus each graphic contains one-quarter of the graphics for four different adjacent tiles. Note that this is FAR superior to the 6^4 system I had suggested, since drawing a tile will take into account all 8 adjacent tiles (not just the 4 orthogonal ones).

xtgc = tundra + grassland + coast
xpgc = plains + grassland + coast
xggc = grassland + grassland + coast [1]
xdpc = desert + plains + coast
xdgp = desert + grassland + plains
xdgc = desert + grassland + coast


[1] Looks like there are two types of grassland.

I'm not sure what happens when four different types of terrain meet. Perhaps the map generator guarantees this will never happen. And I'm also not sure what happened to arctic - does civ3 not have this terrain type? And it appears tundra cannot border desert or plains.

The "X" here seems to indicate that these are the basic terrain types (desert, tundra, plains, grassland, coast), which are being blended in some sort of eXtreme fashion. Or something :-).

Also note, if we add back in arctic and allow any tile to border any other, we're back to needing 6^4=1216 tiles (instead of just the 6*3^4=486 that they have). But with the "draw the intersection" system, they will look _much_ better.

Irrigation is drawn on a per-tile basis. Each irrigation file contains a 4x4 grid of tile graphics, corresponding to the 2^4=16 possiblilities for adjacent irrigation. There are two different irrigation files, for PLAINS and DESETT. I'm not sure what PLAINS and DESETT are.

Mountains and hills are drawn on a per-tile basis. 'xhills' contains a 4x4 grid containing the 2^4=16 possible hills. 'mountains' does the same for mountains. However, the graphic does not fill the entire tile - an adjacent base terrain must be drawn "underneath" it to get the right blending. I'm not sure how the adjacent terrain should be chosen. I also suspect that mountains and hills are considered equivalent for the adjacency check.

Similarly, 'hill forests' contain 16 identical hills (identical to the original 16, that is), but instead of being adjacent to an X terrain they are adjacent to forest. So there's forest on the slopes of the hill. 'hill jungle' does the same thing, for adjacent jungle. I suspect that if a hill is not ENTIRELY surrounded by hill or jungle, the basic tile will be used.

Similarly, there is a 'mountain forests' and 'mountain jungle' files for mountains.

'Mountains-snow' contains the 16 mountains tiles, but they have snow on them. I suspect these can also be blended naturally with the other mountains and with hills.

Forests and jungles I still do not understand.

jason



[Prev in Thread] Current Thread [Next in Thread]