C:\QUAKE - Part 5: Source Ports and Fisheye Quake

C:\QUAKE - 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.

Enkidu

The Source

Just as my interest in Quake modding and maps started to wane near the end of 1999, something extraordinary occured: 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 offical 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 offical 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 competant 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 naive. 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. 
From The Chatty
  • reply
    March 20, 2021 9:32 AM

    Fifth in a weekly series of articles about my Quake mod obsession in the late 90's. This time: Fisheye Quake - an illegal source port of Quake that showed the way to the future of gaming.

    Read more: C:\QUAKE - Part 5: Source Ports and Fisheye Quake

    • reply
      March 20, 2021 9:43 AM

      Apologies for the one week gap, I was sick last weekend and couldn't find the juice to finish the Cortex article.

      Attn: ThomW, shotgun1, roushimsx, someWayne, mn3m0n1c, JohnnyDanger, skankcore, u sir name, gracelessdragon, cap n KRUNCH, someWayne, knytehawkk, ughhhhhhh, quazar, paravis, cokefiend, CrustaR, Waverider, redfive, Maddog_Delphi97, Audhuml4, skizl, dmode101, reelbk, lacker, MikkleThePickle, Distortion462, Ziz, razlebol, MacemannInTW

    • reply
      March 20, 2021 9:43 AM

      Oh wow, I had no idea Fisheye Quake was illegal, or that the source had leaked. I thought the developer implied he had taken the source directly from id with the promise of never releasing it.

      • reply
        March 20, 2021 9:59 AM

        You got me! "Illegal" is a clickbait interpretation of the situation. The dev did create Fisheye Quake from the leaked source, and only released it to the public after id Software released the official source code. From the readme file:

        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.

      • reply
        March 20, 2021 10:48 AM

        It wasn't. There's no way the developer of this would have done anything dodgy. He's much smarter than that.

    • reply
      March 20, 2021 9:46 AM

      Once again thanks for these. Its a trip down memory lane. Good good stuff!

    • reply
      March 20, 2021 11:52 AM

      Cool cool 😃 I swear I remember something like this for Quake II but a casual search didn't find anything.

    • reply
      March 20, 2021 12:30 PM

      Is there any way to simulate this kind of effect on a modern game? I take it it's a different effect than just changing your fov.

      • reply
        March 20, 2021 1:36 PM

        It seems many modern engines and GPU pipeline allow for the math needed to create fisheye viewports. Here's one example: https://www.mathworks.com/help/driving/ref/simulation3dfisheyecamera.html


        As mentioned in the Cortex article, all VR games implement a form of fisheye rendering, so I presume efficient methods exist for the big players in 3D like Unreal, Unity, idTech, and Source 2. I'm not a programmer by trade so the details are beyond me.

    • reply
      March 20, 2021 5:51 PM

      I just caught up to reading all five parts of your Quake articles and loved reading them. I had no idea that the viewport projection was a variable to consider. That's also neat to hear where the mod developers have gone on in their careers.

      • reply
        March 20, 2021 6:38 PM

        Thanks! The more I research the modders I enjoyed 20 years ago the more I realize how they went on to build the gaming renaissance we enjoy now.

    • reply
      March 20, 2021 6:59 PM

      Love these so much

    • reply
      March 20, 2021 7:05 PM

      This is awesome, so many memories.

    • reply
      March 20, 2021 10:21 PM

      Awesome stuff

    • reply
      March 21, 2021 12:01 AM

      I am playing through the Quake 1 campaign and it's amazing. I am have such an excellent time finding all the secrets!

      Playing via vkQuake (Vulkan!) and the controls are so just so responsive and smooth. They really hit on some magic movement formula.

    • reply
      March 21, 2021 12:43 AM

      Very cool. I still remember Fisheye Quake! Good times indeed

    • reply
      March 21, 2021 4:07 AM

      Rune Quake gave me the best memories at the time. Miss it

Hello, Meet Lola