IsoStrat Graphic Specifications

Filetypes

I am almost exclusively using 8bit .png files with very limited palettes. This keeps the filesizes tiny and the style stylish... in an oldschool sort of way.

Transparency

All transparency is handled through colorkeys. That is, a pixel that needs to be transparent in an image is colored with the colorkey color, full green (0,255,0). It's the least annoying fullbright color to look at, I think. There is no per-pixel alpha used!

ImageSheets

The ImageSheet is a method I use for storing large numbers of related images that are the same size. So if my Terrain images are 128x64, I can make a sheet that contains four Terrain images on an image that is 512x64, then just give the base size while loading the ImageSheet.

The sub-unit of an ImageSheet, by the way, is called an "Entry" in the Image Sheet. Anything that stores a reference to the Entry in an ImageSheet stores the Entry as a number and the ImageSheet's name as a string. By doing this it is a simple matter to assign random Entries from ImageSheets, to assign Entries in linear succession (to make an Animation), or to assign Entries based on some set of rules (as in Terrain transition fringe).

Do note that an ImageSheet does not have to contain the images all side by side -- the ImageSheet maker automatically iterates through as much ImageSheet as needed, starting at the upper left, scrolling across to the right, then down to the next line, across, etc. like reading a book. So four tiles could be stored four across, two by two, or four down, they'll all be accessed by Entry numbers in the same manner.

An image sheet containing four different tiles of terrain in four entries:

Animation

As stated, an animation is contained in an Animation class which stores a reference to an ImageSheet as well as various other helpful variables, like the number of milliseconds per-frame to animation at. An Animation will be able to be inserted almost anywhere in the in-game graphics that any other image would be able to go.

An image sheet containing eight frames of animation:

UI graphics

BorderStyle

A BorderStyle graphic is an image made with parts sized to particular ratios so that they can be cut up and tiled across the borders of GUI Panels. The ratios are as follows:

An actual BorderStyle graphic:

A rough diagram of how BorderStyle images are chopped up and rendered:

ButtonStyle

ButtonStyles are a collection of three BorderStyles, one for each button state: up, over, down. The components of ButtonStyles have a base name, eg. "green", then a suffix for the three states, appropriately "Up", "Over", and "Down".

A collection of BorderStyles which form a ButtonStyle:

Slider Style

A SliderStyle is a similarly organized graphic used to make a sliding scrollbar such as the one you probably see on the right side of your screen while reading this document. The dimension ratios of their components are pretty simple:

This is a rather small SliderStyle graphic:

Fonts

A font is a graphic made up of black (and only black) pixels on a colorkey (and only colorkey) background. The colors are necessary because palette shifting is used to render differently colored text. The characters are drawn on an 8x16 grid of squares of whatever size is desired. In the case of my example, the CharSize is 6x16 pixels, and this is appended to the name of the font, eg. "fontName6x16.png". The characters in the font must always be drawn in this order:

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890!@#$%^&*()-_=+/\|[]{};:\'<>,.?`~ " ...(and so on with unimplemented characters, ahem.)

This is a font graphic:

In-game Graphics

Terrain

Terrain Tiles

The standard dimensions of Terrain Tiles is 128x64. They are stored in ImageSheets, and I have been using sets of eight for no particular reason.

An sheet of four variations on dirt:

TerrainFringe

TerrainFringe is built from quarter-size (64x32) sub-tiles called Quads. They rows of four are organized as follows:

A full sheet of dirt fringe:

TerrainEffects

TerrainEffects are the same dimensions as Terrain tiles and as such as used for "flat" effects drawn on top of Terrain. These may include 'lone' effects like rocks, tufts of grass, or patches of dirt, or they may be neighbor-dependant like rivers and roads, or fully fringed like with TerrainFringe above, or even animated, like for waves in the ocean.

Four variations on brown rocks:

IsoFeatures

IsoFeatures are generally but not necessarily natural things drawn over TerrainEffects and Terrain which have greater height than a Terrain tile, including forests, hills, mountains, ... very large rocks... ...

This is a sheet of four variations on lone mountains:

This is a sheet of IsoFeature fringe in the same format but greater height than the Terrain fringe above; It may also be used as "innie" fringe rather than "outtie" fringe, if that makes sense:

Entities

I haven't implemented any entities yet, but they'll probably follow patterns similar to everything else. They may be implemented in a manner that allows them to act like TerrainEffects or IsoFeatures or something different, I haven't done it so I can't say for sure. Anyway, this is all the fun stuff: Cities, armies, farms, bridges, ships, explosions, smoke, factories, etc.

But if I did make entities, they might look like this (though in correct dimensions, not on 100x50 tiles, and without the terrain underneath):

In fact, here are some city tiles of Quad size to be used to randomly build full-sized tiles of buildings for cities (the dark green underlay is just for reference and is removed in the actual game graphics):