Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-07-14 09:41:27 +0000
committerStijn Buys <ingar@osirion.org>2008-07-14 09:41:27 +0000
commit821e88a6d147a13e0e4eca1b0c1c770e3bee3a90 (patch)
treed8c69e3426d38de9ce7a8d644af7113ac3bb35c6 /doc
parentba798aadff9eb8e4ee76911a881a0efa579da4e6 (diff)
moved documentation
Diffstat (limited to 'doc')
-rw-r--r--doc/GAMEPLAY143
-rw-r--r--doc/INSTALL155
-rw-r--r--doc/MODELS180
-rw-r--r--doc/PROTOCOL20
-rw-r--r--doc/README301
-rw-r--r--doc/ROADMAP59
-rw-r--r--doc/STORYLINE24
-rw-r--r--doc/TODO86
8 files changed, 968 insertions, 0 deletions
diff --git a/doc/GAMEPLAY b/doc/GAMEPLAY
new file mode 100644
index 0000000..18642a6
--- /dev/null
+++ b/doc/GAMEPLAY
@@ -0,0 +1,143 @@
+
+The Osirion Project - GAMEPLAY
+
+ This document describes what the gameplay of Project::OSiRiON should
+ eventually become. This document is a work in progress and is subject
+ to change.
+
+General guidelines
+
+ Project::OSiRiON is a multiplayer space game with persistent player
+ statistics. A single player mode with a compelling story is a
+ secondary objective but the storyline serves as background for
+ the multiplayer universe.
+
+ Project::OSiRiON is a 'serious' game. Names of objects, people and
+ places should be considered generic for the universe and should not
+ be rightout silly or offensive. Names should feel 'natural' in their
+ context.
+
+ Models for ships, space stations and other objects should be designed
+ with the same philosphy in mind. It is acceptable to make references
+ to exisiting objects (real or fiction), as long as they are subtle
+ or inconspicuous.
+
+Universe
+
+ A basic description of the universe, how it is organised and who lives there.
+
+ The universe is a collection of stand-alone star systems. Each star system
+ is a small world on it's on. The only direct interaction between systems
+ is a player traveling between them. The background story should provide
+ (some of the) star systems and their relation.
+
+The Player
+
+ Who is the player in the universe.
+ - Friends
+ - Enemies
+ - Background
+ - How the player itnteracts with the universe.
+
+ The player enters the universe as a typical out-of-luck person
+ who decided to start a new life. With a small ship he tries to become
+ the Richest Man in the Known Universe. The player earns money by shipping
+ cargo that can be bought at discount prices at one place and sold
+ at a premium on a second location. *mining *fighting *wrecks/looting.
+
+ The goal is to become filthy rich and show it. Besides, with a particle
+ cannon and a target lock, nobody cares where your money comes from.
+
+ Players can be hostile or friendly to each other.
+
+Ships
+
+ The player starts the game with single small spacecraft and starts the
+ game docked at a planet or space station. When he has earned sufficient
+ money he can spend it on ship upgrades like weapons, armor, shields
+ and various other components.
+
+ *gameplay idea
+ various 'useless' fancy upgrades that increase player status
+
+Traveling
+
+ How the traveling happens in the universe, how the player will travel.
+
+ Every ship is equipped with thrusters. The maximum thruster speed depends
+ on the ship type, small merchant vessels will have lower maximim trhuster
+ speed then a scout ship.
+
+ Ships can also be equiped with a sublight impulse drive. This drive will
+ enable the ship to accelerate to a high speed without crossing the threshold
+ at which relativistic effects would disturb perception. Impulse drive speed
+ is the same for most ship types. Due to the enormous power requirements a ship
+ will not be a able to fire weapons while the impulse drive is enabled.
+
+ Neither of these engines will allow the player the leave the star system.
+ Interstellar travel is only possible using a hyperdrive. A hyperdrive is an
+ expensive piece of equipment that has massive power requirements. Only very
+ large ships will be capable of carrying a hyperspace jump drive.
+
+ Interstellar travel for the common men is possible through the use
+ of commercial or government owned hyperspace gates. These gates create
+ on-demand hyperspace connections between star systems and provide a safe
+ and easy way to travel.
+
+ Hyperspace travel is almost instantanious, hyperspace jump would be a more
+ accurate term to describe it.
+
+
+Fleets [Phase 2]
+
+ As the player earns money, he will hopefully eventually be able
+ to buy large ships.
+
+ The flagship
+ The player's fleet is limited to one convoy. The convoy's task is to
+ protect the flagship. The player can be in control of any ship in his
+ fleet.
+
+ ...
+ More like a convoy.
+
+ ... about fleet combat
+
+ Once the flagship is destroyed, the convoy is lost.
+ The player respawns at base with the flagships and any ships
+ docked on it while it was destroyed. Other cargo and other ships it
+ the convoy are lost.
+
+
+Planet and Stations
+
+ Star systems are inhabited with planets and stations.
+ ...
+ Dockable planets or stations are bases
+ ...
+ Some bases provide storage facilities where players
+ can put items like weapons or spare parts in storage.
+
+Objects in space
+
+Weapons
+
+ What kind of weapons are there. how do they work.
+
+Fighting
+
+ How does fighting work
+
+Economy
+
+ Money makes the Universe tick.
+ - Buying
+ - Selling
+ - Trading
+
+Cargo
+ - Transporting / Beaming
+ - Mining
+ - (Spare) parts
+ - Fuel
+ - Economy
diff --git a/doc/INSTALL b/doc/INSTALL
new file mode 100644
index 0000000..3f4bc75
--- /dev/null
+++ b/doc/INSTALL
@@ -0,0 +1,155 @@
+
+The Osirion Project - INSTALL
+
+ These are the installation instructions for the Osirion Project.
+ A description of the project and general usage information can be
+ found in the README file.
+
+Installation
+
+ To build the Osirion Project from source code you will need
+ the following libraries and their header files:
+
+ SDL version 1.2 or newer
+ OpenGL, version 1.1 or newer
+ OpenAL version 1.1 or newer
+
+ I have succesfully compiled it on the following platforms:
+
+ linux-x86_64 gcc 4.1.2
+ linux-i686 gcc 4.1.2
+ mingw32 gcc 4.2.2
+
+ In theory, it should compile on any POSIX-compatible platform
+ supported by SDL, reports for other platforms (working or not)
+ are welcome.
+
+Compilation on windows32
+
+ If you downloaded the zip file containing the windows32
+ exe files, all the hard work has already been done and the
+ game is ready to run. If you want to build your own exe files,
+ keep on reading.
+
+ You can use maci's excellent mingw/msys package to install
+ a development environment on windows. You can find the
+ installer here:
+
+ http://satgnu.net/maci/files/q2wdevenv.exe
+
+ You can use the Turtoisesvn SubVersion client to access the
+ SVN repositories. You can download it from
+
+ http://tortoisesvn.tigris.org/
+
+Obtaining the source code
+
+ Get the latest version of the source code from svn:
+
+ svn checkout svn://intranifty.no-ip.org/osirion
+
+ This command will create a new subdirectory 'osirion'
+ and download the source code into it.
+
+Compiling the source code
+
+ Enter the new directory and compile the source code:
+
+ cd osirion/
+ autoreconf -fi
+ ./configure
+ make
+
+ If you only need to compile the dedicated server, you can
+ pass the --without-client option to configure:
+
+ ./configure --without-client
+
+ At present, 'make install' is neither tested nor supported.
+
+Installing game data
+
+ The game data should be located in the 'data'
+ subdirectory of the main distribution.
+
+ Get the latest version of the game data from svn:
+ Run the following command from within the main
+ distribution directory:
+
+ svn checkout svn://intranifty.no-ip.org/osirion-data data
+
+Installing gtkradiant 1.5.0 support files (optional)
+
+ You only need to install these files if you want to create models
+ with gtkradiant. Note that these files where made for
+ gtkradiant 1.5.0, I have not tested the with any other version.
+ You can find precompiled gtkradiant 1.5.0 binaries for linux at
+ http://ingar.soliter.org.
+
+ These instructions assume gtkradiant is installed in the directory
+ '/usr/local/games/gtkradiant-1.5.0'. If it is installed in a different
+ directory on your system, edit these instructions accordingly.
+
+ Copy the support files to the gtkradiant folder:
+
+ cd data
+ cd gtkradiant
+ cp -vr * /usr/local/games/gtkradiant-1.5.0
+
+ Open the file '/usr/local/games/gtkradiant-1.5.0/games/osirion.game' in
+ your favourite editor. Look for a line that begins with:
+
+ enginepath_linux="
+
+ Make sure it points to your osirion data directory. For example,
+ if you checked out the source code in '/home/user/games/osirion',
+ then the data will be in '/home/user/games/osirion/data' and
+ the line should look like this:
+
+ enginepath_linux="/home/user/games/osirion/data"
+
+ Save the changes.
+
+Source data (optional)
+
+ The .xcf and .svg source files used to create the game data
+ can also be downloaded. Note that you do not need these files
+ to play the game or to create .map models. You only have to
+ download them them if you want to create new game graphics.
+
+ To download the source data:
+
+ svn checkout svn://intranifty.no-ip.org/osirion-data-src data-src
+
+Executing
+
+ To run the client program, execute:
+
+ src/osirion
+
+ To run the dedicated server, execute:
+
+ src/osiriond
+
+Updating
+
+ If you downloaded and compiled the game before,
+ there is no need to re-download the entire distribution.
+
+ Update the game source code with the following commands:
+
+ cd osirion/
+ make distclean
+ svn update
+
+ Rebuild the game:
+
+ autoreconf -fi
+ ./configure
+ make
+
+ Update the game data:
+
+ cd data/
+ svn update
+ cd ..
diff --git a/doc/MODELS b/doc/MODELS
new file mode 100644
index 0000000..4ecd03a
--- /dev/null
+++ b/doc/MODELS
@@ -0,0 +1,180 @@
+
+The Osirion Project - MODELS
+
+Creating 3D models for The Osirion Project
+
+Introduction
+
+ The engine supports loading of Quake 2 .map files with custom osirion
+ entities. While it might look like a weird choice for a file format
+ it has been a well-considered pragmatic choice.
+
+ First of all, creating commercial grade graphics has never been
+ my goal. Polished high-quality models demand a lot of time,
+ skill and effort.
+
+ The same goes for 3D modelling packages like Blender or 3D Studio Max.
+ They are capable of producing awesome results, but the learning curve
+ is quite steep and the number of availble 3D artists is rather limited.
+
+ GtkRadiant on the other hand has been my personal tool for some time
+ now. For an experienced mapper, creating a LEGO-style model is only
+ a matter of hours and without the usual technical difficulties of
+ creating a map for shoot'em'up.
+
+ Creating game content is usually a chicken-and-egg in a small game
+ project. I hope to solve it by choosing a widely available and
+ easy to master format.
+
+ The rest of this document contains information specific to creating
+ models for the Osirion Project. Even if you can handle GtkRadiant,
+ it is still worth a read.
+
+Creating models with GtkRadiant
+
+ All the models for the game were created with GtkRadiant 1.5.0,
+ in theory any editor capable of exporting Quake 2 .map files could
+ be used. Support for files for GtkRadiant 1.5.0 are included in the
+ data distribution. Refer to the file INSTALL on where to find them
+ and how to install them. No map compiler is necessary, the engine
+ reads the .map files directly.
+
+ If you are using a linux-based operating system, you can also use
+ the GtkRadiant distribution from http://ingar.soliter.org.
+ Note that it does not include the Osirion support files by default.
+
+ This document will not explain how to use the editor. Consult google
+ for numerous tutorials on this subject. Any basic brush-creating
+ techniques for any Quake-engine based game can be used.
+
+ The main difference with other games is that you are not creating
+ a map for a 3d-shoot'em'up but, obviously, an object that has to be
+ loaded into a space game.
+
+ Because there is no map compile involved, and the engine is fundamentally
+ different, some points should be take under consideration.
+
+Brushes and sizes
+
+ The engine supports brushes only. Patches will be ignored. A large number
+ of complex brushes is supported, but I advise not to go below grid size 1.
+ As with any engine it is still possible to create brushwork that gets
+ messed up.
+
+ When the model is loaded, the bounding box is calculated. The center
+ of the model will be placed at the center of the bounding box.
+
+ The limits of map coordinates are placed on +/-16384 map units. Placing
+ brushes outside these bounds will have unpredictable results. The map
+ will be scaled down to make 1024 map units correspond to 1 game unit.
+
+ The front of a model points along the positive X-axis, the positive
+ Z-axis is up, the positive Y-axis is left.
+
+Caulk
+
+ Any brush face that has the common/caulk texture will be ignored on load.
+
+Clip
+ Any brush face that has the common/clip texture will be ignored on load.
+ Clip is reserved for future use.
+
+Detail brushes
+
+ As with other engines, Osirion supports the use of detail brushes, but
+ with a twist: detail brushes will only be rendered if the model
+ is close enough to the camera. When it is further away, only structural
+ brushes will be rendered.
+
+ This means that any object that could only been seen from close by
+ should be made from detail brushes.
+
+ This has one improtant implication: if you show the structural brushes
+ only (with the CTRL+D filter in Gtkradiant) there should be no obvious
+ gaps of caulk that were previously hidden behind detail brushes.
+
+Textures
+
+ The engine supports no textures. Any real texturing information
+ is ignored.
+
+ The textures in the directory /textures/colors can be used by
+ the editor. The engine translates these textures into RGB colors
+ when the model is loaded. Unknown textures will be colored hot pink.
+
+ You can also use two special textures from the /textures/common
+ directory: as explained above, faces with the common/caulk texture
+ will be ignored on load. The use of common/clip is reserved for
+ future use. At the moment they will be ignored as well.
+
+ At the time of writing, texture names are hardcoded
+ in src/model/mapfile.cc
+
+Surface flags
+
+ The only supported surface flag is light. This will render
+ the brush face fullbright. The light flag does not work
+ in conjunction with the common/entity shader.
+
+Lights
+
+ Unlike quake, light entities are not used to add lighting information
+ to the level but to add point lights to a model. Adding a light will
+ render a light flare texture in the corresponding location.
+
+ The flare value indicates what texture will be used to draw the light.
+ The flare value maps to bitmaps/fx/flare??.tga. The default flare is 0.
+
+ The light value is used to determine the size of the flare. The engine
+ default is 100, resulting in rather large flares.
+
+ The default color is white, but the color can be set through radiant's
+ color menu (K key). If the entity option (spawnflag 2) is set, the
+ color value will be ignored and the light will be rendered with the
+ color of the entity it is attached to.
+
+ The strobe option (spawnflag 1) will create a blinking light. A number
+ of options can be set to manipulate the flashing behaviour. By default
+ a strobe light will be half a second on, half a second off.
+
+ The frequency value changes the number of flashes per second.
+
+ The offset value changes the moment the light will be on. Offset is
+ measured in seconds.
+
+ The time value sets the fraction of the time the light will be on.
+ The default is 0.5.
+
+ Lights will only be rendered if the model is close enough.
+
+ I also came across this usefull information:
+ http://en.wikipedia.org/wiki/Starboard
+
+ In short, the green light should be on the right side, the red light
+ on the left side.
+
+Flares
+
+ The default light entity creates omnidirectional lights. To create
+ a directional flare, use the target_flare entity. Values for a
+ target_flare are the same as those for a default light, with one
+ small diference: the size of the flare is set through the radius
+ value. The default flare radius is 100. Rotate the entity or set the
+ angle value to point the flare in a different direction.
+
+ target_flares can only be rotated in the XY-plane.
+
+Engines
+
+ Add a target_engine entity to add an engine exhaust to a ship model.
+ An engine exhaust always points to the rear (negative X-axis).
+
+ An engine is rendered as a pulsating light flare. The size of the flare
+ can be set through the radius value. The default engine radius is 100.
+
+ Engines will only be rendered if the model is close enough.
+
+Other entities
+
+ target_cockpit, target_turret and target_cannon are not yet implemented.
+
diff --git a/doc/PROTOCOL b/doc/PROTOCOL
new file mode 100644
index 0000000..92a345b
--- /dev/null
+++ b/doc/PROTOCOL
@@ -0,0 +1,20 @@
+
+The Osirion Project - Network Protocol Overview
+
+Connection sequence
+
+
+
+Client State Server State
+
+ Connecting
+
+"connect [protoversion]" --------> Pending
+
+ <------- "msg info [sv_hostname"
+
+ <------- ... world data ...
+
+ <------- "connect"
+
+"pif[.. player info ...]" -------> Connected
diff --git a/doc/README b/doc/README
new file mode 100644
index 0000000..b233c77
--- /dev/null
+++ b/doc/README
@@ -0,0 +1,301 @@
+
+The Osirion Project - README
+
+ This is the Osirion project. I wrote it to get a better grasp on
+ game design with OpenGL and to get some C++ practice.
+ Maybe someday it will be a real game.
+
+ Read INSTALL for instructions on building, installing and updating.
+
+Client
+
+ Starting the client will show the loader screen.
+ To start the game, open the client console with ~ and type 'connect'.
+ You will join the game as spectator, type 'join' in the console
+ to join the game. Type 'spectate' to spectate again.
+ Type 'disconnect' to return to the loader screen.
+
+ The client is capable of acting as a networked server. You can enable
+ the private server by setting 'sv_private 1' before you 'connect'.
+ This wil allow remote players to connect to your client.
+
+ To connect to a dedicated server, type 'connect address', where
+ adress is the hostname or IP address of the remote server.
+
+ In-game, you can purchase a new ship with the 'buy' command.
+
+Keyboard
+
+ Keyboard controls can be configured with the 'bind' command.
+ A key can be bound to an action or a console command. An action
+ always starts with a plus or minus sign.
+
+ To bind the keypad left key to the turn left action:
+
+ bind kpleft +left
+
+ To bind the P key to the screenshot command:
+
+ bind p screenshot
+
+ You can use the 'list_binds' command to get a list of currently
+ bound keys. Use the 'list_keys' command to get a list of all
+ available key names.
+
+ The default configuration:
+
+ ~ toggle console
+ V switch between track, cockpit and free view
+ space bar turn mouse control on or off
+ left right up down arrow
+ rotate camera in free view
+ keypad left right up down
+ steer the ship left/right/up/down
+ keypad / * roll left/right
+ keypad + - increase/decrease forward thruster
+ T open the chat window
+ print screen screenshot
+
+Mouse
+
+ If mouse control is on, you can use it to steer your vessel
+ in track or cockpit view, or to rotate the camera in free view.
+
+ If mouse control is disabled, you can temporarily enable it again
+ by pressing the left mouse button.
+
+ Use the scroll wheel to increase/decrease thruster.
+
+ Mouse buttons can also be configured through the 'bind' command.
+
+Console functions
+
+ The following commands are always available on the console:
+
+ connect connect the client to the game module
+ disconnect disconnect the client from the game module
+ list_ent list registered entities
+ list_func list registered functions
+ list_model list registered models
+ list_var list registered variables
+ quit exit the application
+ r_restart restart the video subsystem
+
+ The following commands are available when connected to a game:
+
+ join join the game
+ spectate spectate
+ buy purchase a new ship
+ who list connected players
+
+ To change the video resolution, set the r_width and
+ r_height variables and execute r_restart.
+ e.g.: to set the video mode to 1024x768 type:
+
+ r_width 1024
+ r_height 768
+ r_restart
+
+ To switch to fullscreen mode, set the r_fullscreen
+ variable to 1:
+
+ r_fullscreen 1
+ r_restart
+
+ You can set your name and player color through the cl_color
+ and cl_name variables. Note that your ship's colour won't
+ change until you buy a new one.
+
+ cl_name SpaceCowboy
+ cl_color 1.0 1.0 0.0
+ connect
+
+Statistics
+
+ To activate statistics, set the draw_stats variable to 1:
+
+ draw_stats 1
+
+ This will draw the following statistics on the right side
+ of the screen:
+
+ fps frames per second
+ tris number of triangles drawn
+ quads number of quads drawn
+ tx network upstream traffic, in kilobytes
+ rx network downstream traffic, in kilobyte
+
+ The fps counter will not show values above 9999.
+
+Configuration
+
+ Variables marked with the 'A' flag will be archived, their value
+ will be written to the configuration file on exit. The dedicated
+ server reads its configuration from server.cfg, the client
+ will use client.cfg. Keyboard binds will be saved to binds.cfg
+
+ On UNIX systems you can find these files in the ~/.osirion/base
+ directory.
+
+ If you delete these files, the default configuration will be restored.
+
+Dedicated server
+
+ By default, the dedicated server will accept incoming connections
+ on UDP port 8042. The server console os available if ncurses
+ support was enabled at compile time.
+
+ If you have trouble connecting, try editing the server configuration
+ file server.cfg and change the net_server setting to
+ the server's actual IP address. The default listening port can
+ be altered by changing the net_port setting.
+
+Command line
+
+ Both the client and the dedicated server can parse command line
+ options. Any console command can be added to the command line with + sign.
+
+ To start a client and connect to a remote server:
+
+ src/osirion +connect remote.server.org
+
+ To start a client and create a new network game:
+
+ src/osirion +set sv_private 1 +connect +join
+
+ To start a dedicated server and set the server framerate to 30 frames per
+ second:
+
+ src/osiriond +set sv_framerate 30
+
+ Note:
+
+ Setting variable values from the command line can result in weird values being
+ written to client.cfg and server.cfg. If you run into problems, check those
+ files or delete them.
+
+Note for windows32 users
+
+ On windows32, the game uses the 'home' subdirectory as your personal
+ directory. For example, the client.ini can be found in
+ home\base\client.ini.
+
+ There is also a problem that prevents the game from creating directories.
+ If you need any subdirectories in your personal folder, like 'screenshots',
+ you will have to create it manually.
+
+Organization of the distribution
+
+ C++ source code
+
+ /src
+ README this file
+ INSTALL documentation in installation
+ MODELS documentation on creating models
+
+ /math mathematical classes
+ /sys low-level system functions
+ /filesystem virtual filesystem library
+ /core game-independent core library
+ /game game-specific functions
+ /server osiriond dedicated server
+ /render render library
+ /client osirion client
+
+ Data files
+
+ /data
+ /base game data files
+ /bitmaps essential bitmaps
+ /ini ini files
+ /maps .map models
+ /satellites sattelites
+ /ships spaceships
+ /stations space stations
+ /scripts gtkradiant shader files
+ /textures textures
+ /gtkradiant gtkradiant support files
+
+ The game data can be obtained as a seperate distribution.
+ Refer to the file INSTALLATION for more information.
+
+Editing game data
+
+ One of the goals of the Osirion Project, is to create an engine
+ that makes it very easy to adapt and extend the game world.
+ At the moment, the game reads the world description from
+ ini/world.ini and a list of buyable ships from ini/ships.ini.
+
+ I recommend you do not edit the original game data, but to make a copy
+ into your personal osirion folder '~/.osirion'. This directory mimics
+ the directory structure of the 'data' directory and any file found
+ there will get precedence over the corresponding file in
+ the game data directory.
+
+ The models are basic Quake2 style .map files with custom entities
+ and can be created with a program like gtkradiant. Refer to the
+ file MODELS for more information on creating 3D models.
+
+Project contributors
+
+ [mDc]Thorn - Technical advisor, Sharkan model, Horizon model,
+ Alpha testing
+
+ Supertanker - Station 15 model, Supertanker model, Avatar model
+ Bumblebee model
+
+ Josky=KCT= - Shuttle model, alpha testing
+
+ [mDc]Minisori
+ Gareth - Alpha testing
+ DVSoftware
+
+IRC
+
+ The official Osirion IRC channel is #osirion on irc.soliter.org
+
+Web
+
+ Screenshots can be found at
+ http://ingar.satgnu.net/osirion
+
+Acknowledgements
+
+ This project could not have been possible without the work of others:
+
+ Id Software
+
+ the GtkRadiant project contributers
+
+ The Quake2World community
+
+ The Satgnu crew
+
+ Thanks to bobke and blaze-x
+
+ DVSoftware for bandwidth, diskpace and CPU power
+
+ A special thanks to all =KCT= members
+
+License
+
+ The Osirion Project is distributed under
+ the terms and conditions of
+ the GNU General Public License version 2.
+
+ This includes the source code, project documentation and game data.
+
+ Copyright 2007-2008
+ Ingar=KCT= <ingar@telenet.be>
+
+ Contact me if you want to use (portions of) this project
+ under a non-compatible, but otherwise free, licence.
+
+Trademarks
+
+ QUAKE and ID are registered trademarks of Id Software, Inc.
+ LEGO is a registered trademark of the LEGO Group.
+
+ The Osirion Project is an independent not-for-profit project
+ and is not affiliated with these companies.
+
diff --git a/doc/ROADMAP b/doc/ROADMAP
new file mode 100644
index 0000000..24a3643
--- /dev/null
+++ b/doc/ROADMAP
@@ -0,0 +1,59 @@
+ROADMAP
+
+* MILESTONE 1 - version 0.1
+
+Description:
+ The game takes place in a simple solar system with one star,
+ one planet, one space station and one piece of yet-to-determine
+ decoration.
+
+ Multiple players can connect to the dedicated server. They can
+ fly around and see each other. They can use chat to communicate,
+ they can use private chat or global chat.
+
+Requires:
+ Client console
+ Entities
+ Ship instances
+ Network subsystem
+ Entities
+ Camera handling
+ Keyboard bindings
+
+* MILESTONE 2 - version 0.2
+
+Description:
+ Players can shoot at each other. They can crash into the star
+ or the planet. Player ships explode on destruction.
+
+Requires:
+ Targetting
+ Events: explosions, weapons fire
+ Model weapon support
+ Turret and cannon models
+ Particle systems
+ clip brushes and collision detection
+
+* MILESTONE 3 - version 0.3
+
+Description:
+ Players can dock at the space station and buy a ship or purchase
+ weapons.
+
+Requires:
+ Docking
+ Docking GUI
+
+* MILESTONE 4 - version 0.4
+
+
+* MILESTONE 5
+
+..
+
+
+* Release 1.0
+
+Requires:
+ Stable network protocol
+ Storyline
diff --git a/doc/STORYLINE b/doc/STORYLINE
new file mode 100644
index 0000000..87adfb9
--- /dev/null
+++ b/doc/STORYLINE
@@ -0,0 +1,24 @@
+STORYLINE
+
+This file contains ideas for the storyline.
+It _will_ contain spoilers.
+
+The concept of zones/sectors is still on the TODO list.
+
+PLACES
+
+Planet Seymour, Regula Station
+Planet Ghant, Alexandria Outpost
+
+ITEMS
+
+Osirion Master Seal
+
+PEOPLE
+
+
+Chapter 1. The Meeting
+
+Cali Prime
+Eborh
+the something Consortium representative \ No newline at end of file
diff --git a/doc/TODO b/doc/TODO
new file mode 100644
index 0000000..ae2df13
--- /dev/null
+++ b/doc/TODO
@@ -0,0 +1,86 @@
+TODO
+
+milestone 1:
+ console text color and wrapping (ok)
+ keyboard binds (ok)
+
+ fix turning
+ fix camera rotation
+ fix camera frustum clip
+
+ better crosshair bitmaps
+
+milestone 2:
+ targetting system
+ server-client event system, hit-once lightweight entities
+ explosion events
+ weapons fire events
+
+filesystem:
+ write a filesystem based on streams
+ write handlers for zip
+
+model:
+ engine flare key (ok)
+
+ support map classes (e.g. func_rotate), requires class VertexData
+ split map loader from model, load vertices into VertexData
+
+core:
+ connection to remote game (ok)
+ read/write configuration file (ok)
+ split client and server configuration (ok)
+ parse command line options (ok)
+ execute command line options (ok)
+ globe entity (ok)
+
+ refactor 'say', it should not be a game function (ok)
+ zones
+ execute config files (ok, autoexec.cfg still missing)
+ game module loading/unloading
+
+network:
+ UDP datagrams (ok)
+ buffered sends (ok)
+ client connection state (ok)
+ zlib compression (partial)
+ fix lag (usable for now)
+
+ protocol description
+ chat, channels
+ rcon, commands
+
+ protocol version in handshake
+ detect and disconnect clients behaving badly
+
+client:
+ input handler switching (ok)
+ console chars (ok)
+ key bindings (ok)
+
+ keyboard handler, must be able to handle keyboard layouts
+ decent input handling implementation
+
+ on-the-fly cl_mousecontrol (toggle function)
+
+render:
+ render pipeline (ok)
+ .map models (ok)
+ write RLE tga screenshots (ok)
+ texture registry (ok)
+ add small camera light (ok)
+
+ text quads render pipe
+ fix lighting without sun
+
+sound:
+ engine sounds
+ user interface sounds
+
+win32 port:
+ network not functional (ok)
+ texture loading is broken (ok)
+ screenshots are broken (ok)
+ sound is broken (ok)
+
+ directory creation