<HTML><HEAD> <!-- ---- $Id: freecraft.html,v 1.108 2003/02/05 00:35:01 jsalmon3 Exp $ ---- (c) Copyright 2001-2003 by Lutz Sammer ---- FreeCraft is free software; you can redistribute it and/or modify ---- it under the terms of the GNU General Public License as published by ---- the Free Software Foundation; only version 2 of the License. ---- FreeCraft is distributed in the hope that it will be useful, ---- but WITHOUT ANY WARRANTY; without even the implied warranty of ---- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ---- GNU General Public License for more details. --> <TITLE>FreeCraft Version 1.18</TITLE> </HEAD> <BODY> <H1>FreeCraft Version 1.18</H1> <HR><PRE WIDTH=80> ___________ _________ _____ __ \_ _____/______ ____ ____ \_ ___ \____________ _/ ____\/ |_ | __) \_ __ \_/ __ \_/ __ \/ \ \/\_ __ \__ \\ __\\ __| | \ | | \/\ ___/\ ___/\ \____| | \// __ \| | | | \___ / |__| \___ >\___ >\______ /|__| (____ /__| |__| \/ \/ \/ \/ \/ ______________________ ______________________ T H E W A R B E G I N S FreeCraft - A free fantasy real time strategy game engine </PRE> <P><B>(C) Copyright 1998-2003 by The FreeCraft Project. Distributed under the <A HREF="gpl.html">"GNU General Public License"</A></B> <HR> <A HREF="#contents">Contents</A> <H2><A NAME="copyright">Copyrights</A></H2> Please refer to the <A HREF="gpl.html">GNU General Public License</A> document provided with this distribution.<BR> To proceed beyond this point, is to agree with the license agreement. <P>The self extracting archive contains ZIP code, read the <A HREF="ZIP-LICENSE">ZIP-LICENSE</A>. <P>The binaries could contain SDL code, read the <A HREF="README-SDL.txt">README-SDL.txt</A> and the <A HREF="http://www.gnu.org/copyleft/lesser.html"> GNU LGPL license.</A> <P>The source and binaries contains SIOD code, read <A HREF="SIOD.txt"> and <A HREF="../src/siod/siod.html"> siod.html</A> for copyright and informations. <H2><A NAME="disclaimer">DISCLAIMER</A></H2> This software is provided as-is. The author(s) can not be held liable for any damage that might arise from the use of this software.<P> <B>Use it at your own risk</B>. <H2><A NAME="introduction">Introduction</A></H2> Read this for the introduction: <A HREF="readme.html">readme.html</A> <H2><A NAME="install">Install</A></H2> Read this how to install FreeCraft: <A HREF="install.html">install.html</A> <H2><A NAME="upgrade">Upgrade</A></H2> If you upgrade from an older beta version to a new one, please <B>always</B> run build.sh. Some graphics or formats may have been changed. <B>Don't forget</B> to backup your modified files.<P> Read this how to upgrade FreeCraft: <A HREF="install.html">install.html</A> <H2><A NAME="changes">Changes</A></H2> Read this for the history of FreeCraft: <A HREF="ChangeLog.html">ChangeLog.html</A> <H2><A NAME="todo">To-do and known bugs</A></H2> This file contains the known bugs and what we plan in the future: <A HREF="todo.html">todo.html</A> <P>A more up to date list of known bugs are here: <A HREF="http://sourceforge.net/tracker/?group_id=1965&atid=101965"> SourceForge: FreeCraft real-time strategy game engine - Tracker - Bugs</A> <P>A more up to date list of planned tasks are here: <A HREF="http://sourceforge.net/pm/?group_id=1965"> SourceForge: FreeCraft real-time strategy game engine - Tasks</A> <H2><A NAME="faq">Problems</A></H2> Read this, if you have problems compiling, installing or playing FreeCraft <A HREF="faq.html">faq.html</A> or use the <A HREF="http://sourceforge.net/forum/forum.php?forum_id=5634"> help forum</A> for questions. <H2><A NAME="features">Features</A></H2> <UL> <LI>Health and mana and orders could be shown on the map. <LI>Better path finder routines. <LI>Loading of compressed (gzip or bzip2) puds, with zziplib direct loading from zip archives. <LI>Configuration language. <LI>Scripting language. <LI>Easy replace of unit graphics and sounds. <LI>64 times greater maps. <LI>Training queues. <LI>Way-points. <LI>Correct fog of war (terrain changes are not shown). <LI>Nice looking fog of war (alpha-gray-scale) <LI>More resolutions 640x480, 800x600, 1024x768, 1280x960 and 1600x1200. <LI>Support for viewports. <LI>Support for MOD/OGG/MP3 background music. <LI>Support for up to 6 resources. <LI>Support for up to 15 players in local network. <LI>Internet play. </UL> <H2><A NAME="open-projects">Open projects</A></H2> Following projects are not assigned: (Please ask before start working) <UL> <LI>Help the map editor development. <LI>Write an AI editor. <LI>Write a tileset editor. <LI>Write a configuration editor. <LI>Create own tilesets and unit graphics. <LI>Create own sounds, voices, videos and campaigns. <LI>Create movies. <LI>Create a jingle for startup and home-page. <LI>Write better documentation. (correct my English and grammar :-) <LI>Improved network support (viewer, proxy, automatic lag detection) <LI>Write "wartools" for the demo-versions. <LI>Help making a clone of the science fiction game from the same company. <LI>Add support for sandtools to the engine. <LI>Port to X11 8bpp or 32bpp, full-screen and DGA support. <LI>Port to PocketPC's. <LI>Multi-language support. <LI><I>And any other help is welcome.</I> </UL> If you want to help, please join the FreeCraft mailing list and check if somebody is already working on your project. Then tell us what you want to work on. <H2><A NAME="documentation">Documentation</A></H2> Look into the original game documentation for playing instructions. Look into the sources for more information. <H3><A NAME="commandline">Command line options</A></H3> freecraft [OPTIONS] [map.pud|map.pud.gz] <UL> <LI>OPTIONS<BR> You can currently give following command line options. Use "freecraft -h" to get an up to date information. <UL> <LI>-c "file.ccl"<BR> Load FreeCraft config file <VAR>"file.ccl"</VAR> instead of the default "<VAR>librarypath/</VAR>ccl/freecraft.ccl". <LI>-d "path"<BR> Change the FreeCraft library path to <VAR>"path"</VAR> instead of the default "./data" or "/usr/share/games/freecraft/default". <LI>-e<BR> Start the editor directly. <LI>-f factor<BR> Adjust the build costs of units for the computer players by factor. <LI>-h<BR> Show command line help. <LI>-l<BR> Disable command log. <LI>-n [localport:]serverhost[:port]<BR> Connect to FreeCraft server <VAR>serverhost</VAR>. <VAR>serverhost</VAR> is the name of the server like "freecraft.org" or the IP number like "192.168.1.1". <VAR>localport</VAR> is the port number on the local computer, <VAR>port</VAR> is the port on the game server. The default ports are 6660. If you have a firewall please let the port 6660/UDP through. Can be used together with the network GUI, this is than the default game server. <LI>-N name<BR> Name of the player, for network play. Can be used together with network GUI, this is than the default player name. <LI>-s frames<BR> The AI sleeps 'frames' before it starts working. <LI>-t factor<BR> Adjust the build time of units for the computer players by factor. <LI>-v mode<BR> Video mode (0=default, 1=640x480, 2=800x600, 3=1024x768, 4=1280x960, 5=1600x1200) <LI>-w<BR> Wait until sound device comes available. (Only supported with linux OSS driver) <LI>-D<BR> Video depth = pixel pro point. Only useful if not automatic detected. <LI>-F<BR> Full-screen video-mode. (Not supported on all platforms, just test) <LI>-S speed<BR> Want to play slower? Use for 50 to play with half speed. Want to play faster? Use 200 to play at double speed. (default is 100% which are 30 frames/second) <LI>-W<BR> Windowed video-mode. </UL> <LI>map.pud<BR> Load the map "map.pud" instead of the default "<VAR>librarypath/</VAR>default.cm". <LI>map.pud.gz<BR> Load the compressed map "map.pud.gz" instead of the default "<VAR>librarypath/</VAR>default.cm". <LI>map.cm<BR> Load the FreeCraft map "map.cm" instead of the default. <LI>map.cm.gz<BR> Load the compressed FreeCraft map "map.cm.gz" instead of the default. <LI><BR> If no file is given the default map "<VAR>librarypath/</VAR>default.cm" will be loaded. </UL> <H3>Keyboard commands</H3> <UL> <LI><KBD>cursor-left</KBD><BR> Scroll map left. With control scroll faster. <LI><KBD>cursor-right</KBD><BR> Scroll map right. With control scroll faster. <LI><KBD>cursor-up</KBD><BR> Scroll map up. With control scroll faster. <LI><KBD>cursor-down</KBD><BR> Scroll map down. With control scroll faster. <LI><KBD>RETURN</KBD><BR> Enter command line. <LI><KBD>TAB</KBD><BR> Toggle mini-map mode, with/without terrain. <LI><KBD>+</KBD><BR> Increase game speed. <LI><KBD>-</KBD><BR> Decrease game speed. <LI><KBD>ALT+B, CTRL+B</KBD><BR> Toggle big map mode on/off. <LI><KBD>ALT+C, CTRL+C, c (if unused)</KBD><BR> Center on selected units or left click on the unit portait. <LI><KBD>ALT+X, CTRL+X</KBD><BR> Exit program. <LI><KBD>ALT+Q, CTRL+Q</KBD><BR> Quit level. <LI><KBD>ALT+R, CTRL+R</KBD><BR> Restart scenario. <LI><KBD>^</KBD><BR> Unselect all units. <LI><KBD># (1-9,0)</KBD><BR> Recall unit group. All units in the group becomes the current selection. If unit group is already selected, center on group. <LI><KBD>SHIFT + # (1-9,0)</KBD><BR> Add the units of the group to the current selection. <LI><KBD>CTRL + # (1-9,0)</KBD><BR> Define unit group. All currently selected units become the new group. <LI><KBD>SHIFT+CTRL + # (1-9,0)</KBD><BR> Add to unit group. All currently selected units are added to the group. <LI><KBD>ALT + # (1-9,0)</KBD><BR> Alternate unit group. All currently selected units are also added to the new group. <LI><KBD>SHIFT+ALT + # (1-9,0)</KBD><BR> Add to alternate unit group. All currently selected units are also added to the group. <LI><KBD>F1,F2,F3,F4</KBD><BR> Recall saved map position. <LI><KBD>SHIFT+F1,SHIFT+F2,SHIFT+F3,SHIFT+F4</KBD><BR> Save current map position for later recall. <LI><KBD>ALT+G, CTRL+G</KBD><BR> Toggle mouse grab mode. <LI><KBD>ALT+F, CTRL+F</KBD><BR> Toggle fullscreen mode. (only with SDL under X11 supported) <LI><KBD>ALT+P, CTRL+P</KBD> or <KBD>pause</KBD><BR> Toggle pause mode. <LI><KBD>CTRL+S</KBD><BR> Toggle sound on/off. <LI><KBD>ALT+S, F11</KBD><BR> Save complete state. <LI><KBD>CTRL+ALT+S</KBD><BR> Save level as pud. <LI><KBD>ALT+L, F12</KBD><BR> Load complete state. <LI><KBD>ALT+M, F10</KBD><BR> Enter game menu. <LI><KBD>CTRL+T</KBD><BR> Track selected unit in current viewport or middle click on the unit portrait. <LI><KBD>SPACE</KBD><BR> Center on last message. Cycles through all events. <LI><KBD>SHIFT+SPACE</KBD><BR> Center on previous message. Cycles through all events. <LI><KBD>ALT+I, CTRL+I</KBD><BR> Find an idle worker. Cycles through all idle workers. <LI><KBD>ALT+V, CTRL+V</KBD><BR> Cycle through the pre-defined viewpoints configurations. <LI><KBD>Print Screen</KBD><BR> Save a screenshot. </UL> <H3>Mouse commands</H3> <H4>Clicking on minimap</H4> <H4>Clicking on map</H4> <UL> <LI>Single click with left mouse button<BR> Select unit. <LI>SHIFT Single click with left mouse button<BR> Add or remove unit from selection. Could be combined with any other modifier. <LI>CTRL Single click with left mouse button<BR> Select all units of the same unit-type. <LI>ALT Single click with left mouse button<BR> Select all units of the previous group. <LI>Double click with left mouse button<BR> Select all units of the same unit-type. <LI>Click & Hold with left mouse button<BR> Not supported. <HR> <LI>CTRL Single click with right mouse button on unit<BR> Selected unit follows this unit. <LI>Single click with right mouse button<BR> Does automatic action of the current selected unit. <LI>SHIFT Single click with right mouse button<BR> Add automatic action of the current selected unit to the command queue, this means the current order is first finished, than the unit starts with this order. <LI>CTRL Single click with right mouse button<BR> Does second automatic action of the current selected unit. <LI>ALT Single click with right mouse button<BR> Not supported. <LI>Double click with right mouse button<BR> Not supported. <LI>Click & Hold with right mouse button<BR> Not supported. </UL> <H4>Clicking on buttons</H4> <UL> <LI>CTRL single click with left mouse button<BR> Enable or disable automatic spell casting. </UL> <H2><A NAME="ccl">CCL: FreeCraft Configuration Language</A></H2> The CCL is scheme. I use SIOD for this. (The most recent release is available from <a href="http://people.delphiforums.com/gjc/siod.html">this web page</a>) .<P> You can also enter CCL commands at the message prompt. Each line starting with "(" is taken as CCL command. <H3>Documentation</H3> <A HREF="ccl/ccl.html">I have started new documentation here. </A> <P> Please help me writing it. <H2><A NAME="internal">Internal Formats</A></H2> <H3><A NAME="internal-tileset">Tileset</A></H3> The tileset graphic is loaded from 'png'-files. Only files with 256 indexed colors are currently supported.<P> The format of the tileset graphic is:<P> 32x32 pixels of a tile.<P> 16 tiles are stored per row.<P> The pixels (7,6),(7,14),(7,22),(7,30), (15,6),(15,14),(15,22),(15,30), (23,6),(23,14),(23,22),(23,30) and (31,6),(31,14),(31,22),(31,30) are used for the minimap picture. For a 32x32 map all 16 Pixels are used. For a 128x128 map only the first one.<P> The colors of the palette reserved for the tileset:<BR> HELPME: I don't know!<P> The conversion table from pud file to the internal format could be changed with ccl. <A HREF="graphic/tileset.html">More tileset informations</A> <H3><A NAME="internal-ui">User Interface</A></H3> <A HREF="graphic/ui.html">More user interface informations</A> <H3><A NAME="internal-sprites">Sprites</A></H3> The graphics are loaded from 'png'-files. Only files with 256 indexed colors are currently supported.<P> The format of an unit sprite is:<P> FIXME: more to come <H3><A NAME="internal-palette">Palette</A></H3> Look into tileset documentation, what I have found. <H3><A NAME="internal-sounds">Sounds</A></H3> The sounds are loaded from 'wav'-files. Files with 8 or 16 bit, mono and 11025hz sample frequency are currently supported.<P> <H3><A NAME="utilities">Utilities</A></H3> <H4>extract</H4> Extract a compressed entry out of the original game data file.<P> Read the knowledge bases which entry contains what. <H5>Usage: extract data-file entry output</H5> <UL> <LI>data-file<BR> Compressed input data file. (normally maindat.war) <LI>entry<BR> Entry number of the data-file. <LI>output<BR> Output file for the uncompressed entry. </UL> <H4>gfx2png</H4> Convert compressed graphic (unit sprites) to png graphic file. <H5>Usage: gfx2png palette file.gfx</H5> <UL> <LI>palette<BR> Use palette in png file. "palette" is a raw file containing 768 bytes for 256 colors of r g b. <LI>file.gfx<BR> File.gfx contains the graphics of the sprites. The output file is file.png. </UL> <H4>gfu2png</H4> FIXME: must write docu. <H4>img2png</H4> FIXME: must write docu. <H4>cur2png</H4> FIXME: must write docu. <H4>fnt2png</H4> FIXME: must write docu. <H4>tile2png</H4> FIXME: must write docu. <H4>aledoc</H4> FIXME: must write docu. <H2><A NAME="arts">Arts</A></H2> Following things are used from other peoples. If not other mentioned, protected by the following license <A HREF="gpl.html"> "GNU General Public License" </A></B> <DL> <DT>cross.png, health.png, mana.png. <DD>(c) Copyright 1998-2003 by Johns. <DT>food.png <DD>Food resource icon (c) Copyright 2000 by the Guardian. <DT>score.png <DD>Score icon in resource (c) Copyright 2000 by the Guardian. <DT>ore,stone,coal.png <DD>Orc, Stone and coal icon in resource (c) Copyright 2000 by the Guardian. <DT>freecraft.bmp, freecraft.ico <DD>The FreeCraft icon (c) Copyright 2000 by Kyle. </DL> <H2><A NAME="thanks">Thanks</A></H2> Thanks to following people for helping me develop FreeCraft: <UL> <LI>Ari <LI>Edgar <LI>Valery Shchedrin <LI>Iftikhar Rathore <LI>Charles K Hardin <LI>Fabrice Rossi <LI>DigiCat <LI>Josh Cogliati <LI>Patrick Mullen <LI>Vladi Shabanski <LI>Cris Daniluk <LI>Patrice Fortier <LI>FT Rathore <LI>Trent Piepho <LI>Jon Gabrielson <LI>Lukas Hejtmanek <LI>Steinar Hamre <LI>Ian Farmer <LI>Sebastian Drews <LI>Jarek Sobieszek <LI>Anthony Towns <LI>Stefan Dirsch <LI>Al Koskelin <LI>George J. Carrette <LI>Guardian <LI>Michael O'Reilly <LI>Dan Hensley <LI>Sean McMillian <LI>Mike Earl <LI>Ian Turner <LI>David Slimp <LI>Iuri Fiedoruk <LI>Luke Mauldin <LI>Nathan Adams <LI>Stephan Rasenbergver <LI>Dave Reed <LI>Josef Spillner <LI>James Dessart <LI>Jimmy Salmon <LI>Jan Uerpmann <LI>Aaron Berger <LI>Latimerius <LI>Antonis Chaniotis <LI>Samuel Hays <LI>Nehal Mistry <LI>Patrick Beasley <LI>David Martinez Moreno <LI>Flavio Silvestrow <LI>Daniel Burrows <LI>Dave Turner <LI>Ben Hines <LI>Kachalov Anton <LI>Martin Renold <LI>Martin Hajduch <LI>Jeff Binder <LI>Berend de Boer <LI>Dirk Thierbach <LI>Russell Smith <LI>Ludovic <LI>Mr Russ </UL> <P><EM>And to all I have forgot to write up!</EM><BR> Please drop me an email, if I forgot you. <H2><A NAME="contents">Contents</A></H2> <UL> <LI><A HREF="#copyright">Copyright</A> <LI><A HREF="#disclaimer">Disclaimer</A> <LI><A HREF="#introduction">Introduction</A> <LI><A HREF="#install">Install</A> <LI><A HREF="#upgrade">Upgrade</A> <LI><A HREF="#changes">Changes</A> <LI><A HREF="#todo">To-do</A> <LI><A HREF="#faq">FAQ</A> <LI><A HREF="#features">Features</A> <LI><A HREF="#open-projects">Open projects</A> <LI><A HREF="#documentation">Documentation</A> <UL> <LI><A HREF="#commandline">Command line options</A> <LI><A HREF="#ccl">CCL: FreeCraft Configuration language</A> <LI><A HREF="#internal">Internal Formats</A> <UL> <LI><A HREF="#internal-tileset">Tileset</A> <LI><A HREF="#internal-ui">User interface</A> <LI><A HREF="#internal-sprites">Sprites</A> <LI><A HREF="#internal-sounds">Sounds</A> <LI><A HREF="#internal-palette">Palette</A> </UL> </UL> <LI><A HREF="#utilities">Utilities</A> <UL> </UL> <LI><A HREF="#arts">Arts</A> <LI><A HREF="#thanks">Thanks</A> <LI><A HREF="#contents">Contents</A> </UL> <HR> All trademarks and copyrights on this page are owned by their respective owners. <ADDRESS><A HREF="http://freecraft.org">The FreeCraft Project</A> </ADDRESS></BODY></HTML>