From 821e88a6d147a13e0e4eca1b0c1c770e3bee3a90 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 14 Jul 2008 09:41:27 +0000 Subject: moved documentation --- GAMEPLAY | 143 ------------------------ INSTALL | 155 -------------------------- MODELS | 180 ------------------------------ NEWS | 0 README | 301 --------------------------------------------------- ROADMAP | 59 ---------- TODO | 86 --------------- doc/GAMEPLAY | 143 ++++++++++++++++++++++++ doc/INSTALL | 155 ++++++++++++++++++++++++++ doc/MODELS | 180 ++++++++++++++++++++++++++++++ doc/PROTOCOL | 20 ++++ doc/README | 301 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ROADMAP | 59 ++++++++++ doc/STORYLINE | 24 ++++ doc/TODO | 86 +++++++++++++++ osirion.kdevelop | 14 +-- osirion.kdevelop.pcs | Bin 771403 -> 776293 bytes osirion.kdevses | 26 +++-- 18 files changed, 994 insertions(+), 938 deletions(-) delete mode 100644 GAMEPLAY delete mode 100644 INSTALL delete mode 100644 MODELS delete mode 100644 NEWS delete mode 100644 README delete mode 100644 ROADMAP delete mode 100644 TODO create mode 100644 doc/GAMEPLAY create mode 100644 doc/INSTALL create mode 100644 doc/MODELS create mode 100644 doc/PROTOCOL create mode 100644 doc/README create mode 100644 doc/ROADMAP create mode 100644 doc/STORYLINE create mode 100644 doc/TODO diff --git a/GAMEPLAY b/GAMEPLAY deleted file mode 100644 index 18642a6..0000000 --- a/GAMEPLAY +++ /dev/null @@ -1,143 +0,0 @@ - -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/INSTALL b/INSTALL deleted file mode 100644 index 3f4bc75..0000000 --- a/INSTALL +++ /dev/null @@ -1,155 +0,0 @@ - -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/MODELS b/MODELS deleted file mode 100644 index 4ecd03a..0000000 --- a/MODELS +++ /dev/null @@ -1,180 +0,0 @@ - -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/NEWS b/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/README b/README deleted file mode 100644 index b233c77..0000000 --- a/README +++ /dev/null @@ -1,301 +0,0 @@ - -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= - - 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/ROADMAP b/ROADMAP deleted file mode 100644 index 24a3643..0000000 --- a/ROADMAP +++ /dev/null @@ -1,59 +0,0 @@ -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/TODO b/TODO deleted file mode 100644 index ae2df13..0000000 --- a/TODO +++ /dev/null @@ -1,86 +0,0 @@ -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 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= + + 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 diff --git a/osirion.kdevelop b/osirion.kdevelop index 25d8c79..599b8d8 100644 --- a/osirion.kdevelop +++ b/osirion.kdevelop @@ -16,7 +16,7 @@ ./ false The OSiRiON Project is an SDL+OpenGL space game. - + kdevsubversion @@ -196,7 +196,7 @@ - + set m_,_ theValue @@ -228,11 +228,11 @@ - - - - - + + + + + true false false diff --git a/osirion.kdevelop.pcs b/osirion.kdevelop.pcs index 32e5d67..46d342d 100644 Binary files a/osirion.kdevelop.pcs and b/osirion.kdevelop.pcs differ diff --git a/osirion.kdevses b/osirion.kdevses index 8318db8..c1e8e21 100644 --- a/osirion.kdevses +++ b/osirion.kdevses @@ -1,16 +1,28 @@ - - - + + + - - + + - - + + + + + + + + + + + + + + -- cgit v1.2.3