QuakeCon Official
AI-assisted summary of QuakeCon 2011 - John Carmack Keynote — original source. Check the original for full context.
Source published:
Key ideas
- Rage spent six years in development, requiring complex four-tier caching and on-the-fly transcoding across multi-threaded pipelines to stream non-repeating MegaTexture assets at a locked 60 FPS on consoles. (0:30)
- Carmack strongly advocates integrating static analysis tools like Microsoft's /analyze into daily build pipelines with a zero-tolerance fatal warning policy, citing a statistical failure rate across multi-million-line codebases. (58:01)
- To mitigate runtime scripting bugs, id Software developed SuperScript for Doom 4—a fiber-based, native C++ dialect enforcing strict compile-time type safety over dynamic scripting languages. (69:16)
- ZeniMax Media officially approved releasing the complete id Tech 4 (Doom 3) source code following the commercial release of Rage, continuing id's long-standing open-source tradition. (83:53)
Detailed notes
## Background Published on YouTube by QuakeCon Official on August 5, 2011, this video captures id Software co-founder and technical director John Carmack delivering his traditional keynote address. In accordance with event tradition, Carmack kicks off the convention with an extensive presentation detailing the studio's recent technological developments and future plans.
## TL;DR Carmack delivers an exhaustive technical postmortem on the six-year development of Rage and the id Tech 5 engine, detailing the architectural compromises of virtual texturing, 60 FPS console performance targets, and multi-tiered storage caching. He dives deeply into software engineering discipline, advocating for static code analysis, safer subsets of C++, and replacing embedded scripting languages with SuperScript for Doom 4. Reflecting on studio growth and industry shifts, he emphasizes the enduring educational value of tight hardware constraints before announcing the upcoming open-source release of the complete id Tech 4 (Doom 3) codebase.
## Atmosphere & style The presentation carries the hallmarks of an authentic, unscripted masterclass, feeling less like a corporate keynote and more like an intensely focused engineering postmortem delivered straight from memory. Carmack speaks with rapid, unfiltered candor, transparently breaking down production missteps, memory bottlenecks, and compiler behaviors without relying on polished marketing rhetoric or visual slides. The atmosphere is earnest, intellectually rigorous, and grounded in a quiet pragmatism that balances self-critique over elongated dev cycles with an unmistakable reverence for foundational systems programming.
## Bulletin - [00:30](https://www.youtube.com/watch?v=4zgYG-_ha28&t=30s) Rage spent six years in development, requiring complex four-tier caching and on-the-fly transcoding across multi-threaded pipelines to stream non-repeating MegaTexture assets at a locked 60 FPS on consoles. - [58:01](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3481s) Carmack strongly advocates integrating static analysis tools like Microsoft's /analyze into daily build pipelines with a zero-tolerance fatal warning policy, citing a statistical failure rate across multi-million-line codebases. - [01:09:16](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4156s) To mitigate runtime scripting bugs, id Software developed SuperScript for Doom 4—a fiber-based, native C++ dialect enforcing strict compile-time type safety over dynamic scripting languages. - [01:23:53](https://www.youtube.com/watch?v=4zgYG-_ha28&t=5033s) ZeniMax Media officially approved releasing the complete id Tech 4 (Doom 3) source code following the commercial release of Rage, continuing id's long-standing open-source tradition.
## Key takeaways - [06:44](https://www.youtube.com/watch?v=4zgYG-_ha28&t=404s) Targeting a locked 60 FPS on Xbox 360 and PlayStation 3 forced strict trade-offs, including abandoning dynamic lighting and accepting visible texture streaming delays. - [11:13](https://www.youtube.com/watch?v=4zgYG-_ha28&t=673s) Transitioning from continuous heightmap terrain to modular, stamped geometry caused GPU page cache fragmentation and required custom multi-tier physical caches. - [19:20](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1160s) Console hardware limitations, particularly slow optical media read speeds and split memory architectures, severely bottlenecked high-resolution texture streaming. - [25:17](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1517s) Despite having ten times the compute power of consoles, high-end PCs suffered from driver overhead and API abstractions that hindered consistent 60 FPS performance. - [31:12](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1872s) Carmack lobbied GPU vendors to support adaptive V-Sync and negative swap intervals to tear immediately on missed render deadlines instead of stuttering down to 30 FPS. - [36:35](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2195s) Real-time rendering graphics have passed the knee of the curve, yielding diminishing visual improvements for exponential increases in production pipeline effort. - [48:11](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2891s) Rage source assets exceeded 64 gigapixels and required heavy JPEG XR/HD Photo compression, which sometimes leaves surfaces soft under point-blank examination. - [52:20](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3140s) Aggressive post-processing effects and tone mapping often degrade fine, compressed texture details that engineering teams worked hard to preserve. - [01:02:43](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3763s) Static code analysis tools like Coverity and Microsoft's /analyze surfaced hundreds of latent logic bugs, justifying mandatory zero-tolerance compiler warning rules. - [01:06:54](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4014s) Allowing non-programmers to write dynamic scripts introduces major stability and performance risks, which id Software countered by rewriting UI code into native C++. - [01:09:16](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4156s) Carmack advocates restricting 95% of game engineering to a memory-safe, Java-like C++ subset, reserving raw unconstrained C++ strictly for performance-critical inner loops. - [01:18:53](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4733s) Developing games under tight, archaic hardware constraints remains an invaluable training discipline that modern high-level abstraction frameworks do not teach. - [01:25:18](https://www.youtube.com/watch?v=4zgYG-_ha28&t=5118s) The id Tech 4 (Doom 3) source code will be published as open-source once Rage ships, and Carmack challenged the wider industry to open-source seminal classic software engines.
## Detailed walkthrough ### [00:30](https://www.youtube.com/watch?v=4zgYG-_ha28&t=30s) Debuting *Rage* After Six Years of Ambitious Development
John Carmack takes the stage at QuakeCon 2011 expressing genuine relief and excitement that after years of merely discussing ideas, *Rage* is finally playable on the show floor. Having spent six years developing the title, Carmack admits to hanging around the attendee demo stations with a wide grin, watching people play. For id Software, *Rage* represented a calculated attempt to break out of its own historical archetype. Carmack reflects that the studio had become almost a stereotype of the genre it invented: run-and-gun first-person shooters defined by monsters jumping out of tight corridors.
While that classic formula built id’s legacy, the team wanted *Rage* to tackle creative and technical challenges they had never attempted before. Carmack acknowledges that with the benefit of hindsight, six years was an excruciatingly long cycle, and the studio might have questioned whether tackling so many novel systems at once was prudent. Yet, he maintains that fighting through those difficult technical battles ultimately produced a superior, remarkably polished game that achieved everything id originally envisioned.
> “In hindsight, knowing that it took six years, we would look back and say maybe we shouldn't have been quite as ambitious, maybe we should have, you know, done a few more of the things that we already had plenty of experience doing, but in the end everybody gets the benefit of, you know, we picked hard battles, we fought through all of them, and in the end I think we did a really damn good job on it.” — John Carmack
- *Rage* spent six full years in active development. - id Software explicitly sought to transcend its established "run-and-gun corridor monster shooter" reputation. - The studio provided several dozen demo stations on the QuakeCon show floor for attendees to experience the game directly.
---
[01:49](https://www.youtube.com/watch?v=4zgYG-_ha28&t=109s) Game Pacing and Moving Beyond Pure Deathmatch
At QuakeCon, attendees had access to developer menus letting them jump into any standalone level and blast away, but Carmack emphasizes that *Rage* cannot be fully understood from a brief ten-minute slice. At a recent press event where journalists were given a continuous three-hour hands-on session, players only began breaking into the real meat of the game right around the three-hour mark. That milestone is where the game world truly expands, introducing open environments, vehicles, and varied side activities. Carmack found it gratifying when press members repeatedly pleaded for extra minutes rather than relinquishing their controllers, and he jokingly encourages QuakeCon attendees to tag-team and "camp" demo stations to see the vast content packed onto the second DVD.
Carmack considers *Rage* the most enjoyable title id Software has ever produced, contrasting its dynamic pacing with traditional arena deathmatches. Though an avid supporter of competitive multiplayer, Carmack notes he was never the type of gamer who could spend eight continuous hours deathmatching. *Rage* intentionally modulates its intensity, balancing moments of sudden, abject terror in combat with quieter interludes spent exploring the wasteland, conversing with NPCs in towns, or taking on jobs. While id is not attempting to turn the game into a sprawling RPG like *The Elder Scrolls V: Skyrim*, Carmack notes they learned how to incorporate narrative and world-building layers that enrich the core action without undermining the fast, kinetic combat id fans expect.
> “It really is probably the most enjoyable id game from my perspective that we've ever made.” — John Carmack
- A recent press junket allotted three continuous hours of gameplay, which Carmack identified as the threshold where the open world truly unfolds. - The full experience spans two DVDs on console, with later trailers showcasing content largely drawn from the second disc. - Carmack clarifies that while id added dialogue and hub exploration, they are not positioning the game as a direct competitor to dedicated open-world RPGs like *Skyrim*.
---
[04:30](https://www.youtube.com/watch?v=4zgYG-_ha28&t=270s) Technical Director Postmortems and the "Moving Painting"
Reflecting on his role as technical director, Carmack cautions himself against turning his talk into a premature postmortem where he hyper-focuses on engineering flaws and future optimizations. While engineers naturally fixate on what could run smoother, Carmack is delighted that the final shipping product realized id's creative ambition. For Carmack, the greatest reward of building an engine platform is being stunned by what the artists and world designers achieve. He admits that he lacks the visual imagination of the art team, meaning that exploring the fully populated environments is often as startling and delightful for him as it is for any first-time player.
Journalists have described *Rage* as a "moving painting," a moniker Carmack finds particularly apt. Unlike conventional games that construct a handful of immaculate "hero" rooms specifically tailored for back-of-the-box screenshots, the art team covered terabytes of unique virtual geometry with handcrafted detail using id's "stamping" workflow. Players can stop almost anywhere across the wasteland, look in any direction, and find richly textured, non-repeating surfaces that reward visual inspection.
```mermaid flowchart LR accTitle: id Tech 5 Production Pipeline accDescr: Diagram illustrating how the underlying engine architecture enables artists to produce unique painted world data. subgraph Engine ["Engine Core"] A["id Tech 5 Architecture"] B["MegaTexture Engine (~10% of codebase)"] A --> B end subgraph Art ["Art & Design Pipeline"] C["Terabytes of Unique Asset Data"] D["Artist Stamping Workflow"] C --> D end subgraph Output ["User Experience"] E["'Moving Painting' Visual Aesthetic"] F["Solid 60 FPS Console Performance"] end B --> E D --> E B --> F ```
> “And from my point of view, the game has so many things in it that I certainly didn't imagine when we started off, or even early, you know, even three years ago, and that's been—that's always the most rewarding part as a technical director for me is I have an idea of what the platform that we're creating will let people do, but when the artists and the designers get in and they build some of these just magnificent things, it's in many ways as much of a shock to me as it is to everybody else playing the game.” — John Carmack
- Carmack self-identifies his engineering tendency to immediately dissect finished software into things that could be improved. - The artwork in *Rage* spans terabytes of uncompressed source data, detailed by environment artists and "stampers" across every sector of the map. - The visual style was characterized by game journalists as a "moving painting."
---
[06:44](https://www.youtube.com/watch?v=4zgYG-_ha28&t=404s) The Reality of MegaTexture: Trade-offs, 60 FPS, and Streaming Bottlenecks
Carmack turns to MegaTexture, the signature technology powering *Rage*’s unique look. He points out that while the press and public fixate on MegaTexture, the system constitutes only roughly 10% of the game’s code and about 25% of the overall engineering effort within an id Tech 5 codebase numbering millions of lines. However, those tens of thousands of lines are "dismayingly complicated." MegaTexture was the technical compromise that enabled a 60-frame-per-second target on Xbox 360 and PlayStation 3 hardware alongside an unconstrained, painterly art style, but it required substantial engineering sacrifices and came with inescapable physical trade-offs.
Carmack explains that the live demos at QuakeCon run on PC or Xbox 360 units installed directly to local hard drives, representing optimal streaming performance. The absolute worst-case scenario occurs on an Xbox 360 reading assets purely from an optical DVD drive without a hard drive cache. While the engine executes clever scheduling, linear read batching, and look-ahead tracking to fetch the correct texture mip-levels, physical optical drive seeks remain a hard bottleneck. A bad-case read can take up to 150 milliseconds for a single chunk, and because a single frame's scene can comprise up to a thousand unique texture tiles, streaming in every high-resolution detail from a cold optical state can take as long as 15 seconds. Carmack anticipates some criticism over texture pop-in, noting that players who deliberately spin around backwards at high controller sensitivity will momentarily catch the engine resolving lower-resolution, blurry mip-levels into focus.
> “The bottom line is still that you want a new piece of texture data on there and it can take, you know, 150 milliseconds in a bad case or something to go pull that in, and the screen might be made up of, you know, a thousand different little pieces, so in the worst case it can take 15 seconds for every last little bit of detail to come in, and I know we're going to get dinged some by that.” — John Carmack
- MegaTexture accounts for approximately 10% of the engine's code footprint and roughly 25% of the total engineering effort. - The entire id Tech 5 codebase spans millions of lines of code, with tens of thousands dedicated directly to the MegaTexture streaming and transcoding pipeline. - Target performance across contemporary console platforms (Xbox 360 and PS3) is a locked 60 frames per second. - Optical drive latency on an uninstalled Xbox 360 disc read can hit 150 milliseconds per fetch, requiring up to 15 seconds in pathological scenarios for a full scene of up to 1,000 sub-tiles to fully resolve from blur to maximum resolution.
[09:26](https://www.youtube.com/watch?v=4zgYG-_ha28&t=566s) The Engineering Tradeoffs of Virtual Texturing
Reflecting on his daily development workflow, John Carmack describes the constant tug-of-war between engineering perfectionism and practical gameplay. Sitting at his desk with Visual Studio open on one monitor and the game running on the other, twiddling the gamepad controller, he routinely spots flaws, wondering how to optimize scheduling, feed in texture hints, or improve visual fidelity. He notes that while an engineer can easily become depressed obsessing over how much better things could be built, seeing QA testers and colleagues genuinely enjoying the game brings immediate perspective. Delivering *RAGE* required deliberate engineering compromises: accepting a visible degree of texture streaming latency in order to render an expansive, unique, painterly world, while relinquishing completely general-purpose dynamic lighting.
Briefly interrupted by a glitch in the stage microphone, Carmack shifts focus to the underlying engine architecture. The virtual texturing pipeline represents the most intricate, tightly coupled, and highly optimized code within id Tech 5. Rather than handling individual assets as conventional discrete surfaces—such as an arbitrary wall map measuring 2,000 by 1,000 pixels or a coffee cup texture at 128 by 128—the engine slices every surface into uniform 128 by 128 texel blocks known as pages, managed through up to four distinct levels of data locality.
Carmack explains the philosophical tension every programmer faces when balancing technical constraints against artistic ambitions: > “Like any good engineer I can almost depress myself about how much more we can do to make things better in the future but then when I look at people playing the game just even in the office running around doing the the testing duties or whatever you know I'm back to okay that looks great I'm really thrilled to see it running that good see it behaving that way and it's you know it's always a set of tradeoffs in engineering where we you know we made these conscious decisions that we would live with some degree of textures coming in to give us this this painterly world we would give up on completely general purpose dynamic lighting.”
[11:13](https://www.youtube.com/watch?v=4zgYG-_ha28&t=673s) The Evolution from Splash Damage to Modular Art Design
The foundations of id Tech 5’s virtual texturing originated five years prior, when Carmack first implemented the concept for Splash Damage on *Enemy Territory: Quake Wars* before generalizing it for the early production of *RAGE*. Initial math suggested that the current hardware generation could easily manage the load. By setting up a physical texture cache of 4,096 by 4,096 pixels on the GPU, the engine could store approximately one thousand 128 by 128 pages. Because a typical screen displays roughly one million pixels, a sixteen-million-pixel texture pool offered a generous 16x margin, which proved completely stable in early demonstrations like the confined Dusty 8 racetrack demo.
```mermaid flowchart TD accTitle: Megatexture Content Design Approaches accDescr: Comparison of contiguous terrain meshes versus modular geometry and their impact on GPU page cache efficiency.
subgraph Ideal["Ideal Architecture: Contiguous Sheets"] A["Continuous Mesh / Facade"] --> B["Single Texture Island"] B --> C["Dense 128x128 Page Packing"] C --> D["Fits easily in 4096 x 4096 Cache"] end
subgraph Modular["Production Reality: Modular Kit"] E["Lego-style Prefabs & Props"] --> F["Thousands of Disconnected Fragments"] F --> G["Underfilled Pages & False Sharing"] G --> H["4096 x 4096 Exhaustion / Trashing"] end ```
The technology hit a major hurdle when the art team changed its production pipeline. Rather than constructing expansive, continuous terrain meshes or deformed architectural facades—termed "texture islands," which map efficiently into contiguous pages—artists transitioned to assembling scenes out of thousands of modular, Lego-style structural prefabs. When the design team approached Carmack asking for concrete polygon budgets and texture limits, Carmack gave a permissive answer that his colleagues Tim Willits and Matt Hooper continued to tease him about: > “I hemmed and hawed and I really made a really bad call and I said well you know I want to be pushed a little bit so go you know go make really cool stuff and we'll figure it out and I you know and and in the end we we pretty much did but there is a whole lot of hard work buried in making all of that stuff actually work.”
- Early virtual texturing ran with high efficiency because large, smooth meshes map into continuous texture space with minimal overhead. - Modular construction introduced thousands of disconnected sub-textures, complicating page packing and inflating the total number of required cache pages. - Providing fixed engineering guidelines to designers proved difficult due to fluid tradeoffs between triangle count, overdraw, particle effects, and dynamic lights.
[14:19](https://www.youtube.com/watch?v=4zgYG-_ha28&t=859s) Console Bottlenecks and Cache Architecture Fracturing
The structural shift from continuous landscapes to modular set pieces revealed a severe limitation of the 128 by 128 page format. In scenes featuring intricate geometry—such as an iron railing that spans only a single pixel on the screen—the virtual texturing engine must still allocate an entire 128 by 128 page to texture that sliver. Packing disparate elements together introduces false sharing and degrades anisotropic filtering quality. Consequently, the original 4K by 4K page cache became inadequate. On the PC, developers could easily expand the pool to 8K by 8K textures, as PC graphics cards possessed ample VRAM. Console platforms, however, could not afford such a brute-force approach without sacrificing mip levels and cutting visual fidelity in half.
To bring console performance up to par with the PC build, id Software faced sharp hardware asymmetries between the Xbox 360 and PlayStation 3:
| Platform | Max Texture Size | Memory Architecture Advantage / Limitation | Virtual Texturing Strategy | |:--- |:--- |:--- |:--- | | **PC** | Arbitrary / 8192×8192+ | Abundant VRAM; abstracted driver layer limits low-level memory remapping | Allocates native 8K×8K physical caches; retains full debug console access | | **Xbox 360** | 8192×8192 | Unified RAM enables physical memory aliasing / page remapping, but total budget is tight | Could theoretically allocate 8K×8K address space while overlaying unused memory regions | | **PlayStation 3** | 4096×4096 | Split memory pools; RSX GPU lacks native 8K texture allocation support entirely | Evaluated cube maps (too complex to address) and 3D volume textures (drastic fill-rate penalty) |
Because the PS3 could not allocate an 8K by 8K texture buffer, Carmack evaluated alternatives such as packing pages across the six faces of a 2K by 2K cube map (which imposed complex shader address calculations) or using sliced 3D volume textures (which caused severe performance degradation). Ultimately, the team had to abandon their once-unified, elegant design in favor of an intricate arrangement consisting of three independent physical page caches of varying dimensions and depth complexities, separate DXT-compressed streams, and dedicated pipelines for dynamic virtual materials (VMs).
Carmack laments the closed nature of modern console platforms compared to the open PC environment: > “It pains me a lot that the that Microsoft and Sony completely disallow the ability to plug in a keyboard and you know and tweak with things it's it's even a pain for us in development that our full retail builds we can't bring down and play with debug tools and I think that's that's unfortunate into to not any particularly good benefit.”
[18:25](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1105s) The Necessity of Multi-Level Caching Over Raw Streaming
While the earliest virtual texturing prototype took only a few days to get functional, and a fully navigating level running without upfront load times was achieved in a matter of months, refining the system into a shippable commercial product took years of iteration. The core challenge lies in data bandwidth: if the engine attempted to stream individual 128 by 128 pages directly from a DVD-ROM or an optical drive, panning the camera would trigger severe streaming stalls, requiring massive batches of texture pages to be pulled synchronously from disk every time the player turned their view.
Carmack stresses the gap between a promising prototype and an engineered solution ready for retail hardware: > “So all of this complexity comes in when you go from kind of the initial cool elegant demo of something to getting it through delivering what your artists and designers want and getting it out onto a shipping project.”
- Direct reads from high-latency media like optical drives or standard hard disk drives cannot keep pace with 60 Hz rotational movement without a multi-tiered locality caching architecture. - On PC systems equipped with large quantities of system RAM, virtual texturing disguises streaming delays once assets have been viewed once and stored locally in memory.
[19:20](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1160s) Console Memory Constraints and Streaming the Wasteland
Managing memory on consoles proved far more grueling than on the PC. While the PC could lean on standard operating system buffer caches, console development required id Software to build and manage every tier of memory manually. The team implemented an internal second-layer cache designed to devour virtually all leftover console memory, serving as a rapid staging area for both texture streaming and audio data. In interior instance maps, assets fit comfortably in memory; once an asset was seen, it stayed resident and could be retrieved near-instantaneously through the transcode pipeline. However, Rage’s sprawling outdoor Wasteland environment pushed console hardware to its absolute limit, leaving far less stream file cache than Carmack wanted.
The architectural differences between the consoles created unique headaches. The PlayStation 3 proved notably tighter on memory than the Xbox 360 due to its split memory architecture, which divided its memory pool down the middle into dedicated CPU and graphics segments rather than providing a unified pool. While id nearly saturated the high-memory limits anyway—making the split itself manageable—the memory footprint of the PS3’s operating system consumed valuable megabytes that Carmack longed to reclaim for the stream file cache.
Relying directly on physical media introduced devastating latency, turning software execution into a mechanical waiting game. Blu-ray discs suffered from especially brutal seek latencies compared to standard DVDs or hard drives. As Carmack observed:
> “It’s the epitome of the physical action going on in here where so much of this is just ethereal software shoving things around, but you listen to that Blu-ray turning around as it seeks around pulling everything in like it'll be nice when we don't have that little physical element that we have to be scheduling for and working around.”
- Interior instance maps had sufficient memory headroom to keep textures resident, whereas the outdoor Wasteland severely strained console limits. - The Xbox 360 provided unified memory, while the PS3 enforced a strict split between CPU and GPU memory spaces alongside a heavier operating system memory footprint. - Optical drive mechanical seek times on DVD and Blu-ray represented the primary latency bottleneck when loading un-cached streaming assets.
---
[21:26](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1286s) Multi-Tiered Caching and Storage Realities
To prevent catastrophic stalls from optical disc seeks, id engineered an intermediate hard drive backing cache. When a player looked at a surface for the first time, texture data took the long mechanical trip from the DVD or Blu-ray and was immediately written to a high-speed scratch area on the local hard drive. On subsequent viewings, the engine pulled the asset directly from the hard drive rather than re-seeking the optical disc. This design established a strict four-level hierarchy of data locality: the physical optical media, the hard drive backing cache, the in-memory stream file cache, and finally the GPU-bound textures displayed on screen.
```mermaid flowchart TD accTitle: Rage Texture Streaming Hierarchy accDescr: The four-stage streaming pipeline moving data from physical optical media down to the GPU texture on screen.
subgraph Storage["Physical Storage"] Optical["Optical Media<br/>(DVD / Blu-ray)"] HDDCache["Hard Drive Backing Cache<br/>(Local Scratch Area)"] end
subgraph MemoryPipeline["Memory & Processing"] StreamCache["In-Memory Stream File Cache"] Transcode["Asynchronous Transcoder<br/>(HD Photo to DXT)"] GPUTexture["GPU Resident Texture / Framebuffer"] end
Optical -->|"Initial read / miss"| HDDCache Optical -->|"Initial load"| StreamCache HDDCache -->|"Subsequent fast fetch"| StreamCache StreamCache --> Transcode Transcode --> GPUTexture ```
Platform installation policies added further friction. On the PS3, id could install select critical data directly to the hard drive, prompting ongoing negotiations between Bethesda and Sony to secure a few additional gigabytes for extra page files to smooth out the player experience. Conversely, the Xbox 360 offered no option for partial installs, requiring an all-or-nothing installation of roughly 21 to 22 gigabytes. Carmack strongly recommended the full Xbox 360 install for anyone with sufficient drive space, noting that eliminating optical seeks made an immense visual difference.
Looking back, Carmack reflected on architectural alternatives that could have mitigated streaming pop-in entirely had development time permitted:
> “The better solution for that would have been to split our page files and say okay all of the low detail stuff goes onto the hard drive cache and then all the high detail stuff stays on the Blu-ray possibly backed by the temporary hard drive cache because then you would never have the you know the grotesquely ugly cases where you just like oh you know what is that blurry mess for a quarter second that you can get when it's coming straight from optical media.”
- The multi-tiered caching pipeline reduced latency across four discrete layers: optical media, local hard drive backing cache, in-memory stream file cache, and resident GPU textures. - Xbox 360 installations required a mandatory 21–22 GB all-or-nothing footprint, while the PS3 supported partial hard drive installs. - Bethesda actively lobbied Sony during late production to grant additional hard drive allocation for Rage's streaming page files.
---
[23:26](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1406s) The Asynchronous Transcode Pipeline and Image Compression
The streaming infrastructure represented the most intricate and fragile code inside id Tech 5, juggling multiple dedicated asynchronous worker threads. One thread managed reads from the optical drive, another handled reads from the hard drive, background threads analyzed the GPU feedback buffer to determine texture page visibility, and a pool of worker threads executed real-time transcoding. Carmack noted that if storage capacity were infinite, id would have stored texture pages uncompressed so they could be streamed via unbuffered direct I/O straight into GPU memory. However, uncompressed assets would have either halved the game's world size or bloated the physical release into an absurd eight-DVD package.
To compress the massive Megatexture dataset onto standard distribution media, id adopted a derivative of Microsoft's HD Photo format. id had originally built an internal Discrete Cosine Transform (DCT) compressor, but Microsoft's technology delivered a 30% quality improvement at equivalent bitrates. This visual gain carried a steep performance penalty: decoding the HD Photo derivative demanded twice the processing horsepower. The runtime pipeline ingested these compressed streams, dispatched them across worker threads to decode into a intermediate YCoCg color space, and then re-encoded them on the fly into native DXT texture formats for the graphics card.
Reflecting on the engineering tension behind the streaming system, Carmack remarked:
> “Again it’s the most sophisticated code in there and to some degree we cringe a little bit every time we try to implement some new feature in there because it is it's at the heart of the most asynchronous threads you know all the different devices.”
- Worker threads were strictly segregated: dedicated threads for optical I/O, hard drive I/O, feedback buffer analysis, and parallel transcoding. - Storing uncompressed native textures would have required an unwieldy eight DVDs instead of the shipped multi-disc configuration. - Microsoft licensed an HD Photo derivative to id Software, providing over 30% better visual compression quality than id's custom DCT algorithm at the expense of doubling the CPU decode cost. - Textures decompressed into an intermediate YCoCg color space before being dynamically re-encoded into hardware DXT format.
---
[25:17](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1517s) PC Driver Bottlenecks and the Promise of Unified Integrated Graphics
Because Rage released on PC through Steam, the development team was able to continue tuning and optimizing the PC build past the hard manufacturing deadlines required for console disc authoring. Yet despite high-end PC hardware packing ten times the brute-force processing power of the aging consoles, Carmack found it an infuriating struggle to maintain a consistent 60 frames per second on the PC. The primary culprit was PC graphics driver overhead surrounding dynamic texture updates.
On consoles, updating a Megatexture page was trivial: the engine wrote the raw pixel memory directly into the page table by calculating an exact memory offset and executing a simple integer write. On the PC, that identical operation was routed through standard OpenGL or DirectX driver abstractions, turning into calls like `glTexSubImage2D`. Stepping through driver dispatch layers in a debugger revealed an immense amount of CPU overhead, tiling conversions, and swizzling variations across different GPU vendors. Carmack warned that if a programmer attempted to single-step through that driver code, “you'll cry you won't make it back out it'll just take forever.”
This frustration led Carmack to evaluate Intel’s integrated graphics architecture with fresh optimism. While traditionally dismissed by hardcore gamers as low-power hardware meant strictly for office applications, Intel's contemporary integrated GPUs had matured enough to run Rage internally, even if not yet at a steady 60 frames per second. Carmack argued that Intel's unified memory architecture offered an enormous structural advantage over discrete cards because it mirrored the console paradigm. If driver developers allowed direct access to texture addresses, strides, and swizzle formats, developers could bypass heavyweight driver validation loops entirely and poke updates straight into unified RAM.
Carmack challenged the historical culture of hardware abstraction that had long dominated the PC graphics market, summarizing his perspective on driver friction and hardware evolution:
> “And it is extremely frustrating knowing that the hardware that we've got on the PC is often 10 times as powerful as the consoles but it's honestly been a struggle in many cases to get the game running 60 frames per second on the PC like it does on a 360.”
- Modern PC hardware possessed roughly ten times the raw compute power of consoles, but driver overhead severely hampered 60 FPS consistency. - Console page updates bypassed driver validation by directly poking integer values and memory buffers into known physical addresses. - PC graphics APIs required calls like `glTexSubImage2D`, incurring massive software driver overhead due to vendor-specific swizzling and tiling formats. - Intel integrated graphics chips had improved enough to run Rage, presenting a compelling unified-memory architecture that Carmack hoped would eventually expose raw memory pointers directly to developers.
[28:52](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1732s) Leaky Abstractions and Archaeological Hacks in PC Drivers
John Carmack highlights the ongoing tension between clean API abstractions and the harsh realities of high-performance rendering. In DirectX, for example, the API creates the illusion that an application can simply lock a rectangular subregion of an image. Behind the scenes, however, graphics drivers frequently copy the entire texture back and forth, unswizzling and re-swizzling memory layout to satisfy the abstraction before writing it back to video memory. While high-level abstraction simplifies general software development, Carmack emphasizes that it can cripple aggressive real-time engines. Developers might read a hardware reference manual and identify a straightforward DMA transfer or memory poke that runs cleanly on consoles, only to find that doing the equivalent on a PC requires navigating deeply convoluted driver pathways.
Carmack candidly accepts personal responsibility for some of the architectural baggage still lingering in modern PC drivers. He recounts an oversight from early versions of *Quake*, where he allocated a fixed 1,000-character buffer for OpenGL extension strings, assuming that would be more than enough. As hardware capabilities expanded and extension strings grew to tens of thousands of characters, running unpatched *Quake* executables resulted in memory stomps. Driver vendors ended up hardcoding game-detection hacks specifically to intercept *Quake* and return a truncated extension list that wouldn't overrun the buffer. Carmack notes that these "archaeological reasons" explain why PC drivers are laden with special-case workarounds, forcing PC hardware to rely on brute-force power to match the low-level efficiency of consoles.
> “For a lot of things abstraction is great you want to be able to step back and say here we're doing one thing we wanted to behave just with slightly varying characteristics but when you're doing really aggressive realtime operations sometimes those abstractions will really kill you.” — John Carmack
- Drivers hide memory layout conversions like swizzling and full-texture copies when applications attempt to lock sub-rectangles. - Direct hardware operations like DMA fetches documented in hardware reference manuals are frequently obscured by PC driver complexity. - Modern drivers still contain application-detection hacks for early *Quake* builds to prevent buffer overflows from oversized `glGetString(GL_EXTENSIONS)` calls. - The brute-force performance of PC hardware often acts as a costly crutch to overcome the efficiency advantages of console-level hardware access.
---
[31:12](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1872s) Vendor Cooperation, Dynamic Resolution Scaling, and Adaptive V-Sync
Reflecting on vendor relations, Carmack notes that the hardware ecosystem is vastly healthier than it was during the *Quake III Arena* era, when around twenty different graphics companies produced chips, many of whom lacked the engineering competence to write proper drivers. Today, working with just three primary vendors—NVIDIA, AMD, and Intel—allows for high-level, productive collaboration. This cooperation was vital for solving frame pacing on *Rage*. On consoles, id Software targets a strict 60 frames per second locked to the display's swap interval, utilizing dynamic resolution scaling to downsample the rendering buffer reactively as scene complexity or particle overdraw increases. While Carmack hopes future engines can preemptively scale down before costly events like explosions occur, the current reactive system occasionally misses the 16.6-millisecond window when sudden off-screen elements appear.
```mermaid flowchart TD accTitle: Frame Timing and Adaptive V-Sync Flow accDescr: Rendering logic deciding between locked 60 FPS, resolution scaling, and tearing.
subgraph RenderLoop["Frame Execution"] A["Render Frame"] --> B{"Meets 16.6ms Target?"} end
subgraph FrameOutcome["Swap Interval Behavior"] B -- "Yes" --> C["Clean Swap at 60 FPS<br/>(No Tearing)"] B -- "Approaching Limit" --> D["Dynamically Scale Down Resolution"] D --> A B -- "No (Missed Target)" --> E{"Adaptive Tear Support?"} E -- "Traditional V-Sync" --> F["Bobble Down to 30 FPS<br/>(Noticeable Stutter)"] E -- "Negative Swap Interval" --> G["Immediate Swap with Tear Line<br/>(Maintains Input Response)"] G --> H["Resolution Scales Down;<br/>Tear Line Migrates Off-Screen"] end ```
When a frame is dropped, PC players traditionally face two bad choices: enabling standard V-Sync, which drops frame rates from 60 directly to 30 FPS and causes jarring stutter, or disabling V-Sync entirely and enduring continuous screen tearing. id Software pioneered a hybrid approach on consoles where frames stay locked at 60 FPS until a frame deadline is missed, allowing an immediate tear line for a couple of frames before dynamic resolution scaling recovers and pushes the tear line off the screen. Carmack successfully lobbied NVIDIA, AMD, and Intel to implement this behavior on PC via an extension using negative swap interval values (such as `-1`).
> “We are obsessing over some relatively unimportant things with sizes of filter kernels and the other things that graphics geeks can go on about forever, but we've got this stupid ugly tear line going down the screen or we've got this non-isochronous swap behavior; this is actually an important thing to fix.” — John Carmack
- The GPU industry has consolidated from roughly 20 chip makers during the *Quake III* era down to three major players: NVIDIA, AMD, and Intel. - *Rage* uses reactive dynamic resolution scaling to maintain 60 FPS during heavy particle overdraw and complex geometry. - The standard binary choice between severe 30/60 FPS judder and constant horizontal tearing is mitigated by adaptive tear-on-miss handling. - NVIDIA implemented negative swap intervals (e.g., `-1`) to signal "lock if possible, tear if late," an approach subsequently adopted by AMD and Intel.
---
[34:47](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2087s) Tuning PC Texture Caches and Experimental Engine Builds
Turning to the PC release of *Rage*, Carmack clarifies that while there are no radical PC-exclusive rendering features, the engine will take advantage of desktop hardware headroom. On consoles, the virtual texture cache is constrained to a 4K by 4K physical allocation, but high-end PC video cards with multiple gigabytes of VRAM can expand this cache to 16K by 16K. A cache of that size allows players to navigate substantial portions of the world without the engine ever needing to transcode additional texture pages from disk.
Beyond the initial retail build, Carmack expresses enthusiasm for releasing experimental, research-oriented executable updates that leverage *Rage*'s asset database. He likens this to the release of *GLQuake*, which was initially an unsupported drop-in executable that showcased id's hardware acceleration research using the original retail data files. Although id Software's larger corporate scale makes releasing unsupported test code more complicated, he remains eager to explore how existing production assets hold up under novel rendering techniques.
> “I'm also looking forward to the possibility of doing some almost research engine like things that may be able to leverage some of the Rage data, kind of back to the old days where GLQuake came out where it was this completely unsupported thing that you just dropped this EXE in and ran this and it kind of showed you what I was playing with technology wise.” — John Carmack
- High-end PC GPUs can expand the Megatexture physical cache from 4K x 4K (console baseline) up to 16K x 16K. - Larger physical caches dramatically reduce runtime texture transcoding overhead during movement across the wasteland. - Carmack is interested in releasing experimental *GLQuake*-style executables that repurpose *Rage* assets to demo bleeding-edge rendering pipelines.
---
[36:35](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2195s) Development Timelines, Content Pipelines, and Diminishing Returns
Carmack evaluates futuristic rendering paradigms like ray tracing, point splatting, and voxel representations, but clarifies that such concepts are far removed from current production reality. The primary bottleneck is not purely algorithmic; it is the immense cost and time required to establish a functioning content authoring pipeline. Virtual texturing was first demonstrated publicly more than five years earlier, yet turning that demo into an end-to-end production workflow—encompassing artist tools, backend crunching, data streaming, and disc distribution—consumed half a decade of intensive labor.
Because creating content pipelines is so grueling, id Software cannot afford to reinvent its toolchain with every project. Carmack points out an unsustainable trajectory in the studio's history: every successive mainline game developed internally at id Software has taken longer to complete than its predecessor. Projecting that trend forward would eventually lead to absurd multi-decade production cycles. Carmack warns that exponential trends must eventually break, and developers must carefully manage a "smooth flared landing" rather than crash. Furthermore, he reiterates his belief that real-time graphics have passed the "knee of the curve," where each incremental leap in visual fidelity yields smaller perceptible improvements despite requiring massive technological investments.
> “The cold hard truth is every game that we've done that's come out of id Software proper on our mainstream mainline has taken longer than the game before, and that cannot continue.” — John Carmack
> “If something can't go on forever it won't, and it's all a matter of how you do the landing from can't go on forever that determines how you're going to come out of it.” — John Carmack
> “I've said for years now that I think that we are past the knee of the curve in terms of what we get from graphics technology on there.” — John Carmack
- Far-future rendering approaches under research include ray tracing, voxel rendering, and surfel/splatting techniques. - Turning the initial virtual texturing demo into a shipping production pipeline required over five years of development. - Mainline id Software release cycles have grown strictly monotonically with each game, demanding an intentional slowdown of pipeline churn to avert runaway development times. - Real-time rendering has surpassed the knee of the return curve, meaning massive increases in engine complexity now yield diminishing visual payoffs.
[38:16](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2296s) Committing to 60 FPS and New Research Engines
Carmack reflects on the core engineering philosophy behind *Rage*, emphasizing that choosing a smooth 60 frames per second over a 30 FPS target was a contentious, deliberate trade-off. While 30 FPS would have allowed for far more visual spectacle, the team ultimately decided that responsiveness was worth the pain. As Carmack puts it: “that initial choice to say we can do fancier graphics, you know there are techniques that we can apply that will make the game look better, but I'd rather have twice the frame rate and I think that we are—that question of how we spend our resources, there's a lot of options on there on what we want to do with it.”
At the time of the address, the main game was essentially wrapped up, though team members remained at the office pulling all-nighters to finalize candidate builds for submission. Most remaining bugs centered on edge cases, such as handling a multiplayer invite during a physical disc swap while yanking out a console memory card. Having stepped away from the final shipping polish, Carmack had already spun up independent research engines. He expresses interest in testing the outer bounds of their existing assets—running "speed of light" calculations to see how perfect anti-aliasing and true motion blur would look using high-end PC hardware, which offers roughly ten times the raw compute power of current consoles.
- The team chose 60 FPS over 30 FPS early on, accepting severe constraints across art, design, and programming to hit the performance budget. - Final release candidates were being prepared back at the office, resolving bizarre console compliance edge cases around disc swapping and memory card removals. - High-end PCs are running *Rage* essentially as a "muscular console" without bolt-on DirectX 11 features like tessellation, which Carmack believes must be architected from day one rather than tacked on.
---
[41:25](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2485s) A Factor of a Billion: From the Atari 2600 to 192 GB RAM Builds
Looking back across computing history, Carmack notes that while he used to marvel at a factor of a million improvement since his early development days, modern workloads now span nine orders of magnitude—a factor of a billion. He describes browsing disassembled ROMs and architectural notes of the Atari 2600, a machine from his childhood operating on a mere 128 bytes of RAM and 2 KB of cartridge ROM (later expanded to 16 KB through bank switching).
To contrast this extreme scarcity, he highlights an internal production challenge at id Software: generating the massive virtual textures for *Rage*. Rebuilding all the dynamic textures initially took hours. Carmack rewrote the toolchain around huge memory-mapped files, but standard dev workstations quickly ground to a halt swapping to disk. In response, they dropped $5,000 to equip a build server with 192 gigabytes of RAM. Carmack points out that 128 bytes on the Atari 2600 compared to 192 GB in a single server represents an increase greater than one billion times, a scale unmatched in almost any other human endeavor.
```mermaid flowchart TD accTitle: Memory Scaling Over Time accDescr: Diagram contrasting Atari 2600 memory limits with id Software's Rage virtual texture build server.
subgraph Atari["Late 1970s: Atari 2600"] A1["RAM: 128 Bytes"] A2["ROM: 2 KB (Up to 16 KB via Bank Switching)"] end
subgraph Server["2011: id Software Build Rig"] B1["RAM: 192 Gigabytes"] B2["Storage: 2 Terabyte Consumer HDDs"] end
Atari -->|"Scale increase of > 1,000,000,000x (9 orders of magnitude)"| Server ```
- High-end consumer graphics cards possess at least 10 times the compute horsepower of the Xbox 360 and PlayStation 3. - Atari 2600 specs: 128 bytes of system RAM, 2 KB starting ROM, maxing out at 16 KB with costly bank-switching hardware. - *Rage* virtual texture build server: upgraded to 192 GB of RAM for around $5,000 to keep memory-mapped files entirely in physical RAM and eliminate disk thrashing. - While serial CPU clock speeds have plateaued, multi-core parallelism and GPU throughput continue to compound computational growth by multiple orders of magnitude.
---
[44:21](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2661s) Spending Massive GPU Horsepower and the Texture Detail Debate
Considering what game developers should do with surplus computing power, Carmack delineates between simple brute-force scaling and complex algorithmic tasks. Straightforward upgrades include jumping from 720p to 2560-wide PC resolutions, driving triple-monitor setups (a 10x pixel increase), pushing multi-sample fragment anti-aliasing to 16x, and widening dynamic range. Beyond those standard knobs, he ponders extreme image-processing pipelines: “there are things that are beginning to look possible on this level of hardware where I'm looking at this thinking, you know I guess we can do a full Fast Fourier Transform on the entire damn screen and do full-screen convolutions of things where instead of having our flares be these sprites and blurred things that we have on there, we can convolve the whole damn screen with this giant starburst and have every little pixel come in right.”
Carmack frankly acknowledges a common visual criticism *Rage* will face: because the game relies on unique virtual textures without secondary tiling detail maps, inspecting surfaces point-blank causes the art to appear soft or blurry. He wishes id had possessed the schedule headroom to build an uncompressed, dual-layer Blu-ray master specifically for the PlayStation 3 to max out image fidelity, though he admits the PS3's slow drive seeks and tighter available memory made that risky. Looking ahead, he suggests releasing an experimental PC DLC pack containing a single level mastered at ten times the standard bitrate (roughly 2 GB instead of 300–500 MB) to evaluate whether users notice the bump in fidelity during active gameplay.
- Brute-force hardware utilization includes 2.5K high-resolution displays, multi-monitor arrays, and 8x/16x MSAA. - FFT-driven full-screen convolutions could theoretically replace standard billboard lens flares with physically accurate diffraction starbursts, despite the enormous floating-point cost. - Without detail maps layered over the mega-textures, surfaces in *Rage* lose crispness up close compared to games relying on repeated tiling shaders. - The team considered shipping dual-layer Blu-ray discs on PS3 with looser compression, but the combination of PS3 memory limits, slow optical read speeds, and a strict production schedule prevented platform-specific assets.
[48:11](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2891s) Megatexture Data Pipeline, Compression, and View-Dependent Profiling
Carmack discusses the immense scale of the source art behind id Software’s Megatexture technology and the aggressive compression strategies required to fit *Rage* onto physical media. While the shipping game fits onto a single 20-odd-gigabyte Blu-ray disc (or three Xbox 360 DVDs), the uncompressed source assets are vastly larger. id ran into hard limits where the source art exceeded a single 256,000-by-256,000 texture atlas. Across mountains, ground stamps, and surfaces, the raw source assets represent roughly 64 gigapixels. With three image channels per texture using 12 bytes, plus mipmaps, the master source art exceeds a full terabyte of data before being baked with lighting into final level sets. Levels like the Wasteland could not fit into even a single 256k-by-256k sheet; instead, it had to be split across approximately 14 separate textures ranging from 32k to 128k, with character models fitting on 64k-by-64k sheets.
```mermaid flowchart TD accTitle: Megatexture Data Pipeline accDescr: Flow diagram showing how 1TB+ of source art is baked, profiled, compressed, and packed onto shipping game discs.
subgraph Source["Source Assets (1TB+)"] A["Raw Art: Mountains, Terrain, Stamps<br/>(64 Gpixels, 12 bytes/sample)"] B["Static & Dynamic Lighting Data"] end
subgraph Baking["Baking & Optimization"] C["Level Partitioning<br/>(Wasteland: 14 pieces, 32k–128k)"] D["Player Movement Profiling<br/>(Zillions of simulated views)"] E["View-Distance Filtering<br/>(Full res near, reduced far)"] end
subgraph Distribution["Shipped Media (~20+ GB)"] F["HD Photo / JPEG XR Compression"] G["1x Blu-ray (PS3) / 3x DVDs (360) / PC"] end
A & B --> C C --> D D --> E E --> F F --> G ```
Shipping all baked world textures uncompressed in standard RGB format would have required hundreds of gigabytes. To make the footprint manageable, id utilized HD Photo compression (JPEG XR) combined with view-dependent resolution profiling. By mapping out every valid player navigation path, id's toolset profiled millions of vantage points to calculate the exact resolution required for any given vantage point, aggressively pruning detail from surfaces the player could never reach. Carmack notes that while this strategy saved massive disk footprints, it introduced compromises: baseline profiling targeted 720p console resolutions. Consequently, high-resolution PC players who bring down the console and fly up with `noclip` will notice blurry textures on distant guard towers and unreachable rooftops because the high-resolution texture data was intentionally stripped during authoring.
- Source art assets ran past a single 256,000 × 256,000 boundary (64 gigapixels); with mipmaps, source art totals roughly 1 terabyte. - The Wasteland map alone is split into 14 distinct texture pages scaling from 32k up to 128k. - Profiling simulates millions of potential player views, aggressively degrading surfaces that cannot be closely approached by the player. - “Unfortunately the texture data just doesn't exist to have the higher quality data there so it winds up being a little bit blurrier,” Carmack remarks, acknowledging that artists were visibly downcast when first seeing their crisp PC assets crushed down by production compression.
---
[52:20](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3140s) Lighting Battles and the Friction with Post-Processing
Carmack reflects on an enduring aesthetic struggle at id Software: lighting, game darkness, and the clash between raw texture clarity and post-processing filters. For years, Carmack had waged an internal crusade against games being too dark. While developers often argue players should simply sit in a dark room with the lights off, Doom 3 suffered from vast amounts of visual detail being completely obscured in shadow. On *Rage*, id made a deliberate effort to brighten levels, but this introduced new disagreements over post-processing pipelines.
While artists and cinematic designers favored heavy post-processing color grading and tone mapping to sell atmosphere, Carmack often preferred the unfiltered rendering path. He frequently dropped the console in development builds to disable post-processing entirely, finding the clean, raw pixel detail far sharper and truer to the original art. Nonetheless, he conceded that post-effects won out for atmospheric reasons, despite destructively altering the precisely compressed megatexture pixels id's engine programmers worked so hard to preserve.
> “I lost that battle pretty clearly where there's lots of post effects going on throughout the game and lots of times it does convey the right mood and it does all of this, but it does a lot of damage to all of this data that we spent—we killed ourselves to get it compressed over there, and then to have some post-process go in and muck up all the pixels is sometimes a little bit depressing.” — John Carmack
---
[54:09](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3249s) Static Software Analysis and Scaling the Engineering Team
Transitioning from asset authoring to software engineering practices, Carmack details his recent, eye-opening experiences using automated static code analysis tools on *Rage*. As id Software grew from a tiny team—where Carmack and a single right-hand programmer wrote essentially the entire codebase—to a department where the internal `id-programmers` email alias reached 49 people, managing a multi-million-line codebase required radically different standards. Carmack highlights how programming language disputes often resemble "religious wars," where developers insist that error-prone constructs are safe in the hands of skilled engineers, but automated checkers reveal systemic pitfalls across large teams regardless of individual talent.
During early evaluations, the commercial static-analysis vendor Coverity scanned the *Rage* codebase and reported roughly 100 potential issues as a sales pitch. Although Coverity praised id's codebase as exceptionally clean compared to the industry average, they requested around $50,000 for their suite. id initially deferred purchasing, but Carmack later explored alternate compilers and tools, discovering that Microsoft Research had integrated advanced `/analyze` static analysis checks directly into their compiler. While standard Visual Studio reserved these tools for high-end enterprise tiers, Microsoft included them out of the box in the Xbox 360 development kit—a pragmatic choice, Carmack observes, because platform holders bear immediate public blame for crashing console games in a way they do not for unstable PC desktop software.
- The internal id programmer distribution alias expanded to 49 recipients across two large production teams and two smaller project units. - The *Rage* engine codebase encompasses multiple millions of lines of code. - Coverity identified approximately 100 issues on its initial evaluation pass and asked roughly $50,000 for the tool suite. - Microsoft bundled advanced static analysis (`/analyze`) into the standard Xbox 360 SDK while restricting it to top-tier enterprise Visual Studio packages on desktop Windows. - “I guess you can draw the conclusion that Microsoft figures they're not going to get blamed for buggy PC apps, but they will shoulder some blame for buggy 360 apps so they're going to make these tools that make significant differences,” Carmack observes regarding Microsoft's developer tooling priorities.
[58:01](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3481s) Static Code Analysis and the Statistical Nature of Software
Carmack strongly urges developers to embrace static analysis tools, especially Microsoft's `/analyze`, which is provided free for Xbox 360 developers: “I'll say this quite clearly with no hesitation: any 360 developers that are listening to this, if you're not using /analyze, you are making a mistake.” id Software had previously addressed around 100 issues surfaced by Coverity, but after adding many new programmers and expanding the codebase, turning on Microsoft’s analysis tool flagged hundreds of additional items. While some findings drew defensive pushback from programmers insisting their logic secretly guaranteed safety, many uncovered genuine bugs—such as code checking a pointer for null in one branch but forgetting to check it lower down. Seeing hundreds of these confirmed issues fundamentally reshaped Carmack's view of software reliability.
Traditional engineering relies on reliability theory, assessing material spreads, yield strengths, tensile tolerances, and failure estimates. Software, by contrast, is often viewed as strictly deterministic—assuming no uninitialized variables or randomized memory, it either functions or fails given a specific input. However, Carmack points out that across millions of lines of code written by dozens of developers, software failure exhibits a distressingly statistical distribution. Even if execution is deterministic, the human development process is heavily statistical, as every engineer inevitably injects errors.
```mermaid flowchart TD accTitle: Statistical Realities of Software Scaling accDescr: Transition from small deterministic programs to large-scale multi-developer codebases requiring static analysis.
subgraph SmallScale["Small-Scale Projects"] A["Individual Developer / Small Team"] --> B["Deterministic Mental Model"] B --> C["Ad-hoc Bug Bashing"] end
subgraph LargeScale["Scaled Production"] D["Millions of Lines of Code"] --> E["Statistical Inevitability of Bugs"] F["Dozens of Programmers"] --> E E --> G["Static Analysis Enforcement (/analyze, PVS-Studio)"] G --> H["Zero Warnings as Errors Policy"] end
C -.->|"Codebase Grows"| D ```
[01:00:43](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3643s) Developer Habits, Copy-Paste Errors, and Team Practices
Before diving deep into static analysis, Carmack conducted a personal experiment by logging his own coding errors—ignoring minor initial compile errors and recording only bugs that slipped past first execution and surfaced days, weeks, or months later. The data exposed definite behavioral patterns. A frequent culprit was handling coordinate sets ($x, y, z$ or $x, y, z, w$): the ubiquitous shortcut of copying a line, pasting it repeatedly, and manually swapping axes. In a six-month stretch, this practice introduced three persistent errors into his own code, such as corrupting an image's alpha channel because a $z$ was not properly updated to a $w$, causing the blue channel to be read instead. While one occurrence can be dismissed as an anomaly, repeated instances represent systemic trends that demand better techniques like loops, templates, or objects to eliminate copy-paste habits altogether.
These vulnerabilities scale dangerously as codebases age. Carmack warns his team that code written today will likely still be running somewhere a decade from now, just as fragments of original Quake code still survive in modern game titles. Maintenance compounds this risk. A programmer writing game logic might assume certain invariants (like an active target not being another player), but a subsequent developer adding new features later in the function may lack full context, triggering edge-case crashes when conflicting actions align—such as changing weapons while simultaneously falling to one's death and being crushed by a tracking vehicle.
- Carmack tracked his personal post-compilation logic errors over a six-month period to uncover flawed programming habits. - Repetitive axis copy-pasting ($x, y, z, w$) caused multiple silent regressions, including undetected alpha-channel image corruption. - Invariants checked at the top of long routines frequently get bypassed or invalidated by subsequent feature additions written lower down. - Even obsolete engines leave footprints: fragments of Quake code from 1996 remain embedded in games released 15 years later.
[01:02:43](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3763s) Zero-Tolerance Warnings and the Tool Pipeline: From /analyze to PC-lint
To protect large codebases over time, id Software adopted a strict zero-tolerance build policy: Microsoft `/analyze` is permanently enabled, treating all warnings as fatal build errors. Carmack argues that even when a tool issues a false positive on code that is technically sound, the warning should be heeded rather than suppressed: “If the analyzer can't figure it out, other programmers probably won't immediately figure it out and it will cause problems.” While dynamic scripting and loose typing have their place for quick prototyping where getting things running fast matters, long-lived production systems require rigid safety. To prevent games from taking eight years to develop, teams must adopt better programming language practices and rigorous automated tooling alongside solid design and content pipelines.
Beyond Microsoft's tools, Carmack expanded his analysis pipeline to include PVS-Studio and PC-lint. He had evaluated PC-lint version 7 around the development of Quake III Arena when id had only three programmers working in pure C, but at the time it did not trigger a lasting conversion to the practice. Returning to it on their modern C++ codebase, id achieved a state that was completely clean of warnings under both Microsoft `/analyze` and PVS-Studio. However, PC-lint represented a much tougher challenge due to its very high noise-to-signal ratio and pedantic rule set.
- Microsoft `/analyze` and PVS-Studio runs were enforced as continuous, zero-warning gates on the build systems. - Warnings that require convoluted mental proofs to explain indicate overly complex logic that should be refactored for clarity. - PC-lint (dating back to original Unix lint) was initially tested by Carmack during Quake III Arena's development, but its value only became indispensable with larger teams and C++ architectures. - While `/analyze` and PVS-Studio offered actionable signals, PC-lint introduced a significantly higher noise-to-signal ratio across the engine.
[01:06:54](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4014s) Code Quality, Scripting Pitfalls, and Static Analysis
Reflecting on the final stages of shipping *Rage*, John Carmack admits his disappointment at being unable to triage every single warning flagged by static analysis. Thousands of warnings remained in the codebase. While many stemmed from patterns where variables were guaranteed to be initialized elsewhere, Carmack recognizes that dismissing them as harmless is an exercise in hand-waving: buried inside those thousand warnings are genuine defects waiting to trigger. This experience reinforced a core lesson id Software took away from *Doom 3*: embedded script interpreters are fundamentally detrimental to game development in terms of debugging, code stability, and raw performance. Carmack challenges the popular industry dogma that game development requires a dynamically typed, free-form scripting language so that non-programmers can build game logic.
Carmack argues bluntly that allowing non-programmers to write scripting logic produces codebases that inevitably break down at scale. Even with modern hardware that is a million times faster than past machines, execution overhead remains a critical concern. During the final month of *Rage*’s production, id Software was forced to rewrite parts of their Flash-based user interface in native C++ because ActionScript evaluation inside the GUI was consuming multiple milliseconds per frame. Because processing cycles remain a scarce budget, Carmack prioritizes strict, static compile-time guarantees over dynamic flexibility. His ultimate ambition is to construct analysis pipelines rigorous enough to formally guarantee that a game cannot crash with an unhandled exception during execution.
“You know, one of the big lessons of a big project is you don't want people that aren't really programmers programming; you'll suffer for it,” Carmack notes, stressing the long-term maintenance disaster of treating game scripting lightly.
- Static analysis left thousands of unaddressed warnings in *Rage* due to schedule pressure, masking potential real-world failure cases behind benign false positives. - Dynamic scripting languages fail both on performance and software engineering grounds; even UI Flash/ActionScript scripting consumed multiple milliseconds per frame until rewritten in C++. - *Rage* phased out the majority of legacy *Doom 3* scripting, relying directly on native in-engine code for heavy lifting.
[01:09:16](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4156s) SuperScript in Doom 4, Functional Concepts, and C++ Subsetting
Looking forward to *Doom 4*, Carmack describes id Software's alternative to third-party scripting environments: an internal system termed "SuperScript." SuperScript is a constrained dialect implemented directly within C++. It combines fiber-based execution—granting gameplay scripters the convenience of cooperative yields, sleeps, and cleanly scheduled events—with native execution speed and strict static type checking. Carmack intends to push this philosophy even further by enforcing a rigorously constrained subset of C++ across the studio's entire development pipeline. This drive originates from a statistical realization about software teams: mistakes are authored daily by even the most gifted engineers, and raw developer skill cannot replace structural compile-time safety nets.
While Carmack expresses strong personal admiration for pure functional programming languages like Haskell and OCaml, he admits they are not practical for primary game development. Across a team of roughly 50 engineers, retraining staff, resolving unfamiliar performance regressions, and managing industry hiring pipelines would present insurmountable hurdles. Instead, he advocates restricting 95% of the codebase to an ultra-safe, Java-like subset of C++ that statically bans unchecked arrays, uninitialized pointers, and use-after-free conditions. Only tiny, hyper-optimized performance loops would retain access to raw, unconstrained C++ semantics. Carmack acknowledges that internal code policies mean nothing unless tools physically forbid bad idioms, as anti-patterns inevitably slip past human review over multi-year production cycles.
“The very best programmers always make mistakes, and this is something that I've really internalized: that no matter how good you think you are, you are making mistakes all the time, and you have to have structures around you to try and help you limit the damage that your mistakes will cause,” Carmack emphasizes.
```mermaid flowchart TD accTitle: Subsetting C++ Codebase Architecture accDescr: Segregation of a game engine into a large constrained safe C++ subset and a tiny hyper-optimized native core.
subgraph CoreEngine["Engine Architecture"] direction TB subgraph SafeDialect["95% of Codebase: Safe C++ / SuperScript"] A["Fiber-based Task Scheduling"] B["Java-like Safety Invariants"] C["Checked Arrays & Safe Pointers"] D["Static Lifetime & Null Analysis"] end
subgraph PerfDialect["5% of Codebase: Hyper-Tuned Engine Core"] E["Unrestricted C++ & SIMD Intrinsics"] F["Twitchy, Cache-Tuned Inner Loops"] end end
SafeDialect -->|"Calls via strict interfaces"| PerfDialect ```
[01:12:37](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4357s) Development Cadence, Studio Growth, and the "Old Man Carmack" Era
Surveying the broader development cycle of *Rage*, Carmack reflects on the cost of targeting extreme technical ambition. Programming remained the critical path throughout production. While pushing rendering boundaries was exciting, Carmack observes that had id Software scaled back their technological goals slightly, they could have shipped two full titles in the six-year span between *Doom 3* and *Rage*. In hindsight, he wishes the studio had built an intermediate title on id Tech 4—such as an earlier *Doom 4* release cycle every three years—rather than enduring a multi-year commercial hiatus. While external partner studios like Raven Software delivered *Quake 4* and *Wolfenstein* during that gap, id Software now insists on producing its flagship releases entirely under its own roof.
This shift in internal scope has transformed id Software into a company of over 200 employees, absorbing large-scale internal quality assurance, localization, and multiplatform delivery pipelines that previously belonged to publishing partners. Carmack notes the milestones that converged around this period: id Software’s 20th anniversary, the 15th anniversary of *Quake*, and his own 40th birthday. Acknowledging a recent graphics article that poked fun at him as "Old Man Carmack," he accepts his evolution along the archetype spectrum from young prodigy to industry elder statesman. Yet he firmly rejects nostalgia for the small-team eras of the 1990s, maintaining that he is far more effective as an engineer today than he ever was in the past. To satisfy his appetite for compact, low-overhead software engineering, Carmack carves out dedicated time every year to work hands-on with mobile projects.
“I'm really a remarkably unsentimental person; I don't spend a lot of time thinking about the good old days, because I see this a lot: the good old days are right now,” Carmack explains, affirming his satisfaction with *Rage* and his personal output.
- id Software expanded past 200 employees, bringing multiplatform certification, QA, and localization pipelines completely in-house compared to the single-platform disc delivery of *Doom 3*. - Carmack regrets the six-year gap between major internal releases, noting that leveraging id Tech 4 for an immediate follow-up game would have stabilized production cadence. - Annual mobile development projects serve as an essential creative and technical outlet, allowing Carmack to build complete projects with small-team immediacy under ZeniMax.
[01:16:15](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4575s) Mobile Development, Software Rasterizers, and the Generational Shift
Carmack reflects on managing his time between primary engine development and mobile side projects. While his nominal plan was to limit mobile experiments to roughly 10% of his schedule, he broke that budget significantly during the production of the *Rage* iOS app. Historically, his involvement in mobile was confined to a retro detour where he would reconstruct techniques from scratch—such as building a software rasterizer or writing for DirectX 7–class GPUs—before handing the engine over the wall for the mobile team to turn into a complete game. However, because the iOS app would be the public's very first glimpse of *Rage*, id Software decided that Carmack would personally stay with the title through release. This resulted in several months away from id Tech 5, leaving him completely detached from Xcode or mobile development ever since.
Looking back at retro programming proved deeply satisfying for Carmack. Given four days, he was able to sit down and write a complete software rasterizing engine, realizing that years of accumulated wisdom allowed him to craft far cleaner, more effective solutions than he did in the early 1990s. This contrast between old and new paradigms resurfaced during id's recent office move. Browsing bookshelves of legacy manuals, Carmack spotted a Commodore VIC-20 reference guide he had carried around since age twelve. A younger developer remarked that modern programmers might never match the intimate machine-level connection possessed by Carmack and Robert Duffy, who knew every hardware register intimately. Carmack countered that today's engineers accomplish extraordinary things by orchestrating web frameworks and complex data pipelines across modern infrastructure. Even if contemporary systems involve twenty layers of abstraction between the programmer and the silicon, he embraces the progress and refuses to play the role of an aging cynic complaining about the youth: “I'm not yet a grumpy old man about kids these days not knowing how to program their assembly language and and all this.”
[01:18:53](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4733s) The Enduring Value of Extreme Resource Constraints
Despite his enthusiasm for modern high-level tools, Carmack maintains that learning to operate within tight resource boundaries is an irreplaceable discipline. Modern game production still demands intense optimization to fit within console footprints, even though contemporary hardware outstrips historical supercomputers. Carmack points out the absurd reality that a modern mobile phone is vastly more capable than a Cray supercomputer, yet the industry runs mundane tasks across bloated abstraction layers simply because it remains the most practical path forward.
For a brief period, early cell phones revived strict limitations, forcing id to compress titles like *Doom RPG* into a 128 KB footprint while optimizing Java bytecode. Yet within the single development cycle of *Rage*, handheld platforms skyrocketed from primitive feature phones to gigahertz multi-core processors with gigabytes of RAM, rendering extreme 128 KB micro-optimizations largely obsolete. Carmack laments the loss of that discipline and expresses admiration for demoscene hackers competing in 64 KB demo competitions. To recapture that problem-solving ethos, he envisions establishing an arbitrary, retro target platform:
```mermaid flowchart TD accTitle: Retro Platform Pedagogical Workflow accDescr: A concept where developers target 32-bit legacy consoles to rediscover low-level system engineering.
subgraph HardwareTarget ["Standardized Archaic Platform"] A["Legacy 32-bit Console<br>(PS1 / Nintendo 64)"] B["No Quirky Hardware<br>Strict Resource Ceilings"] A --- B end
subgraph DevelopmentTasks ["Exploratory Engineering"] C["Revisit Core Software<br>(Browsers, Mail Clients)"] D["Team Game Jams<br>(Atari 2600 Sprint)"] end
subgraph EducationalOutcome ["Pedagogical Goal"] E["SCA for Programmers:<br>Historic Systems Mastery"] end
HardwareTarget --> DevelopmentTasks DevelopmentTasks --> EducationalOutcome ```
Carmack imagines developers adopting widely produced 32-bit consoles like the original Sony PlayStation or Nintendo 64—systems powerful enough to run real programs without bizarre architecture traps, yet small enough to force radical creativity when building modern software such as web browsers or mail clients. He jokes that this initiative would function as a creative anachronism society for engineers: “I'm thinking this would be kind of like the Society for Creative Anachronism for programmers—instead of bashing each other with foam swords, you're playing on archaic hardware.” While he acknowledges his packed schedule will likely prevent him from ever organizing it, he loves the idea of giving his programming staff an open schedule window to write an Atari 2600 game purely as an educational exercise.
- The *Doom RPG* mobile era required fitting an entire role-playing title into a 128 KB application footprint. - Mobile computing transitioned from basic feature phones to multi-gigahertz pocket machines carrying gigabytes of RAM within the span of *Rage*'s development cycle. - The 64 KB demoscene remains an inspiration for extracting maximum artistic and technical expression from severe artificial limits.
[01:22:08](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4928s) Internal Onboarding, Tool Complexity, and the Vanishing Mod Community
Carmack addresses growing pains in studio culture and developer onboarding. Historically, id Software relied on a ruthless sink-or-swim approach: new hires were assigned a desk, shown the source code repository, and expected to become self-sufficient immediately. While self-driven engineers thrived by building isolated test cases and discovering the architecture independently, Carmack concedes that this pipeline is inefficient for an expanding company. This onboarding friction is especially punishing in content creation. Artists arriving with extensive experience in the Unreal Engine discover that their workflows do not translate to id's internal toolset, where there are neither polished SDKs nor commercial books to guide them.
This friction mirrors a distressing industry-wide shift away from grassroots game modding. Although id plans to ship the world editor alongside *Rage*, Carmack is realistic about its limited community utility: players can easily tweak entity layers and rearrange monster placements, but constructing an entirely original MegaTexture from scratch requires immense computing power, time, and specialized technical knowledge. The loss of an active mod scene deprives id of its traditional talent pipeline, leaving Carmack mourning the era when independent hobbyists mastered id's toolchains before ever stepping foot in the studio: “It does sadden me that that that we don't have that anymore, and that means we don't have the pool of people to to draw on.”
[01:23:53](https://www.youtube.com/watch?v=4zgYG-_ha28&t=5033s) Announcing the Open-Source Release of id Tech 4 (Doom 3)
The discussion of open codebases leads Carmack into a major announcement: ZeniMax Media has granted official approval to release the complete source code for *Doom 3* (id Tech 4) before the end of the year. The announcement draws enthusiastic applause from the QuakeCon audience. Carmack praises ZeniMax's progressive posture, noting that id had previously tested the waters by releasing open-source code for *Doom Classic* on iOS and *Wolfenstein: Enemy Territory*.
Freeing the id Tech 4 codebase required overcoming internal hurdles, primarily because commercial titles derived from the engine remained active in the marketplace. Both *Prey 2* (heavily modified) and Splash Damage's *Brink* relied on architectures descended from id Tech 4. Because of these commercial dependencies and the studio's laser focus on shipping *Rage*, Carmack clarifies that no engineer will be pulled off bug fixes, testing, or triage to prepare the code drop until *Rage* is finished and out on store shelves: “Obviously, we're not going to put any effort into this until *Rage* is out the door on the street; programmers are not going to be pulled off of even testing or triage or anything to to do this, but the okay has been given and it will be happening.” The legal team still needs to review the repository, dot every i, and cross every t, but Carmack highlights how supportive the corporate culture has been—sharing an anecdote from the previous ZeniMax Christmas party, where an in-house attorney approached him directly to express how personally meaningful she felt id's open-source heritage was for the wider community.
[01:25:18](https://www.youtube.com/watch?v=4zgYG-_ha28&t=5118s) Open Source Legacy and the Call to the Industry
Reflecting on the impending release of the *Doom 3* source code, John Carmack shares his pleasant surprise at how enthusiastically the legal department embraced the idea. Having anticipated corporate hesitation, he admits to doing a double take when corporate counsel and executives reacted positively. As Carmack explains, “ZeniMax has been really, really supportive of this and, you know, I almost put this out as a challenge to some of the other software companies.” He points out that numerous industry peers sit on seminal, classic codebases that could easily be published for the wider public. Releasing such software provides enormous educational value for aspiring young programmers, benefits the broader enthusiast community, and cements a company's historical legacy.
Carmack acknowledges that internally, open-sourcing code was not always universally accepted without friction. During the early days of id Software, team members debated whether freely distributing their engines gave away valuable competitive advantages or inadvertently assisted market rivals. In hindsight, however, Carmack views that debate as completely settled, noting: “There's no doubt at this point that the legacy of of the open source software has been a really good thing for id and I'm really happy that we're able to kind of continue that going forward.”
He wraps up his address by pointing out how digital distribution platforms have dramatically simplified experimenting with open-source game engines. In earlier eras, interested developers who did not already own an original boxed copy had to dig through clearance bins or search retail shelves for vintage media to obtain required game assets. With platforms like Steam offering sales, players and programmers can immediately grab the necessary *Doom 3* game data online, pair it with the newly freed source code, and start hacking away. With that final encouragement, Carmack closes out his keynote to enthusiastic applause.
- **Corporate Backing:** ZeniMax’s legal and executive teams fully backed Carmack’s plan to release the *Doom 3* source code. - **Industry Challenge:** Carmack challenges other legacy game studios to release the source code of their seminal classic titles to educate upcoming software engineers. - **Digital Convenience:** Digital distribution on Steam eliminates the historical friction of hunting down old retail discs just to acquire engine assets.
## Notable quotes > [01:06:54](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4014s) You know, one of the big lessons of a big project is you don't want people that aren't really programmers programming; you'll suffer for it. — John Carmack
> [36:35](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2195s) The cold hard truth is every game that we've done that's come out of id Software proper on our mainstream mainline has taken longer than the game before, and that cannot continue. — John Carmack
> [01:02:43](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3763s) If the analyzer can't figure it out, other programmers probably won't immediately figure it out and it will cause problems. — John Carmack
> [58:01](https://www.youtube.com/watch?v=4zgYG-_ha28&t=3481s) I'll say this quite clearly with no hesitation: any 360 developers that are listening to this, if you're not using /analyze, you are making a mistake. — John Carmack
> [36:35](https://www.youtube.com/watch?v=4zgYG-_ha28&t=2195s) I've said for years now that I think that we are past the knee of the curve in terms of what we get from graphics technology on there. — John Carmack
> [01:12:37](https://www.youtube.com/watch?v=4zgYG-_ha28&t=4357s) I'm really a remarkably unsentimental person; I don't spend a lot of time thinking about the good old days, because I see this a lot: the good old days are right now. — John Carmack
> [31:12](https://www.youtube.com/watch?v=4zgYG-_ha28&t=1872s) For a lot of things abstraction is great you want to be able to step back and say here we're doing one thing we wanted to behave just with slightly varying characteristics but when you're doing really aggressive realtime operations sometimes those abstractions will really kill you. — John Carmack
> [01:25:18](https://www.youtube.com/watch?v=4zgYG-_ha28&t=5118s) There's no doubt at this point that the legacy of of the open source software has been a really good thing for id and I'm really happy that we're able to kind of continue that going forward. — John Carmack
## Mentioned John Carmack, Rage, id Software, QuakeCon, QuakeCon 2011, The Elder Scrolls V: Skyrim, id Tech 5, MegaTexture, Xbox 360, PlayStation 3, Microsoft Visual Studio, Splash Damage, Enemy Territory: Quake Wars, Dusty 8, Tim Willits, Matt Hooper, Sony, Microsoft, Bethesda, HD Photo, Steam, OpenGL, DirectX, DirectX 11, Intel, NVIDIA, AMD, Quake, Quake III Arena, GLQuake, Doom 3, Microsoft Research, Coverity, Atari 2600, PC-lint, PVS-Studio, JPEG XR, Robert Duffy, ZeniMax Media, Raven Software, Doom 4, Doom Classic, Doom RPG, Quake 4, Wolfenstein, Wolfenstein: Enemy Territory, Brink, Prey 2, id Tech 4, SuperScript, Haskell, OCaml, C++, Java, Flash, ActionScript, Commodore VIC-20, Sony PlayStation, Nintendo 64, Cray, Xcode, iOS, Unreal Engine, Society for Creative Anachronism
## Video description As tradition goes, id's co-founder and technical director, John Carmack, kicks things off with his keynote address.
[Source](https://www.youtube.com/watch?v=4zgYG-_ha28)