-
- Install instructions for SuperTux -
http://supertux.berlios.de/
-Last update: April 26, 2004
+Last update: October 11, 2005 by Ondra Hosek
REQUIREMENTS
------------
SDL
---
- "SuperTux" was programed using the "Simple DirectMedia Layer"
- libraries by Sam Lantinga. This means that the game can
- theoretically run under any environment that the SDL libraries support.
-
- (As of this program's release, this includes: Linux X11/DGA,
- Win32 WinDIB/DirectX, BeOS BWindow, and Solaris X11, as well
- as unofficually supported: Linux SVGAlib, IRIX 6.x X11,
- FreeBSD 3.x X11, and MacOS.)
-
- The Simple DirectMedia Layer is required to compile this game.
+ The Simple DirectMedia Layer, a set of libraries made to simplify
+ access to multimedia functions of various platforms, is required
+ to compile this game.
You can download the SDL libraries from:
http://www.libsdl.org/
SDL_image
---------
- SDL_image is also required. (It is used to load the PNG format images
- that come with SuperTux!)
-
- SDL_mixer
+ SDL_image, an image-loading library based on SDL, is also required.
+
+ You can download SDL_image from:
+ http://www.libsdl.org/projects/SDL_image/
+
+ OpenGL
+ ------
+ OpenGL is a graphics library that your system should already
+ have (it is preinstalled on Windows and should be available
+ in your X11 distribution on Unix systems).
+
+ To have the best performance possible, you should have an
+ accelerated graphics card and use its vendor's drivers. Currently,
+ only NVidia writes decent drivers for Linux, but since only
+ accelerated 2D is used, the performance on ATI or other graphics
+ cards shouldn't be significantly worse.
+
+ You will need the OpenGL headers to compile SuperTux, so it is
+ advisable to first install Mesa (which should be included with your
+ X11 distribution) on Unix to get the headers and only then replace
+ the software rendering OpenGL library by installing the driver for
+ your graphics card.
+
+ PhysicsFS
---------
- Sound and music are available, but are not required (see below).
- You will need the "SDL_mixer" library compiled and installed if
- you want sound.
+ PhysicsFS provides a Quake 3-like data access method.
+
+ You can get PhysicsFS and more information about it from:
+ http://icculus.org/physfs/
- OpenGL implementation (optional)
- ---------------------
- Mesa should be installed in order to compile, but it is painly
- slow when running, so we advise you to install your videocard
- drivers (of course, it has to be an accelerated videocard).
- For linux, nvidia vendor is the only one that makes decent drivers.
- But the ATI drivers should run with the same performance, since
- it only uses accelerated 2d, not 3d.
+ Jam
+ ---
+ If you want to build SuperTux, you will need Jam, a build system by
+ Perforce. Extract the archive on your hard disk, run make and copy
+ the compiled binary (in the bin.<platform> directory) into your PATH
+ (e.g. /usr/bin).
- Anyway, you can use the SDL frontend and you most likely won't
- notice any difference.
+ You can download Jam from:
+ ftp://ftp.perforce.com/jam/
INSTALLING UNDER LINUX/UNIX
Note: Read this entire section before you start issuing commands!
-----------------------------------------------------------------
- SuperTux uses a script that checks for dependency and disables
- features, in case they are not found.
- The script is the configure and you can specify a few stuff
- like the directory to which you want to install SuperTux,
- by giving the argument --prefix=/usr/local (ie). For more
- informations, type './configure --help'.
- (Note: SuperTux does not need to be installed in the system,
+ SuperTux uses a script that checks for dependencies and disables
+ features in case the requirements are not met.
+ The script is named configure and you can specify a few parameters
+ like the directory to which you want to install SuperTux
+ (by supplying the argument --prefix=/usr/local). For more
+ information, type './configure --help'.
+ (Note: SuperTux does not need to be installed on the system,
you can run it from its own directory.)
- If there isn't any configure script (ie. in case, you got it
- via cvs), just run the autogen.sh script.
+ If no configure script exists (e.g. in case you've retrieved SuperTux
+ from SVN), just run the autogen.sh script. You'll need autoconf
+ for this.
- To compile it, a 'make' is enough.
- Type 'make install' (as root) to copy it into the system.
- (default directory is /usr/local, see above how to change
- this.)
+ To compile SuperTux, a 'jam' is enough.
+ Type 'jam install' (as root) to copy it into the system.
+ (By default, SuperTux installs itself into /usr/local, see above how
+ to change this behaviour.)
So, in short, just type:
sh autogen.sh (in case there isn't any configure file already)
sh configure
- make
+ jam
- And in case you want to copy SuperTux to the system:
- make install (as root)
+ And in case you want to install SuperTux into the system:
+ jam install (as root)
ICON FILE
A 32x32, XPM-format icon file is available if you wish to use
an icon for a menu entry for this game.
- The file is "supertux.xpm", and can be found at the data/images/
- directory.
+ The file is "supertux.xpm", and can be found in the
+ data/images/engine/icons/ directory.
<title>SuperTux File Format Documentation</title>
<author><firstname>Ondra</firstname><surname>Hosek</surname></author>
</articleinfo>
-<para>This document serves the simple purpose of a reference for the files specific to SuperTux (levels, worldmaps, ...). Some of these files can be modified using an editor such as </para>
+<para>This document serves the simple purpose of a reference for the files specific to SuperTux (levels, worldmaps, ...). Some of these files can be modified using an editor such as Flexlay.</para>
<sect1><title>Brackets, brackets, brackets (About the Language)</title>
<para>As you might have already noticed, the SuperTux definition files (just about for everything) are full of brackets ('(' and ')'). I know that <acronym>BASIC</acronym> programmers already freak out when seeing the vast amount of brackets used in C. The truth is that you can never have too many brackets. (Okay, that's a lie, but I don't know how lenient your compiler is.)</para>
-<para>"That Crazy File Format" used by SuperTux is Lisp. In most of its implementations, it is used as a programming language, but the devs simply thought why not to implement it as a data storage language. And so, the SuperTux data language, nearly fully based on Lisp, was born.</para>
+<para>"That Crazy File Format" used by SuperTux is Lisp. In most of its implementations, it is used as a programming language, but the devs simply thought why not to implement it as a data storage language. And so, the SuperTux data language, nearly fully based on Lisp, was born.</para>
<sect2><title>Basic Syntax</title>
-<para>So now you expect me to teach you Lisp. "You'd like that, wouldn't ya?" Okay, okay, let me teach you a bit.</para>
+<para>So now you expect me to teach you Lisp. "You'd like that, wouldn't ya?" Okay, okay, let me teach you a bit.</para>
<para>Language syntax is (nearly) always best consumable when demonstrated on an example, like so:
<programlisting>(supertux-lisp-example
; This is a comment. It is initiated by a semi-colon. (Yes, you un-believer.)
(sector ;; A level is divided into independent sectors that can be connected
;; by doors.
- (name "main") ;; Tux begins in the sector named "main".
+ (name "main") ;; Tux begins in the sector named "main".
(music "Ondras_chipdisko.mod") ;; Name of the music file. See the data/music/ directory.
;; apply the level design correctly).
(tilemap ;; Here come the files.
- (layer "background" ;; Currently, there are three layer types: "background",
- ;; "interactive" and "foreground".
+ (layer "background" ;; Currently, there are three layer types: "background",
+ ;; "interactive" and "foreground".
(solid #f) ;; Will Tux collide with tiles in this tilemap?
</sect1>
<sect1><title>Worldmaps</title>
-<para>Worldmaps are basically level files with a few nuances.</para>
-
-<sect2><title>Basic worldmap syntax</title>
-<para>It's time for a hands-on example. Let's just picture somebody with the idea to write a level set that takes place in London (represented by a lonely island):
+<para>Worldmaps are basically level files with a few nuances. To explain the syntax, let's just picture somebody with the idea to write a level set that takes place in London (represented by a lonely island):
<programlisting>(supertux-worldmap
(properties ;; Global worldmap properties.
(name (_ "London")) ;; Name of the worldmap
(teleport-to-y 1)
)
)</programlisting></para>
-</sect2>
</sect1>
+<sect1><title>Level subsets</title>
+<para>Whilst creating a worldmap is optional, you'll need to write a level subset file to make your level package to appear in the contribs menu (or, ironically, inhibiting this behaviour). A file containing a level subset is called <code>info</code> and lies in <code>data/levels/<subset_name>.</code>
+<programlisting>(supertux-level-subset
+ (title "Domain of the Hosek siblings") ;; Give your levelset a nice name...
+ (description "Levels by Ondra and Klara, the Hosek siblings") ;; ... and a short description.
+ (hide-from-contribs #f) ;; Set to true if you don't want your levelset to appear in the "Contrib Levels" menu.
+)</programlisting></para>
+</sect1>
+
<!--
TODO:
-* Level subset
* Sprite definitions
* Tile definitions