<?xml version="1.0" encoding="iso-8859-1"?> <html> <head> <meta name="generator" content="HTML Tidy for Linux/x86 (vers 1st July 2002), see www.w3.org" /> <title>The Colossus File Formats</title> <!-- $Id: FileFormat.html 3651 2009-02-26 18:05:56Z dolbeau $ --> </head> <body> <h1 align="center">The Colossus File Formats</h1> <div class="p"> <strong>NOTE: THIS IS COMPLETELY OUT OF DATE. WE HAVE SWITCHED TO XML.</strong> </div> <div class="p"> <h3 align="center">Romain Dolbeau</h3> </div> <div class="p"> <h2>Introduction</h2> </div> <div class="p"> This file documents file formats for the various datafile used by Colossus. In all these files, comments start with a "#" and extend to the end-of-line. </div> <div class="p"> All files, and the two subdirectory "Battlelands" and "images" should be in the same directory. Default files live in "Default", "Default/images" and "Default/Battelands". </div> <div class="p"> <h2><a id="tth_sEc1" name="tth_sEc1">1</a> The <tt>README</tt> file</h2> </div> <div class="p"> This file describe the variant. It can be either a pure text file or a HTML file. It must be named README, README.txt (both should be pure text) or README.html (should be HTML) and live in the same directory as the <tt>VAR</tt> file (see below, section ). It's displayed in the opening dialog. </div> <div class="p"> <h2><a id="tth_sEc2" name="tth_sEc2">2</a> <tt>MAP</tt> file format (default file used: "Default/Default.map")</h2> </div> <div class="p"> This file defines the Colossus Masterboard ; what terrain type to use for an hex and what sort of exit to which hex. It's composed first of a pair of integers represanting the map size (horizontally then vertically), and then of a succession of lines: </div> <div class="p"> <case_label> <terrain_name> <exit_1_label> <exit_1_type> <exit_2_label> <exit_2_type> <exit_3_label> <exit_3_type> <X_pos> <Y_pos> </div> <div class="p"> All of those should be on one line. </div> <div class="p"> <ul> <li><case_label> is the numeric label of the Hex.</li> <li><terrain_name> is the name of the terrain type of the hex (same as in the <tt>TER</tt> file).</li> <li><exit_N_label> are numeric labels for exits 1-3, or 0 for no (second, third) exit.</li> <li><exit_N_type> is the type of exits (<tt>ARROW</tt>, <tt>ARROWS</tt>, <tt>ARCH</tt>, <tt>BLOCK</tt>) ; for exit of label '0' (no exit) any of the four value can be used, as exit type is irrelevant.</li> <li><X_pos> and <Y_pos> is the position X, of the Hex on the masterboard. They both start from 'zero', on the first line and first column. Not all lines are different (i.e. on the default master board, case 126 and 125 are on the same line number 0 and on columns 4 and 3).</li> </ul> </div> <div class="p"> NOTE: Put at least MAXPLAYERS (see below the VAR file, section ) towers currently, as having less Towers than players is going to cause problems. The upper number is not constrained (or isn't supposed to be), and neither are the labels. For readability reasons, it's probably better to use 100 to 900 as the labels for the first 9 towers. </div> <div class="p"> WARNING: The way the Hex are displayed (pointy part upside or downside) depend on the parity of the X+Y sum. It is possible to create a perfectly legit <tt>MAP</tt> where all the Hex are upside-down ! Should this happen, the only way to fix this 'feature' currently, is to move everything one column right <em>or</em> one row down, i.e., force the reversal of the parity. Sorry about that, the problem hasn't yet been solved. </div> <div class="p"> <h2><a id="tth_sEc3" name="tth_sEc3">3</a> <tt>TER</tt> file format (default file used: "Default/Default.ter")</h2> <a id="TER" name="TER"></a> </div> <div class="p"> This file define the Colossus Recruit Trees ; what can recruit and be recruited on what terrain. it's composed of a succession of line of four different kind. The first two are mandatory (at least one of each should appear), the other two are optional (default values are supplied). </div> <div class="p"> <h4>The first kind is:</h4> </div> <div class="p"> <terrain_color> <terrain_name> <regular_recruit> ( <recruiter_needed> <recruit>)+ <terrain_display_name >? </div> <div class="p"> <ul> <li><terrain_color> is the color used to display this terrain type, see <tt>HTMLC</tt>olor.java for the various available color.</li> <li><terrain_name> is the descriptive name of the terrain (Brush, ...) ; it is used also as the Battlelands file name. If <terrain_display_name> is not present, it is also used as the display name. Must be unique.</li> <li><regular_recruit>> is a boolean (i.e. true or false) telling if a Creature can recruit below or above its rank (usually true except for Tower).</li> <li><recruiter_needed> is the number of lower-rank creature needed to recruit the next creature.</li> <li><recruit> is the name of the recruit creature (Gargoyle, ...)</li> <li><terrain_display_name> is an optional string, used to display the name of the terrain on the MasterBoard, and as the name of the overlay file (see section "Images files" below). If absent, <terrain_name> is used instead.</li> </ul> </div> <div class="p"> The last two as a pair can be repeated any number of time. Any later creature can recruit a previous one or itself. A creature can recruit the next one only if they are numerous enough, as indicated by the <recruiter_needed> <em>of the recruit</em>. </div> <div class="p"> Three specials names exist (pseudo-creature): <ul> <li><tt>Anything</tt>, which means any creature can recruit the following creature provided they are numerous enough</li> <li><tt>AnyNonLord</tt> which is the same but excludes Immortal (Lord or DemiLord) from the possible recruiters</li> <li><tt>Lord</tt> which means a Lord (Angel, Titan, Archangel, etc., but not a Demilord) can recruit the following creature.</li> </ul> </div> <div class="p"> Note that for <tt>Lord</tt> and <tt>Titan</tt>, only one recruiter is needed, and the number before the recruits indicate how many of the creatures <em>before</em> Lord or Titan are needed. </div> <div class="p"> When <recruiter_needed> is 0 (zero), then the creature can be recruited, but the recruiter will remain anonymous. This is useful only if the recruiter is <tt>Anything</tt> or <tt>AnyNonLord</tt>, of course. Don't use with a regular recruiter. </div> <div class="p"> When <recruiter_needed> is -1 (minus one), then the creature can recruit, but cannot be recruited. Such creature, and the pseudo-creature above, are ignored for the purpose of normal recruitements. If you put <tt>Titan</tt> as a recruiter, it should <em>always</em> be -1, as beeing able to recruit Titan is going to cause lots of trouble. </div> <div class="p"> Exemple: if you use <tt>0 Anything 3 ogre 0 Titan 2 Gargoyle</tt>, you will be able to recruit an Ogre with any 3 creatures or with a Gargoyle, and you will be able to recruits a gargoyle with two Ogres or the Titan. You won't be able to recruit <tt>Anything</tt> or <tt>Titan</tt>, of course. </div> <div class="p"> Any line that will be used as a Tower (See Battlelands below) should follow these rules: There should always be at least 3 regular creatures, recruitable with zero of Anything, at the begining. The line should be marked as "non-regular" recruitments. The 3 creatures will be used as starting creatures for the Player starting in that kind of Tower. </div> <div class="p"> Both <terrain_name> and <terrain_display_name> can be either purely alphabetical, or alphanumerical plus spaces between doublequotes ""'. If a filename is involved, all spaces will be replaced by underscores "_". </div> <div class="p"> <h4>The second kind is:</h4> </div> <div class="p"> <tt>ACQUIRABLE</tt> <point_value> <acquirable_name> (( <terrain_name>,)* <terrain_name>)? </div> <div class="p"> <tt>ACQUIRABLE</tt> is the literal string <tt>ACQUIRABLE</tt> </div> <div class="p"> <ul> <li><point_value> is the amount of points needed to recruit the Acquirable</li> <li><acquirable_name> is the name of the Creature to consider as an Acquirable</li> <li><terrain_name> is an (optional) comma-separated list of terrain name (see above) that restrict the availability of the Acquirable. If the list is ommited, the Acquirable can be recruited everywhere.</li> </ul> </div> <div class="p"> Note that all <point_value> must be even multiple of the first <point_value> ; other values are erroneous and will be flagged as such. Also, the first acquirable creature should be a Lord, and is recruited in the starting stack (it's the 'primary' acquirable creature). </div> <div class="p"> Multiple line can be present, in which case, the behavior is the same as if all the Acquirable where on one line. Order of Acquirable is not important, except for the first one, which defines the reference for <point_value> and the primary acquirable creature. </div> <div class="p"> <h4>The third kind is:</h4> </div> <div class="p"> <tt>TITANIMPROVE <point_value></tt> </div> <div class="p"> To give the amount of points required for the Titan to improve by one. Said differently, Titan power is equal to 6 + ( <player_points> / <above_value>). The default supplied value is 100. </div> <div class="p"> <h4>The fourth kind is:</h4> </div> <div class="p"> <tt>TITANTELEPORT <point_value></tt> </div> <div class="p"> To give the amount of points required for the Titan to be able to Titan Teleport. The default supplied value is 400. </div> <div class="p"> <h2><a id="tth_sEc4" name="tth_sEc4">4</a> <tt>CRE</tt> file format (default file used: "Default/Default.cre")</h2> <a id="CRE" name="CRE"></a> </div> <div class="p"> This file define the Colossus Creatures ; it's composed of a succession of lines: </div> <div class="p"> <tt><name> <power> <skill> <rangestrikes> <flies> <nativeBramble> <nativeDrift> <nativeBog > <nativeSandDune> <nativeSlope> <nativeVolcano> <nativeRiver> <nativeStone> <nativeTree> <waterDwelling> <magicMissile> <summonable> <lord > <demilord> <maxCount> <pluralName> ( <baseColorName>)?</tt> </div> <div class="p"> all on one line. </div> <div class="p"> <ul> <li><name> is the display name of the creature</li> <li><power> and <skill> are the numeric value of power and skill respectively.</li> <li><rangestrikes> <and flies> are boolean values ('true' or 'false'), defining if the creature can rangestrike or fly respectively.</li> <li><nativeXXX> are boolean values defining if the creature is native for terrain type XXX.</li> <li><waterDwelling> is a boolean value defining if the creature can live in water (i.e., Bog or Lake). Water Dweller don't like being dry, and as such take damage in Sand as other Creatures do in Drift.</li> <li><magicMissile> is a boolean value defining if the creature use magic missile, i.e. it can fires through anything (foe, obstacle, ...) toward anyone (including lord).</li> <li><summonable> is a boolean value defining if the creature can be summoned in a fight.</li> <li><lord> and <demilord> are boolean values, defining if the creature is a lord or a demilord (mutually exclusive).</li> <li><maxCount> is the max number of creature in the caretaker stack.</li> <li><pluralName> is the same as name, just plural.</li> <li><baseColorName> (optional) is the name of the color to use for the name, power and skill value of the creature (when displayed on screen). This name (is used to determine which overlay to use for name/power/skill, or which color to use for drawing them (black is the default in this case). If this field is not present, then <em>no</em> overlay are used: Colossus will assume a simgle image is enough to supply all informations.</li> </ul> </div> <div class="p"> Both <name> and <pluralName> can be either purely alphabetical, or alphanumerical plus spaces between doublequotes ""'. If a filename is involved, all spaces will be replaced by underscores "_". </div> <div class="p"> <h2><a id="tth_sEc5" name="tth_sEc5">5</a> Battleland file format (files used: by terrain name under "Battlelands")</h2> <a id="BATTLELANDS" name="BATTLELANDS"></a> </div> <div class="p"> These files define the Colossus Battlelands. they're composed of a succession of lines: </div> <div class="p"> <tt><X_pos> <Y_pos> <terrain_name> <terrain_elevation> ( <border_number> <border_type >)*</tt> </div> <div class="p"> all on one line. </div> <div class="p"> Any cas not mentioned in this file is assumed to be of type 'p', at elevation '0', and no border. </div> <div class="p"> <ul> <li><X_pos> and <Y_pos> are the X and Y position of the modified case.</li> <li><terrain_name> is the terrain type of the case ; it's currently one of: Plains, Brambles, Sand, Tree, Bog, Volcano, Drift, Tower, Lake, Stone. Case is significant here.</li> <li><terrain_elevation> is the altitude of the terrain (between 0 and 2)</li> </ul> </div> <div class="p"> finally. between 0 and 6 pair of the form <border_number> <border_type>, where <border_number> is between 0 and 5 and <border_type> is currently one of: d, c, s, w, r (Dune, Cliff, Slope, Wall, River). </div> <div class="p"> Lake, Stone and River are non-standard hazards: </div> <div class="p"> <ul> <li>Lake is impassable except by Water Dweller, and has no other effect.</li> <li>Stone is impassable except by Stone Native, block rangestrike, and doesn't allow flying through (or over). A non-native attacking a Stone Native in a Stone loose one skill (both hand-to-hand and rangestrike).</li> <li>River slows non-River Native non-Water Dweller crossing it.</li> </ul> </div> <div class="p"> Also, non-Tree Native attacking a Tree Native in a Tree lose one skill (but not rangestriker). </div> <div class="p"> NOTE: There is a graphical tool, designed to allow easy creations of Battlelands. It doesn't handle Startlist yet (see below). </div> <div class="p"> One more line exists: the startlist. It's a single line containing first the word <tt>STARTLIST</tt>, then a space-separated list of hex labels (one letter followed by one digit, displayed in each hexagon of the Battleland). This is where the Defender will enter the terrain. For instance, in the usual Titan Tower, the line used is: </div> <div class="p"> <tt>STARTLIST D4 C4 E4 D3 C3 E3 D5</tt> </div> <div class="p"> Also, the line imply the Attacker will enter by the bottom side. This is usually used for Tower, but can be used for other terrain as well. </div> <div class="p"> Towers are denoted by the keyword <tt>TOWER</tt> by itself on a line. The terrain is then considered a Tower, i.e. you can Tower Teleport from it, and players are allowed to start in it. </div> <div class="p"> <h2><a id="tth_sEc6" name="tth_sEc6">6</a> <tt>HINT</tt> file format (default file used: "Default/Default.hin")</h2> </div> <div class="p"> This file lists some hints to the Colossus AI on how to play the game. </div> <div class="p"> The file is cut off into sections, each specifying behavior for one kind of AI. Any hints appearing before a section name is assumed to belong to section "AllAI:". A section name is a name ending in "AI:" ; known values are "AllAI:", "OffensiveAI:" and "DefensiveAI:". Any section name can be used, but if none of the AI is aware of a section, it won't be used. All AI will used hints from section "AllAI" as a last resort, after trying zero, one or more other section(s). Note that some AIs may ignore hints entirely, and some may decide to change the used sections in the middle of the game :-) A hint belongs to the last section whose name appears before the hint. </div> <div class="p"> Each hint is a line of one of the forms: </div> <div class="p"> <tt>RECRUIT <terrain_name> <recruiter_name> <recruiter_number> <recruitee_name> <optional_condition ></tt> </div> <div class="p"> <tt>INITIALSPLIT <hex_label> <decimal_value> "(" <split_creature_name> * ")" *</tt> </div> <div class="p"> <tt>RECRUITVALUE</tt> <creature_name> <value_offset> </div> <div class="p"> where for <tt>RECRUIT</tt>: </div> <div class="p"> <ul> <li><terrain_name> is the name of the terrain</li> <li><recruiter_name> is the name of the recruiting creature</li> <li><recruiter_number> is the number of recruiting creature</li> <li><recruitee_name> is the name of the suggested recruited creature</li> </ul> </div> <div class="p"> and <optional_condition> is an optional condition builded with the following <condition_node>: </div> <div class="p"> <ul> <li><tt>( <condition_node> AND <condition_node> )</tt> : both condition must be true.</li> <li><tt>( <condition_node> OR <condition_node> )</tt> : one condition at least must be true.</li> <li><tt>( NOT <condition_node>)</tt> : the condition must be false.</li> <li><tt>( CANREACH <terrain_name> )</tt> : The recruiting stack can reach at least one terrain of type <terrain_name> in the next turn.</li> <li><tt>( HASCREATURE <creature_name> )</tt> : The stack already has one creature by the name of <creature_name>.</li> <li><tt>( OTHERSTACKHASCREATURE <creature_name>+ )</tt> : A different stack from the same player already has at least one of each creature in the list of <creature_name>.</li> <li><tt>( RANDOM <decimal_value> )</tt> : True (100 * <decimal_value>) % of the time ( <decimal_value> must be between 0.0 and 1.0).</li> <li><tt>( <number> <creature_name> AVAILABLE )</tt> : At least <number> of the creature <creature_name> are available in the caretaker's stack.</li> <li><tt>( CANRECRUIT <creature_name> )</tt> : The stack can also recruit the creature <creature_name>.</li> <li><tt>( HEIGHTIS <number> )</tt> : The stack is exactly <number> in height.</li> <li><tt>( LABELIS <hex_label> )</tt> : The stack is in hex <hex_label>.</li> <li><tt>( ALLATTACKERSMALLERTHAN <number> )</tt> : The stack cannot by attacked by a stack more (strictly) than <number> in height. A value of 0 means that no enemy stack can attack.</li> </ul> </div> <div class="p"> If the recruitee's name is "nothing" or "Nothing", then the hint suggests not recruiting there. </div> <div class="p"> where for <tt>INITIALSPLIT</tt>: </div> <div class="p"> <ul> <li><hex_label> is the label of the Tower where the split occurs (should be quoted in double quote \", as most label are numbers).</li> <li><decimal_value> is the probability (between 0.0 and 1.0) of this split to occurs.</li> <li><split_creature_name> is the name of one splitted creature.</li> </ul> </div> <div class="p"> At the moment, there should be exactly two lists of exactly four creatures in the hint. The 8 creatures should be exactly one Titan, one Angel (those two in different stacks), and 2 of each of the three starting creatures of the Tower. </div> <div class="p"> Each split for a given Tower is checked in order, and the first to pass the test is used, so the last one for each Tower should always use "1.0" as the probability. </div> <div class="p"> where for <tt>RECRUITVALUE</tt> </div> <div class="p"> The <creature_name> is the name of the affected creature, and the <value_offset> is how many points to add/retire to the normal value. This only affect the AI estimation of the recruitment value of the crature: a creature with a big positive value will be recruited before anything else, a creature with a big negative value will be recruited after anything else. </div> <div class="p"> <h2><a id="tth_sEc7" name="tth_sEc7">7</a> <tt>VAR</tt> file format (default file used: "Default/Default.var")</h2> <a id="VAR" name="VAR"></a> </div> <div class="p"> This file contains a variant definition, i.e. which <tt>MAP</tt>, <tt>CRE</tt> and <tt>TER</tt> file should be used and other informations such as which other variants are required. </div> <div class="p"> Six different lines can exist, in any number and order (only the last one of each type is used): </div> <div class="p"> <tt>CRE</tt>: <cre_filename> </div> <div class="p"> <tt>MAP</tt>: <map_filename> </div> <div class="p"> <tt>TER</tt>: <ter_filename> </div> <div class="p"> <tt>HINT</tt>: <comma-separated list of hint_filenames> </div> <div class="p"> <tt>DEPEND</tt>: <comma-separated list of dependecies> </div> <div class="p"> <tt>MAXPLAYERS</tt>: <max number of players> </div> <div class="p"> <i>Note:</i> if one of the first three type is missing, the Default file is implied. if <tt>DEPEND</tt> is missing, no dependencies are implied. In all case, the "Default" directory is looked-up last, so mentioning "Default" as a dependency is not required. </div> <div class="p"> <i>Note:</i> Do not use a <tt>MAXPLAYERS</tt> value higher than the number of Tower in the <tt>MAP</tt> file, this will crash Colossus. If <tt>MAXPLAYERS</tt> isn't specified, 6 is the default value used. If <tt>MAXPLAYERS</tt> is too big for Colossus, the default maximum will be used instead to avoid crashing. </div> <div class="p"> <i>Exemple:</i> A variant that use creatures from ExtTitan, Battlelands from Badlands and a local map could be described as: </div> <div class="p"> <tt>CRE</tt>:ExtTitan.cre </div> <div class="p"> <tt>MAP</tt>:MyBadlandsExtTitan.map </div> <div class="p"> <tt>TER</tt>:Badlands.ter </div> <div class="p"> <tt>DEPEND</tt>:ExtTitan,Badlands </div> <div class="p"> <h2><a id="tth_sEc8" name="tth_sEc8">8</a> Images files under "images"</h2> <a id="images" name="images"></a> </div> <div class="p"> <ul> <li>Chit (i.e. images representing a Creature) should be non-transparent <tt>GIF</tt> file, size 60 * 60 (other size may work but won't look as nice). They should be named after the Creature they represent, with a ".gif" extension. If the file doesn't exist, troubles may occur. Also, see below for name/power/skill overlay.</li> <li>Graphical Overlay for the Hexes on the Masterboard should be transparent <tt>GIF</tt> file, of size whatever-you-want (they are resized to the same size as the Hex the represent). Default supplied files are 255x255. Use them as examples of what is possible to do. If the file doesn't exist, the non-overlayed display is used instead (i.e. name of the terrain and the label in the proper corner).</li> <li style="list-style: none"> <div class="p"> Two version of the file should be supplied, one with and one without the "_i" postfix to the name (i.e 'MyTerrain.gif' and 'MyTerrain_i.gif'). The first is used when the biggest part of the hexagon is down, the second when the biggest part is up. The Display Name (see section <a href="#TER">3</a> above, "<tt>TER</tt> file format") is used if present, and Name is used if not. </div> </li> <li>Graphical overlay for the Hexes on the Battlelands (aka Hazard) should be transparent GIF file, of size 216x188 for the interior of the hexes (Bog, Sand...), and size 248x220 for the hexsides (Cliff, Slope...). The filename should the name of the hazard followed by "_Hazard", followed by the extension ".gif" (for instance "MySea_Hazard.gif"). Only one version is needed.</li> <li style="list-style: none"> <div class="p"> Other sizes <em>may</em> work (they are resized on-the-fly), and odds are better if the aspect ratio is the same. </div> </li> <li>Skill, Power, and the name of creature are overlay added to the main Chit. If they are not available, they are created on the fly, using the color specified in the creature (see above the <tt>CRE</tt> file, section <a href="#CRE">4</a>). You may supply none, any or all of them. Name should be respectively "Skill- <skill_factor >.gif", "Power- <power_factor>.gif", and " <creature_name>-Name.gif" for Creature which don't specify a color at all, or "Skill- <skill_factor>- <color_name>.gif", "Power- <power_factor>- <color_name>.gif", and " <creature_name>-Name- <color_name>.gif" for Creature with a color specified.</li> </ul> </div> <div class="p"> <h2><a id="tth_sEc9" name="tth_sEc9">9</a> Miscellaneous stuff</h2> </div> <div class="p"> A variant can customize the legion marker appearances and names. Legion markers are 56x56 <tt>GIF</tt> files that lives in "images" and are named with the marker short color name (see ) followed by its number (between 01 and 12), i.e. the first marker of the black set is <tt>Bk01.gif</tt>. The short name is mapped to a long name in the file "MarkersName", a java property file. A variant can supply its own "MarkersName", either fully or partially redefining the marker's names (the default mapping is used for missing entries). </div> </body> </html>