Mote is available as source code and support files alone at the time of writing. Binary versions will not become available until the project has stabilised and has a releasable product. Therefore this section concentrates on merely getting existing code running rather than introducing technical internal information:
Though mote may compile on other UNIX-like systems with appropriate hardware and software support, the systems used for most development work are running Debian GNU/Linux 2.2- if you are having problems try and "sanity test" on a release of this system.
Since Mote has been initially developed on the Linux operating system running on Intel (or compatible) hardware there are some pre-requisites for this process:
CVS (Concurrent Versions System) version 1.9.x or higher. Client/Server connections must be allowed.
GNU/Linux with a 2.2.x series kernel, or similar UNIX system.
A route to the host cvs.mote.sourceforge.net. As yet there are no mirrors or alternate means of acquiring the source.
Mote is hosted by SourceForge and therefore the source may be retrieved via anonymous CVS by executing certain commands in a shell session. Since the checkout is anonymous, enter a blank password when prompted.
cvs -d:pserver:anonymous@cvs.mote.sourceforge.net:/cvsroot/mote login cvs -z3 -d:pserver:anonymous@cvs.mote.sourceforge.net:/cvsroot/mote co Mote cvs -d:pserver:anonymous@cvs.mote.sourceforge.net:/cvsroot/mote logoutAn example session is as follows:
host $ cvs -d:pserver:anonymous@cvs.mote.sourceforge.net:/cvsroot/mote login (Logging in to anonymous@cvs.mote.sourceforge.net) CVS password: Enter host $ cvs -z3 -d:pserver:anonymous@cvs.mote.sourceforge.net:/cvsroot/mote co Mote cvs server: Updating Mote cvs server: Updating Mote/MotePerl cvs server: Updating Mote/images cvs server: Updating Mote/m-lib U Mote/m-lib/boot-mote.scm ...much output... cvs server: Updating Mote/tools host $ cvs -d:pserver:anonymous@cvs.mote.sourceforge.net:/cvsroot/mote logout (Logging out of anonymous@cvs.mote.sourceforge.net) host $
Alternatively you may retrieve the nightly tarball from Sourceforge This is not really adequate for those intending to do serious development, however.
Mote is a complex graphical application and requires many third party libaries which, whilst common are not maintained by the Mote developers. Therefore any problems with these libraries should be directed to their respective maintainers. See Bugs and further information.
Table 2-1 below indicates the third party code that Mote depends on, what services each provides and the current Debian package name. If Mote is being installed on a Debian system, merely using apt to install these packages and their dependencies should be sufficient. If Debian is not the system in use, ensure the libaries are installed with full development headers.
Note to reviewers: This probably needs to be done as a proper dependency chart but I'm not sure what the best format would be.
Table 2-1. Mote's Dependencies
Library | Debian Package | Provides | Type |
---|---|---|---|
GTK-GLarea | gtkglarea1.0.6-4-dev.deb | Include header files, shared & static libraries etc for gtkglarea | Development SDK and shared libraries |
Plib 1.2.0-1 | plib1.2.0-1-dev.deb | Simple game-orientated API for joysticks, sound and the like. NOTE: currently the Debian file is unstable. | Static library and development SDK |
LibPNG 1.0.5-1 | libpng1.0.5-1-dev.deb | Library for manipulating Portable Network Graphics files. | Development SDK and shared libraries |
Libc6 2.1.3-10 | libc6-2.1.3-10-dev.deb | Minimum C library supporting mote's code, including the libpthread threading library. | Shared library and development SDK |
Libstdc++ 2.91 | libstdc++2.9-dev.deb | Minimum C++ library supporting mote's code. | Shared library and development SDK |
Mesa G3 3.1-17 | mesag3.1-17-dev.deb | An unlicensed OpenGL implementation with support for 3D acceleration hardware. | Shared library and development SDK |
GLUT G3 3.7-5 | glutg3_3.7-50-dev.deb | An open GL utility toolkit providing simple windowing functions. | Shared libary and development SDK |
XLib 6 3.3.6-6 | xlib6g3.3.3-6-dev.deb | X Window System library. | Shared libary and development SDK |
Guile Scheme 1.3 and libguile4 | guile1.3.4-2.deb and libguile4_1.3-12-dev.deb | Interpreter and libraries for Scheme extension system. | Shared library, interpreter and SDK |
Perl 5.005 | perl-5.005.03-7.1.deb | Interpreter and headers for perl language. This will replace Scheme in the near future. | Interpreter and SDK |
Versions of the MESA library (such as mesag3-glide) provide support for 3D accelerator hardware, something which Mote takes full advantage of. Mote will run without such hardware using vanilla MESA, albeit slowly, therefore a chapter is in preparation describing the various means of accelerating 3D performance under X including:
Glide. Used via MESA to accelerate 3Dfx cards and friends.
Glide enabled X Server. New from 3Dfx, this allows Mote to run windowed once more. However, it is very beta! This server uses the DRI layer to interface with your 3dfx card. More information may be found at the 3Dfx website
UTAH GLX. Rather unstable, but users have reported astonishing framerates with the Matrox G400 card.
In addition to the items above Mote requires a modern C++ compiler that handles templates correctly (egcs 2.95 is recommended) and the Autoconf utility (available from the Free Software Foundation or your Linux vendor) to generate the correct Makefile. Your make program should be compatible with GNU Make 3.7.
In addition to the Mote executable itself, several other items are found or built in directories below the initial checkout directory.
Contains the perl extension language bindings and top level objects used when writing extensions.
Contains some in game images, including the control panel and textures.
Contains the scheme definitions of various game objects. Shortly to be replaced by items in the MotePerl/ directory.
Contains shiptool and ship-conv.pl. The former is a viewer that may examine any of the Scheme-defined ships or other game objects whilst the latter converts LightWave object *.lwo files into in-game objects. See the Tools documentation for more information.
Note To Reviewers: These entities actually exist but render strangely when using the jadetex system so I didn't put them in. It should be possible to generate nroff code suitable for man pages from these (FreeBSD work in this way) but it would be helpful to include them in the main document as well. The HTML version of the Mote Technical Reference now contains them.
First of all ensure that the dependencies above are met as best you can and the Mote sources have been checked out into an empty directory. In a shell, change to that directory and perform the following commands (some sample output shown):
host $./configure creating cache ./config.cache checking for c++... c++ checking whether the C++ compiler (c++ -O3 -Wall -DNDEBUG ) works... yes ...much output... checking for getcwd... yes checking for regcomp... yes updating cache ./config.cache creating ./config.status creating MotePerl/Makefile creating tools/Makefile creating Makefile host $make c++ -O3 -Wall -DNDEBUG -I/usr/X11R6/include -I/usr/include -Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include -I/usr/lib/perl5/5.005/i386-linux ...much output... Manifying blib/man3/Mote::Glue.3pm make[2]: Leaving directory `/home/david/mymote/Mote/MotePerl' make[1]: Leaving directory `/home/david/mymote/Mote/MotePerl' host $
All being well you should be left with a Mote executable and associated tools and you should proceed to Running and testing the game to test the executable. Should the build have failed, examine the following checklist to determine the source of your problems:
Check that your system meets all the dependencies in Table 2-1. Also, if your libaries are installed in an unusual place, ensure the environment variable CPLUS_INCLUDE_PATH contains these paths. In the case of the programs, ensure your PATH contains them.
There are two ways to obtain this union, one method is to include the sys/sem.h file, another is to define it in the Perl headers yourself as follows:
Become superuser and change to the location of your Perl headers (on this system they are in /usr/lib/perl5/5.005/i386-linux/CORE/ [1]).
Edit the file config.h and comment out the line #define HAS_UNION_SEMUN (line 1710) and save. This tells Perl to use its own internal definition of this union.
Recompile and all should now be well.
Alternatively, upgrading your Perl to the latest version available may solve the problem. This route is unsupported however.
As Mote is a graphical application, all testing work should be performed whilst X is running [2] Mote should not be run directly at the current time, as some setup is required on the user's part to ensure the extension languages correctly start and generate the universe. To keep this process pain free, the script testmote.sh has been provided. From the mote working directory, simply type:
./testmote.shThis will set up a few environment variables, start Mote itself and provide a test script to load the universe. You will see some console output (these are the co-ordinates of the vertices composing objects in MoteSpace) before the Mote window itself appears. You will be looking at something approximating DIAGRAM. Should Mote segfault, or fail in some way, please proceed to Bugs and further information to find assistance in solving your problems.
Piloting such a complex peice of technology as Mote spacecraft can be confusing. Currently, the pilot has two main means of controlling the vehicle:
Keyboard only. This is the default means of control but is sadly limited.
Keyboard and joystick. This requires the (linux) kernel to provide joystick functionality as well as the ownership of compatible joystick hardware. Behaviour under win32 is undefined. That said, joystick control provides a more fluid means and intuitive means of control than the keyboard.
Additionally, the game has several screens providing different functionality. For example the game starts displaying the Status screen which indicates your combat rating, name, rank and other information. From this screen you may currently switch to flight screens allowing you to pilot your craft and the galaxy map screen which displays a starmaps and allows you to plot your course.
The following kepresses are currently implemented for the system (from keys.h:
Roll the ship to the left in the flight screens. On the galaxy map this scrolls the map to the left.
Roll the ship to the right. On the galaxy map screen this scrolls the map to the right
Pitches the ship's nose upwards. On the map screens this scrolls the map up.
Pitches the ship's nose downwards. On the map screen this scrolls the map down.
Accelerates the craft. Note: You can have essentially infinite speed in this version of Mote
Deccelerates the craft. This will reduce the speed to zero but cannot be used as a reverse function.
Toggle engines. When the engines are off you will be able to manouvre far more effectively but will be much slower (as you are only using the thrusters rather than the main drive).
This key works on the galaxy map only. It will switch your view back to the part of the map where your ship is currently located.
On any flight view this will engage your Jump engines (if your ship has them fitted). Currently this makes you go very fast, very quickly. Engaging them whilst tailgating the local crime lord's mega-yacht has been the downfall of many a space-farer.
Switch to the Front flight screen or re-launch your ship if docked.
Switch to the Rear flight view.
Switch to the Left waist view. Note that this is deprecated and may result in the default switch to the Front view (though the view title will say "Left View").
Switch to the Right waist view. Like the Left view this is deprecated.
Switch to the external view. This allows you to admire the textures that now adorn Mote ships.
Switch to the Galaxy Map view
Switch to the status view.
The keyboard component of this control method remains the same but now the following joystick actions can be used to control your vessel:
Roll your ship, or scroll the galaxy map.
Pitch your ship or scroll the galaxy map.
Some joysticks may have a 3rd control built into the stick (try twisting it) or attached to the base unit. If present this will allow you to control your throttle.
Switch to Front View.
Switch to Rear view.
Switch to Left view. Deprecated.
Switch to Right view. Deprecated.
[1] | You can extract this location by running grep perl5 Makefile in the Mote source directory. The path ending with "CORE" is what you require. |
[2] | This is slightly different when Glide is in use, however this document does not yet cover the use of Glide with Mote. |