The following files are now generated from the land.tmx map:
land.tmx is a Tiled map. (The conversion is performed by the kbtmx.py
python tool)
Free module reads credits from credits.txt file. Whitespace is important and should be used for formatting.
Free module reads ending text(s) from endwin.txt and endlose.txt files. Note, that each file is formatted to fit into 21 lines and 20 columns, and also uses several %s
and %d
to display player's name, title and final scores.
Free module reads signpost text from signs.txt file. Each sign takes two lines of text. Thus, to edit sign N, goto line N/2. Each line should not exceed 27 characters to fit into classic UI.
Villain descriptions are kept in {dos-villain-name}.txt files. See below for a list. Whitespace is important and should be used for formatting. Don't forget to leave space for villain portrait. Rewards are currently plain-text and not %d, to comply with DOS villain format, this might change in the future!
Example for DOS-inspired mury.txt:
Name: Murray the Miser
Alias: None
Reward: 5,000 gold
Last Seen: %s
Castle: %s
Distinguishing features:
Threadbare clothres, bald
patch with hair combed to
cover it, incessant cough.
Crimes: Murray is wanted for
various petty crimes as well
as for treason. He allowed a
group of pirates to enter the
castle and free criminals.
Free module uses PNG format for most of it's graphics. Filenames follow the {dos_image_name}{-optional_frame_number}.png pattern.
DOS image files were capable of keeping several distinct images (AKA "frames") in one file. For example, troop.256 in DOS version contains 4 separate 48x34 px images, which could be (and are) loaded separately. To simulate this behavior, troop.png in the Free module is 192x34 px wide (4 frames * 48 px = 192 px), and contains all 4 frames.
But it is also possible to keep each frame in a separate file. To specify a particular frame, -optional_frame_number (including the dash) could be added to the filename. For example, select.256 in DOS version contains 3 images: 288x184 px character selection screen, 320x5 px UI border and 48x44 px artist's signature. In Free module, each such image is kept as a separate file, called select-0.png, select-1.png and select-2.png.
Various troop stats (such as name, hit points, abilities) are kept in troops.ini file, with [troop<INDEX>]
sections where INDEX is an integer from 0 to 25. That maps directly into the list below.
Free module reads troop graphics from {dos-troop-name}.png files. Such files should contain 4 frames of troop animation, each frame being 48x34 px wide (192x34 px total).
List of DOS troop names:
Villain names and others stats are read from villains.ini file. Each section is should be called [villain<INDEX>]
, with INDEX being 0 to 16, mapped into the table below. For example, first villain could be defined like this:
[villain0]
name = Murray the Miser
file = mury
reward = 5000
army0 = 50 x Peasants
army1 = 20 x Wolf
army2 = 25 x Militia
army3 = 30 x Peasants
army4 = 25 x Peasants
Free module reads villain portraits from {dos-villain-name}.png files. Such files should contain 4 frames of animated villain portrait, each frame being 48x34px wide (192x34px total).
List of DOS villain names:
Tilesets are kept in tileseta and tilesetb files. Tilesize is 48x34. Both files contain 36 tiles. This leads to 72 tiles used in the game. Additionally, tilesalt contains 3 replacement tiles for continents 1-3. Those are embedded at tiles 0x11-0x13.
Combat tiles are kept in comtiles -- there should be ...
240x102 px.
A troop will be superimposed on the bottom left corner.
96x102 px.
Might share graphics with select-0 screen.
Character selection screen. 288x184px.
ref:
endpic-1 - Game lost screen. 144x170 px.
select-1 -- UI separator border. 288x184 px.
Free module uses openkb8x8.bmp as it's font. The file is 16x16 table (128 ascii symbols) kept as 1-bit bmp.
Free module SHOULD first try tuneNN.ogg file, then tuneNN.wav and then tuneNN.ini when searching for tune files.
Each tune has an assigned number NN, forming the following list:
The .ini format follows this convention:
[palette]
C2=220
A1=250
L1=300
[tune]
play=L1 A1 C2 A1 C2
In the [palette]
section, you can specify any frequency (in hertz) for any desired note. You can also control the "duration palette", for the "note length" (L
) command (in milliseconds).
In the [tune]
section, you must provide a play=
entry with the melody spelled out. The synatx loosely follows QB "play" commandstring. You must provide a set of notes
to be played, separated by space. You can pick a note from any octave (C2 C3
), and set note durations using the L
command (by default, L1
stands for 1000ms, L2
for 500ms, and so on). This can be controlled from the palette section, for example, the listing above sets L1
to mean 300ms "note length".