# Spacejunk manual

## The game

You control a ship capable of collecting nearby debris. For that sake you must navigate a planetary system intercepting the drifting debris. The game is presented as a sequence of missions of increasing difficulty. At the beginning of each mission the amount of pieces to collect is reported.

## The controls

### Key bindings

Left arrow | turns the ship left
Right arrow | turns the ship right
Up arrow | turns on propulsion
Down arrow/* | accelerates time
p | toggles pause mode
+/mouse wheel | zooms in
-/mouse wheel | zooms out
mouse left button | selects the point of view
Control | changes the length of the ship path
SHIFT+Arrow keys | scrolls the view in the arrow key direction
SHIFT+Hold mouse left button | scrolls the view in the mouse pointer direction
s | saves a screenshot with name 0.bmp, 1.bmp, ... and the like

### On board computer

The on-board computer has a navigation system which indicates the path of the ship in the near future. The path is calculated as observed from some point of view, which must be indicated in advance. The starting missions will help understanding this tool. For different maneuvers different points of view will be needed.

#### On board controls

| Ship: Tells the ship position with respect to other objects.
| View point: Marker drawn over the object currently selected as the view point. The view point is used to draw the ship route in the near future. Choose the view point with a mouse click.
| Ship path: The path that the ship will perform in the near future. The path shape depends on which is the view point.
| Trash: Objects like this are the ones you must collect in order to complete missions.
| Zoom buttons: Zoom the view in or out. These buttons are equivalent to pressing the + or - keys, or using the mouse wheel.
| Help button: Displays current mission objectives.
| Quit button: Aborts mission.
| Center the view on the view point: Centers the view on the view point.
| Center the view on the ship: Centers the view on the ship.
| Change path length: Changes the length of the ship path. There are three lengths which are selected by successively pressing the button. It is equivalent to pressing the Control key.
| Time forward button: Makes the time pass faster. Useful for long trips. It is equivalent to pressing the Down arrow or the * key.
| Fuel indicator: Tells the amount of fuel available on the ship. It is consumed whenever the propulsion engine is on.
| Low fuel indicator: This indicator will turn red when the fuel is near exhaustion.

Score:
Points gathered by the player. The remaining fuel and the time bonus is added to the score at the end of each completed mission.

Time bonus:
Each mission starts with a given amount of bonus points, and then they are decremented as time passes.

Collect:
Remaining amount of trash to collect in order to complete the mission.

### Pause mode

Pause mode is toggled by pressing the 'p' key. It is a mode where the world remains still while the player does not provide any input. If the ship is turned or thrust, or if the time is accelerated, the world will resume movement for as long as the player input is received. When the player releases the buttons the world freezes again.

This mode is provided to save the player the effort of training sharp reflexes in order to experience the game. This idea has been taken from Idealism, a game by Jason Rohrer.

## Configuration

Spacejunk uses a display of size 640x480 by default. It is possible to ask a higher resolution via command line arguments or through a configuration file, but the visual quality will be considerably decreased and performance may worsen.

### Configuration file

In the top directory of the project, there should be a file named "config.txt". The options in this file are read every time Spacejunk is started, and written every time Spacejunk is finished. Here there are exemplifying contents for the file "config.txt":

    audiobuffer=9
    music volume=128
    fx volume=67
    fullscreen=no
    width=640
    height=480
    language=en

fullscreen | Specifies whether the game should be run in full screen mode. The game may run faster in this mode. The valid values are "yes" and "no".
width | Width of the display. The valid values are greater or equal to 640.
height | Height of the display. The valid values are greater or equal to 480.
language | Code of the language to use for the texts in the game. The valid values are "en" for English and "es" for Spanish.
fx volume | Specifies the volume for sound effects. The valid values go from 0 to 100.
music volume | Specifies the volume for music. The valid values go from 0 to 128.
audiobuffer | Specifies the size of the audio buffer for playing sounds. If the specified value is n, then a buffer of 2n samples will be requested. Choose a lower if the sound skips, a higher value if the sound is delayed w.r.t. the actions. The valid values go from 8 to 13.

### Command line arguments

    USAGE: spacejunk [--fullscreen] [--audiobuffer n] [--width n] [--height n] [--lang [en|es]] [FILE]

If FILE is specified the level editor is started. The other options behave the same than those in the "config.txt" file. Values specified in the command line override those in the "config.txt" file.