Warning, /games/killbots/doc/index.docbook is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" ?>
0002 <!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN" "dtd/kdedbx45.dtd" [
0003   <!ENTITY % addindex "IGNORE">
0004   <!ENTITY % English "INCLUDE">
0005 ]>
0006 
0007 <book id="killbots" lang="&language;">
0008 
0009 <bookinfo>
0010   <title>The &killbots; Handbook</title>
0011 
0012   <authorgroup>
0013     <author>
0014       <personname>
0015         <firstname>Parker</firstname>
0016         <surname>Coates</surname>
0017       </personname>
0018       <email>parker.coates@kdemail.net</email>
0019     </author>
0020 
0021     <!-- TRANS:ROLES_OF_TRANSLATORS -->
0022   </authorgroup>
0023 
0024   <copyright>
0025     <year>2008&ndash;2009</year>
0026     <holder>Parker Coates</holder>
0027   </copyright>
0028 
0029   <legalnotice>&FDLNotice;</legalnotice>
0030 
0031   <date>2021-07-05</date>
0032   <releaseinfo>KDE Gear 21.04</releaseinfo>
0033 
0034   <abstract>
0035     <para>&killbots; is a &kde; port of the classic &BSD; console game <command>robots</command>.</para>
0036   </abstract>
0037 
0038   <keywordset>
0039     <keyword>KDE</keyword>
0040     <keyword>kdegames</keyword>
0041     <keyword>game</keyword>
0042     <keyword>Killbots</keyword>
0043     <keyword>Strategy</keyword>
0044     <keyword>One player</keyword>
0045     <keyword>Single player</keyword>
0046     <keyword>robots</keyword>
0047     <keyword>robot</keyword>
0048     <keyword>fastbot</keyword>
0049     <keyword>junkheap</keyword>
0050     <keyword>teleport</keyword>
0051     <keyword>vaporize</keyword>
0052     <keyword>vaporizer</keyword>
0053     <keyword>energy</keyword>
0054   </keywordset>
0055 
0056 </bookinfo>
0057 
0058 <chapter id="introduction">
0059   <title>Introduction</title>
0060 
0061   <note>
0062     <title>Game type:</title>
0063     <para>Strategy</para>
0064   </note>
0065 
0066   <note>
0067     <title>Number of players:</title>
0068     <para>One</para>
0069   </note>
0070 
0071   <para>&killbots; is a simple game of evading killer robots. Who created the robots and why they have been programmed to destroy, no one knows. All that is known is that the robots are numerous and their sole objective is to destroy you. Fortunately for you, their creator has focused on quantity rather than quality and as a result the robots are severely lacking in intelligence. Your superior wit and a fancy teleportation device are your only weapons against the never-ending stream of mindless automatons.</para>
0072 
0073   <note>
0074     <title>Note:</title>
0075     <para>This documentation frequently refers to <quote>robots</quote>, <quote>junkheaps</quote>, &etc;, but &killbots; is fully themeable. That means the game sprites you see while playing might not match the futuristic themed ones described here. The game play and strategies, however, will remain the same, even if your hero is a carrot being chased through a garden patch by ravenous rabbits.</para>
0076   </note>
0077 
0078   <note>
0079     <title>Note:</title>
0080     <para>&killbots; supports multiple game types which control the game parameters and determine which game features are included. This documentation attempts to be generic and not specific to any one game type. Check the description and details of your current game type in the <guilabel>Configure - &killbots;</guilabel> dialog for more detailed information on game mechanics with respect to grid size, rounds, scoring, energy, &etc;</para>
0081   </note>
0082 
0083 </chapter>
0084 
0085 <chapter id="howto">
0086   <title id="howto-title">How to Play</title>
0087 
0088   <sect1 id="gameplay-basics">
0089     <title>Basics of Gameplay</title>
0090 
0091     <note>
0092       <title>Objective:</title>
0093       <para>Survive successive rounds of enemies while accumulating a high score.</para>
0094     </note>
0095 
0096     <para><screenshot><mediaobject>
0097       <imageobject><imagedata fileref="grid.png" format="PNG"/></imageobject>
0098       <textobject><phrase>Screenshot of the game grid</phrase></textobject>
0099     </mediaobject></screenshot></para>
0100 
0101     <para>&killbots; is a turn-based game, played on a rectangular <firstterm>grid</firstterm>. The number of <firstterm>cells</firstterm> in each row and column in the grid is determined by the game type being played. Each cell can contain one of the following:
0102       <variablelist>
0103         <varlistentry>
0104           <term><firstterm>Hero</firstterm> <inlinemediaobject><imageobject><imagedata fileref="hero.png" format="PNG"/></imageobject></inlinemediaobject></term>
0105           <listitem>
0106             <para>The hero is the unfortunate soul stuck in a room with a bunch of killer robots. As the player, it is your job to ensure that he remains alive for as long possible.</para>
0107             <para>At the beginning of each <firstterm>turn</firstterm>, the hero can perform one of three types of actions: he can stay where he is, he can move to an unoccupied adjacent cell, or he can perform a special action. See <link linkend="movement-controls" endterm="movement-controls-title"/> and <link linkend="special-actions" endterm="special-actions-title"/>.</para>
0108           </listitem>
0109         </varlistentry>
0110         <varlistentry>
0111           <term><firstterm>Robot</firstterm> <inlinemediaobject><imageobject><imagedata fileref="enemy.png" format="PNG"/></imageobject></inlinemediaobject></term>
0112           <listitem>
0113             <para>Robots are mechanical thugs desiring only to crush the hero with their metallic girth. They have never heard of the <quote>Three Laws of Robotics</quote> and would probably crush anyone who tried to explain them.</para>
0114             <para>Each robot will take a single step toward the hero on every turn. If the robot is above the hero, it will step down. If the robot is to the left of the hero, it will step right. If the robot is below and right of the hero, it will step diagonally, up and left. Should a robot manage to reach the hero's cell, the hero will be killed and the game will end.</para>
0115           </listitem>
0116         </varlistentry>
0117         <varlistentry>
0118           <term><firstterm>Fastbot</firstterm> <inlinemediaobject><imageobject><imagedata fileref="fastenemy.png" format="PNG"/></imageobject></inlinemediaobject></term>
0119           <listitem>
0120             <para>Fastbots are a much speedier version of the basic robot. For each move the hero makes, they take two steps. Fortunately, their increased mobility was not paired with increased intelligence; they often only succeed in destroying themselves twice as quickly as their slower brethren.</para>
0121             <para>Not all game types include fastbots.</para>
0122           </listitem>
0123         </varlistentry>
0124         <varlistentry>
0125           <term><firstterm>Junkheap</firstterm> <inlinemediaobject><imageobject><imagedata fileref="junkheap.png" format="PNG"/></imageobject></inlinemediaobject></term>
0126           <listitem>
0127             <para>When two or more robots collide, they are destroyed and the resulting debris produces a junkheap. Enemies blindly ignore any junkheaps in their path and are destroyed upon crashing into them. You will find junkheaps to be extremely valuable, as they can serve as barricades between the hero and his attackers.</para>
0128             <para id="pushing-junkheaps">Some game types permit the hero to <firstterm>push</firstterm> junkheaps around the grid. The hero can then use junkheaps to construct <quote>bunkers</quote> that offer protection on multiple sides. Junkheaps can even be used offensively in some game types. Pushing a junkheap on top of an enemy squashes it and can even result in a bonus.</para>
0129           </listitem>
0130         </varlistentry>
0131       </variablelist>
0132     </para>
0133   </sect1>
0134 
0135   <sect1 id="rounds-scoring-energy">
0136     <title>Rounds, Scoring and Energy</title>
0137 
0138     <para><screenshot><mediaobject>
0139       <imageobject><imagedata fileref="status.png" format="PNG"/></imageobject>
0140       <textobject><phrase>The in-game status indicators</phrase></textobject>
0141     </mediaobject></screenshot></para>
0142 
0143     <sect2>
0144       <title>Rounds</title>
0145       <para>Gameplay in &killbots; is divided into <firstterm>rounds</firstterm>. Each round begins with the hero in the middle of the grid and with enemies placed randomly around him. The round ends when all enemies have been destroyed. As each round is completed, the number of enemies increases. The number and type of the enemies added is game type dependent.</para>
0146       <para>The grid will continue to fill with enemies until one of two things occurs: enemies occupy more than 50 percent of the cells or a safe teleport is attempted, but there are no safe cells in the grid. Once either of these occurs, the current round is abandoned and the enemy counts are reset to those used in the first round.</para>
0147     </sect2>
0148 
0149     <sect2>
0150       <title>Scoring</title>
0151       <para>There really is no such thing as winning in &killbots;; the hero attempts to survive as long as possible, but the depressing reality is that, in the end, his luck will run out. Therefore, the goal in &killbots; is to accumulate the highest <firstterm>score</firstterm> possible before the inevitable occurs. The ten highest scores (along with the round reached) are recorded in the high score dialog.</para>
0152       <para>Points are awarded for destroying enemies. Fastbots are usually worth more than regular robots. Bonus points may also be awarded for enemies destroyed while <link linkend="pushing-junkheaps">pushing a junkheap</link> or <link linkend="wait-out-round">waiting out the round</link>.</para>
0153     </sect2>
0154 
0155     <sect2 id="energy">
0156       <title>Energy</title>
0157       <para>In addition to points, the hero can also collect <firstterm>energy</firstterm> as the game progresses. Energy allows the hero to perform <link linkend="teleport-safely">safe teleports</link> and/or use the <link linkend="vaporizer">vaporizer</link>. Depending on the game type, energy can be awarded for a variety of reasons including completing a round, <link linkend="pushing-junkheaps">pushing a junkheap</link> or destroying enemies while <link linkend="wait-out-round">waiting out the round</link>.</para>
0158       <para>The amount of energy that the hero can store is capped at a game type determined maximum. In some game types the maximum increases as rounds are completed. The energy status display is only visible if the current game type includes energy and safe teleports.</para>
0159     </sect2>
0160   </sect1>
0161 
0162   <sect1 id="special-actions">
0163     <title id="special-actions-title">Special Actions</title>
0164     <para>In addition to simple movement from cell to cell, the hero has up to four special actions at his disposal.</para>
0165 
0166     <sect2 id="teleport">
0167       <title>Teleport</title>
0168       <para>The hero somehow managed to get his hands on a personal teleporter. Unfortunately, when operated without an energy source, it is not very reliable. Activating the teleporter causes the hero to be transported to a randomly selected cell anywhere on the grid. There is no limit to the number of teleports the hero can perform.</para>
0169       <para>The destination cell is guaranteed to be unoccupied, but there is a very real chance that it will be adjacent to an angry robot. Due to the risk inherent in teleporting, it should generally be reserved as a last ditch maneuver, when there are no longer any safe moves available.</para>
0170     </sect2>
0171 
0172     <sect2 id="teleport-safely">
0173       <title>Teleport Safely</title>
0174       <para>The teleporter has a secondary operating mode that will transport the hero to a randomly selected, but safe cell. Safe teleporting requires <link linkend="energy">energy</link> though, and energy is generally in short supply. Obviously, the ability to teleport safely at key moments can greatly extend the hero's lifespan.</para>
0175       <para>Not all game types allow safe teleports and the amount of energy required to teleport safely varies between game types.</para>
0176     </sect2>
0177 
0178     <sect2 id="vaporizer">
0179       <title>Use the Vaporizer</title>
0180       <para>The third use for the teleporter device doesn't actually teleport the hero at all. This somewhat uncommon operating mode teleports all robots in cells adjacent to the hero. No one knows exactly where the robots are teleported to, but it seems to be sufficiently far away that they bother the hero again. Because the robots disappear into thin air without leaving a junkheap, this mode is nicknamed the <quote>vaporizer</quote> and enemies dispatched through vaporisation are considered as killed for scoring purposes.</para>
0181       <para>Like teleporting safely, using the vaporizer requires <link linkend="energy">energy</link>. Not all game types include the vaporizer and the amount of energy required to use it varies between game types.</para>
0182     </sect2>
0183 
0184     <sect2 id="wait-out-round">
0185       <title>Wait Out Round</title>
0186       <para>There may come a time when the grid is laid out such that all the robots can be destroyed without the hero having to move at all. In such a situation, you have the option to wait out the round.</para>
0187       <example>
0188         <title>An Opportunity to Wait Out the Round</title>
0189         <para><screenshot><mediaobject>
0190           <imageobject><imagedata fileref="waitoutround.png" format="PNG"/></imageobject>
0191         </mediaobject></screenshot></para>
0192       </example>
0193       <para>Waiting out the round causes the hero to freeze in place while the enemies continue their regular movement. This continues until one of two things happen: the enemies destroy themselves and the round finishes, or an enemy manages to reach the hero and the game ends. Once a wait out round command has been issued, it cannot be canceled, so one must be certain that the hero is, in fact, safe.</para>
0194       <para>So why would one take an action that eliminates the opportunity to change one's mind? Well, it adds a bit of flourish and drama to the end of a round, but more importantly, there is a bonus awarded for each enemy destroyed while waiting out the round. The size and type (points or energy) of the bonus is determined by the game type.</para>
0195     </sect2>
0196   </sect1>
0197 
0198 </chapter>
0199 
0200 <chapter id="interface-overview">
0201   <title>Interface Overview</title>
0202 
0203   <sect1 id="movement-controls">
0204     <title id="movement-controls-title">Movement Controls</title>
0205     <para>The player has the option of using either the keyboard, the mouse or both to control the hero.</para>
0206     <sect2 id="keyboard-movement">
0207       <title id="keyboard-movement-title">Keyboard Movement Controls</title>
0208       <para>There are nine different movement actions: left, right, up, down, the four diagonals, and stand still. Each of these actions can be assigned to two different keyboard keys. By default these nine actions are assigned to the nine number keys of the numeric keypad and to a 3 by 3 block of letters at the left end of a QWERTY keyboard. Of course, users using a different keyboard layout or one lacking a numeric keypad can modify these key assignments using the shortcuts configuration dialog.</para>
0209       <para>Each of the special movement commands (such as teleport) can also be issued from the keyboard. See <link linkend="move-menu">Move</link>.</para>
0210     </sect2>
0211     <sect2 id="mouse-movement">
0212       <title id="mouse-movement-title">Mouse Movement Controls</title>
0213       <para>The mouse (or any other pointing device) can be used to navigate in a more natural, intuitive way. As the pointer moves over the main game area, the cursor will change to indicate the direction of the pointer relative to the hero. For example, moving the pointer to the space above the hero will change the cursor to an up arrow. If the pointer is placed immediately over the hero, the cursor changes to indicate no movement.</para>
0214       <para>A single left-click will cause the hero to step in the indicated direction (provided such a step is permitted). For convenience, one can assign additional actions to the right and middle mouse buttons in the <link linkend="configure-killbots">Configure - &killbots; dialog</link>. These actions include those found in the <link linkend="move-menu">Move</link> menu, as well as additional option: <guimenuitem>Repeated Step</guimenuitem> performing a repeated step causes the hero to move in the indicated direction for several consecutive turns until an obstruction is reached or continued movement would be unsafe. One can also halt a repeated step by clicking again while the move is in progress.</para>
0215       <para></para>
0216     </sect2>
0217   </sect1>
0218 
0219   <sect1 id="game-menu">
0220     <title>Menu Items</title>
0221 
0222     <variablelist>
0223       <varlistentry>
0224         <term><menuchoice>
0225           <shortcut><keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo></shortcut>
0226           <guimenu>Game</guimenu>
0227           <guimenuitem>New</guimenuitem>
0228         </menuchoice></term>
0229         <listitem><para><action>Starts a new game, discarding any game that may currently be in progress.</action></para></listitem>
0230       </varlistentry>
0231       <varlistentry>
0232         <term><menuchoice>
0233           <shortcut><keycombo action="simul">&Ctrl;<keycap>H</keycap></keycombo></shortcut>
0234           <guimenu>Game</guimenu>
0235           <guimenuitem>Show High Scores</guimenuitem>
0236         </menuchoice></term>
0237         <listitem><para><action>Shows the high score dialog, containing past scores.</action></para></listitem>
0238       </varlistentry>
0239       <varlistentry>
0240         <term><menuchoice>
0241           <shortcut><keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo></shortcut>
0242           <guimenu>Game</guimenu>
0243           <guimenuitem>Quit</guimenuitem>
0244         </menuchoice></term>
0245         <listitem><para><action>Quits &killbots;.</action></para></listitem>
0246       </varlistentry>
0247 
0248       <varlistentry id="move-menu">
0249         <term><menuchoice>
0250           <shortcut><keycap>R</keycap></shortcut>
0251           <guimenu>Move</guimenu>
0252           <guimenuitem>Teleport</guimenuitem>
0253         </menuchoice></term>
0254         <listitem><para><action>Teleports the hero to a random, empty cell anywhere within the playing field.</action> See <link linkend="teleport" endterm="special-actions-title"/>.</para></listitem>
0255       </varlistentry>
0256       <varlistentry>
0257         <term><menuchoice>
0258           <shortcut><keycap>T</keycap></shortcut>
0259           <guimenu>Move</guimenu>
0260           <guimenuitem>Teleport Safely</guimenuitem>
0261         </menuchoice></term>
0262         <listitem><para><action>Teleports the hero to a random, empty cell that is guaranteed to be safe from attack on that turn.</action> See <link linkend="teleport-safely" endterm="special-actions-title"/>.</para></listitem>
0263       </varlistentry>
0264       <varlistentry>
0265         <term><menuchoice>
0266           <shortcut>&Space;</shortcut>
0267           <guimenu>Move</guimenu>
0268           <guimenuitem>Teleport (Safely if Possible)</guimenuitem>
0269         </menuchoice></term>
0270         <listitem><para>A convenience action. <action>Teleports the hero safely if there is enough energy available, otherwise just teleports randomly.</action></para></listitem>
0271       </varlistentry>
0272       <varlistentry>
0273         <term><menuchoice>
0274           <shortcut><keycap>F</keycap></shortcut>
0275           <guimenu>Move</guimenu>
0276           <guimenuitem>Vaporizer</guimenuitem>
0277         </menuchoice></term>
0278         <listitem><para><action>Destroys all robots in cells adjacent to the hero</action>. See <link linkend="vaporizer" endterm="special-actions-title"/>.</para></listitem>
0279       </varlistentry>
0280       <varlistentry>
0281         <term><menuchoice>
0282           <shortcut><keycap>V</keycap></shortcut>
0283           <guimenu>Move</guimenu>
0284           <guimenuitem>Wait Out Round</guimenuitem>
0285         </menuchoice></term>
0286         <listitem><para><action>Causes the hero to freeze in place until the end of the round.</action> See <link linkend="wait-out-round" endterm="special-actions-title"/>.</para></listitem>
0287       </varlistentry>
0288 
0289       <varlistentry id="configure-killbots">
0290         <term><menuchoice>
0291           <guimenu>Settings</guimenu>
0292           <guimenuitem>Configure &killbots;...</guimenuitem>
0293         </menuchoice></term>
0294         <listitem><para><action>Displays the &killbots; configuration dialog</action>, where one can adjust gameplay parameters, choose a different set of game rules, or change the game theme.</para></listitem>
0295       </varlistentry>
0296     </variablelist>
0297 
0298 <para>
0299 Additionally &killbots; has the common &kde; <guimenu>Settings</guimenu> and <guimenu>Help</guimenu>
0300 menu items, for more information read the sections about the <ulink url="help:/fundamentals/menus.html#menus-settings"
0301 >Settings Menu</ulink> and <ulink url="help:/fundamentals/menus.html#menus-help">Help Menu</ulink>
0302 of the &kde; Fundamentals.
0303 </para>
0304 
0305   </sect1>
0306 
0307 </chapter>
0308 
0309 
0310 <chapter id="developers">
0311   <title>Developer's Guide to &killbots;</title>
0312   <para>Interested individuals can customize &killbots; in two major ways: themes and rulesets.</para>
0313 
0314   <sect1 id="creating-themes">
0315     <title>Creating Custom &killbots; Themes</title>
0316     <para>Like most other &kde; games, a &killbots; theme consists of three files.</para>
0317 
0318     <sect2>
0319       <title>The Desktop File</title>
0320       <para>The desktop file follows standard <acronym>INI</acronym> syntax. The key-value pairs store information about the theme and point to the other files included in the theme. The following example is taken from the default theme.</para>
0321       <example>
0322         <title>An Example Theme Desktop File</title>
0323         <programlisting>
0324 [KGameTheme]
0325 Name=Example Theme
0326 Description=An example theme used to demonstrate theme creation. This one features pirates.
0327 Author=Mr. Artist
0328 AuthorEmail=mrartist@example.com
0329 Type=SVG
0330 FileName=example.svg
0331 Preview=example.png
0332         </programlisting>
0333       </example>
0334       <para>The first four parameters contain metadata about the theme and are straight forward enough. For &killbots; themes, the <varname>Type</varname> parameter should always be set to &SVG;. The final two parameters contain the file names of the two other theme files. While it's not strictly necessary, it is highly recommended that, for consistency's sake, all three files share the same base file name.</para>
0335     </sect2>
0336 
0337     <sect2>
0338       <title>The Preview File</title>
0339       <para>The preview file is simply a <acronym>PNG</acronym> file containing a preview of the theme. The preview image should be 240 by 140 pixels and match layout of the default theme's preview as closely as possible, as this makes it easier to compare themes in the theme selector.</para>
0340     </sect2>
0341 
0342     <sect2>
0343       <title>The &SVG; File</title>
0344       <para>The &SVG; file is a scalable vector graphics image that contains the actual graphical elements used to make up the theme. The file may be either in uncompressed <literal role="extension">.svg</literal> or compressed <literal role="extension">.svgz</literal> format. Each game element is identified by a unique id in the &SVG; file.  When creating a new theme, it is generally easiest to start with an existing theme and replace the elements one by one until the theme is complete. The &SVG; file <emphasis>must</emphasis> contain the following elements.</para>
0345       <variablelist>
0346         <varlistentry>
0347           <term><varname>background</varname></term>
0348           <listitem><para>The image displayed behind the grid in the main game area.</para></listitem>
0349         </varlistentry>
0350         <varlistentry>
0351           <term><varname>status</varname></term>
0352           <listitem><para>The box used to display the current round, score, enemy count and energy.</para></listitem>
0353         </varlistentry>
0354         <varlistentry>
0355           <term><varname>textcolor</varname></term>
0356           <listitem><para>This element should be a rectangle of a single color. Its color is used to for the text in the status boxes.</para></listitem>
0357         </varlistentry>
0358         <varlistentry>
0359           <term><varname>cell</varname></term>
0360           <listitem><para>An individual grid cell.</para></listitem>
0361         </varlistentry>
0362         <varlistentry>
0363           <term><varname>hero</varname></term>
0364           <listitem><para>The character controlled by the player.</para></listitem>
0365         </varlistentry>
0366         <varlistentry>
0367           <term><varname>enemy</varname></term>
0368           <listitem><para>The basic enemy.</para></listitem>
0369         </varlistentry>
0370         <varlistentry>
0371           <term><varname>fastenemy</varname></term>
0372           <listitem><para>The faster enemy.</para></listitem>
0373         </varlistentry>
0374         <varlistentry>
0375           <term><varname>junkheap</varname></term>
0376           <listitem><para>The remains of a collision between enemies.</para></listitem>
0377         </varlistentry>
0378         <varlistentry>
0379           <term><varname>cursor0</varname></term>
0380           <listitem><para>A cursor indicating movement to the right.</para></listitem>
0381         </varlistentry>
0382         <varlistentry>
0383           <term><varname>cursor1</varname></term>
0384           <listitem><para>A cursor indicating diagonal movement up and to the right.</para></listitem>
0385         </varlistentry>
0386         <varlistentry>
0387           <term><varname>cursor2</varname></term>
0388           <listitem><para>A cursor indicating movement up.</para></listitem>
0389         </varlistentry>
0390         <varlistentry>
0391           <term><varname>cursor3</varname></term>
0392           <listitem><para>A cursor indicating diagonal movement up and to the left.</para></listitem>
0393         </varlistentry>
0394         <varlistentry>
0395           <term><varname>cursor4</varname></term>
0396           <listitem><para>A cursor indicating movement to the left.</para></listitem>
0397         </varlistentry>
0398         <varlistentry>
0399           <term><varname>cursor5</varname></term>
0400           <listitem><para>A cursor indicating diagonal movement down and to the left.</para></listitem>
0401         </varlistentry>
0402         <varlistentry>
0403           <term><varname>cursor6</varname></term>
0404           <listitem><para>A cursor indicating movement down.</para></listitem>
0405         </varlistentry>
0406         <varlistentry>
0407           <term><varname>cursor7</varname></term>
0408           <listitem><para>A cursor indicating movement down and to the right.</para></listitem>
0409         </varlistentry>
0410         <varlistentry>
0411           <term><varname>cursor8</varname></term>
0412           <listitem><para>A cursor indicating staying in place.</para></listitem>
0413         </varlistentry>
0414       </variablelist>
0415     </sect2>
0416 
0417     <sect2>
0418       <title>Installing Custom Themes</title>
0419       <para>In order for &killbots; to detect and use a new theme, the files must be moved to an appropriate directory. To install the theme for only the current user, copy the desktop, preview and &SVG; files to <filename class="directory">killbots/themes</filename> in the local folder in <userinput><command>qtpaths</command> <option>--paths GenericDataLocation </option></userinput>. To make the theme available system wide, move the files to <filename class="directory">killbots/themes</filename> in the system folder (from the previous command, possibly <filename class="directory">/usr/share</filename> or similar). Note that this will likely require administrative privileges.</para>
0420     </sect2>
0421   </sect1>
0422 
0423   <sect1 id="creating-rulesets">
0424     <title>Creating Custom Game Types</title>
0425 
0426     <sect2>
0427       <title>The Ruleset Desktop File</title>
0428       <para>Creating new game types is incredibly simple for &killbots;, especially when starting from an existing ruleset file. Rulesets are stored as a single desktop file where the parameters and metadata are stored as simple key-value pairs.</para>
0429       <example>
0430         <title>The Default &killbots; Game Type</title>
0431         <programlisting width="80">
0432 [KillbotsRuleset]
0433 Name=Killbots
0434 Name[gl]=Robots asasinos
0435 Author=Parker Coates
0436 AuthorContact=parker.coates@kdemail.net
0437 Description=&lt;qt&gt;&lt;p&gt;The default Killbots game type.&lt;/p&gt;&lt;p&gt;Includes a medium size grid, safe teleports, fast enemies and pushable junkheaps.&lt;/p&gt;&lt;/qt&gt;
0438 Description[gl]=&lt;qt&gt;&lt;p&gt;O xogo tipo Killbots por omisión.&lt;/p&gt;&lt;p&gt;Inclúe unha grella mediana, teleportacións seguras, enemigos rápidos e chatarra que se pode empurrar.&lt;/p&gt;&lt;/qt&gt;
0439 Rows=16
0440 Columns=16
0441 EnemiesAtGameStart=8.0
0442 EnemiesAddedEachRound=4.0
0443 FastEnemiesAtGameStart=-2.0
0444 FastEnemiesAddedEachRound=2.0
0445 EnergyEnabled=true
0446 EnergyAtGameStart=0
0447 EnergyAddedEachRound=0
0448 MaxEnergyAtGameStart=12.0
0449 MaxEnergyAddedEachRound=0.0
0450 SafeTeleportEnabled=true
0451 CostOfSafeTeleport=1
0452 VaporizerEnabled=false
0453 CostOfVaporizer=0
0454 PushableJunkheaps=Many
0455 SquaskKillsEnabled=true
0456 JunkheapsAtGameStart=0.0
0457 JunkheapsAddedEachRound=0.0
0458 PointsPerEnemyKilled=5
0459 PointsPerFastEnemyKilled=10
0460 WaitKillPointBonus=0
0461 WaitKillEnergyBonus=1
0462 SquashKillPointBonus=0
0463 SquashKillEnergyBonus=1</programlisting>
0464       </example>
0465       <para>Note that all text parameters should be entered in American English. As seen in the example above, translations can be added to the desktop file by repeating the key and appending the language code between square brackets. Also note that rich text can be given to the <varname>Description</varname> field by wrapping the value in &lt;qt&gt; tags.</para>
0466       <para>A ruleset file should contain all of the following parameters.</para>
0467       <variablelist>
0468         <varlistentry>
0469           <term><varname>Name</varname></term>
0470           <listitem><para>The name of the ruleset as it will appear in the ruleset selector and the high score dialog.</para></listitem>
0471         </varlistentry>
0472         <varlistentry>
0473           <term><varname>Author</varname></term>
0474           <listitem><para>The creator of the ruleset.</para></listitem>
0475         </varlistentry>
0476         <varlistentry>
0477           <term><varname>AuthorContact</varname></term>
0478           <listitem><para>The contact information of the creator. This is usually an email address.</para></listitem>
0479         </varlistentry>
0480         <varlistentry>
0481           <term><varname>Description</varname></term>
0482           <listitem><para>A description of the ruleset. This should give a decent overview of the game type, but it doesn't need to list the value of each parameter as this information can been seen in the Details dialog.</para></listitem>
0483         </varlistentry>
0484         <varlistentry>
0485           <term><varname>Rows</varname></term>
0486           <listitem><para>The number of rows in the game grid.</para></listitem>
0487         </varlistentry>
0488         <varlistentry>
0489           <term><varname>Columns</varname></term>
0490           <listitem><para>The number of columns in the game grid.</para></listitem>
0491         </varlistentry>
0492         <varlistentry>
0493           <term><varname>EnemiesAtGameStart</varname></term>
0494           <listitem><para>The number of regular enemies added to the grid at the start of the first round.</para></listitem>
0495         </varlistentry>
0496         <varlistentry>
0497           <term><varname>EnemiesAddedEachRound</varname></term>
0498           <listitem><para>The number of additional regular enemies added to the grid at the start of each round.</para></listitem>
0499         </varlistentry>
0500         <varlistentry>
0501           <term><varname>FastEnemiesAtGameStart</varname></term>
0502           <listitem><para>The number of fast enemies added to the grid at the start of the first round.</para></listitem>
0503         </varlistentry>
0504         <varlistentry>
0505           <term><varname>FastEnemiesAddedEachRound</varname></term>
0506           <listitem><para>The number of additional fast enemies added to the grid at the start of each round.</para></listitem>
0507         </varlistentry>
0508         <varlistentry>
0509           <term><varname>EnergyEnabled</varname></term>
0510           <listitem><para>If set to <quote><constant>false</constant></quote> the hero will be enable to earn or spend energy.</para></listitem>
0511         </varlistentry>
0512         <varlistentry>
0513           <term><varname>EnergyAtGameStart</varname></term>
0514           <listitem><para>The amount of energy awarded to the hero at the start of the first round.</para></listitem>
0515         </varlistentry>
0516         <varlistentry>
0517           <term><varname>EnergyAddedEachRound</varname></term>
0518           <listitem><para>The amount of energy awarded to the hero at the start of each round.</para></listitem>
0519         </varlistentry>
0520         <varlistentry>
0521           <term><varname>MaxEnergyAtGameStart</varname></term>
0522           <listitem><para>The maximum energy capacity of the hero at the start of the first round.</para></listitem>
0523         </varlistentry>
0524         <varlistentry>
0525           <term><varname>MaxEnergyAddedEachRound</varname></term>
0526           <listitem><para>The change in maximum energy capacity at the start of each round.</para></listitem>
0527         </varlistentry>
0528         <varlistentry>
0529           <term><varname>SafeTeleportEnabled</varname></term>
0530           <listitem><para>If set to <quote><constant>false</constant></quote> the safe teleport action will be disabled.</para></listitem>
0531         </varlistentry>
0532         <varlistentry>
0533           <term><varname>CostOfSafeTeleport</varname></term>
0534           <listitem><para>The amount of energy consumed by teleporting safely.</para></listitem>
0535         </varlistentry>
0536         <varlistentry>
0537           <term><varname>VaporizerEnabled</varname></term>
0538           <listitem><para>If set to <quote><constant>false</constant></quote> the vaporizer action will be disabled.</para></listitem>
0539         </varlistentry>
0540         <varlistentry>
0541           <term><varname>CostOfVaporizer</varname></term>
0542           <listitem><para>The amount of energy consumed by using the vaporizer.</para></listitem>
0543         </varlistentry>
0544         <varlistentry>
0545           <term><varname>PushableJunkheaps</varname></term>
0546           <listitem><para>The number of junkheaps that can be moved with a single push. Possible values are <quote><constant>None</constant></quote>, <quote><constant>One</constant></quote> and <quote><constant>Many</constant></quote>.</para></listitem>
0547         </varlistentry>
0548         <varlistentry>
0549           <term><varname>SquaskKillsEnabled</varname></term>
0550           <listitem><para>If true, the hero can squash enemies by pushing junkheaps onto them.</para></listitem>
0551         </varlistentry>
0552         <varlistentry>
0553           <term><varname>JunkheapsAtGameStart</varname></term>
0554           <listitem><para>The number of junkheaps placed on the grid at the start of the first round.</para></listitem>
0555         </varlistentry>
0556         <varlistentry>
0557           <term><varname>JunkheapsAddedEachRound</varname></term>
0558           <listitem><para>The number of additional junkheaps placed on the grid at the start of each round.</para></listitem>
0559         </varlistentry>
0560         <varlistentry>
0561           <term><varname>PointsPerEnemyKilled</varname></term>
0562           <listitem><para>The number of points awarded for destroying a regular enemy.</para></listitem>
0563         </varlistentry>
0564         <varlistentry>
0565           <term><varname>PointsPerFastEnemyKilled</varname></term>
0566           <listitem><para>The number of points awarded for destroying a fast enemy.</para></listitem>
0567         </varlistentry>
0568         <varlistentry>
0569           <term><varname>WaitKillPointBonus</varname></term>
0570           <listitem><para>The number of bonus points awarded for destroying an enemy while waiting out the round.</para></listitem>
0571         </varlistentry>
0572         <varlistentry>
0573           <term><varname>WaitKillEnergyBonus</varname></term>
0574           <listitem><para>The number of bonus energy units awarded for destroying an enemy while waiting out the round.</para></listitem>
0575         </varlistentry>
0576         <varlistentry>
0577           <term><varname>SquashKillPointBonus</varname></term>
0578           <listitem><para>The number of bonus points awarded for squashing an enemy with a junkheap.</para></listitem>
0579         </varlistentry>
0580         <varlistentry>
0581           <term><varname>SquashKillEnergyBonus</varname></term>
0582           <listitem><para>The number of bonus energy units awarded for squashing an enemy with a junkheap.</para></listitem>
0583         </varlistentry>
0584       </variablelist>
0585     </sect2>
0586 
0587     <sect2>
0588       <title>Installing Custom Game Types</title>
0589 
0590       <para>In order for &killbots; to detect and use a new game type, the ruleset file must be moved to an appropriate directory. To install the game type for only the current user, copy the file to <filename class="directory">killbots/rulesets</filename> in the local folder in <userinput><command>qtpaths</command> <option>--paths GenericDataLocation </option></userinput>. To make the game type available system wide, move the file to <filename class="directory">killbots/rulesets</filename> in the system folder (from the previous command, possibly <filename class="directory">/usr/share</filename> or similar). Note that this will likely require administrative privileges.</para>
0591     </sect2>
0592 
0593   </sect1>
0594 </chapter>
0595 
0596 <chapter id="credits">
0597   <title>Credits and License</title>
0598 
0599   <para>&killbots;</para>
0600   <para>Program copyright 2007&ndash;2009 Parker Coates <email>parker.coates@kdemail.net</email></para>
0601   <para>Documentation Copyright &copy; 2008&ndash;2009 Parker Coates <email>parker.coates@kdemail.net</email></para>
0602 
0603   <!-- TRANS:CREDIT_FOR_TRANSLATORS -->
0604 
0605   &underFDL;
0606   &underGPL;
0607 </chapter>
0608 
0609 &documentation.index;
0610 
0611 </book>
0612 
0613 <!--
0614 Local Variables:
0615 mode: xml
0616 sgml-minimize-attributes:nil
0617 sgml-general-insert-case:lower
0618 sgml-indent-step:0
0619 sgml-indent-data:nil
0620 End:
0621 
0622 vim:tabstop=2:shiftwidth=2:expandtab
0623 kate: space-indent on; indent-width 2; tab-width 2; indent-mode none;
0624 -->