Tiles

The tiles are an Outpost 2-specific bitmap graphics format. They span 13 tile sets, called "wells" (well0000.bmp to well0012.bmp), located within the maps.vol volume.

Published on 06/10/2018, updated on 03/18/2019

ADR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0000 0000 50 42 4D 50 xx xx xx xx  

The Tilesets / Wells contain the following:

well0000.bmp A 32x32px blue graphic - ideal as test if your own image loader works
well0001.bmp Contains light-coloured rock, mountain ranges on light-coloured rock and countless variants of impact craters in light-coloured rock
well0002.bmp Contains light-rock 'doodads' - i.e. elements that can be placed on light-rock for loosening up (or consciously as a structure, such as walls), including vegetation.
well0003.bmp Contains a crusty structure on light-coloured rock
well0004.bmp Contains dark rock, mountain ranges on dark rock and countless variants of impact craters in dark rock
well0005.bmp Contains dark rock 'doodads' - i.e. elements that can be placed on dark rock for loosening up (or deliberately as a structure, such as walls).
well0006.bmp Contains a crust-like structure on dark rock, as well as transitions between light and dark rock
well0007.bmp Contains lava including 4-5 frames of each animation of the same
well0008.bmp Contains sand and countless variants of impact craters in sand
well0009.bmp Contains sand 'doodads' - i.e. elements that can be placed on sand for loosening up (or deliberately as a structure, such as walls)
well0010.bmp Contains 48 transitions each from sand to light and dark stone
well0011.bmp Contains the polar caps of the map, with dark rock as underground
well0012.bmp Contains the polar caps of the map, with bright rock as background

It is recommended for an accurate implementation not to render the tiles in advance in order to cache them, because the data for the day/night cycle still has to be processed - and a lot of data would be generated.

The tiles are 8bpp graphics with indexed palettes of 32x32 pixel resolution each, which are arranged one below the other. In a tile set created in this way you can do much more

The main container consists of 2 sections: head and data.

Tiles Header

ADR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0000 0000 68 65 61 64 xx xx xx xx xx xx xx xx xx xx xx xx
0000 0010 xx xx xx xx xx xx xx xx xx xx xx xx  
Version? Data type: uint32
This could be a version specification of the file format; in all the files I had the value 0x02 in front of me.
Horizontal resolution Data type: uint32
Specifies how wide the image file is (in pixels).
For all wells of Outpost 2 the value 0x20 or 32 will be expected.
Vertical resolution Data type: uint32
Specifies how high the image file is (in pixels).
Colour depth? Data type: uint32
The meaning of this value is unknown.
Since it contains the value 8 in all checked files, it could be a color depth specification.
Colour depth? Data type: uint32
The meaning of this value is unknown.
Since it contains the value 8 in all checked files, it could be a color depth specification.

According to these specifications, a pallet file in the standardized RIFF format is created. The exact specification can be found - since the pallets also appear elsewhere - under "Palette".

Tiles Data

ADR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0000 0000 64 61 74 61 xx xx xx xx  

Finally the blank pixel data follows, from top left to bottom right line by line. The data value corresponds to the index of the color in the color palette.

The game engine draws the tiles *probably* on-demand.
Among other things, this seems to be due to the day-night cycle, which knows 32 gradations of individual tiles. Obviously 'a little' is subtracted from the brightness value. Exact values could not be determined yet, I work on the calculation basis

v *= (daylight / 48) + 0.25;

with the HSV data of the pixels, where daylight is a value of 0-31 and v is a value between 0-1. In addition, it must be taken into account that on the map there is also in each case an edge of 16 tiles to the left and to the right (which serves the invisible spawning of units).

In addition, the day-night cycle seems to update only one column of the map per gamecycle.
An accelerated day-night cycle looks as follows with this approximation:

comments

add a comment

Your comment may not be displayed immediately and will be moderated for spam prevention reasons.