YouSaid · the spoken record

John Carmack

lines on the record
363
first
2022-08-04
most recent
2022-08-04
sittings or episodes
1
sources
podcast

Every line below is reproduced as it was said and linked to the record it came from. Nothing here is summarised or generated. Directory · Search · Corrections

  1. Optimizer. I mean, I make things go fast, but I recognize there's a number of people that can write tighter assembly code, tighter SIMD code, or tighter CUDA code than I can write. My best strengths are a little bit more at the system level. I mean, I'm good at all of that, but You know, my big wins in a lot of ways from all the way from the early games through VR and the aerospace work that I'm doing or did and hopefully the AI work that I'm working on now is finding an angle on something that means you trade off something that you maybe think you need, but it turns out you don't need. And by making a sacrifice in one place, you can get big advantages in another place.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  2. And it was great. And we knew what we were doing in Quake removing those last things. There was some quirky things with a couple of the data types that didn't work right for overriding. And then the core thing about the programming model. And I was definitely going to hit all of those in Quake. But the graphics side of it was still, I knew what I wanted to do. And it was one of these hubris things where it's like, well, so far I've been able to kind of kick everything that I set out to go do. But Quake was definitely a little bit more than could be comfortably chewed at that point. But Michael was one of the strongest programmers and graphics programmers that I knew. And he was one of the people that I trusted to write assembly code better than I could. And there's a few people that I can point to about things like this where I'm a world-class.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  3. Used to be advertised as a virtual reality experience. That was the first wave of virtual reality was in the late 80s and early 90s. You had like the lawnmower man, you know, movie and you had time in Newsweek talking about the early VPL headsets. And of course, that cratered so hard that people didn't want to look at virtual reality for decades afterwards where it was just smoke and mirrors. It was not real in the sense that you could actually do something real and valuable with it. But still, we had that kind of common set of talking points and we were talking about what these games could become and how you'd like to see people building all of these creative things because we were seeing an explosion of work with Doom at that time where people were doing amazingly cool things. Like we saw cooler levels that we had built coming out of the user community and then people finding ways to change the characters in different ways.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  4. Talk about all that and kind of spin this tail. And it was some of the same conversations that we have today about the metaverse, about how you could have different areas linked together by portals and you could have user generated content and changing out all of these things.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  5. Language. And this was where I had hired Michael A. Brash away from Microsoft. And he had been one of my early inspirations where back in the soft disk days, the library of magazines that they had, some of my most treasured ones were Michael Abrash's articles in Dr. Dobbs' journal. And it was amazing after all of our success in Doom, we were able to kind of hit him up and say, hey, we'd like you to come work at ID Software. And he was in the senior technical role at Microsoft. And he was on track for, and this was right when Microsoft was starting to take off. And I did eventually, you know, convince him that what we were doing was going to be really amazing with Quake. It was going to be something nobody had seen before. It had these aspects of what we were talking about. We had metaverse talk back then. We had read Snow Crash and we knew about this. And Michael was big into the science fiction.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  6. What Quake was all about. It was this graphics technology that nobody had seen there. And it was a while before there were competitive things out there. And it went a long time internally, really not working, where we were even building levels where the game just was not at all shippable with large fractions of the world like disappearing, not being there. or being really slow in various parts of it. And it was this act of faith. It's like, I think I'm going to be able to fix this. I think I'm going to be able to make this work. And lots of stuff changed where the level designers would build something and then have to throw it away as something fundamental and the kind of graphics or level technology changed. And so there were two big things that contributed to making it possible at that time frame. Two new things. There was certainly hardcore optimized low-level assembly.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  7. So there was learning experiences about lots of that and like why when TCP is appropriate versus UDP and how if you do things in UDP you wind up reinventing TCP badly in almost all cases so you know there's there's good arguments for using both for different game different parts of the game process transitioning from level to level and all but the graphics were the showcase of what

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  8. World. And the idea and the fact that the code for the game was out there, you could say, I like the shotgun, but I want it to be more badass. You go in there and say, okay, now it does 200 points damage. And then you go around with a big grin on your face blowing up monsters all over the game. So yeah, it's not what I would do today going back with that language, but that was a big part of it. Learning about the networking stuff. It's interesting where I learn these things by reading books. So I would get a book on networking, find something, I read all about and learn, okay, packets, they can be out of order, lost, or duplicated. These are all the things that can theoretically happen to packets. So I wind up spending all this time thinking about how do we deal about all that. And it turns out, of course, in the real world, those are things that, yes, theoretically can happen with multiple routes, but they really aren't things that your 99.9999999999999999999999% of your packets have to deal with.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  9. JavaScript, a lot of crap, but Quake C was nothing to write home about there. But it allowed people to do magical things. As you get into programming, not because you love the BNF syntax of a language. It's because the language lets you do something that you cared about. And here's very much.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  10. Yeah, so there were a bunch of things on Quake where on the one hand the idea that I built my own programming language to implement the game in looking back and I try to tell people it's like every high level programmer sometime in their career goes through and they invent their own language. It just seems to be a thing that's pretty broadly done. People will be like, I'm going to go write a computer programming language. I don't regret having done it, but after that, I switched from Quake C, my quirky little pseudo object orienter, entity-oriented language there. Quake 2 went back to using DLLs with C, and then Quake 3, I implemented my own C interpreter or compiler, which was a much smarter thing to do that I should have done originally for Quake. But building my own language was an experience. I learned a lot from that. And then there was a generation of game programmers that learned programming with Quake-C, which I feel kind of bad about because, you know, I mean, we give.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  11. I mean, I was not a victim of cruelty and suffering. It's like I was an unhappy, somewhat petulant youth in my point where I'm not. Putting myself up with anybody else's suffering. But I was unhappy objectively. And the things that I did that very much characterized my childhood were I had books, comic books, Dungeons& Dragons, arcade games, video games. Like some of my fondest childhood memories are the convenience stores, the 7-Elevens and Quick Trips, because they had a spinner rack of comic books and they had a little side room with two or three video games, arcade games in it. And that was very much my happy place. If I get my comic books and if I could go to a library and, you know, go through the little 000 section where computer books were supposed to be and there are a few sad little books there, but still just being able to sit down and go through that. And I read, you know, I read a ridiculous number of books, both fiction and nonfiction.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  12. So, what was interesting when I was a teenager, I was probably on some level a troubled youth. I was unhappy most of my teenage years. I wanted to be on my own doing programming all the time. As soon as I was 18, 19, even though I was poor, I was doing exactly what I wanted and I was very happy. But high school was not a great time for me. And I had a conversation with like the school counselor and they're kind of running their script. It's like, okay, it's kind of a weird kid here. Let's carefully probe around. It's like, you know, do you ever think about ending it all? I'm like, no, of course not. Never, not at all. This is temporary. Things are going to be better. And that's always been kind of the case for me. And obviously that's not that way for everyone and other people do react differently.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  13. Largely immune to what really wrecks people. I mean, I've had plenty of time when I'm very unhappy and miserable about something, but it's never hit me like I believe it winds up hitting some other people. I've borne up well under whatever stresses have kind of fallen on me. And I've always coped best on that when all I need to do is usually just kind of bear down on my work. I pull myself out of whatever hole I might be slipping into by actually making progress. I mean, maybe if I was in a position where I was never able to make that progress, I could have slid down further, but I've always been in a place where, okay, a little bit more work. Maybe I'm in a tough spot here, but I always know if I just keep pushing eventually, I break through and I make progress. I feel good about what I'm doing. And that's been enough for me so far in my life.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  14. So I've never really had really dark black places. I mean, I can't necessarily put myself in anyone else's shoes, but I understand a lot of people have significant challenges with kind of their mental health and well-being. And I've been super stressed. I've been unhappy as a teenager in various ways. But I've never really gone to a very dark place. I just seem to be

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  15. Another Doom game, adding those new features in, it would have been huge. We would have learned all the same lessons, but faster. And it would have given six degree of freedom and Pentium class systems a little bit more time to get mainstream because we did cut out a lot of people with the hardware requirements for Quake.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  16. I would say that what would have happened is you would have had a doom looking but quake feeling game Eight months earlier, and then maybe six months after Quake actually shipped than there would have been the full running on a Pentium, sixth degree of freedom graphics engine type things there. So it's not that it wouldn't have been there. It would have been something amazingly cool earlier and then something even cooler somewhat later where I would much rather have gone and done two one year development efforts cycle them through. be a little more pragmatic about that rather than killing us ourselves on the whole quake development. But I would say it's obviously things worked out well in the end, but looking back and saying, how would I optimize and do things differently, that did seem to be a clear case where going ahead and we had enormous momentum on Doom, you know, we did Doom 2 as the kind of commercial boxed version after our shareware success with the original, but we could have just made

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  17. Multiplayer on the one the Quake C or would have been Doom C programming language there. So I would have split that into programming language and networking with the same Doom engine rather than forcing everybody to go towards the Quake engine, which really meant getting a Pentium. While it ran on a 486, it was not a great experience there. We could have made more people happier and gotten two games done in 50% more time.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  18. And the multiplayer was going to be playable over the internet. It was going to support a client server rather than peer-to-peer. So we had the possibility of supporting larger numbers of players in disparate locations. With this full flexibility of the programming overrides with full sixth degree of freedom, modeling, and viewing, and with this fancy new light mapped kind of surface caching side, it was a lot. And this was one of those things that if I could go back and tell younger me to do something differently, it would have been to split those innovations up into two phases, in two separate.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  19. Really remarkable new lighting model with the surface caching and things. That was one of those where it was starting to do some things that they weren't doing even on the very high-end systems. And it was going to be completely programmable in the modding standpoint where the thing that you couldn't do in Doom, you could replace almost all of the media, but you couldn't really change the game. There were still some people that were doing the hex editing of the executable, the de-hacked things where you could change a few things about rules and people made some early capture of the flag type things by hacking the executable, but it wasn't really set.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  20. So, Quake was kind of the first thing where I did have to kind of come face to face with my limitations, where it was the first thing where I really did kind of give it my all and still come up a little bit short in terms of what and when I wanted to get it done. And the company had some serious stresses through the whole project. We bit off a lot. So the things that we set out to do was it was going to be really a true 3D engine where it could do six degree of freedom. You could have all the viewpoints. You could model anything. It had

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  21. Felt like things would come at you. But again, you couldn't look up either. I am. You could only pitch it was four degrees of freedom rather than six degrees of freedom. You did not have the ability to tilt your head this way or pitch up and down.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  22. Like every month, probably I hear from somebody about, well, was Doom really a 3D game or something? And I give the point where characters had three coordinates. So you had like an X, Y, and Z. The Kacadami could be coming in very high and come, you know, and come down towards you. The walls had three coordinates on them. So in some sense, it's a 3D game engine, but it was not a fully general 3D game engine. You could not build a pyramid in Doom because you couldn't make a sloped wall, which was slightly different where in that previous Shadowcaster game, I could have vertexes and have a sloped floor there, but the changes that I made for Doom to get higher speed and a different set of flexibility traded away that ability, but you literally couldn't make that. You could not make different heights of passages, but you could not make a bridge over another area. You could not go over and above it.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  23. So, no, it's still Doom would usually be called a two and a half D game where it had three-dimensional points on it. And this is another one of these kind of pedantic things that people love to argue about, about what was the first 3D game. I still like.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  24. All the early games, you literally hacked the data files or the executable before while Doom was set up in this flexible way so that you could just say run the normal game with this added on on top and it would overlay just the things that you wanted to there.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  25. BSP trees. So there's not just a one true way of doing things. There are critical things about to make any of those games fast. You had to separate your drawing into, you drew vertical lines and you drew horizontal lines, just kind of changing exactly what you would draw with them. That was critical for the technologies at that time and all the games that were kind of like that wound up doing something similar. But there were still a bunch of other decisions that could be made. And we made good enough decisions on everything on Doom. We brought in multiplayer significantly and it was our first game that was designed to be modified by the user community where we had this whole setup of our WAD files and PWADs and things that people could build with tools that we released to them and they eventually rewrote to be better than what we released. But they could build things and you could add it to your game without destructively modifying it, which is what you had to do.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  26. Just finding a tool that can help me solve what I was doing. And I was using it in this very crude way in a two-dimensional fashion rather than the general 3D. The epsilon problems got much worse and Quake and three-dimensionals when things angle in every way. But eventually I did sort out how to do it reliably on Doom. There were still a few edge cases in Doom that were not absolutely perfect where they even got terminologies in the communities like when you got to something where it was messed up, it was a Hall of Mirrors effect because you'd sweep by and it wouldn't draw something there and you would just wind up with the leftover remnants as you flipped between the two pages. But BSP trees were important for it, but it's again worth noting that after we did Doom, our major competition came from Ken Silverman in his build engine, which was used for Duke Nukem 3D and some of the other games for 3D Realms. And he used a completely different technology, nothing to do with IM.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  27. Yeah, so it's combined with a bunch of other things, but it gives you that ordering. It's a clever way of doing things. And I remember I had learned this from one of my graphics Bible at the time, a book called Folian Van Damme. And again, it was a different world back there. There was a small integer number of books. And this book that was big fat college textbook that I had read through many times. I didn't understand everything in it. Some of it wasn't useful to me, but they had the little thing about finite orderings of you draw little T-shaped thing and you can say you can make a fixed ahead of time order from this and you can generalize this with the BSP trees. And I got a little bit more information about that. It was kind of fun later while I was working on Quake. I got to meet Bruce Naylor, who is one of the original researchers that developed those technologies for academic literature. And that was kind of fun. But I was very much.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  28. There were lots of challenges there about like, okay, they build this cool thing. And the way the BSP trees work is it basically takes the walls and it carves other walls by those walls in this clever way that you can then take all of these fragments and then you can for sure from any given point get an ordering of everything in the world. And you can say this goes in front of this, goes in front of this all the way back to the last thing. And that's super valuable for graphics where kind of a classic graphics algorithm would be painter's algorithm. You paint the furthest thing first and then the next thing and then the next thing and then it comes up and it's all perfect for you. That's slow because you don't want to have to have drawn everything like that. But you can also flip it around and draw the closest thing to you and then if you're clever about it, you can figure out what you need to draw that's visible beyond that.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  29. They're possible again. There are paths to doing it, but you can't fit them conveniently in any of the numbers. You need to start using big nums and different factor tracking and different things.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  30. So when you wind up taking a sloped line and you say, I'm going to intersect it with another sloped line, then you wind up with something that's not going to be on these nice grid boundaries with the Wolfenstein tile maps. All you've got is horizontal and vertical lines looking at it from above. And if you cut one of them, it's just obvious the other one gets cut exactly at that point. But when you have angled lines, you're doing a kind of a slope intercept problem and you wind up with rational numbers there where things that are not going to evenly land on an integer or even on any fixed point value that you've got. So everything winds up having to snap to some fixed point value. So the lines slightly change their angle. You wind up, if you cut something here, this one's going to bend a little this way and it's not going to be completely straight. And then you come down to all these questions of, well, this one is a point on an angleed line. You can't answer that in finite.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  31. Up on a bit of a pedestal where People think I'm a math wizard and I'm not. I really, everything that I did was really done with a solid high school math understanding, algebra 2, trigonometry. And that was what got me all the way through Doom and Quake and all of that of just understanding basics of matrices and knowing it well enough to do something with it.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  32. It really did not have much processing power. The pixels were stretched up hugely and it was pretty ugly when you looked at it. But in the end, it did come out fast enough to play and still be kind of fun from that. But that was where I started using BSP trees or binary space partitioning trees. It was one of those things I had to make it faster there. It was a stepping stone where it was reasonably easy to understand in the grid world of Wolfenstein, where it was all still 90 degree angles. BSP trees were, I eased myself into it with that. And it was a big success. Then when I came back to working on Doom, I had this new tool in my toolbox. It was going to be a lot harder with the arbitrary angles of Doom. This was where I really started grappling with epsilon problems and just, you know, up until that point, I hadn't really had to deal with the fact that I am so many numeric things. This almost felt like a betrayal to me where people had told me that I had mathematicians.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  33. Hard, and we were at a point where we could see some things that looked amazingly cool, but it wasn't really fast enough for the way I was doing it for this flexibility. It was no longer. I couldn't just ray cast into it. And I had these very complex sets of lines and simple little worlds were okay. But the cool things that we wanted to do just weren't quite fast enough. And I wound up taking a break at that point. And I did the port. I did two ports of our games Wolfenstein to the Super Nintendo. It was a crazy, difficult thing to do, which was an even slower processor. It was like a couple megahertz processor. And it had been this whole thing where we had farmed out the work and it wasn't going well. And I took it back over and trying to make it go fast on there where.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  34. And it had slowed down enough. It was not fast enough to do our type of action things so that they had the screen crop down a little bit. So you couldn't go the full screen width like we would try to do in Wolfenstein. But I learned a lot. I got the floors and ceilings and lightings and it looked great. They were great artists up there and it was an inspiration for us to look at some of that stuff. But I had learned enough from that that I had the plan for. I knew faster ways to do the lighting and shadowing and I wanted to do this freeform geometry. I wanted to break out of this tile-based 90 degree world limitations. So we had, that was when we got our next stations and we were working with these higher powered systems. And we built an editor that let us draw kind of arbitrary line segments. And I was working hard to try to make something that could render this fast enough. I was pushing myself pretty.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  35. Yeah, so jump around a little bit on the story path there. So while the team was working on Spirit of Destiny for Wolfenstein, I had met another development team, Raven Software, while we were in Wisconsin. And they were doing, they had RPG background. And I still kind of loved that. And I offered to do a game engine for them to let them do a 3D rendered RPG instead of the, like most RPG games were kind of hand-drawn. They made it look kind of 3D, but it was done just all with artist work rather than a real engine. After Wolfenstein, this was still a tile-based world, but I added floors and ceilings and some lighting and the ability to have some sloped floors in different areas. That was my intermediate step for a game called Shadowcaster.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  36. So the graphics fidelity was a necessary part because the block limitations in Wolfenstein, what we had right there was not enough, the full scale blocks, although Minecraft really did show that perhaps blocks stacked in 3D and at one quarter the scale of that or one-eighth in volume is then sufficient to have all of that. But the wall-sized blocks that we had in Wolfenstein was too much of a creative limitation. We licensed the technology to a few other teams. None of them made too much of a dent with that. It just wasn't enough creative ability, but a little bit more whether it was the variable floors and ceilings and arbitrary angles in Doom or the smaller fossil blocks in Minecraft is then enough to open it up to just worlds and worlds of new capabilities.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  37. Yeah, where there were thousands of Doom levels created and some of them still have something new and interesting to say to the world about it.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  38. Where it's like, you know, we have the kind of computational universality on a lot of things and how different subjects work. But yeah, there's things where a box can be too small, but above a certain point, you kind of are at the point where you really have almost unbounded creative ability there.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  39. So, the path that we went after Wolfenstein got out and we were on this crazy arc where Keen 1 through 3 more success than we thought, Keen four through six, even more success. Wolfenstein, even more success. So we were on this crazy trajectory for things. So actually our first box commercial project was a commander Keen game. But then Wolfenstein was going to have a game called Spear of Destiny, which was a commercial version, 60 new levels. So the rest of the team took the game engine pretty much as it was and started working on that. We got new monsters, but it's basically reskins of the things there.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  40. You can't predict what it's going to be, but that idea of like, I called out that compiled shaders in the forward that I wrote for that, the game engine black book as, you know, this is, it's kind of an endpoint of unrolling code, but that's one of those things that thinking about that and having that in your mind. And I'm sure there are some programmers that hear about that, think about it a little bit. It's kind of the mind-blown moment. It's like, oh, you can just turn all of that data into code. And nowadays, you know, you have instruction cache issues and that's not necessarily the best idea, but there are different, it's an idea that has power and has probably relevance in some other areas. Maybe it's in a hardware point of view that there's a way you approach building hardware that has that same. You don't even have to think about iterating. You just bake everything all the way into it in one place.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  41. World needs right now. And I do think that's actually one of the very core things with human cognition and brain-like functioning is finding these ways about you've got your brain is kind of everything everywhere all at once. It is just a set of all of this stuff that is just fetched back by these queries that go into it, and they can just be slightly above the noise floor with random noise in your neurons and synapses that are affecting exactly what gets pulled up.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  42. As far as building out techniques, so much of the brain is about the associative context. When you learn something, it's in the context of something else. And you can have faint, tiny little hints of things. And I do think there are some deep things around sparse distributed memories and boosting that's like if you can just be slightly above the noise floor of having some hint of something, you can have things refined into pulling the memory back up. So having a programmer and having a toolbox of like all of these things that things that I did in all of these previous lives of programming tasks that still matters to me about how I'm able to pull up some of these things. Like in that case, it was something I did on the Apple II then being relevant for the PC. And I have still cases when I would work on mobile development and be like, okay, I did something like this back in the Doom days, but now it's a different environment. But I still had that tie. I can bring it in and I can transform it into what the...

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  43. Says, like, get this bite from here, stored here, get this byte store this byte. If you've got the memory space, you could say, I'm going to write the program that does nothing but draw this shape. It's going to be like I'm going to load the immediate value 25, you know, which is some bit pattern, and then I'm going to store that at this location, rather than loading something from memory that involved indexing registers and this other slow stuff, you could go ahead and say, no, I'm going to hard code the exact values of all of the image right into the program. Now, this was always a horrible trade-off there, but you didn't have much memory and you didn't have much speed. But if you had something that you wanted to go really fast, you could turn it into a program. And that was, you know, knowing about that technique is what made me think about some of these unwinding it for the PC where people that didn't come from that background were less likely to think about that.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  44. So this again comes back to I can find the antecedents for things like this. So back in the Apple II days, the graphics were essentially single bits at a time. And if you wanted to make your little spaceship, if you wanted to make it smoothly go across the world, if you just took the image and you drew it out at the next location, you would move by seven pixels at a time. So it would go chunk chunk chunk. If you wanted to make it move smoothly, you actually had to make seven versions of the ship that were pre-shifted. You could write a program that would shift it dynamically, but on a 1 MHz processor, that's not going anywhere fast. So if you wanted to do a smooth moving fast action game, you made separate versions of each of these sprites. Now, there were a few more tricks you could pull that if it still wasn't fast enough, you could make a compiled shape where instead of this program that normally copies an image.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  45. And that had the beneficial aspect of just when you needed the performance most, when things are covering the screen, it was giving you the most acceleration for that.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  46. So, the fastest possible way to draw pixels at that time was to, um, Instead of saying, I've got a general purpose version that can handle any scale. I made, I used a program to make essentially a hundred or more separate little programs that was optimized for I will take an image and I will draw it 12 pixels tall. I'll take an image, I'll draw it 14 pixels tall up by every two pixels even for that. So you would have the most optimized code so that in the normal case where most of the world is fairly large, like the pixels are big, you know, we did not have a lot of memory. So in most cases, that meant that you would load a pixel color and then you would store it multiple times. So that was faster than even copying an image in a normal conventional case because most of the time the image is expanded. So instead of doing one read, one write for a simple copy, you might be doing one read and three or four writes as it got really big.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  47. Ray casting, and then the other kind of key aspect was what I called compiled scalars, where the idea of you saw this in the earlier classic arcade games like Space Harrier and stuff where you would take a picture, which is normally drawn directly on the screen. And then if you have the ability to make it bigger or smaller, big chunky pixels are fizzily small drop sampled pixels. That's the fundamental aspect of what our characters were doing in these 3D games. You would have, it's just like you might have drawn a tiny little character, but now we can make them really big and make them really small and move it around. That was the limited kind of 3D that we had for characters to make them turn, there were literally eight different views of them. You didn't actually have a 3D model that would rotate. You just had these cardboard cutouts, but that was good enough for that startled fight reaction.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  48. Yeah, you get. I follow a little bit of something like Stephen Wolfram's work on interconnected network information states of that. And it's beyond what I can have an informed opinion on, but it's interesting that people are considering things like that and have things that can back it up. Yeah, there's whole different sets of interesting stuff there.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  49. One room that was nothing but walls at the far space, it would go pretty slow because it would be stepping across 80 tile tests or something along the way.

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source

  50. So, you start off and you got your screen, which is 320 pixels across at the time. If you haven't sized down the window for greater speed. And at every pixel, there's going to be an angle from you've got your position in the world, and you're going to just run along that angle and keep going until you hit a block. up to 320 times across there, it's going to throw cast array out into the world from wherever your origin is until it runs into a wall, and then it can figure out exactly where on the wall it hits. The performance challenge of that is as it's going out, every block it's crossing, it checks, is this a solid wall? So that means that in like the early Wolfenstein levels, you're in a small jail cell going out into a small hallway, it's super efficient for that because you're only stepping across three or four blocks. But then if somebody makes a room that covers our maps, we're limited to 64 by 64 blocks. If you made...

    2022-08-04 · Lex Fridman Podcast · #309 – John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets · IDENTIFIED FROM THE TRANSCRIPT · source