From 821e88a6d147a13e0e4eca1b0c1c770e3bee3a90 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 14 Jul 2008 09:41:27 +0000 Subject: moved documentation --- doc/GAMEPLAY | 143 ++++++++++++++++++++++++++++ doc/INSTALL | 155 ++++++++++++++++++++++++++++++ doc/MODELS | 180 +++++++++++++++++++++++++++++++++++ doc/PROTOCOL | 20 ++++ doc/README | 301 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ROADMAP | 59 ++++++++++++ doc/STORYLINE | 24 +++++ doc/TODO | 86 +++++++++++++++++ 8 files changed, 968 insertions(+) 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 (limited to 'doc') 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 -- cgit v1.2.3