This game makes you a constructor and pilot of a spaceship.

Piloting is similar to classic 3D FPP spaceship games, like Elite and Netwars. In the current version, there are not many piloting missions to be done. In single player mode you can shoot at asteroids, and in multi-player mode you can shoot at your friends.

Construction is done by assembling spaceship from parts such as engines, lasers and armor in correct places. Lasers just fire, and armor protects vital parts of your spaceship from enemy fire; engines are the most interesting, since maneuvrability of your spaceship will depend on their placement. As an example, see the following simple spaceship design:

|   |   | | |   |   |
|   |   |   |   |   |
|   |   |   |   |   |
|   |   |   |   |   |
|   |   |   |   |   |
| A |   | B |   | C |
+---+   +---+   +---+
|||     |||     |||
The engines are A, B and C. If you turn B on, the spaceship will start going forward (accelerate). (Don't forget you fly through vacuum, so if you start moving or rotating, you will move or rotate forever, unless you counter it by another thrust.) If you turn A,B,C on, the spaceship will accelerate even faster. However, if you turn only the engine A on, acceleration won't be the only result, as the thrust will cause your spaceship to rotate clockwise. The rotation can be stopped by activating only the B engine, but the spaceship will gain some speed in the process. (Actual ships are three-dimensional; the example above is maneuvrable only in two dimensions.)

Your challenge is to place engines in a way such that your spaceship is maneuvrable in an intuitive way (or at least one that you can understand), and also cheap (you have limited budget and cannot put the expensive engines everywhere --- you'll have to decide whether to add engines which allow faster acceleration, faster targetting, strafing, or maybe add weapons instead).

Since the game does not know how your engines are supposed to control your spaceship, you will also need to tell your spaceship computer what engines and other parts should be activated in response to your keypresses and measuring devices. This is done by writing a simple script program (in Lua). It is really simple (like "if 'a' is pressed turn on the engine 'a'"), so you should not have any problems if you never programmed in Lua before (or maybe even if never programmed at all).

SourceForge.net Logo The game is hosted at Sourceforge.
project information and downloads
ship designs


I "always" wanted to have a game based on this idea, but I am not sure if anyone except me would like to play it. I don't think building spaceship is that challenging in the current version. Hopefully it is fun. But there are not enough game possibilities to actually test your design. The game is playable, but it would certainly greatly benefit from

  • new spaceship elements
  • more interesting missions (or even campaigns, where you start from a tiny ship with three engines and by gathering cash and components you end up with a huge battleship with powerful engines giving a total control)
  • better graphics
  • speed optimizations
  • newbie friendliness (such as spaceship editor, menus)
  • mouse control etc.
    If you think it has some potential, you can try to send me a message or your spaceship design, or even join the project and develop it, I don't know if I have time and will to do it.


    Keys used to control your ship depend on its design. Also the following keys work:

  • F1: resurrect your ship (all components are given full health)
  • F2: display changing game stats on console
  • F3: display static ship stats on console
  • Tab: switch to another ship if you control a fleet
  • Esc: quit the game


    The game configuration is in the "lne.cfg" file. (You can use another config file by giving a parameter, like "lne other.cfg".) The format is quite simple; see the file for comments about meanings.

    The file "lne.lec" lists all components available. Spaceships are constructed out of this. The format of this file should be quite easy too.

    Under Windows you should run through "console.bat", this gives you a console which displays more or less important messages for you.

    Standard Spaceship Components

    Before constructing your spaceship... here are the available components. (They are defined in the "lne.lec" file; some details would be changed when using another file.)

  • computer: A heart of the spaceship. If your computer is destroyed, you lose control of your ship. The computer is equipped with devices to measure velocity and rotation of your spaceship.
  • engine: Provides maneuvrability to your spaceship. You have to put engines in correct places and directions.
  • laser: The main (and only) method of offense. Produces a long beam of energy which damages enemy spaceships and asteroids.
  • radar: Detects flying objects close to you and displays them. Your radar is shown in the bottom right corner during the game. A radar makes pointing your lasers at enemy objects much easier.
  • eye: Allows you see the surroundings of your spaceship. Playing without one is unpleasant, and it is hard to target precisely without one. You could also try to place an additional eye and lasers in the rear part of your ship.
  • armor: Protects the vital parts of your spaceship. Note that it is a bad idea to place armor directly before your laser (you would shoot the armor then) or eye (you won't see anything then). (You can currently place armor before an engine.)
  • battery & generator: Lasers need energy to work. This energy is produced by the generator, and stored in batteries when not in use.

    When a component of your ship gets destroyed, it stops working and allows laser rays to pass through it, but mass and balance of your ship is not affected. This is good for you, since balance is very important in building good ships. (Note that various components have different masses, so a symmetric ship is not necessarily balanced.)

    Spaceship construction manual

    The example spaceship is defined in "example.les" and programmed in "example.lua". The picture shows the screenshot of this ship:

    The ship is controlled with the following keys:
    w,s,o,p - rotation (the ship also goes forward when these keys are pressed)
    q - full forward (=w+s+o+p)
    a - brake
    SPACE - fire lasers

    You can turn on the game to get the hang of this spaceship. The control is not very good; since rotating the ship forces forward moement, the ship will start going in some strange direction at a big speed, and it'll be hard to stop it. It's your goal to make it better. (If you don't like this spaceship, you can find some designs here. You will miss a big part of challenge, though. Don't forget to edit the configuration file.)

    The format used to define spaceships and program them is explained below.


    The file format of spaceship definition is as follows:
    [spaceship name]
    [list of pieces used]

    Each piece is defined with a line, for example "e engine f" is used to define an engine. The letter "e" is used to refer to this piece; it will appear in the spaceship layout (the engine will be denoted by "e" here), and also in the control script ("if 'forward' is pressed, turn on the 'e' and 'l'"). (Note that a single defined piece can appear many times in the spaceship.) "engine" tells what kind of component it is, using the names from above (or actually from the "lne.lec" file). The letter "f" tells what direction will the engine/laser/eye be facing. Possible values are "f" (front), "b" (back), "u" (up), "d" (down), "l" (left), "r" (right). If direction is not given, "f" is assumed.

    The layout tells what pieces are placed where. The ship is three-dimensional, so you have to draw all layers of your spaceship, from bottom to top. If you don't get the idea, see the screenshot above and compare it with the layout from example.les (the screenshot is rotated in quite a strange way, sorry).


    See the example.lua file for the example spaceship control script. The comments in this file should make the program clear. In general, the following game-related functions and instructions are available:

  • turnon(component) Turns component on.
  • turnoff(component) Turns component off.
  • measure(parameter to measure) Uses your measuring devices. You can measure the following parameters: vx,vy,vz (velocity), mx,my,mz (rotation).
  • health(component) Returns current health of component (total if there are many of them).
  • maxhealth(component) Returns maximum health of component (total if there are many of them).
  • count(component) Returns the number of components active.
  • click(key) Checks whether the key is pressed.
  • shipname() Returns the ship's name.

    All functions can accept multiple parameters, and they will return a result for each parameter. E.g. health("a","b") will return two numbers: health of "a" and health of "b".