C++ Shell Other
Latest commit 32d9e02 Sep 12, 2016 @DusteDdk committed on GitHub Merge pull request #1 from AMDmi3/freebsd-fixes
Fixes from FreeBSD port


-- OldSkoolGravityGame --
 - A gravity game in glorious 70's style vector graphics.

To run the game, type:

-- Index --
0.0 osgg Info and License
0.1 Objective
0.2 Controls
0.3 Command line arguments
1.0 Level editing
1.1 Level elements
1.2 Polygons
1.3 Entities
1.4 Waypoints
2.0 Requirements, Compiling, Installation

0.0 osgg Info and License
Author: Jimmy Christensen
Project page: http://sf.net/projects/osgg
  Everything except the font: GPL v3 or (at your option) newer.
  Bandal.ttf: Artistic License; Version 1 or (at your option) newer.


0.1 Objective
The objective in the game is to navigate your spaceship through the
waypoints in each level. The next waypoint is shown on the radar,
which is the green box to the right. You have a limited amount of
fuel for travelling between waypoints, however, when you land on a
waypoint, your ship is refilled. You also have a limited amount of
laser shots which are also refilled. The fuel and ammo is shown as
two lines in the box next to the radar. The other lines in that box
is your velocity and the critical (maximum) velocity for a successfull
landing. Your ship will crash if the velocity is over the red lines.
When every waypoint in a level is completed, the game continues to the
next level.
The game will print out scores for each level to the standard output.


0.2 Controls

F10: Toggle sound on/off
F11: Toggle fullscreen on/off
F12: Take screenshot (saves in current dir, screenshot_XX.tga)
t: start new game
s: toggle between editor and game
ESC: Exit (or, if creating a polygon, cancel creation)
Mousewheel up/down: zoom in / out

In game controls:
t: start new game from starting level.
Arrow up : Thrust
Arrow Left/Right: Rotate ship
Space: Shoot laser
p: save (for the duration of the game) current position
o: restore (undefined behaviour if used before a game is saved)

Editor controls:
Left Mouse Button: Add/Edit/Drag
Right Mouse Button: Move around the board
0: Adding: Polygons
1: Collision detection on from the next verticy (default on)
2: Collision detection off from the next verticy (remember to put it on again when wanted)
3: Landing platform (this can only be used to create entities, not to make part of the level a platform)
4: Next verticy is white
5: Grey
6: Invisible (transperant)
7: Red
8: Green
9: Blue
q: Adding: The ship (Player start position)
w: Adding: Bases
e: Adding: enemies
d: Write the first polygon to verts.txt ("export that polygon for use as a entity")
m: Adding: Mission waypoints.
n: Use the added mission waypoints. (Press after defining waypoints, overrides existing)
g: save map to whichever level file.
t: start new game from starting level
del: remove polygon or entity

0.3 Command line arguments
All arguments are optional.
./osgg [NUM] [--levelfile FILE] [--playdemo FILE] [--savedemo FILE] [--nosound] [--fullscreen] [--bgcolor RRGGBB] [--edit] [--is]
NUM          :Start at level NUM instead of 0. ./osgg 3 would make the game start at level 3.
--levelfile  :Loads FILE instead of level 0 for editing/playing/creating.
--playdemo   :Plays the demo FILE, you have to select a level.
              ./osgg 5 --playdemo mycoolbeatingoflevel5.bin
              ./osgg --levelfile some.level --playdemo mebeatingsomelevel.bin
--savedemo   :Record demo with F1, save with F2, saves to FILE instead of demo.bin
--nosound    :Turn sound off (it will still load sounds etc, compile with -DNOSOUND to disable sounds totally)
--fullscreen :Start in fullscreen (in the current resolution)
--bgcolor    :sets RRGGBB to background color instead of black.
              ./osgg --bgcolor 222222 is light grey
              ./osgg --bgcolor FF0000 is red.
--edit       :Start up in editor mode instead of play mode.
--is         :The game saves progress in level each time you land on a base,
              and restores it when you die, instead of starting from start.

Windows users need to edit winosgg.bat to apply the arguments


1.0 Level Editing
Refer to the controls section to see how to do actions described here.

1.1 Level Elements
A level consists of:
Entities - Ship, Base, Enemy
Polygons - The enviroment, consist of verticies.
Waypoints - The Route that the player has to travel in order to complete the level.

1.2 Polygons
Remember to select "Adding: Polygons"
Hover over a verticy of a polygon and press del to remove the polygon.
Polygons is a section of verticies, verticies are the points on the map
between which lines are drawn. A polygon can contain as many verticies as
desired, and in diffrent colors and with either collision detection on or off.
If collision detection is on on a verticy and the ship collides with the line
between that verticy and the next, the player dies. If the collision detection
is off, nothing happens, the ship flies right through that line.
To create a polygon, click where you want the first corner of the polygon,
then click to add more verticies, to finish the polygon, hold your mouse
over the first verticy and the curser changes color, click to complete.
After completing a polygon you can drag around the verticies if desired, hover
the cursor over a verticy, and the curser changes color, then hold mouse to drag.

1.3 Entities
To add a entity, first choose the type of entity to add (you can only add one ship)
Press where you want it placed, then hover over the small dot and drag it into place.
To delete a entity, hover over it and press del.

1.4 Waypoints
Enter "Add waypoint" mode by pressing m
Hover over the base (the cursor changes color) which should be the first base (the base on which the ship starts)
and click to add the start of the waypoints, then hover over the other bases and click on those too, yellow lines are drawn between them.
When you are done, add the waypoint list to the map, by pressing n.
You can not edit waypoints, if you wish to define new waypoints for a allready saved map, edit the game and enter the editor again.


2.0 Requirements, Compiling, Installation
To compile you need the development versions of the following libs:
You also need the "make" program and the g++ compiler aswell as the standard c++ lib.

To compile cd into the dir where you unpacked osgg, type:

If you want to compile and install (dont to this if you have no idea what any of it means), type:
DATADIR="/path/to/data/dir/" make
then move the binary:
cp osgg /path/to/games/binaries/
and create a dir for the datafiles:
mkdir "/path/to/data/dir"
and copy the datafiles:
cp -a * "/path/to/data/dir/"