Fisheye Quake! By Aardappel (aardappel@planetquake.com) & Brick (brick@gamesinferno.com) http://www.planetquake.com/aardappel http://www.ecs.soton.ac.uk/~wvo96r/gfxengine/fisheyequake/ http://www.gamesinferno.com/aardappel http://www.gamesinferno.com/brick Running it ========== Put fisheyequake.exe in your quake directory and run it! couldn't be easier! WARNING: Fisheye Quake is by nature very computationally intensive. Run in 320x200, and unless you have a p500 or better do not expect to get playable fps. Two new cvars are available: - "ffov" (default = 180). Change this to ANY value for the corresponding fov. Most practical values lie between 120 and 250, depending on you taste. - "fviews" (default = 6). Fisheye Quake renders by first having quake render 6 fov 90 views, and then sampling the final view from that. If your ffov is around 200 or lower, you will never see the back view so you can set fviews to 5 for a tiny speedup. If you use a really low ffov like around 120, you can set it to 3 for quite a significant speedup (panorama mode :). A couple of old cvars have had their name changed because they should never be changed from their default values, because the fisheye renderer expects them to have certain values. They are: "fov" (duh!) and "viewsize" (can't have a statusbar, sorry!). Problems ======== Fisheye Quake is a drop-in replacement for WinQuake, so if you never had that installed you may miss some DLLs. Get it here: http://www.cdrom.com/pub/idgames2/planetquake/academy/essentials/wq100.zip Also, if your machine has problems running winquake, it will have the same problems running fisheyequake. You may need to experiment with commandline flags (note that things like -dibonly can slow it down greatly). On some machines, it used to crash randonly after a few minutes. This is likely fixed now though. What! Why? How? =============== If you are left full of questions about fisheye, check out the homepage, esp. the page on there that compares fisheye with normal fov (url above). Source Code =========== In the source directory you will find the modified files (screen.c, r_main.c and view.c). Almost all fisheye code sits at the end of view.c. To compile for yourself, get the original id sourcecode release and simply replace these 3 files. If you want to add fisheye to an already modified port, you'll have to make a diff, and merge the code in yourself. The code is covered by the same license as the original id code, the GNU public license. Do not ask me to help in using the source, if you can't get it to work you probably shouldn't be doing it anyway. Cheating ======== There will be some people who will see no other purpose to Fisheye Quake than cheating. Yes it would be quite an effective cheat (given you have an Athlon 800 or better), but that's not the reason I made it. Fisheye is simply a superior way of displaying a 3d world, deal with it. I dig it for the way it looks (more curves than q3a!) and the way it feels when you move, if your only interest is cheating you are a sad bastard, I can't fix that. Similarly if you feel like accusing me of helping people cheat, grow up. Timedemos ========= If you have a brutally fast machine and wanna impress me with your framerate, do a "timedemo demo1" on (note well!) 320x200 full screen mode. Send me your fps along with details of cpu/videocard/os (last two can influence performance a lot, as Fisheye Quake does a lot of copying from and to videomemory). For comparison, my machine (ppro200/voodoo3/w95) gets 6.5 fps, a mates p3-600/geforce/w98 machine gets about 24 fps, and a celeron oc to 450/tnt/ w2k only got about 9. History ======= I just love fisheye, and when I stumbled across a leaked copy of the quake source code (for linux, version 1.01) I just couldn't resist. To avoid being sued by id I couldn't release it though, so best I could do was screenshots and AVIs on my homepage... highly irritating as some people even thought they were merely fakes, warped in photoshop. Then in december'99 came the official source code release so I could finally release the code. Future ====== I intend to do this all in OpenGL, and a bit faster :)