It was obvious that any game SDK would need to support 3D graphics, and WinG had turned out not to be the ultimate solution. Microsoft had licensed SGI’s 3D API, OpenGL, for the upcoming Windows NT, a platform that was meant to be a UNIX killer, primarily focusing on supporting enterprise and high-end business solutions. It was already known that Microsoft planned to switch everything over to Windows NT after the launch of Windows 95, and there was considerable rivalry between the NT team and the Windows 95 team. So, when St. John and his colleagues approached the NT team to let them use OpenGL as part of a gaming SDK they wanted to create, they were given a flat no. The NT group wasn’t interested in supporting anything that might give Windows 95 more relevance. St. John remembers being told that they could have what NT had “when it’s a consumer OS.”
At the same time, according to St. John, Intel had announced that they were making software-based 3D APIs for Windows, and PlayStation was taking over the console market. NT, Intel, Playstation. Three almost simultaneous factors that inspired the DirectX team to develop an internal 3D API: Direct3D, knowing that this decision would place them directly into competition, not only with external threats, but with other teams within Microsoft. Engstrom didn’t particularly care about Intel or PlayStation, but he took the NT group’s flat refusal personally, and he saw it as his mission to give them the finger by developing their own 3D API.
Setting the Stage for Acquisition
In response to the NT group’s refusal to share OpenGL, and their decision to create their own 3D API, Eisler, Engstrom and St. John decided that a smart way to approach the problem was to purchase a company with the technology, expertise, and engineers they needed. Leading the acquisition research, St. John saw four possible targets for acquisition: Argonaut, Criterion, Rendermorphics, and Epic. He decided against Epic because, although Tim Sweeney was a genius, St. John didn’t want to hang everything on one genius when he could acquire several. Moreover, St. John had a deep respect for British engineers based on his experiences at Harlequin. For that reason, he favored Criterion, Argonaut, and Ren-dermorphics. “The British engineers, they were dedicated, hardworking, and their math expertise was way beyond what the US was producing. And so it strongly appealed to me buy a British engineering team… and Rendermorphics had eight geniuses. They were struggling; they were still early, but I liked their vision.”
The way he sold the idea of purchasing a company at all was to frame it as a games-only solution, one which “couldn’t possibly threaten NT’s planned supremacy in the OpenGL-based professional graphics market.”
Whose Idea Was It?
Even St. John’s rather flexible DRG expense account wouldn’t stretch to the point of acquiring a company; it was simply above his pay grade. Therefore, the first challenge was to find someone higher up the chain to authorize the purchase, but in typical St. John fashion, he didn’t just go and make a request or use traditional channels to make the case for an acquisition. Instead, he formed a conspiracy with Eisler and Engstrom to get their boss, Paul Osborne, to have the idea himself. They did this by arranging for major 3D companies to come do presentations at Microsoft, and they would invite everybody to those meetings—except Paul Osborne. “I’d say, ‘Hey, Criterion is in town. They’re showing this 3D engine off.’ The NT team is there. The consumer organization’s there. The janitors are there. The busses are there. The only person not invited to the meeting is Paul Osborne.”
They repeated this strategy with each visiting company, and Eisler and Engstrom would be sure Osborne knew about it. “Hey, you’re not at the big 3D meeting?” they’d ask him. And so Osborne would crash the meetings, according to St. John, and say, “Hey, this is my charter. If anybody is acquiring a 3D company, it’s my department. It’s going to report to me.” In this way, they forced Osborne not only to end up authorizing the purchase of Rendermorphics, but also to believe it was his own idea.
The Abrash Challenge
This next part of the Rendermorphics acquisition story involves Alex St. John and Michael Abrash. Abrash was, and still is, a leading expert on computer graphics. His expertise is unquestioned. And in the following accounts, he and St. John don’t just disagree on certain details… they disagree on everything. As an author and historian, my job is to seek the truth, but with a clear understanding that truth can be subjective and, let’s face it, people can sometimes have contradictory and yet valid beliefs. So, I will present the two sides of the story, and you can judge for yourself what you think really happened, keeping in mind that the end result is incontrovertible.
The second challenge that St. John faced in getting approval to purchase Rendermorphics was of a different sort. Paul Maritz, executive vice president of the Platforms Strategy and Developer Group, had told Osborne that the acquisition of Rendermorphics would only be considered if Mike Abrash approved of it. Abrash was at the time Microsoft’s leading expert on computer graphics. Not only was he a published author on the subject, but he was widely respected throughout the graphics community. At Microsoft, what he said was law, and, in a very real sense, he was capable of stopping the Rendermorphics acquisition. In fact, he could squash any 3D graphics API on the Windows 95 side because, as part of the NT group, he was working on a 3D graphics API for OpenGL called 3DDDI (3D Device Driver Interface).
Unlike Paul Osborne, who was not very technical, Abrash was an expert, and there was no getting around that. But Abrash was also quiet and, by his own admission, a non-political man who really didn’t play in the same devious sandbox as St. John, Eisler and Engstrom did.
St. John’s Story
According to St. John, the tactic they used to persuade Abrash had similarities to the one used on Osborne… they claimed to know what drove Abrash, and they used it against him. “The thing that we realized about Abrash is that he really wanted to own 3D graphics,” says St. John. “He was frustrated that he was the expert, and even in the OpenGL team he couldn’t own the stuff. And so the song we sang to him was if you come over and help is with this, it can be your API. You can define it. You can be the visionary genius, and you can run a whole multimedia team over here.”
Not content with simply appealing to Abrash’s ambitions, St. John, Eisler and Engstrom engaged in a new tactic, which they called “Abrashing.” The concept behind Abrashing was to steal his credibility by becoming his biggest, most vocal and most avid supporters. “He was like a religion. In the absence of anybody else knowing anything about 3D or graphics, whatever Abrash said was what went within the organization. You couldn’t dispute his point of view, so if you criticized Abrash or tried to criticize him, you lost an argument immediately. ‘You’re not Mike Abrash. You don’t have three books and aren’t the famous graphics guy, and everybody likes him…”‘ So, every time they talked about anything related to 3D graphics, such as the acquisition of Rendermorphics or any of their Direct API efforts, they would refer to Abrash. “Abrash says this…” “Abrash… so brilliant… da da da.” In other words, they would become the foremost proponents of everything Mike Abrash said or did. Being far more verbal and aggressive than the quiet and serious Abrash, they were able to get everything they wanted by using his credibility without having to argue with him “because we did a better job of pretending that we represented his point of view than he did himself.”
Nobody can state definitively if having Abrash join the Direct3D team would have resulted in a successful collaboration, but there was reason to believe it would not have worked out particularly well. At one point, St. John said, “Abrash was brilliant, and we would have been happy to have him.” He said that there was never ill intent toward Abrash. He was just in the way, and he could join them or oppose them. Abrash, on the other hand, was, quite reasonably, wary.
Abrash’s Story
At the time the Rendermorphics acquisition was being considered, Abrash was a dev manager with four dev leads and “about 15 people, total, under me.” He claims that Otto Berkes was working on 3DDDI under his direction, “and I gave one GDC talk about it, but it was very much a sideline for me.”
Abrash contends that there was never any need to convince him to support the Rendermorphics acquisition. He had met the key people from Rendermorphics—Servan Keondjian, Kate Seekings, and Doug Rabson—when they first visited Microsoft. “I immediately hit it off with them and was impressed and thought they’d be a great way for Microsoft to move fast in 3D.”
Abrash also recounts a meeting with Paul Osborne, Paul Maritz and several others—including Bill Gates. The subject of the meeting was the Rendermorphics acquisition. “Bill didn’t see any reason it made sense, and was very dismissive for about 15 minutes, until I pointed out that 3D hardware was coming, and with it would come resources, like texture memory, that would need to be allocated and managed.” At that point, he notes that the tone of the discussion changed and Gates came around to supporting the acquisition. “And of course Bill was right, as D3D ultimately showed.”
As to St. John’s assertion that his approval of the acquisition was contingent on promises they made to him, he replies, “Oh, please. This is fabricated from whole cloth. I never had any desire to lead anything. After leaving Microsoft, I never managed anything again for 20 years, which should be pretty good evidence for my level of desire to be in charge.”
Of course, St. John questions Abrash’s story, asking why he was so interested in Rendermorphics in the first place and how he came to be in a meeting with Osborne, Maritz and Gates if he had no stake in it personally. “Paul Osborne was only responsible for Windows video, Maritz had done the deal with SGI to acquire rights to OpenGL, Abrash was working on a driver model for OpenGL, and Bill Gates was already hugely invested in Talisman* and planning to make a Microsoft proprietary GPU and force it on the market… having recently acquired Softimage, an OpenGL-based 3D authoring tool.”
*Talisman was a 3D graphics solution developed by Microsoft Research. Read more about Talisman in the Online Appendix.
Rendermorphics
Servan Keondjian was one of many young people in Britain who became programmers on early home computers, such as the ZX80s and BBC Micros. Many of them got into programming assembly language games. Keondjian was no exception. He started writing his own 3D game early on, but got sidetracked developing the technology for games instead. He spent some time working for Magnetic Scrolls, a company that became popular by combining text adventures with nicely drawn still images. Keondjian met Doug Rapson while developing rapid high-end graphics software for them. Magnetic Scrolls did not transition into real-time games, however, and Keondjian teamed up with Rapson and Kate Seekings to form Rendermorphics, where they re-architected his fast graphics code for 3D and created an API. “At that time it was just Silicon Graphics’ high-end 3D hardware doing 3D, and we were showing that we could do it faster on a PC, and also on multiple platforms. We were doing some really nice, fast 3D with very high poly counts.”
Rendermorphics had competition, however. Criterion came out with Renderware and the game company Argonaut released their BRender engine. According to Keondjian, competition was good, because it started to increase awareness of 3D solutions. While most games at the time still relied on 2D graphics, 3D games were on the rise, and the time and effort it took to write a proprietary 3D engine was considerable. “It was right at that transition of game development, as it was beginning to move to more commercial teams, instead of the whole bedroom with a bunch of friends who could write good code. You just needed bigger investments, and that’s where the 3D libraries started coming in.”
Soon, the hardware makers began to develop graphics cards capable of accelerating 3D graphics, and they naturally turned to the major developers of 3D APIs, such as Rendermorphics and the others, who were already supporting 3D games. It became a race to see how many chips they could support, to write the hardware interfaces, and to make sure they could make them go really fast. And this, according to Keondjian, is where Microsoft came in, because controlling access to the hardware through Windows was important to their business model. “Suddenly there were these little companies like Rendermorphics and the potentially important business of the games industry that was beginning to do stuff through that 3D hardware that there was no way you could do it in Windows. So that was really why it was important for Microsoft to buy this technology and get it implemented into Windows.”
Keondjian remembers that his first encounter with Microsoft was meeting Alex St. John at Siggraph in 1994. At the time, he was only aware that Microsoft was working with rival BRender on a game, and so he treated the first meeting as nothing more than a casual encounter. There was no indication at the time of any further interest.
Cute Little British People
In any case, with Abrash’s approval—however it was obtained—the acquisition of Rendermorphics was able to move forward. Paul Osborne was the first to contact Rendermorphics in fall of 1994. Keondjian remembers, “We liked Paul as a person and had a good relationship with him, but he was not very clued up on code or multimedia.” After some initial talks, Osborne put Eric Engstrom, the program manager for DirectDraw, in charge of completing the acquisition. “Our first impression of Eric was that we really did not like him, as the ground was shifting through the negotiations and we could tell he was up to things. I liked Eric more, later, but it was not nice being on the side that has to deal with ‘bad’ Eric.”
During the negotiations, Microsoft was looking to reduce the price of acquisition, and at one point someone told Keondjian, “Oh, you cute little British people. We’re Microsoft. Don’t you understand?” He adds, “I can’t remember if it was actually Alex St. John that said that, but he was one of the people who were helping us understand that. That they were going to buy someone. They wanted to buy us, and basically, if they didn’t buy us they were going to put it in Windows for free, and we’d probably go out of business. That was the approach, and we understood that. Well, it took us about 3 to 5 months to fully understand that because we didn’t really want to understand that.”
Keondjian’s impressions of Windows at the time? “There was this big, fat, slow operating system that could just about barely do a window, and Windows 95 was the first step into making it cooler. So then after they bought us, we just had to get 3D in there.”
Abrash to id
Meanwhile, Mike Abrash was done at Microsoft and gave notice to his boss, Jim Allchin, in January 1995. St. John claims that he was given “titular proxy” to Rendermorphics, but if so, it wasn’t apparent to Keondjian or to Abrash himself, who continued to work in the NT division until he left toward the end of February to take a job at id Software.
Once again, St. John takes credit for influencing Abrash’s decision, and claims to have steered Abrash toward id’s John Carmack as the expert in all things 3D for games, saying, “I do recall that there was a period in-between the Rendermorphics acquisition and Abash going to id when I was constantly pressuring Abrash to do the right thing because he really didn’t know anything about gaming, and I would bludgeon him with ‘John Carmack says this’ and ‘John Carmack says that,’ which he couldn’t argue with. I did a pretty thorough job of making it clear to Mike that he really had no idea what 3D games needed and that he needed to educate himself. Abrash didn’t enjoy having another 3D authority figure used to undermine his credibility.” St. John also encouraged Abrash to engage directly with Carmack to learn more about the games side of 3D, figuring that if they met, the two might to get to know each other, which added to the probability that Abrash would leave Microsoft if things went badly for him. All of which Abrash refutes definitively.
Abrash contends that his relationship with Carmack was first initiated when Chris Hecker leaked him an alpha version of DOOM. “I emailed John saying how impressed I was. He said maybe we could get together next time he was visiting his mother in Seattle. We had lunch, and he offered me a job, and I declined.” However, Abrash kept in contact with Carmack and ultimately went to visit id in Dallas. “I looked around the area, concluded my family could live there, and took the job. Alex only figures in the picture as a key part of what would become the Direct team, which was one of the factors making working at Microsoft no fun. He had nothing whatsoever to do with my relationship with John.”
St. John also believes that Abrash was caught in a difficult position regarding his work on 3DDDI, and that he was opposed to the layered approach Keondjian was taking because it would have been far more advanced than the work he was doing, which was more suitable for CAD applications than games. “He would have had to re-architect his OpenGL driver model to be much more ambitious to keep it ahead of the driver model we were cooking up for consumer gaming. So Abrash quickly realized that he’d lost control and was stuck between a rock and a hard place so to speak.”
Keondjian agrees that the OpenGL implementation was in need of considerable changes. “Doug and I did bring the cutting edge state into Microsoft. And Alex was doing the right thing to bring that in. DDI and OGL at that time really were not ready for where 3D for games was going and needed to go in the future. When I first started talking to Mike about DDI, there was absolutely no way it could even do texture mapping, and we were doing loads of that in software rendering already and could see 3D hardware on the horizon that would do that soon. But saying that, I could have found a home for DDI as an optional driver for D3D (optional as doing it under the hood so users would never see it or know, but just support all options). And D3D could have added all that layering. Mike was also amenable to putting in some of the innovations we had come up with at Rendermorphics to really accelerate triangle throughput, so I could have made it all fit together quite nicely.”
As to why Keondjian ultimately made the decision to support the DirectX effort he says, “I wanted better software and I wanted 3D hardware for the masses as soon as possible. That’s why I did it.”
While St. John claims that he had no intention of making an enemy of Abrash, whom he respected, Engstrom was a different story. He was so pissed off with the NT group that he took a much more aggressive approach, making sure that everybody knew how they had intentionally given the middle finger to the OpenGL team, including Abrash. In the end, it seemed that getting rid of Abrash was the only solution left. Typically ruthless, St. John sums it up. “We were happy to have his talent helping us with 3D if he wanted to help us. But if he didn’t want to help us, then fuck him… I feel terrible about it. I have blood on my hands. We got him to say yes. We dumped him. We stole his credibility. Got Rendermorphics and then just ran off with it. Dumped 3DDDI in favor of making our own 3D driver architecture. Then, what could Abrash do, but quit? And where did he go? Id.”
Cameron Myhrvold, who had unleashed St. John on Microsoft, was aware of what was happening. “Basically, where they could, and people were in their way, they’d figure out ways to try to get them fired. Now Abrash was way too talented to ever get fired, but what they did is they convinced a game ISV, id, the guys that made DOOM, they hired Michael, and that removed Michael as an obstacle in the halls of Microsoft.”
Whatever the truth behind it is, Abrash did ultimately decide to leave Microsoft and go work with Carmack, but when he told his boss, Windows NT head Jim Allchin, of his intention, Allchin asked him to reconsider. “Oh no. We’ll figure this out.” Next came Paul Maritz, who also tried to talk him out of it, followed, to Abrash’s amazement, by Bill Gates himself, who spent an hour with him. “How much is an hour of Bill’s time worth, trying to figure out how this can work? And they had me actually right on the edge of, ‘Well, I guess maybe I’ll stay.’”
After that, he didn’t hear from any of them again. Instead, they sent Alex St. John to talk with him, and to tell him that they would hold his options open for six months if he changed his mind later. “It was such an odd misreading of the situation,” he says, “because Alex had kind of made my life miserable. It’s just funny that they sent the one person who would be least likely to cause me to say, ‘Oh well. I’ll stick around.’”
To St. John, this was icing on the cake. “I couldn’t wait to deliver that message on their behalf. I was sooooo sympathetic. Oh yeah, I think we were rolling on the floor for a couple days over that one. That was the ultimate proof that ‘Abrashing’ had worked brilliantly. Everybody, all the way up to Gates, who had approved the Rendermorphics acquisition, believed we were absolutely Mike Abrash’s closest friends and biggest fans. Yeah… that must have really boggled his mind.”
Many years later, Abrash is philosophical about what happened, but acknowledges that he was the victim of some kind of coordinated efforts against him. “I kind of got made a character in this because it’s useful to have, I mean maybe not a villain, but somebody on the other side. So when Alex framed this story the way he did, it was that Chris and maybe John Carmack and I were against this. I mean, Chris is very straightforward. But there is no reason that OpenGL couldn’t have been used, except that an open API is harder to evolve and didn’t really fit with the way that Microsoft approached things at that time, as far as I could see. Alex and Eric Engstrom and Craig Eisler were on a mission to do this thing, and I’d been at Microsoft for a couple of years. I’d been the GDI lead for the first couple of versions of NT, and basically I think in some way I was an obstacle. I’m not sure exactly how. I was kind of on my way out anyway, to go work at id.”
It may be impossible to know the entire truth, since both Abrash and St. John take such opposite positions, but it’s clear that St. John’s story is consistent with the many other stories in which he figures. It’s even possible that St. John and Engstrom adopted tactics to force Abrash’s hand, even if he already supported the acquisition. They left little to chance. As St. John told me, “We were TRAINED by Microsoft to be that way. At that time other people at Microsoft DID NOT KNOW that DRG was training charismatic engineers in Art of War tactics to be that diabolical and manipulative; that was a relatively closely kept secret. It came out in the DOJ trial, but it’s worth noting that the people in this story at the time were not aware that they were dealing with Microsoft’s own custom-trained mind-control engineers. We had been taught to manipulate entire industries… I think the surprise was that we turned inward on Microsoft. Most of the people we encountered at the time had no idea what we really did for Microsoft. There was another reason we got as far as we did without getting fired… we had special latitude in our jobs…”
Microsoft Announces Acquisition of RenderMorphics, Ltd.
Industry-Leading 3-D API to Become a Key Component of Microsoft’s Multimedia Strategy
REDMOND, Wash. - Feb. 23, 1995 - Microsoft Corp… announced it has acquired RenderMorphics, Ltd., (London, United Kingdom the industry leader in 3-D programming tools and technology for personal computers. RenderMorphics’ flagship product, Reality Lab(TM), provides high-performance 3-D graphics technology for a variety of personal computer-based games and multimedia applications. Reality Lab has been acclaimed by a wide range of developers, including Autodesk, Creative Labs, Kaleida Labs and Virgin Entertainment. Games incorporating 3-D graphics effects have proven to be immensely popular with consumers and are sales leaders in the rapidly growing games market.
“This acquisition adds a key multimedia technology to the Windows (R) portfolio - real-time 3-D graphics on the standard PC platform,” said Brad Silverberg, senior vice president of the personal systems division at Microsoft. “Real-time 3-D graphics will enable the development of exciting new games and other applications that previously were only possible to run on high-priced, specialized systems.”
Reality Lab, a real-time software-rendering library, has received accolades for its functionality, performance, easy-to-use features, and its high-quality application programming interface (API). Software that uses Reality Lab, such as games, multi- media, and virtual-reality applications, delivers new levels of performance, responsiveness and 3-D realism.
“We initially chose to license Reality Lab for probably the same reasons Microsoft chose to acquire RenderMorphics - it has a fast, robust API that offers a number of unique capabilities, allowing us to produce more scalable products in a shorter development cycle,” said Christopher Yates, vice president of technology and operations at Virgin Interactive Entertainment.
“Virgin has a number of truly outstanding games coming out in late 1995 and 1996 that use Reality Lab for groundbreaking 3-D effects.”
Reality Lab is modular in structure and transparently takes advantage of hardware acceleration at any stage of the graphics pipeline, further improving performance and responsiveness for the customer. Leading hardware-accelerator companies have worked with RenderMorphics and Microsoft to ensure compatibility.
“Microsoft’s announcement marks an important step toward establishing an industry-standard 3-D games API,” said Osman Kent, president of 3Dlabs, Inc. “In conjunction with Microsoft’s 3D-DDI, this announcement will help accelerate market growth for both 3-D games and 3-D accelerators such as our GLINT chip and its derivatives.”
Microsoft plans to enhance the Reality Lab product line and make it a general-purpose, real-time 3-D API in future versions of its Windows family of operating systems products (beyond the release of Windows(R) 95). The Reality Lab API will complement support for the OpenGL(TM) API, a higher-end API specially suited to professional applications.
“Microsoft’s evangelism and pace-setting role will help bring 3-D to the mainstream of personal-computer software,” said Kate Seekings, formerly vice president of marketing at RenderMorphics and now 3-D product manager at Microsoft. “The entire team at RenderMorphics, our existing customers, and new prospects are very excited by the opportunities that lie ahead.”
Reality Lab product support, developer relations and sales will be transitioned to Microsoft’s respective divisions. Customers will be able to order the existing Reality Lab 3D version 1.1 developer kit directly from Microsoft within the next 45 days. Sales and developer information can be obtained by sending a request by e-mail to Reality3@Microsoft.com.
The acquisition of RenderMorphics is the most recent of several important announcements Microsoft has made as part of its strategy to offer easy and powerful multimedia support to users of Windows. Other recent announcements include Multisession Compact Disk support for new audio-CD format; Surround Video, a technology that enables full-screen, interactive multimedia titles with 360-degree photorealistic scenery; AutoPlay, a technology that allows CD-ROM-based titles and games to start automatically; WinG, a technology for fast game animation; DCI, a specification for enhanced video performance; WinToon, a technology for creating interactive cartoons; and support for MPEG technology for compressing digital video.
Much later, in retrospect, St. John wrote to me saying, “I think it’s perfectly reasonable to question whether or not the degree to which we attempted to manipulate Mike was entirely necessary. It was certainly cruel and unprofessional. We had, however, tested lighter approaches to navigating the Mike Abrash obstacle without success and we had been told unambiguously that his support was essential to acquiring Rendermorphics. Mike has every good reason to resent and deny the terrible things we did to him… and he did pay us back through Hecker and later by joining ID to help John become a vocal OGL advocate.”
Stepping into the Middle
“Servan was the visionary behind our choice to commit to z-buffer support for D3D. That was a crazy leap for consumer 3D back then when memory was so expensive. He believed that it would be a driving feature in consumer 3D and was correct. The OGL drivers Abrash specified had no support for it. Neither did Talisman.”
–Alex St. John
The Rendermorphics deal did not require the company to relocate to Redmond, but Keondjian was needed Stateside, and so he spent a lot of time at Microsoft. It took some adjustment. “I was actually surprised at how slow things actually went because of the politics. How much energy went into it. I mean fifty percent of my time, at least, became spent dealing with email, dealing with politics from everyone who wanted to be involved in the 3D stuff. And I knew absolutely nothing about it… Yeah. It was ridiculous.”
A Few Seeds
On one of his journeys from Britain to America to present a new hardware device driver for Direct3D to vendors, Keondjian was detained at customs. A sniffer dog detected marijuana in his bag. On inspection, it turned out that there were some seeds at the bottom of the bag, which Keondjian claims was borrowed from a friend. His visa was revoked and he was no longer able to travel in the United States. However, Microsoft’s lawyers quickly jumped into action and got him a new visa. Human Resources told him that they had no problem dealing with these issues as long as the work got done. Keondjian, none the worse for wear, nevertheless was forced to endure a bit of teasing at Microsoft.
Between Two Poles
Note: A lot of what follows in this chapter involves technical elements of 3D graphics rendering. You have been forewarned.
Keondjian worked mostly with Engstrom, but he enjoyed the company of Abrash, until he left, and Otto Berkes in the NT group because they were the only people who had any true understanding of 3D graphics. “So I was in this quite weird place, because Otto and Mike Abrash actually knew what they were doing, and I wanted to work with them. They really understood 3D, and I liked those guys. And there was Alex and Eric, who were really fighting quite a political battle, and they had a really uphill struggle to get this stuff in, and I’m not sure if Otto and Mike Abrash were friends, or even liked them at all, because they were competing groups within Microsoft. So I was really pulled between two poles.”
The conflict even reached all the way to Bill Gates at one point when Keondjian replied to an email argument by the NT team saying that OpenGL needed to be absorbed into Windows. He wrote, “Well, I’ve been told I need to create the DirectX 3D APIs the way that fits with DirectX. That’s who I’m working for in this… And there’s a good reason for having it independent, controlled by Microsoft, because we can actually lead the features that we want.” In the end, what Keondjian had to admit to the value of developing a proprietary 3D API with the features they chose, and with the flexibility to improve internally, rather than having to work with an open standard like OpenGL that they didn’t control.
Technically, Keondjian’s team made several improvements, such as building into DirectDraw a 32-bit calling layer, which allowed the 3D driver to be written in 32-bit code, where everything previously was in 16-bit. Rendermorphics software, which they called “Reality Lab,” was a 32-bit system that provided very fast 3D, and so this calling layer made it possible to use their already proven technology.
One of the keys to Rendermorphics’ speed was its revolutionary use of the Z-buffer, which actually enabled 3D graphics to run faster than even the current 3D hardware. “People did not believe this was possible, but with good programming and optimization I had worked out how to do this.”
The new 3D API—still called Reality Lab—debuted in DirectX 2.0 and introduced the concept of an execute buffer.* This was the lowest level interface they could provide for the hardcore developers, but its implementation was rushed and confusing to many developers, who found it difficult to use. This, in turn, generated a lot of bad press.
* Microsoft’s website defines execute buffer as, “A fully self-contained, independent packet of information that describes a 3-D scene. An execute buffer contains a vertex list followed by an instruction stream. The instruction stream consists of operation codes and the data that is operated on by those codes.”
It took time, and several iterations of DirectX before Microsoft’s 3D API was fully accepted by the developer community, but ultimately it was a success.
The Power of Naming
“Basically, we were Rendermorphics,” says Keondjian. “We’d come in as Rendermorphics.” And being Rendermorphics, they continued to call their API the Reality Lab, refusing to name it after the other “Direct” APIs being developed. On the other hand, there was power in the name, and Engstrom was trying to build a “Direct” API brand. The decision to change the name occurred after a meeting when Engstrom was urging Keondjian to change the name to Direct3D. “The big push from him and Craig was to get me to use the DirectDraw surface as a texture.” This one technical change made all the difference. “As soon as the DirectDraw surface was a texture in Rendermor-phics, we were basically heading the Rendermorphics API to be Direct3D, and we created the execute buffer structure and sort of hooked it all up and brought it into the Direct3D and DirectDraw interfaces.” Keondjian was also suggesting that DirectDraw disappear altogether, and that everything should run through Direct3D, but at the time this message wasn’t practical, as Direct3D was not yet proven and DirectDraw was. In time, however, that’s exactly what happened, but not until Windows 7.
A DirectDraw Image is a Texture
Keondjian explains further: “DirectDraw was all about these surfaces that have images/pixels on them. You can copy them around and move images around very quickly on the screen. That’s what DirectDraw was basically all about, whereas 3D is all about loading textures onto the hardware and then using them on 3D shapes. The 2D image is a subset of the 3D shape. In other words, a DirectDraw surface was an image buffer or sprite, but really in 3D speak this is just a texture. So what I was saying to them is that we don’t need you guys because we’ve already got all that functionality here, but they were saying, ‘But come in with our API specs, and we can form a more powerful offensive.’ That was a political decision, and it was a big shift when I said, ‘OK. We’ll do it, but that means calling this thing Direct3D,’ and that’s when I sort of broke from the Otto and Mike Abrash lot. I couldn’t work with them anymore because I was suddenly… I was very much a DirectX thing. So in the early days a texture was created from a DD surface, which was the right way to do it, but DD and D3D were still quite separate since we were only just beginning to bolt the two things together. It got cleaned up more and more over time.”
Leaving Microsoft
Keondjian left Microsoft after Direct3D was completed. He didn’t really have much interest in the politics. He was only interested in making a great 3D system for Windows. But, as much as he considered that politics at Microsoft had caused a lot of headaches for the industry at large—especially the battle between Direct3D and OpenGL—he had also come to understand how things got done at Microsoft. “None of that stuff would have happened without politics, so you have to have both, and I think that’s what I really learned at Microsoft. That is why I supported Eric and Alex, because I thought they were doing the right thing technologically. I don’t know if they did the right thing personally. I think they made enemies. I didn’t want to make enemies, but I did want to do the right thing technologically. So that was the challenging place I was put in by then, and that’s why I left in the end. That was not for me.”
Other Views on Rendermorphics
More reactions and comments from 3D developers, see the Online Appendix.
Zack Simpson
The first version of DirectX was still in development during the time that the Rendermorphics acquisition and early Direct3D development were taking place—with all the associated drama. Meanwhile, St. John, in addition to working with John Miles on sound, had contact with another Austin, Texas company, Origin Systems. He and Zack Simpson, who was then the chief of technology at Origin, had met previously, and St. John knew that the people at Origin hated Microsoft… and for his purposes, that was perfect. His thinking was that they would be the ideal people to help him in his quest to make Windows a kick-ass game platform. “If they got mad at Microsoft, I’d bring them right in and put them in front of the engineer they were upset with.”
Origin was well known in the PC game world for pushing the envelope, often requiring state-of-the-art graphics (and for some customers, major computer upgrades) to run their games. They had already hacked Windows to create proprietary technologies, such as their own Voodoo Memory System, which allowed them to access memory that was normally not accessible under Windows.
And so, in the summer of 1995, only weeks before the delivery date for the first version of DirectX, St. John invited Simpson, Frank Savage and Tony Braden to come down to Redmond and beat on Windows for a while. Origin founder Richard Garriott was happy to send them. “It really was on some level, an attempt to serve ourselves,” he says. In fact, remembering previous Microsoft failures—he specifically names Memory Manager—Garriott went from, “Please call us before you implement any of this,” to “Just let us do it.” And Simpson, Savage and Braden were happy to go, says Garriott, “because they knew that it was not only going to make their work easier back at the home office, but also that they would set the standards that most any game developer would use.”
St. John expected the Origin engineers to hate the early versions of DirectX, but more importantly, that they would be able to identify in detail exactly which parts they hated and why—parts that St. John could then fix. “So Zack would bitch to me and just rage on about how much he hated Windows. I would take everything he said, get it fixed, and then ask him to look at it to see if he was happy yet. I sucked him right in. So Zack in some ways was an unwilling accomplice because we got along great. He really liked the fact that, even though Microsoft would crap things up, I gave him access, and I would make people listen to him, and I would beat on them to pay attention to what he said… and that would produce improvements.”
From Simpson’s perspective, as much as he might have hated Windows, he also knew from conversations with St. John, starting as early as 1993, that the days of DOS games were coming to an end—a realization that many of his colleagues resisted. “I had a hard internal sell because I had to convince my programmers that DOS was going away, and that was not a popular view at the time. But it was very clear to me that DOS was going to die, and it was going to be replaced, so we had to do something.”
Simpson, Savage, and Braden spent a month at Microsoft, living in a small apartment in Redmond, and hacking out various demos and small game prototypes to test out Windows 95, then called Chicago. They were not working for Microsoft, but for Origin, says Simpson. We were there to gain knowledge so that we could come back and spread knowledge of how were going to convert all of our stuff to Windows.” He remembers Savage porting a version of Wing Commander 3 to Windows while Braden worked on some other projects. Simpson’s most memorable game prototype was a “tile-based, overhead game that involved running down the corridors of Microsoft and trying to kill Bill Gates.” This was perhaps inspired by the long-time tradition in Ultima of including obscure ways to kill the otherwise invulnerable Lord British (Richard Garriott’s in-game alias), but Simpson admits it might just as well have been a way of expressing his real feelings about Microsoft.
COM Objects and Abstraction Layers
Simpson had his beefs with Windows. He really disliked the COM (Common Object Model) that Microsoft had adopted. He saw it as overkill for the game APIs, comparing it unfavorably against more direct Win32 APIs… “In other words, just a list of useful functions that weren’t pseudo object oriented with droids all over the place. It was just very, very difficult to work with, and as far as I know, it’s still difficult to work with to this day.”
St. John’s explanation of COM validates Simpson’s opinion. “Making DirectX a COM (Common Object Model) API was another architectural abomination that we swallowed with some bitterness. COM was a strategy cooked up by the Office Products group to ‘unify’ all of the Windows Office products in a way that made them highly interdependent without it being easy for them to be accused of engaging in ‘monopolistic’ practices. The COM model had been foisted off on both OS groups as a grand strategy that everybody had to support. Every Windows API had to conform to the slow, confusing and cumbersome COM model. Half of the Developer Relations Group was devoted to promoting it to developers. We got a lot of grief from game developers for it over the years, which I believe was rightly deserved.”
In hindsight, St. John does credit the COM model for allowing future versions of DirectX to improve rapidly while preserving backward compatibility. “DirectX as a whole was in continuous development with subsets of functionality getting peeled off and ‘productized’ for release. Ironically <but intentionally> it was made possible by the early adoption of the much reviled COM model for DirectX, because it made it possible to ship one release of DirectX that was backwards compatible with all previous versions even when there were major feature differences between them. DirectX could evolve fast because it didn’t have to worry about backwards compatibility, which held back development on all other platform APIs in that era.”
One positive, Simpson notes, was that Windows made an attempt to improve on some major obstacles previously associated with DOS development. One such improvement was the addition of abstraction layers where it came to hardware interfaces for sound cards, joysticks and other hardware. “Before Windows, device drivers for DOS were like pseudo standards that weren’t very clearly spelled out, and usually proprietary, and so instead of talking to an abstraction layer, and then the abstraction layer talked to a device driver that implemented that abstraction layer, it was more like you had to go talk to the device directly.”
Simpson uses the example of sound cards in the old DOS games. “You’d have to pull down this list of sound cards and pick your exact sound card, right?” And in those days, the developers would have to write their own device drivers for nearly every sound card. The same was often true with joysticks. “We had horrendous testing matrices where we had to test every permutation of sound card and joystick.” As for video, before the advent of dedicated video cards, he says, “It was run in this kind of driverless compatibility, hacked-up direct access mode where you had direct access to the memory buffers and you wrote straight into them.”
At Origin they had to use something they called “slam,” which entailed filling a back buffer with data and then switching it to the front buffer all at once… slamming it to the front. Another method, page flipping, he said was not as reliable a solution for Origin because not all people had hardware that supported that method.
The use of abstraction layers forced the hardware suppliers to create the device drivers specifically for their products, instead of forcing each company to create custom code for each and every supported sound card and joystick.
Simpson was very happy about the inclusion of abstraction layers, but not quite satisfied. As he puts it, “Windows 95 had abstraction layers for everything office-y, and nothing game-y. You couldn’t write into a buffer anywhere and just get those pixels onto the screen. And the sound APIs had a whole bunch of latency. They were meant for mixing little dings and dongs, and stuff. They weren’t meant for multichannel, real-time continuous, low-latency sound effects. The joystick basically wasn’t even handled at all. I think there was just kind of like two button and X Y, and there was no dealing with the fact that there were all these other joystick devices.”
On the graphics side, Simpson says that games needed the pixels to go directly to the screen. From the Windows point of view, graphics information might need to go elsewhere, such as to a printer, and having that ability created overhead. With WinG, Chris Hecker had created the idea of a device independent bitmap, or DIB—a solution that definitely sped up graphics under Windows. However, it was, according to Simpson, “all very complicated, and without going into tons of crazy technical stuff, there were these 16-bit thunking layers, and it’s all very complicated to deal with because Windows 95 was a hybrid 16-bit, sort of pseudo, sometimes 32-bit operating system.”
As for WinG, Simpson says that the performance wasn’t terrible, but it wasn’t spectacular, either. Moreover, he states, “It was still conforming to the Win-dowsy title bar with the limited size window.” This was before the revelation of KillGDI. The Manhattan SDK, however, was designed from the beginning to provide full-screen, direct memory access. “It was implemented as a COM object, which was very difficult. It was a lot easier to work with WinG than it was with DirectX, but DirectX gave you lots of goodies that you needed.”
Of course, this is what St. John wanted from the Origin team, and it’s what he got. According to St. John, it was the feedback from the Orgin team that helped define what DirectX needed to become. “In some sense, DirectX is Zack Simpson’s fault,” he says. In retrospect, St. John laments the fact that he got Simpson and the people at Origin to be believers, to come to trust Microsoft to listen and respond to their needs as developers. That was St. John’s credo, but eventually, after he was gone, “Microsoft would do what Microsoft did, which is take all that good feedback until everybody was sucked in and dependent on Windows, and then ignore them again, or let things go to hell when they didn’t care anymore. I felt terrible about it, too, because, oh shit, what have I done? By giving these game developers the faith that Microsoft cared and respected and would listen to their feedback, I got them all dependent on Microsoft, which gave Microsoft the comfort to dismiss that and abuse them again.”
But, despite St. John’s expectations, Simpson isn’t bitter about it today. “I don’t have any regret. I think DOS had to die, and something had to be done to get the games onto Windows, and whether I was involved or not, even if Alex hadn’t been involved, it would have eventually happened. It just wouldn’t have happened as soon.”*
Did Games Save Windows?
St. John was not as confident as Simpson about the inevitability of Windows gaming. “Windows was at an architectural junction between the old 16-bit Windows code base embodied in Win95 and the new Windows NT code base. NT was designed from the ground up as a giant monolithic, hyper secure, bloated enterprise OS. Its abstraction layers were so thick that any hope of supporting real-time anything like gaming was hopeless and DEEPLY entrenched in the NT architecture. Windows 95 was also badly broken for gaming BUT we were able to mine it with the DirectX booby trap before it shipped and the mine was that when a DirectX library shipped with a Windows 95 game, the GAME would virtually cripple Windows 95 in order to make the game run properly. If it had not been for the WILD and unexpected success of games on DirectX, the Windows 95 code base would not have survived all the way to Windows XP, and Microsoft would not have been forced to completely re-architect NT to support games. (Recall that the DX3.0 that shipped with NT was a performance disaster, it just didn’t work.) Without the market success of DirectX and Windows 95, Microsoft would never have been FORCED to deal with gaming. The PLAN was to bury Windows95 as fast as possible after it shipped and replace it with NT. Nobody imagined that Win95 would haunt them for years after it was released because of DX. I don’t believe Microsoft could or would have ever overhauled NT if Windows 95 hadn’t defined the standard that NT had to meet for gaming. Nobody in the NT org was ever going to call on id or Zack for input on how to make games work… the day would never have come.”
Back at Origin
When Simpson, Savage and Braden returned to Origin, they found that their colleagues had removed the doors to all of their offices, boarded them up with sheet-rock and painted over them—”just basically erased the existence of our offices.”
Each of them responded differently. Simpson had somebody draw an outline of his body on the wall—”like a dead body outline”—and he took a reciprocating chainsaw and cut an exact-size hole in the wall, which he used to enter the office. Frank Savage made a small mouse hole at the bottom of the wall so that you had to wriggle in on your belly. He left it that way for months. Simpson finally asked him why he didn’t fix it, and Savage’s response was, “Oh, I like it that way because Chris* has to prostrate himself every time he comes to see me.”
*Chris Roberts, the creator of Wing Commander
Simpson says he’s pretty sure that Richard Garriott was behind the prank, and when I asked him if that was true, Garriott smiled slyly and said, “But of course.” In fact, pranks were fairly common at Origin in those days, in large part because of Garriott’s mother. “My mother would do things like, when we’d go out to see a scary movie, in the middle of the night she would do something like come rub a hairbrush on our door, make a “Scraaaaaatch” sound on the door.” Garriott remembers another of his mother’s pranks, which perhaps helped inspire the one played on Simpson and the others returning from Microsoft. “When my sister was young, we got some brown wrapping paper—the kinds of paper my mom used to use in her art studio—and we sealed in my sister’s room with paper painted as if it was a brick wall, so in the morning when she got up to open her door, she would find a brick wall there.”
Back to Origin, it also happened that a building crew was onsite doing some remodeling, “So thinking back on the way my mother used to do these torturous things to us as a kid, we had the people and tools in the building at the moment to provide this crew of people an interesting time when they returned.” In one case, they actually took out the door and put new studs in, with baseboard and trim, sheet rocked and painted so that there was no way you could tell there had ever been an office there. For that specific office, they also mounted a fire ax on the opposite wall. Garriott remembered the “person-shaped” hole and the crawlway solutions that two of the returning members used to gain access to their offices again, and when asked about the third he said, “Oh yes, third one really did use the fire axe to chop their way in.”
Of course, revenge was the only reasonable response according to Simpson. “In retaliation, we bought like a bazillion packing peanuts and we went into Richard’s office when he wasn’t there, and we filled every single bit of volume, opened up every drawer, opening up everything, and filled it all up—100 percent packing peanuts all the way up to the roof. We built a dam, and then closed the door and pulled the dam so that when you opened the door it was like millions of packing peanuts came out.”
Some Technical Issues Raised in This Chapter
More technical information about Z-Buffers, Cap Bits and other details about the development of Direct 3D, please see “Z-Buffers, Cap Bits and the Metal” and “The Problem of Capability Bits” in the Online Appendix.
*Here James Plamondon comments: “DRG was not brought into existence to ‘sell developers on Microsoft’s APIs’; it was brought into existence to assemble inconvertible evidence, from ISVs, that Microsoft’s APIs sucked, and that they would suck less if they [were changed to do what ISVs wanted] and then go beat Microsoft’s engineers over the head with this evidence. (That, and fuck the competition, of course.) DRG was in the “make Windows suck less” business. DRG’s death knell was moving it out of the Systems Division into the Marketing Division, which dramatically weakened its ‘improve our platform focus, and over-emphasized its ‘sell our platform focus.”