- 19
- 1 072 673
Matt's Ramblings
United Kingdom
Приєднався 22 січ 2016
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
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
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?
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.
this animation/teaching is 50 years ahead of university course
"Purpose"? Where we're going, we don't need purpose!
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.
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.)
It is actually not hidden.
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.
I'm sorry but what does quantizing mean
This is excellent
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 ♥
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?
Could you explain how the objects are rendered?
I really hope this gets more views. You skilled visual explanation are amazing.
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!
I wonder if ericw tools can be made to to work in goldsrc, or mabye ACTUAL quake
What is your education?
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.
Carmack you're a genius
Watching this almost 20 years after I discovered Defrag is pretty nostalgic :>
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.
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)
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.
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!
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.
Great video.
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.
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.
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
Amazing video
An amazingly detailed, yet still easy to follow. You've explained it exceptionally well, thank you for this video!
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?
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!
you don't deserves a coffee, you deserves a hole building with a cafeteria inside.
I don't understand why you chose green as the solid color and gray as the empty color it's so counter-intuitive
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.
What a bug!
someone tell me why accelerate is not clipped to zero? why they can be negative number??( ・・?)
It's great to see a visual example of what BSP splitting looks like using 3D volumes instead of just 2D areas
So beautiful to see how neat and tidy this system is.
The animation is amazing! How did you make them? I mean splitting the level in chunks.
I seem to remember that the original Unreal engine had support for portals like this?
You assume that we know what an iteration is 🎉😂😂❤
isnt easier to use instead goldsrc
It's proprietary.
Did you try using this technique to make reflective surfaces? I think this is how duke nukem and Unreal did mirrors, IIRC
Small correction at 2:54 : affine is not a linear transformation, as it includes shifting the origin
the fan maps on the same level as the source maps where youll go "wait thats [engine]?"
Look who's back!
One video you could try and do is explain why you could have only 5 or so enemies in one screen.
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.
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.