Complete.Org: Mailing Lists: Archives: freeciv-dev: November 2002:
[Freeciv-Dev] Re: (PR#2369) iso-view eye candy
Home

[Freeciv-Dev] Re: (PR#2369) iso-view eye candy

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#2369) iso-view eye candy
From: Jason Dorje Short <vze49r5w@xxxxxxxxxxx>
Date: Thu, 21 Nov 2002 07:19:50 -0500
Reply-to: jdorje@xxxxxxxxxxxxxxxxxxxxx

Raimar Falke wrote:
On Thu, Nov 21, 2002 at 04:32:21AM -0500, Jason Dorje Short wrote:

Thus, my feeling is that the old method should be left as-is for now. As the reduction of gui-xxx/mapview.c continues hopefully we'll reach a point where non-iso tilesets can use the 'new' drawing method.


This has nothing to do with mapview.c. It is all about what tilespec.c
returns via fill_tile_sprite_array(_iso).

Look at pixmap_put_tile and pixmap_put_tile_iso in mapview.c. Some of the differences are because of isometric/non-isometric, but many are because of the "new" versus "old" drawing systems.

I think that the "new" isometric system is worse. Reason: without
information about the neighbor tile you can't do anything depending on
them. This means that the isometric system will always have quadratic
(or parallelogram after the transformation) tiles. This is IMHO
bad. IMHO we haven't fixed this not because the new system is better
but because we don't have this much graphic content (only one instead
of 16 versions of a terrain tile). If we at some point fix this the
eye candy becomes rather useless. Because then you only have the
guarantee that the center region of a tile contains the original
terrain type and so you can only place the cactus or skull at the
center.

I _strongly_ disagree. The old system is fundamentally broken, whereas the new system is elegant and extensible.

An example of the limitations the old system runs in to is that 2^4=16 tiles simply is not enough. If you manually blend this tile with the adjacent one, you have to assume all adjacent tiles look the same. In trident, this means that if desert and plains - or desert and arctic! - are adjacent, there will be grassland between them. To account for all possibilities, you will need at least 5^4=625 tiles for each terrain type, since each adjacent tile can be one of any of the 5 basic terrain types (ignoring jungle).

In isotrident, the blending is done automatically using a mask (called dithering in the code, although Vasco tells me it shouldn't be). This means grassland, plains, desert, tundra, and arctic (which are all simple 2d terrain types) can easily intermix.

I've put up some screenshots at http://freeciv.org/~jdorje/. Compare trident.png to isotrident.png. The difference between the two is incredible. The new system is overwhelmingly better.

Especially, look at the border between the grassland and desert in the upper right of the screenshots. Even this common scenario can't be handled by the old system.

The new system is extensible. Right now there is a single blending mask that provides the border betwen two terrains. To get a different blending depending on what other tiles are adjacent, all we have to do is change the mask. Some thought will have to be given on how this will work with eye candy, but this is not insurmountable.

So if you want to improve the diversity of the isometric view I'm for
adding these 16 variations of the base tile. This gives diversity
_and_ non square tiles.

Unifying the two drawing methods is a nontrivial task.

jason



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