11/22/97 Shadow Warrior 3Dfx version Notes --------------------------------- 3Dfx Shadow Warrior files ------------------------- SW3DFX.EXE - 3Dfx version of the game SET3DFX.EXE - Setup program for 3Dfx. (Run this one). 3DTMAIN.EXE - Main setup program for 3Dfx. 3DFXREAD.TXT - This text file. Fast Start ---------- Want to get 3Dfx Shadow Warrior running right now? 1. You would be well advised to read the troubleshooting section first. 2. You MUST have at least 32 megs of RAM. More memory will lead to much better performance. 3. You MUST have the "glide" drivers installed. Shadow Warrior needs a file called GLIDE2X.OVL to be in the path. If you don't have a glide2x.ovl in your \windows or \windows\system directory, you can get current glide drivers here at the 3Dfx site: http://www.3dfx.com/download/sdk/index.html Try http://www.3dfx.com (and poking around if the site changes) You want the Glide2.43 Runtime Drivers (or whatever the current version is at the moment.) 4. Make sure to have your Shadow Warrior CD in the drive, or some CD with a valid track #2. (Ignore this if playing the shareware version). 5. Run SET3DFX, and configure the game. (should read troubleshooting) 6. Launch SW from the setup program, or exit and type SW3DFX. 7. The game will load. (Note the "3Dfx" on the title bar). 8. It will take some time to convert various textures the game uses to 3Dfx format. Be patient. On a P300 this takes 10 seconds. On a P90, it will take longer (upwards of 3-4 minutes or more). This is a ONE TIME deal. 9. Play the game. Notes on the 3Dfx version of Shadow Warrior ------------------------------------------- The 3Dfx version uses a different setup program (SET3DFX.EXE). So, type SET3DFX to setup/run the game instead of SETUP. The first time you run this, some modifications will be made to your SW.CFG file. We recommend that you keep two .CFG files, one for 3Dfx Shadow Warrior, and the other for regular Shadow Warrior. If you don't do this, then certain settings will be lost each time you convert the .CFG file. 3Dfx Shadow Warrior does not support 3D sprites like regular Shadow Warrior does. This was a technical impossibility. For this reason, the 3D sprites option has been removed from the options menu. Be sure to turn 3D sprites off in regular Shadow Warrior before running the 3Dfx version for the first time. If you do not do this, then no sprites will appear in the 3Dfx version. Troubleshooting --------------- Q: Why can't I see any enemies or decorations in the game? A: The "3D sprites" option is turned on, which is not supported by 3Dfx Shadow Warrior. To fix this, either delete your .CFG file and create a new one, or run "regular" Shadow Warrior and turn the 3D sprites off. Q: Why does my status bar look garbled? A: Some of the larger textures (like the status bar) are converted to 3Dfx format the first time you run 3Dfx Shadow Warrior. Sometimes these textures can become corrupted. Try deleting the TX3DFX subdirectory in your Shadow Warrior directory and running 3Dfx Shadow Warrior again. It will reconvert the textures again. Q: Why does 3Dfx Shadow Warrior access the hard drive so much? A: You probably have 32Mb or less installed in your system, and you probably have a 2Mb 3Dfx card. Shadow Warrior uses a LOT of wall textures and enemy sprites, and these can take up tons of memory once they are converted to 16-bit color for use by the 3Dfx card. For best performance, you should run 3Dfx Shadow Warrior on a system with more than 32Mb installed. Q: Why is the frame rate so low? A: Low frame rate is usually due to hard disk cacheing, in which case you need more memory as mentioned above. Another way to increase frame rate is to INCREASE the screen size (by hitting the '+' key or using the Screen Options menu.) The status bar tends to slow things down a lot, and getting rid of it often helps speed things up. NOTE: Decreasing the screen size will only slow things down more. Also Shadow Warrior has to do a lot of extra work to get onto the 3Dfx that a "real" 3D game does not. We end up having to deal with many more polygons per frame than a game like Quake, Jedi Knight or Hexen II. This is detailed more in Scott Alden's 3Dfx notes below. Q: Why are the colors so "muddy?" A: Muddy colors are usually due to the gamma settings on your 3Dfx card. First, make sure that Shadow Warrior's interal gamma correction is set to level 1 by pressing the F11 key repeatedly or by moving the "Brightness" slider in the Screen Options menu all the way to the left. If this doesn't correct the problem, then you need to check the gamma settings in your 3Dfx Windows drivers. This is normally done by selecting the "Display" button in the Control Panel, though this may vary depending on the manufacturer of your 3Dfx card. At 3D Realms we found a gamma value of 1.2 to be optimum, but again this may vary depending on the manufacturer of your 3Dfx card. As another option, you might try tinkering with the BUILD_BRIGHTNESS environment variable as explained below. Q: Why are sloped floors and ceilings so bright? A: This is a necessary evil for various programming related reasons. Notes from 3Dfx and environment variables ----------------------------------------- 3Dfx Build Engine Version 1.0 Author: Scott Alden Date Created: 9/12/1997 Last Update: 11/22/1997 Implementation Notes -------------------- I had a lot of fun and challenges on working on the Build engine, not everything went as I wanted it and many things are workarounds. Sloped floors were especially fun ;-) An ideal thing to happen is this engine is converted to true polygon rendering system. This could greatly enhance the speed for the 3Dfx hardware. I currently have the raster layer of the build engine rendering spans to the 3Dfx hardware. Thus a wall that fills the entire screen would be made up of X triangles where X = the horizontal resolution of the screen. You can set the BUILD_TRICOUNT (see below) environment variable to see how many triangles are being drawn on the previous frame. This is more for seeing how the tricount affects the framerate. Since each wall and floor is made up of hundreds of spans, thus thousands of triangles are drawn each frame. For instance if a single wall was rendered in a frame that filled the screen, the renderer would have to draw 640 vertical triangles to draw the wall. All of the tiles in the game are downloaded to the hardware as texture maps, and the span is converted to the 3Dfx format for rendering. There are 3 types of primitives that I use: horizontal triangles for horizontal spans, vertical triangles for vertical spans, and quads for drawing unclipped sprites. Also, the lighting/palette effects that the game uses are achieved by downloading a new palette to the 3Dfx hardware. This palette downloading happens on a span by span basis. Fog and other lighting effects are all achieved by palette changing. A span based renderer is slower than the an ordinary 3D based renderer (like GLQuake) on the 3Dfx because of the conversion of spans involved. For each vertical span in a wall, the texture coords must be calculated specifically for the span, where as a regular polygon for a wall only has to provide texture coordinates at the vertices. ----------------------------------------------------------- Here are some extra things to know about for additions I have made to the build engine which can be set in your environment before running the game: Environment Variables --------------------- The BUILD_640X480 environment variable is used to run the game in the 640x480 resolution. The default setting is 0, and the default resolution is 512x384. e.g. set BUILD_640x480=1 The BUILD_RESAMPLE environment variable is used to control how the game and animation textures are converted to 3Dfx format. If you set this variable, the slower method of sampling and blending is used. This gives a more desirable image however it takes a long time to run, and it gives a dark halo effect surrounding sprites (i.e. the fists and some menu bar things). The faster way uses point sampling, it provides a more grainy conversion, but is a lot faster than the previous method. You only need to convert the textures the first time you run the program, and if you want to recreate them, delete the "tx3dfx" and animxxxx directories which contain all the .3df files. The BUILD_BRIGHTNESS environment variable is used to brighten the colors of the textures that are used in the game engine. The colors will be brightened by this factor, and will saturate to white. The default setting is 2.5. e.g. set BUILD_BRIGHTNESS=2.8 The BUILD_NOPAL environment variable is used to turn on palette downloading on a per-span basis. !!!Warning!!! This will affect the color palette of the game and the colors may not be correct! This is only provided as a speed boost. The default setting is 0. e.g. set BUILD_NOPAL=1 The BUILD_NOFOG environment variable allows the game fog to be turned on/off. This is provided as a speed boost. The default setting is 0. e.g. set BUILD_NOFOG=1 The BUILD_CONVTEXTURES environment variable is used to control whether or not textures are cached to disk. If BUILD_CONVTEXTURES is set to 1, then the textures will not be cached to disk and will be converted in memory. If you are running the game under Windows 95, then this setting is not recommended. If you are running the game under DOS, then this setting may help out because disk I/O access is slower on some DOS machines than others. The default setting is 0. e.g. set BUILD_CONVTEXTURES=1 The BUILD_TRICOUNT environment variable shows the number of triangles drawn in the last frame. The default setting is 0. e.g. set BUILD_TRICOUNT=1 The BUILD_FPS environment variable shows the current clock settings, frame number, and a (rough)FPS count. The default setting is 0. e.g. set BUILD_FPS=1 The BUILD_VERSION environment variable shows the current version number of the 3Dfx Version of the Build Engine and the current version of Glide you are using below that. The default setting is 0. e.g set BUILD_VERSION=1 BUILD_MRED, BUILD_MGREEN, BUILD_MBLUE set the colors of mirrors in the game respectively. Their range is from 0-255. Their default settings are 200, 200, and 255 respectively (gives a blue tinge to all mirrors) e.g. for dark blue mirrors: set BUILD_MRED=0 set BUILD_MGREEN=0 set BUILD_MBLUE=200 ------------------------------------------------------------ Here's some things I added to the Shadow Warrior code and specific things in the build engine that are related to Shadow Warrior. When you start up Shadow Warrior 3Dfx version, the program will begin converting the textures in the game to the 3Dfx format. This only needs to be done once, and if you want to recreate the process, then delete the subdirectories called tx3dfx and animxxxx where xxxx will be a number and the directory will contain .3df files. This takes quite a while to convert so be patient :-) See the above environment variable BUILD_RESAMPLE for more information on this. New Keys -------- ALT-B: Turns on Bilinear filtering ("Blurry" mode) ALT-P: Turns off Bilinear Filtering ("Pixelated" mode) F12: Captures the 3Dfx screen. Creates files in the TGA format with the naming convention of swcpxxxx.tga where xxxx is the number of screen captures made. New Functions ------------- Transparent Textures based on their intensity. This is for transparent explosions, etc... This function has been applied to the following textures for Shadow Warrior (these are based on the internal representation of the tile numbers): 1465-1468 3072-3225 1748-1753 3240-3277 3280-3300 3948-3986 3969-4016 772 - 776 Note: Cranking up the intensity with BUILD_BRIGHTNESS will cause less of the textures to be transparent, since the level of opacity is based on their intensity.