Carmack Keynote Address
Coverage of the John Carmack keynote written up by Josh Walrath.
Yesterday John Carmack gave his usual ninety minute keynote to kick off the 2011 QuakeCon. Every year John gets up and delivers his thoughts on the current state of id tech, the industry in general, and upcoming trends that he feels are important. He does not work from a script or slides, instead we are treated to a free-form diatribe that provides a great amount of information for those listening.
John was unhappy with the term of development for this project, and moving forward he does not expect to take six to eight years on the next project. While id helped out with Quake Wars and Wolfenstein during this time, their primary push was to get Rage out. This will certainly be a step away from all previous id titles, as this game does not push the non-stop action and monster-packed corridors that we are used to. John mentioned that this is the first game from id that he has actually enjoyed sitting down and playing for hours upon hours.
Megatextures were introduced many years ago, and while the implementation was solid for that first Rage demo back in 2005, it has faced some teething problems when faced with the wide open world and artistic aspirations of the Rage team. Megatextures has gone through an evolution to more adequately work in not only the PC environment, but also the closed console implementations.
Consoles were a challenge due to memory limitations. While the current generation of PCs features graphics cards with 1GB and more of video memory, as well as main system memory spanning from 2 GB up to 16 GB, consoles have only 512 MB of shared main memory as well as whatever swap memory is allocated with built in flash or hard drive components. Of the two consoles, the PS3 was the most constrained due to the way system memory is shared equally between the CPU and GPU.
Due to the nature of consoles, it was easier for id to optimize performance in Rage. Being able to program “close to the metal” allows id to directly leverage the hardware so that visual quality and performance comes close to what is being offered on the PC. This is certainly an area where a lot of work on Megatextures was done, as these textures are 128K by 128K in size (standard textures are upwards of 4K x 4K at the highest resolution).
Not all is rosy on the PC side though. While a high end PC is upwards of 10x more powerful than either the PS3 and XBox 360, there are several layers of abstraction (driver, API, etc.) that commands have to go through. While Microsoft has worked to improve this situation, it is still an issue with any game development. John certainly would like to see “close to the metal” implementations on the PC, unfortunately this is not going to happen anytime soon. For example, while being able to directly write to a memory space on a console, the PC exhibits what John calls “leaky abstraction”, which in turn ends up virtualizing these addresses and then has to translate the programmed address to where it is actually stored. With well written code this becomes increasingly inefficient as these applications become more complex and relies more heavily on larger address spaces. Also there is a “history” to many PC functions and extensions that date back more than 20 years. This is the reason why programs such as Quake will still run on modern 64 bit operating systems.
John also wants to attempt to program more research engines after Rage ships. Once things are wrapped up and all major issues addressed, it is time for John to get back to some experimental research in coding and engine design. He also has an aerospace company that he has ignored for the past several months to get Rage out the door.
Coming out of the gate Rage will not implement tessellation, nor will it be bolted on at a later date. John was pretty adamant that an engine and the art assets need to be focused on tessellation from the very beginning, otherwise things start looking pretty goofy. It is also questionable whether Rage will fully support AMD’s Eyefinity or NVIDIA Surround, not to mention 3D.
Other Topics of Interest
John spoke at length about verifying code and how important that is going forward. Any code base is becoming simply huge, and simple mistakes that would not show themselves when written, but become show stoppers when the scope of the program exceeds the limitations of that poorly written code.
The big news is that id will be releasing the source code of Doom 3. When id was an independent developer, releasing source code was not a big issue legally. John was quite happy to find out that Bethesda Legal was not opposed to him releasing source code for previous products. The only potential pitfall to this would be software code patents. Essentially everyone knows they are violated many patents when writing millions of lines of codes, and there is a fear that some potential legal problems could arise from releasing the source code. Until these fears actually manifest themselves, id will continue to release the source code for their previous engines under the GPL.
OpenCL and other GPGPU programming languages are not of great interest so far for John. While they do some neat things, he so far is more interested in using the multiple cores on current x86 and ARM processors.
When questioned about his interest in voxel based engines, John surprised a few of us with his answer. Apparently he has written several voxel based engines over the years, often right after some of their major gaming releases. The infinite detail that voxels can address is obviously of great interest, but he feels that even with current (and fast) hardware it is still inferior in many ways to current polygon/raster based rendering. When we consider the 40 years of development behind the current techniques, other technologies like voxels and ray tracing have a ways to catch up. John does feel that in the end ray tracing will win out, but when we consider that operations such as animations, deformations, and even skeletal systems are not in place in ray tracing, we see that there are still many hurdles remaining for this to become a viable technology in the gaming industry.
Finally John revealed that while they had hired a person to work on porting their mobile games to the Android environment, that particular project has been put on hold. id is working with companies such as NVIDIA on their Tegra development, but do not expect games to be available on Android anytime soon. For the time being the iOS environment will be the only place to get id applications.