o = todo
X = done
? = maybe but not likely
M = more testing
I = in progress
W = waiting on other work




X  fix skybox/dome vis problems (workable solution found, needs new renderer)
X  It's possible to stick on some obtuse-angled corners qwsv 2.3x didn't
X  ~/.quakeforgerc should support all commands, not just set and setrom
X  software PCXs don't work in X11 at least if you're using 16/24/32 color
X  ogg support
X  server-side demos
X  Scitech MGL used in win32 is screwed - dump it and use SDL
X  kill MAX_STATIC_ENTITIES
X  stateful console (eg, rcon mode, chat mode, normal command mode...)
M  it seems possible to crash a QF server still - need to fix this!
M  merge nq and qw code bases
M  mingw cross compiling
M  software targets should mix color at 16/16 or 24/32 color
I  GL is still way too slow
I  Client side QuakeC.
I  menu rewrite
I  clean up TODO ;)
o  doublesize modes (eg, render in 320x240 but display in 640x480)
o  allow qf clients to download .lit files from qf servers.
o  better server control of certain cvars
o  triggers (f_respawn, f_death, f_took; cl_triggers)
o  scripted hud
o  add a U_PHYSICAL field to entities.  it should include a solid bit,
   a rotated bbox bit, and mins/maxs for the bbos
o  gui for serverlist
o  add favorites serverlist manipulation
o  redo serverlist filtering for better flexability and/or easier use
o  add individual server ping/info request from console
?  dynamically allocate missing fields, particularly ones not needed by the
   progs.
?  more direct intra-team comms (eg, talk to offense or defense directly)
?  Draw_Pic and friends need a cleanup in GL at least
?  Draw_Pic and other tex draw functions should use local palettes
?  improved crosshairs (custom file, 32 bit for GL, etc)
?  console commands to see a user, ignore talk from them, etc
?  wad loader should load wad3 and fall back to wad2 if necessary
?  better control over client console logging
?  ban reasons and expire times
?  no 512 entities limit (protocol limitation)
?  large or infinite (!) maps (currently has +-4096 protocol limit)
   (not just protocol, but bit precision, too)
?  redirection for file downloads
?  way to change con back besides changing mod dir (csqc likely)
?  movie-like demo controls (fastforward, rewind, step forward and back,
   seek, etc)
?  delta compression for protocol
?  transmit nails as source/direction/speed/time rather than
   direction/location, to improve delta compression
?  custom particle explosions (controlled via csqc)
?  server should shutdown cleanly when it recieves SIGTERM and SIGHUP
?  client-only commands (rejected if done via a server stuffcmd)
?  bring software-mode skybox code in from Quake 2
?  bring some assembly code for the software renderer in from Quake 2.

These are explained better in doc/ideas/rhamph.txt:
?  portal vis system
?  remappable portals
?  room duplication
?  randomly generated maps
?  variable detail models
?  skeletal model animations
?  Inverse kinematics
?  variable detail walls

Future directory tree:
o  todo
X  done (a parent dir is not done until its children are done:)

  quakeforge
o  +--- tools             useful/needed tools
I  |      +--- Forge      Forge.app map/model/everything editor
X  |      +--- cvs2cl
X  |      +--- gas2masm
X  |      +--- pak        massively enhanced pak tool
X  |      \--- qfcc       QuakeForge Gamecode Compiler
X  +--- include           API definitions for all subsystems
o  +--- nq                Non-common NQ code
o  +--- qw                Non-common QW code
o  \--- libs              common code libs
o         +--- audio
o         |       +--- cd
o         |       +--- recording
o         |       +--- renderer           Audio rendering
o         |       |       +--- soft       Software 3D spatialization
o         |       |       \--- openal     Passing the buck to OpenAL
o         |       \--- targets            Raw sound I/O
o         |               +--- null       No raw output (none or OpenAL)
o         |               +--- alsa       ALSA
o         |               +--- oss        OSS or kernel sound
o         |               +--- dsound     MS DirectSound
o         |               \--- sdl        SDL output
o         +--- filesystem         Filesystem code
          |       |               (the code for normal fs is also here)
o         |       +--- pakfile    Quake Pakfiles
o         |       +--- qfp        QuakeForge Package
o         +--- formats [1]
o         |       +--- bsp29      Quake BSP read/write
o         |       +--- bsp66      QuakeForge native BSP read/write
o         |       +--- mdl        Quake model read/write
o         |       +--- md2        Quake2 model read/write [would be nice]
o         |       +--- qfm        QuakeForge native model format
o         |       \--- textures   PCX, QFS (multi-skins), TGA
o         +--- gamecode           Gamecode
o         |       +--- engine     Progs interpreter (core)
o         |       \--- builtins   Progs utility builtins
o         +--- models             Generic API
o         |       +--- alias      Alias model loader
o         |       +--- brush      Brush model loader
o         |       \--- sprite     Sprite model loader
o         +--- network            Network code (like netchan, but sane)
o         |       +--- transport  Low-level protocols (UDP, TCP+UDP, etc.)
o         |       +--- netquake   Quake's wire protocol
o         |       +--- null       Null protocol, for single-player
o         |       \--- quakeworld QuakeWorld's wire protocol
o         +--- system             Platform-dependant system lib
          |       |               (raw IO/filesystem/dlopen code)
o         |       +--- null       Portability aid, a skeleton system lib
o         |       +--- unix       POSIX stuff
o         |       \--- win32      Win32 system lib
X         +--- util               Utility library
          |       contents: Commands, Cvars, Quake-format scripts,
          |       property lists, console parsing/formatting/output, the
          |       heap and zones.
o         +--- video              Video input and output
o         |       +--- renderer           3D video rendering
o         |       |       +--- soft       Software 3D rendering
o         |       |       \--- opengl     Passing the buck to OpenGL
o         |       \--- targets
o         |               +--- null       Portability aid, skeleton
o         |               +--- console    Non-graphical, "readline" input
          |               |               (also needs old-style stuff for
          |               |               dumb-ass systems/terminals)
o         |               +--- sdl
o         |               +--- svgalib
o         |               +--- win32
o         |               \--- x11
o         \--- world              3D layout engine (includes objects)
                                  Talks to the sound and video renderers
                                  to output frames

[1] taniwha feels that formats is wrong and is using models with the
    following structure:
        libs
            models          generic api code
                alias       alias model loading code
                brush       brush model loading code
                sprite      sprite model loading code
            textures        texture reading/writing/management code

Decided old menu structure was pointless and nobody cared.
So we don't forget something in the binds menu:

  Attack
  Change weapon
  Jump / Swim up
  Walk forward
  Backpedal
  Turn left
  Turn right
  Run
  Step left
  Step right
  Sidestep
  Look up
  Look down
  Center view
  Mouse look
  Keyboard look
  Swim up
  Swim down
