IMPORTANT! ------------------- 1. You need DOS4GW.EXE 2. No levels are included with the demo. You need to extract .BSP files from PAK?.PAK (ID1 directory in your QUAKE dir). There are lots of utils to do that. Then use CONVBSP util to convert a .BSP file into a .LVL file that the engine reads. 3. You also have to extract models and sprites. The names are hardwired in the program. You'll need: PLAYER.MDL, V_SHOT.MDL, MISSILE.MDL, BACKPACK.MDL, S_EXPLOD.SPR =========================================== POLY ENGINE version 0.65 Written by Alexey Goloshubin =========================================== This is a demo of a full 3D Quake-style engine. I use levels and models from Quake. There are no plans for a future geometry editor - there are lots of very good tools you can use to build a level (Quake's .BSP file). However, I plan to write couple of utilities and tools for the engine. First of all, QuakeBSP to Poly converter. Then a walk-through type of editor where you can actually go into a level and place game objects (items, monsters etc). Currently there are two renderers available: software only and native 3DFX (Glide). The Windows port and other renderers (OpenGL, possibly Direct3D) are on their way. The optimization is not complete: surface cache code in software renderer is very slow. 3dfx renderer can be improved alot. For information about availability of the engine please contact Warthog Ltd: warthog@warthog.co.uk If you have some comments, suggestions or just want to talk about 3d graphics you can reach me at: alexey@ii.uib.no ENGINE FEATURES ======================================= + Full object support + Collision-detection + Physics system + Movable bsp models + Client-server networking (IPX, null-modem) + Sound system (Miles Sound System) + VFX1 head-tracking + BSP/ZBuffer rendering + Polygonal objects + Sprites + Software renderer + supports any resolution + span buffer (similar to ZSORT stuff by M. Abrash in DDJ) + perspective tex-mapping (16-pix subdivision) + mip-mapping + surface caching (light maps) + dynamic lights + Hardware renderer + native support for 3DFX (Glide) + mip-mapping + colored lightmaps + colored dynamic lights THE GAME ======================================= The demo is sort of a game. You can shoot, get shot, kill and die. In Multiplayer mode you can run around (if the speed of engine will allow you ;) and shoot at other players. A player must get shot 10 times to die. If you are dead press Fire (LMB, CTRL) to appear again. If the program is too slow to be playable try using -FLAT and/or -2 params (first one turns texture-mapping off the second halves the screen). For example, if the client is too slow run: POLY -CLIENT -FLAT The best setup is to have a dedicated server. A fast 486 will do just fine. GRAPHICS ======================================= By default the demo (software only) runs in 320x200 VGA. If you install VESA 2.0 with linear frame buffer support (UniVBE 5.1+) you can run the program at any resolution (up to 1024x768) supported by your video card. To choose the resolution and enable VESA 2.0 support use -vbe xxx yyy command-line switch where 'xxx' is width and 'yyy' is height. With hardware acceleration the demo is programmed to run at 640x480 SOUND ======================================= This version of the demo contains Miles Sound System with some additional code provided by Warthog Ltd. Only couple of sound effects are included with the demo. Stereo panning and volume are used to create a better 3d effects. To disable sound support: POLY -NOSOUND NETWORKING ======================================= The engine has a simple client/server networking. This version supports IPX and up to 4 com ports. To specify what network devices you are going to use, edit NET.INI. I do not recommend using too many com ports at once. By default the computer starts up as a server (both server and client on the same machine). You can connect to (disconnect from) a server at any time. I limited number of players to 16. The program will probably die with less players. To start a computer as a client: POLY -CLIENT It will start searching for available servers on the network (and com ports). When you see at least one 'o' on screen, you can press a key to stop the search as the client has found at least one server. Then you'll see a list of available servers on the net. Type in the number of the one you are going to connect to. If a client has more than one device connected to a server (say ipx and com2), the server will be listed more than once (with different devices). You can choose which one you want to use. The new player will be added at the start location on the level To start computer as a dedicated server: POLY -DEDICATED The computer stays in text mode. COMMAND LINE ======================================= Some of the command line options have been disabled in version 0.65 POLY [file.LVL] [-client | -dedicated] [-2] [-flat] [-kbd] [-nomonsters] [-vbe xxx yyy] [-noflip] where file.LVL - BSP file to load (E1M1.LVL is default) -nomonsters - No enemy poly objects -nosound - Disable sound support -client - The machine is a client (connects to a server) -dedicated - Dedicated server. No rendering -flat - No texture mapping -noflip - No double buffering (faster but objects flicker) -vbe xxx yyy - Enable VESA 2.0 support and choose video mode. 'xxx' is width, 'yyy' is height. -2 - Halve the screen size -kbd - Different kbd controls (debug mode) You have to specify the extensions for filenames! CONTROLS ======================================= I've implemented setups for both 'mouser's and keyboard players. Note that if you specify -KBD switch on command line the controls will be different. To enable VFX1 head-tracking just load VFX1.COM driver. But do NOT load VRMOUSE as it will disable normal mouse controls in the demo. ESC - the usual ;) ENTER - switch to external camera Mouse Move - turn, look up/down LMB - shoot RMB - jump S, F - slide left/right E, D - forward/backward Up/Down - forward/backward Left/Right - turn left/right ALT + Left/Right - slide left/right CTRL - shoot SPACE - jump 28 December 97, Alexey Goloshubin