Matt's Ramblings
Matt's Ramblings
  • 19
  • 1 072 673
Shedding light on Quake I and II lightmapping
An explanation of how lightmaps are constructed in the classic Quake I and Quake II games, along with a look at the latest techniques developed by the community.
Massive thanks to Eric Wasylishen and Paril for their help with part 3, and also to the Quake Mapping discord for their support. Get ericw-tools here: ericwa.github.io/ericw-tools/
Support my channel: www.buymeacoffee.com/mattsramblings
Follow me on Mastodon: mastodon.cloud/@mattsramblings/
0:00 Introduction
0:36 Part 1: Quake
6:27 Part 2: Quake II
10:21 Part 3: ericw-tools
Переглядів: 27 886

Відео

I added portals into software Quake
Переглядів 20 тис.10 місяців тому
How I added portals into Quake's software renderer. These are gameplay portals, a bit like the ones in the game Portal, as opposed to the type used for vis calculations. Support my channel: www.buymeacoffee.com/mattsramblings Follow me on Mastodon: mastodon.cloud/@mattsramblings/ Thanks again to bmFbr for the instant teleporter feature. Download the Alkaline mod here: alkalinequake.wordpress.co...
Shooting Through Walls: Unraveling the Code Behind Quake's Lightning Gun Bug
Переглядів 42 тис.11 місяців тому
A slightly speculative look at how Quake's lightning gun can be used to kill distant enemies. Check out Connor from @quakespeedrunsexplained's counterpart video here ua-cam.com/video/zfY96tAqmdI/v-deo.html Snippet at the start taken from @Muty's 11:42 world record (current at the time of writing): ua-cam.com/video/PU90hSIL6Fc/v-deo.html Thanks to the Quake Mapping and Quake Speedrunning discord...
How Quake's software renderer ELIMINATES overdraw [⚠️ flashing images]
Переглядів 46 тис.11 місяців тому
A description of the techniques used by Quake to render a fully 3D game on original Pentium hardware. Support: www.buymeacoffee.com/mattsramblings Mastodon: mastodon.cloud/@mattsramblings/ 00:00 Intro 00:35 Polygons in BSP trees 01:14 Frustum culling 02:05 PVS culling 02:55 Back-face culling 03:42 Spans 04:58 Active edge list 05:51 Active polygon list 07:09 Black book
Quake's PVS: A hidden gem of rendering optimization
Переглядів 163 тис.Рік тому
A look at how Quake uses portal graphs to pre-calculate visibility information. Support: www.buymeacoffee.com/mattsramblings Mastodon: mastodon.cloud/@mattsramblings/ 00:00 Intro 00:43 Portal graphs 01:57 Visibility in a linear graph 05:15 Recursive trace Music Credits: Heavy Interlude by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 licence. creativecommons.org/licenses/by...
BSP Trees: The Magic Behind Collision Detection in Quake
Переглядів 89 тис.Рік тому
An explanation of how Quake, and other games like it, use this revolutionary data structure to stop the player from walking through walls and falling through the ground. Music Credits: Guiton Sketch by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 licence. creativecommons.org/licenses/by/4.0/ Source: incompetech.com/music/royalty-free/index.html?isrc=USUAN1100473 Artist: in...
Minecraft-style logic in Quake
Переглядів 21 тис.Рік тому
An implementation of logic gates in (unmodified) Quake, allowing constructions similar to those seen in Minecraft. Chapters: 00:00 Introduction 00:17 Logic gates in Quake 01:59 Results Music credits: Fanfare for Space by Kevin MacLeod is licensed under a Creative Commons Attribution 4.0 licence. creativecommons.org/licenses/by/4.0/Source: incompetech.com/music/royalty-free/index.html?isrc=USUAN...
Speedrun Science: Beating Quake with code
Переглядів 20 тис.Рік тому
A look into applying optimization methods (specifically differential evolution) to improving Quake's tool-assisted speed run record. Credit goes to Jukspa for creating TASQuake and for doing the run on which this project was based. See that run here: ua-cam.com/video/ekdcUOW1geA/v-deo.html 0:00 Introduction 0:22 TASQuake 1:06 Plan 2:36 Implementation 3:15 Optimization 3:53 E1M1 best run 5:14 Fu...
Swapping faces with 100,000 lines of C and 90 lines of Python
Переглядів 7 тис.2 роки тому
Back in 2015 I wrote a short Python script to swap faces from two images. In this video I explain how. Outro image credits: Original images (left and right columns) by Gage Skidmore, licensed under CC-BY-SA 2.0. Modified images (middle column) are licensed CC-BY-SA 2.0. creativecommons.org/licenses/by-sa/2.0/ Bush and Obama images are public domain. 00:00 Introduction 00:20 Loading images 00:40...
Quake E1M1 but there are 4096 grunts [4k subscriber celebration]
Переглядів 7 тис.2 роки тому
To celebrate reaching 4096 subscribers (0x1000 in hexadecimal) I packed Quake's first level full of grunts and attempted a speedrun through the level.
The code behind Quake 3's overbounce bug
Переглядів 37 тис.2 роки тому
An exploration of the code that gives rise to overbouncing in Quake 3, including variations, and tools that can be used to assist the player in performing this trick. Chapters 00:00 Introduction 00:35 What is an overbounce? 01:01 Normal overbounces 05:22 Visualization tool 05:43 Sticky overbounces 06:45 Horizontal overbounces 07:33 Diagonal overbounces 09:25 Outro
In search of the perfect speed-drift in Trackmania
Переглядів 37 тис.2 роки тому
An investigation into speed-drifting in Trackmania 2020. I extract measurements from the game to determine the optimal way to perform this trick over four of the game's surfaces. Chapters 00:00 Introduction 00:38 How to speed drift 01:33 Building a model 03:24 Results 05:10 Speed drift trainer plugin 05:39 Future enhancements 06:26 Outro
Quake path traced in Blender
Переглядів 20 тис.2 роки тому
Produced with a set of scripts I wrote to import demo files, and associated game assets into Blender. See matthewearl.github.io/2021/06/20/quake-blender/ for more screenshots and a write-up on how this was made. The run is from jukebox's 11:47 minute world-record. See ua-cam.com/video/KV5S521XjOo/v-deo.html for a version rendered in Joequake.
Perseverance rover landing footage projected onto map
Переглядів 62 тис.3 роки тому
This is footage from the downward facing camera on the Perseverance rover during its landing, which has been reprojected onto reference satellite imagery with an added scale. Read a description of how this video was made here: matthewearl.github.io/2021/03/06/mars2020-reproject/ Credit for the source video goes to NASA, watch it here: ua-cam.com/video/4czjS9h4Fpg/v-deo.html Credit for the refer...
The code behind Quake's movement tricks explained (bunny-hopping, wall-running, and zig-zagging)
Переглядів 115 тис.3 роки тому
Explanation of how the player movement code in Quake gives rise to these three different player movement "bugs", with a quick look at TAS movement mechanics at the end. Big thanks to the Quake Speedrunning Discord for helping me out with getting TASQuake running on my machine, and for clarifying terminology. Here are the original C versions of the acceleration functions: github.com/id-Software/...
Better Quake strafe-jumping with genetic algorithms
Переглядів 59 тис.3 роки тому
Better Quake strafe-jumping with genetic algorithms
Teaching a computer to strafe jump in Quake with reinforcement learning
Переглядів 44 тис.4 роки тому
Teaching a computer to strafe jump in Quake with reinforcement learning
Quake 3's frame rate dependent physics
Переглядів 69 тис.6 років тому
Quake 3's frame rate dependent physics
Strafe-jumping physics explained
Переглядів 187 тис.6 років тому
Strafe-jumping physics explained

КОМЕНТАРІ

  • @gdclemo
    @gdclemo 3 дні тому

    How do you avoid the portal clipping the near plane as you pass through it? Also doesn't Quake use PVS, so are you doing PVS lookup for the viewpoint transformed into the portal destination space (which might be behind a wall) or from the portal itself somehow?

  • @keiyakins
    @keiyakins 8 днів тому

    Does the pre-calculated expanded collision hulls mean that everything that moves has to be either a point, player sized, or ogre sized? I mean... you can do tricks like calculating as a point and then backing off a bit to handle stuff like grenades landing on floors, but the vore and shambler don't seem so easy.

  • @stardustmotion
    @stardustmotion 12 днів тому

    this animation/teaching is 50 years ahead of university course

  • @Go_Coup
    @Go_Coup 17 днів тому

    "Purpose"? Where we're going, we don't need purpose!

  • @edmundhuber9780
    @edmundhuber9780 18 днів тому

    Great breakdown, thank you. Having done my own reading of the Black Book, and other of Abrash's articles (which seem to be the most time capsule-y articles available on the Quake engine development) I'm struck by how pragmatic many of the choices made in building the engine were. For example, the PVS doesn't eliminate overdraw by itself, but it greatly reduces it. Carmack knew it was stupid to try to get the PVS perfect (in fact, fine-grained PVS is still an open problem today). PVS as implemented in quake gets the set of polygons low enough that span buffers can be used -- span buffers being even for the time a slightly outdated algorithm, that was designed in a time when writing a pixel was very, very slow, to completely eliminate the remaining overdraw. Overdraw in drawing the world was very expensive because every pixel had to be textured and lit, and world polygons tend to be large. But then at model drawing time, Carmack just said fuck it, the polys are small enough that we'll just the z-buffer.

  • @Go_Coup
    @Go_Coup 18 днів тому

    Do you have any videos of your/a 'humanized' bot completing a Defrag map? I've seen a non-humanized one during a Defrag tournament, but I have wanted to see one performing something that could potentially be done by a human (not cyborg.)

  • @vladimirryabtsev6184
    @vladimirryabtsev6184 20 днів тому

    It is actually not hidden.

  • @ciCCapROSTi
    @ciCCapROSTi 23 дні тому

    Yes. I had no idea how that TAS thing worked, I assumed it switches back and forth too fast to see, but that didn't sound right, rendering would show the flicker, there is no smoothing in Quake. But if it directly controls wishdir, then yeah, that explains it.

  • @datwolfe3512
    @datwolfe3512 24 дні тому

    I'm sorry but what does quantizing mean

  • @arnaudloche2725
    @arnaudloche2725 29 днів тому

    This is excellent

  • @HardToBeAPoopGod
    @HardToBeAPoopGod Місяць тому

    i know exactly 0% about codes and scripts, and yet i 100% understood this! i've always been curious as to how wallrunning specifically works super well done ♥

  • @FitterSpace
    @FitterSpace Місяць тому

    How would you calculate the optimal wishdir values given the player’s velocity? The table you showed in the video looks great, what is the formula for that?

  • @rinkachi-rinkitata
    @rinkachi-rinkitata Місяць тому

    Could you explain how the objects are rendered?

  • @3DSage
    @3DSage Місяць тому

    I really hope this gets more views. You skilled visual explanation are amazing.

  • @LordFers
    @LordFers Місяць тому

    Are you sure about if is the Minkowski difference used in Quake? Why is it that they never mention this in Michael Abrash's black book? I mean... I understand that Bruce Naylor went to id Software in 1994 to explain to Carmack how to take advantage of BSP Tree for Collision Detection (Doom doesn't use that approach), but I don't know if he explained to him that he could use the Minkowski difference (as what we now know as GJK). It would make me very happy to know where you got the idea that they used Minkowski Difference in Quake, or if it was just an approach you came up with for the video. Thank you so much and great video!

  • @ninjacat230
    @ninjacat230 Місяць тому

    I wonder if ericw tools can be made to to work in goldsrc, or mabye ACTUAL quake

  • @tomyoungblood9175
    @tomyoungblood9175 Місяць тому

    What is your education?

  • @tomyoungblood9175
    @tomyoungblood9175 Місяць тому

    Excellent video! I’ve been playing for 10 years and ironically the day after I finished my grad school linear algebra final project I see this video! Loved it.

  • @hetias
    @hetias Місяць тому

    Carmack you're a genius

  • @grafzhl
    @grafzhl Місяць тому

    Watching this almost 20 years after I discovered Defrag is pretty nostalgic :>

  • @SensSword
    @SensSword 2 місяці тому

    The Black Book is one of my favorite things from childhood. It was always just out of reach but I still learned things that helped me in my career. Good stuff.

  • @kerryhall
    @kerryhall 2 місяці тому

    Love your videos! Can I request a video discussing how Quake stores the actual polygon data used for drawing? Not so much the bsp, but moreso the surfaces / triangles / verts / polygons used for drawing the walls of a map, etc, and how does this differ from other full 3d engines of the time? (ie System Shock, Unreal, etc)

    • @charlieking7600
      @charlieking7600 2 місяці тому

      From what I know, all Quake store their surface not as polygons, but as surfaces. The surface equation is A*x + B*y + C*z + D, where A, B, C are coordinates of orthogonal vector to the surface, x, y, z are coordinates of any point on surface, and D is coefficient, determining the offset of surface in 3D space. All surfaces with equal normal vectors (A, B, C) are parallel each to other. For surface storage in .map file you need only 4 numbers (A, B, C, D), so you can create later polygons in map compiling stage to .bsp file.

  • @user-ft1er1ql6n
    @user-ft1er1ql6n 2 місяці тому

    Just ran through RTCW at 144 (matching monitor). Started a new playthrough and remembered capping at 333 FPS from W:ET. The difference is so huge in game that I had to look it up. Interesting video!

  • @VideoGamesCompleted
    @VideoGamesCompleted 2 місяці тому

    Hello Mike, would you briefly explain why holding forward while in the air in Quake causes you to lose speed when attempting to bunny hop? It's one of the difficult transitions for me is going from Quake 2 or Quake 3 asd having to let go of forward while in the air because you want to keep holding forward in Q2/Q3. I always wondered what it is that causes the speed loss in Quake 1 when holding forward.

  • @mrshodz
    @mrshodz 2 місяці тому

    Great video.

  • @JathraDH
    @JathraDH 3 місяці тому

    Its amazing how much game programming boils down to the simple dot product ie: backface culling check. You can do SOOO much with it its insane.

  • @sibvrv
    @sibvrv 3 місяці тому

    Awesome! Implementation as in Duke Nukem 3D ))) There where lot of custom levels in use with non-euclidean geometry, the most fun experience for multiplayer setups.

  • @antonaparin
    @antonaparin 3 місяці тому

    Love your videos and style, Matt! Right now, I'm learning about shaders and have no idea how I would even approach making a video like this. The arrows and the grid look gorgeous and flow really well with the graph. Do you use a program, or did you make the shaders yourself? I see you put in a lot of effort into this, and it'd be very interesting to know how you did it

  • @nicolamarchesan4597
    @nicolamarchesan4597 3 місяці тому

    Amazing video

  • @BmikroB
    @BmikroB 3 місяці тому

    An amazingly detailed, yet still easy to follow. You've explained it exceptionally well, thank you for this video!

  • @nicolamarchesan4597
    @nicolamarchesan4597 3 місяці тому

    This video is a pearl. Awesome. Although I didn't get some of the concepts, I gotta say the animations are perfect and explanation very clear. Question: how did the compiler find a good portal? And how did carmack arrive to all those ideas?

  • @nicolamarchesan4597
    @nicolamarchesan4597 3 місяці тому

    Really thanks for this ultra very well done video. I'm almost 40 now, but when I tried to study this stuff in the 2000s it was very difficult. Can't even believe you can find this kind of videos today, showing the unmatchable brilliance of Carmack. I didn't even know there were more thatn one BPS tree, made just for collision detection. When I was writing my own 3D engine back in 2000s, I had the very same problem, solved by expanding the geometry (an idea I had along with a friend of mine), but the final result was not stable. How could Carmack come up with this idea? thanks!

  • @GammaRain
    @GammaRain 3 місяці тому

    you don't deserves a coffee, you deserves a hole building with a cafeteria inside.

  • @mihailazar2487
    @mihailazar2487 3 місяці тому

    I don't understand why you chose green as the solid color and gray as the empty color it's so counter-intuitive

  • @psychoedge
    @psychoedge 3 місяці тому

    Honestly I'd love to see you look at the overlaps with wheel modifier like dirt and ice on entering tarmac. I assume it's a value averageing the two surfaces it involves but still would be nice to have it confirmed.

  • @GabrielxC
    @GabrielxC 4 місяці тому

    What a bug!

  • @er-GOD-ic
    @er-GOD-ic 4 місяці тому

    someone tell me why accelerate is not clipped to zero? why they can be negative number??( ・・?)

  • @purityspiral662
    @purityspiral662 4 місяці тому

    It's great to see a visual example of what BSP splitting looks like using 3D volumes instead of just 2D areas

  • @paulbunyangonewild7596
    @paulbunyangonewild7596 4 місяці тому

    So beautiful to see how neat and tidy this system is.

  • @PDivision1
    @PDivision1 4 місяці тому

    The animation is amazing! How did you make them? I mean splitting the level in chunks.

  • @antivanti
    @antivanti 4 місяці тому

    I seem to remember that the original Unreal engine had support for portals like this?

  • @grahamesmith9139
    @grahamesmith9139 4 місяці тому

    You assume that we know what an iteration is 🎉😂😂❤

  • @cesario04
    @cesario04 4 місяці тому

    isnt easier to use instead goldsrc

  • @appalling22
    @appalling22 4 місяці тому

    Did you try using this technique to make reflective surfaces? I think this is how duke nukem and Unreal did mirrors, IIRC

  • @hansdietrich83
    @hansdietrich83 4 місяці тому

    Small correction at 2:54 : affine is not a linear transformation, as it includes shifting the origin

  • @sinphy
    @sinphy 4 місяці тому

    the fan maps on the same level as the source maps where youll go "wait thats [engine]?"

  • @jollygrapefruit786
    @jollygrapefruit786 4 місяці тому

    Look who's back!

  • @TheUKNutter
    @TheUKNutter 4 місяці тому

    One video you could try and do is explain why you could have only 5 or so enemies in one screen.

  • @SleepyAdam
    @SleepyAdam 4 місяці тому

    As cool as RTX and games with weather effects and different times of day and a lot of the more simulative lighting effects of modern gaming are, there is an exactness and artistry to baked lightmaps that I really adore.

  • @Tigrou7777
    @Tigrou7777 4 місяці тому

    I was wondering how radiosity works in Q1 engine, so I started looking into game code, reading stuff there and there, ... until I found this video. Couldn't be happier.