``Oh, noe, a chunk of a QuakeI DM1 map?''
You control pitch use a mouse.
You control yaw use a mouse.
You control roll with Q/E keys (Delete/Insert keys).
You control forward speed with W/A keys (W moves you forward, S moves you backwards). You can also use the '>' and '<' keys.
You control side-to-side speed with A/D keys (A moves you left, D moves you right).
You control up/down speed with Z/X keys (Z moves you up, X moves you down).
Use the mouse. A very convinient way to fly around is to control direction with the mouse, and keep holding down the 'W' key.
The program starts out by loading a `planes' file; which contains planes directly out of the game .map file. Then a BSP is generated (including stuff for collision detection). There is a script, map2java.pl which can be used to convert any .map file (from quake1/2/3, and maybe halflife1/2) to a `planes' file.
The reason it is a `chunk' of a map... is because Java sux. Yes. It does. If I try to load the whole map, it gets an OutOfMemory exception. It seems having a few Vector objects on every BSP node (when the map can be possibly a thousand brushes), is not a good idea. So, it works with a chunk of the map, but not the whole thing.
I think a better idea would be to generate the BSP externally, and have the Java program load an already made map (as opposed to wasting time/memory generating it everytime you load the applet.
Update: The map was left/right reversed... that was mostly because I forgot to change to screen coordinate system right after the transformation. So that's been fixed. Also improved the controls somewhat.