Part 5: Source Ports and Fisheye Quake
Chapter 5
Chapter Select

Part 5: Source Ports and Fisheye Quake

I found a backup of my C:\Quake folder from 20 years ago when I was a Quake-obsessed teenager. This is part 5 of a series on the hidden gems and curiosities from that time-capsule. This time: Fisheye Quake - an illegal source port of Quake that showed the way to the future of gaming.

12

The Source

Just as my interest in Quake modding and maps started to wane near the end of 1999, something extraordinary occurred: John Carmack of id Software released the source code for Quake. This would transform the mod community for Quake as engine limitations could now be lifted with new programming and mappers could go wild. All sorts of interesting source ports would be released: numerous ports would add modern effects like particles and colored lighting. ezQuake would concentrate on multiplayer enhancement. Tenebrae would add real-time lighting and shadows. Darkplaces would focus on removing limits to the engine which would lead to an explosion in new creative mapping.

The Quake 1 source code, yours to explore.
The Quake 1 source code, yours to explore.

 

Before all that - before the official source release - the Quake source code was hacked and leaked onto the web. In a Alpha Geek move, someone used the leaked code to create a Linux port of Quake. Carmack forbid id Software from suing the port maker, and the unofficial port was used as a foundation for the official Linux port! Another product of the leaked source code was Fisheye Quake - our subject today. The developer, Wouter van Oortmerssen, held back the public release of Fisheye Quake until after the source code was released officially, avoiding all the legal drama.

Eyes Like A Fish

Fisheye Quake, is as the name suggests, a version of Quake hacked to present a first person view with fisheye distortion. This is in contrast to most renderers which use rectilinear distortion. To simplify greatly, as the field of view (FOV) gets larger a fisheye view will distort on your flat display in a circular way, while rectilinear views will distort with straight lines at greater and greater angles. If you game on a ultra-wide display, you will be really familiar with rectilinear distortion at the far edges of your screen. It's hard to describe with words, so check out the images and video for better demonstrations of the effects. Or head to the developer's website for an in-depth visual breakdown and description.

How Fisheye Quake works
Fisheye Quake works by rendering Quake six times, applying 2D distortion,
and then stitching the six frames back together in 3D space.

 

The question might be, "Why use a high field of view?" First off, typical human vision has an FOV of about 175, so a high FOV will more closely replicate real life - even on a flat display. Second, when playing at a higher FOV you can see more of your surroundings - enemies, traps, the environment, everything! In multiplayer, it can be the difference between blasting away your foes or riding their rocket. In normal Quake, you can change the FOV up to about 120 before it becomes so angular and squished that its impossible to play. In Fisheye Quake, I'm comfortable all the way up to 160 before the round distortion gets too strange.

High FOV of 175 in Quake looks terrible.
A human-approximate FOV of 175 in normal Quake looks terrible.
High FOV in Fisheye Quake looks great!
In Fisheye Quake, the same scene in high FOV looks great and plays great!

 

If you want, you can set an FOV to over 180 degrees and see behind your own back! It looks odd but is totally playable.

See behind your back with 360 FOV in Fisheye Quake

 

There are a ton of limitations to Fisheye Quake. The rendering engine cannot display the HUD, nor any crosshair. The player gun models can display strangely. Widescreen display resolutions are not supported. There are visible seams in your view portal. Worst of all it's software rendering only, which means your graphics card is not used and it depends entirely on your CPU. On the build of Fisheye Quake I found in my C:\QUAKE folder I get about 20FPS at the terrifying resolution of 320x240 - though this is on my admittedly ancient 2015 gaming laptop. However, I recall when I played this on a Windows XP box 15 years ago with a Pentium 4 it was much smoother so the poor performance in 2020 is probably a compatibility issue.

Round "fisheye" distortion at higher FOV.
Round "fisheye" distortion at higher FOVs
looks worse in non-widescreen resolutions.

 

Fisheye Quake may have marked the end of my obsession with Quake. I recall playing a few deathmatch games at LAN parties with this mod and everyone could feel the advantage - once they got over their initial revulsion at the round distortion. Not long after, I must have stopped playing and modding Quake because the latest file modified date in my C:\QUAKE backup was February of 2000. I know I had other things on my mind - college applications, AP exams, and hustling money to buy a graphics card good enough to play Quake 3: Arena.

A very natural look to many scenes
There is s very natural look to many scenes in widescreen resolutions in Blinky.
Still images don't do it justice.

The Future of Fisheye

There is a modern port of the fisheye renderer for Quake called Blinky, and it works great. Widescreen resolutions are supported, which greatly reduces the round fisheye distortion. The seams between portals are also gone, which improves the experience as well. Blinky uses the TyrQuake software renderer, but is optimized enough that I can run it at 800x600 and 50FPS. It would probably do way better with some tweaking, or a competent desktop CPU - I'm running this all on a 6 year old low-end gaming laptop. Blinky also has a neat set of tools to change the rendering parameters and explore the possibilities of fisheye rendering.

We currently live in a PC gaming landscape totally dominated by the inferior rectilinear viewport. No modern 3D games use fisheye rendering. I suppose this makes sense given our screens are flat, but I think this is naïve. It is quite easy to get used to a fisheye representation of Quake, and I find it really enjoyable and natural. The undistorted view at the peripheries of the screen is especially pleasant. The good news is that the future of gaming is not rectilinear. VR games use a form of fisheye rendering known as curvilinear, which is a fisheye distortion customized to the lens geometry of the VR headset. And while I can't prove it, I believe the developer of Fisheye Quake was responsible in part for creating curvilinear rendering used by early VR and Google! 20 years later, an illegal source port of Quake showed the way to the future of gaming.

VR rendered rectilinearly - looks terrible!
VR rendered rectilinearly - looks terrible.
Source: https://developer.oculus.com/documentation/native/pc/dg-compositor-mirror/
VR rendered curvilinearly - looks great inside the headset.
VR rendered curvilinearly - looks great inside the headset.
Source: ibid.

 

  • Name: Fisheye Quake
  • Author: Wouter van Oortmerssen (Aardappel)
  • Release Date: 24 January 2000
  • Download: The original software-rendered version of Fisheye Quake can be found on the author's website, along with an excellent technical write-up: http://strlen.com/gfxengine/fisheyequake/index.html. The modern remake, Blinky runs a modified version of the TyrQuake source port. It is a better version to use if you wish to explore the concept on a modern PC: https://github.com/shaunlebron/blinky 
  • Stream: I created an edited side-by-side comparison between Fisheye Quake and normally-rendered Quake. Check it out embedded above or linked here: https://youtu.be/wag1qWO5anc 
  • Trivia: The author of Fisheye Quake, Wouter van Oortmerssen, went on to work on the CryEngine which powered the original Far Cry, contributed to Borderlands 2, and now works on game and VR tech for Google. 
Hello, Meet Lola