Mark McCulley
Microsoft Corporation
April 9, 1996
Updated: October 28, 1996 (updated information about DirectX, DirectPlay, DirectInput, and ActiveMovie)
Have you ever awoken feeling totally disoriented, asking yourself, "What day is it? How long have I been sleeping? How did I get here?" As a software developer trying to find your way in a landscape of rapidly changing technologies, you're probably experiencing a similar feeling. The purpose of this article is to give the game and interactive-media developer a road map of this technological landscape. First I'll tell you about two important new groups of technologies, Microsoft® DirectX™ and Microsoft ActiveX™. Then I'll bring you up to date on 20 or so game and interactive-media technologies. I'll tell you which technologies are important and why and which technologies have been replaced with newer and better stuff.
Let's start with the most important stuff—DirectX and ActiveX. If you're a game, interactive-media, or Internet developer, you should pay close attention to these technologies: This is where the future lies! What follows is a brief overview of DirectX and ActiveX and then overviews of these technologies' components.
DirectX is a low-level application programming interface (API) designed specifically for high-performance applications like games. DirectX is a thin layer providing direct access to hardware services (hence the name). The technology takes advantage of available hardware accelerators and emulates accelerator services when accelerators are not present. DirectX components include:
DirectX is based on COM (Component Object Model) and therefore sports a C++ interface. However, as with other COM interfaces, DirectX methods can be called through a C-style interface. The DirectX API is slated to become a part of the standard Microsoft Win32® API.
Many of the components of DirectX were initially introduced in the Windows® 95 Game Software Development Kit (SDK). The latest edition of DirectX technology includes Direct3D and is available in the DirectX 3 SDK, which supersedes the DirectX 2 SDK and the Windows 95 Game SDK. DirectX 3 also includes Direct3DSound and updated versions of DirectInput and DirectPlay.
If you're like many of us at Microsoft, you've been wondering: "What is this ActiveX stuff?" In short, ActiveX is a brand name for Microsoft's Internet and multimedia technologies. ActiveX doesn't refer to a single technology or SDK—you'll see the term used in conjunction with many different developer technologies. As the marketing group puts it:
ActiveX is a set of open technologies which bring the power of the personal computer to the ubiquitous connectivity of the Internet. ActiveX takes the Internet beyond static documents to provide users with a new generation of more active, exciting, and useful experiences.
OLE controls are now known as ActiveX controls, and the Internet Development Kit (formerly known as Sweeper) is now the Microsoft ActiveX SDK. New multimedia technologies will be released under the ActiveX moniker as well. One of these new technologies is ActiveMovie™, formerly code-named Quartz. ActiveMovie is poised to become the framework for next-generation media-streaming technology. Pay attention to this ActiveX stuff—it's important!
The following table summarizes projected release dates for DirectX and ActiveMovie.
Technology | Platform | Beta | Release | SDK |
DirectX 3 | Windows 95 | — | Shipped | DirectX 3 SDK |
DirectX 3 | Windows NT® 4.0 | Q1 1997 | DirectX 3 SDK | |
DirectX 3 | Power Macintosh® | TBD | — | — |
ActiveMovie | Windows 95 and Windows NT | — | Shipped | ActiveMovie 1.0 SDK |
ActiveMovie | Power Macintosh | TBD | — | — |
Note Windows NT 4.0 includes the DirectX 2 release of DirectDraw, DirectSound, and DirectPlay. Support for Direct3D and components updated for DirectX 3 (new DirectPlay, Direct3DSound, and DirectInput) will be included in an NT service pack release.
Now, of course, I'm going to insert the standard disclaimer here. These dates are subject to change. We’ll let you know when scheduled release dates change by updating this page. Stay in touch!
The elves at Microsoft have been very busy lately: Several slick, new, high-performance 2-D, 3-D, and animation-graphics technologies are slated for release in 1996—DirectDraw, Direct3D, and ActiveMovie. The following diagram shows the relationship between these new technologies, existing technologies, and applications.
Figure 1. Relationship between Win32 graphics technologies
The preceding drawing is simplified for clarity and does not reflect all of the relationships between components. For example, DirectDraw, Direct3D, and ActiveMovie all depend on GDI® for some basic graphic services.
GDI is still the standard workhorse 2-D graphics API for Win32. GDI provides graphics primitives for lines and curves, filled shapes, fonts, text, bitmaps, and printing. GDI is interoperable with DirectDraw. For example, you can use GDI to draw text on a DirectDraw surface.
DirectDraw is Microsoft's composition engine for 2-D, 3-D, video, and animation. It was designed specifically for games and other applications that require high-performance graphics. DirectDraw provides the following 2-D graphics services:
DirectDraw achieves its high performance by providing a thin layer just above the video hardware, enabling device-independent access to graphics-accelerator hardware. DirectDraw works with other graphics technologies, allowing you to quickly integrate images generated by GDI, ActiveMovie, and Direct3D.
Direct3D is Microsoft's rendering engine for real-time 3-D graphics. Like DirectDraw, Direct3D enables device-independent access to graphics-accelerator hardware for services such as geometry transformations, lighting, and rasterization. Direct3D provides an integrated two-level API:
Retained mode makes it easy to add 3-D capabilities to existing Windows applications and to create new 3-D applications without creating an object- and scene-management engine. Immediate mode allows you to port your existing high-performance 3D games to the Windows platform and continue to maintain your investment in your proprietary object- and scene-management technology. Immediate mode provides a thin polygon and vertex-based layer with direct access to 3D hardware services.
Note The Reality Lab software acquired from RenderMorphics has been incorporated into Direct3D.
ActiveMovie is Microsoft's new media-streaming architecture for audio and video. It's designed from the ground up to be cross-platform and to allow streaming on the desktop or over the Internet. ActiveMovie uses DirectDraw to take advantage of graphics accelerator hardware for optimum performance and it's extensible to allow easy integration of new technologies and third-party enhancements. In addition to AVI and Apple QuickTime® media streams, ActiveMovie supports software-based playback MPEG video and audio. If you develop tools, games, or interactive media using video or audio, you'll want to be sure to keep up with what's going on with ActiveMovie.
If you create Web pages or author titles using Visual Basic®, you'll be interested in the ActiveMovie Control. You can drop this ActiveX Control into your application and get instant access to ActiveMovie video and audio-playback capabilities. And if you develop video or audio tools, look into using the ActiveMovie filter graph architecture as the framework for the next generation of your technology.
ActiveMovie is slated to replace both Video for Windows and MCI (Media Control Interface). Of course these legacy services will be available and supported in future platforms.
ActiveMovie runtime components are included with Microsoft Internet Explorer 3.0. This will allow users to download and play video and audio in all major formats on the Internet.
Softimage Inc. produces high-end 2-D and 3-D animation tools for the motion-picture industry. With credits like "Jurassic Park" and "The Mask" in their portfolio, you might guess that these folks make some pretty serious tools. You're right, you won't see anyone using Softimage tools to produce those cookie-cutter multimedia titles you see sold in $9.95 value-paks. If you're looking for film-quality animation in your titles, you should see what Softimage has to offer. Also, if you're in the multimedia-tools business, you may be interested in Softimage SDKs that allow you to extend their tools with your plug-in modules.
Softimage was acquired by Microsoft a couple of years ago, but the group operates fairly independently, maintaining its headquarters and sales and support staff in Montreal. Check out the Softimage home page (http://www.microsoft.com/softimage/) for more information about Softimage tools and SDKs.
ActiveMovie replaces the digital video technology provided by Video for Windows. Libraries will continue to be available and supported for applications using the old Video for Windows technology. For new development, you should use ActiveMovie. ActiveMovie will play AVI files as well as MPEG and QuickTime.
WinToon is a frame-based animation toolkit built on WinG and Video for Windows. It allows you to create cartoon-like animations by "blue screening" images from an AVI movie with a background image. WinToon provides the mechanics of delivering the cartoon to the screen and leaves the interactive and graphic design to the developer. Like WaveMix, WinToon is unsupported and provided "as is" by Microsoft.
Microsoft's Surround Video is some really amazing technology. With it you can use 360-degree background images created with a special panoramic camera. In titles created with Surround Video, users can interact with objects, images, and live-action video within a 360-degree photorealistic environment. The user can turn in any direction to see more of the virtual world you create. Surround Video backgrounds can easily be captured with a 360-degree panoramic camera or can be assembled with traditional 35mm photography and digitally composited with standard image-processing tools. Foreground video images can be added using the same "blue screen" techniques used by TV weather forecasters.
The Surround Video technology has been licensed to Black Diamond Consulting, Inc., for distribution to developers of games and interactive titles. Check out Black Diamond's home page (http://www.bdiamond.com/) for more information about Surround Video.
OpenGL is an industry-standard 3-D graphics command set originally developed by Silicon Graphics, Inc. It is available for both Windows 95 and Windows NT. OpenGL is often used in high-end CAD/CAM, modeling, simulation, scientific visualization, and other detailed 3-D rendering. Microsoft will continue to support OpenGL; future releases will take advantage of graphics-accelerator hardware by using DirectX technology.
OpenGL is designed for professional applications requiring high levels of accuracy; Direct3D is the technology of choice for consumer game and interactive-media development.
WinG is a graphics technology that was introduced on the Windows 3.1 platform to allow games developers to use some DOS graphics techniques under Windows. Essentially, WinG allows you to use GDI to draw on a device-independent bitmap (DIB). WinG functionality is now built into Win32 through the CreateDIBSection function.
DirectDraw should be used for new development: It provides a more comprehensive and higher performance solution for high-performance graphics than does WinG.
Some interesting new audio technologies will allow you to do pretty sophisticated development in your games and interactive titles. These technologies will also enable a whole new generation of audio editing and production tools, the likes of which have not been seen on the PC platform. If you're into audio, you should become familiar with Microsoft's DirectSound, Direct3DSound, and ActiveMovie.
DirectSound provides device-independent access to audio accelerator hardware. It gives you features like real-time mixing of audio streams and control over effects like volume and panning during playback. Like its DirectX cousins DirectDraw and Direct3D, DirectSound is a thin layer of code that provides direct access to accelerator hardware. DirectSound emulates accelerator services when accelerators are not present.
Probably the most important feature of DirectSound for games developers is its ability to play multiple audio streams simultaneously. (WaveMix technology could do this, but not nearly as well.) The hardware itself establishes the limit to the number of simultaneous audio streams. DirectSound also provides low-latency playback (on the order of 20 milliseconds) so that you can better synchronize sounds with other events.
DirectSound is a low-level API, so you still have to write code that manages playback by filling buffers and sending them to the driver. If you want a shrink-wrapped, high-level API for playing audio, take a look at the ActiveMovie Control.
Direct3DSound is a new technology that was recently released with DirectX. Like other DirectX technologies, it provides device-independent access to accelerator hardware. Direct3DSound provides 3-D sound capabilities: Using only two speakers or a pair of headphones, you can localize and move sounds in a three-dimensional space.
DirectMusic™ is an extension to DirectX that provides software-synthesizer services with support for downloadable instruments. DirectMusic is designed to take advantage of synthesizer hardware such as the SoundBlaster AWE32 when such hardware is present. DirectMusic technology will make possible a high-quality, low-bandwidth solution for playing music over the Internet as well as provide for some really interesting musical interactivity on Web pages.
DirectMusic is targeted for release by the end of 1996. Check back with us for an update!
The initial release of ActiveMovie focuses on video and provides only basic support for audio playback. If you're developing games, you'll probably want to use DirectSound and Direct3DSound. However, if you develop audio tools, take a look at the ActiveMovie filter-graph architecture: this architecture will support a new generation of audio tools.
The ActiveMovie architecture is based on streams of time-stamped multimedia data that are controlled and processed by modular components called filters. The filters are connected in a configuration called a filter graph. Like the DirectX technologies, ActiveMovie is based on C++ and uses a COM-style interface.
The Win32 multimedia API provides support for MIDI and wave audio, joystick input devices, and high-resolution timers. These legacy services will continue to be supported but are being upgraded with newer and better technologies. DirectInput provides a new set of joystick services with improved responsiveness and reliability. DirectSound replaces the low-level wave API with a COM-based API providing higher performance and the ability to mix multiple sounds in real time. MIDI services have remained essentially unchanged since the introduction of MIDI streams in Windows 95.
The Audio Compression Manager (ACM) is included in Win32 to provide transparent run-time audio compression and decompression services. The current release of DirectSound does not support compressed wave formats; you must call ACM functions to decompress audio data before writing the data to a sound buffer.
While Microsoft will continue to support ACM, the ActiveMovie filter-based architecture is designed to provide services like compression and decompression to data streams. Look for these services in a future release of ActiveMovie.
WaveMix allows simultaneous playback of multiple .WAV files. WaveMix is an unsupported, "as is" technology and is limited to 8-bit mono output. I don't recommend using WaveMix for new game development—DirectSound provides many more services than WaveMix does, and DirectSound is a technology with a future.
In addition to new audio and video technologies, DirectX includes support for connecting game players over the Internet and for extensions for new input devices like virtual-reality headgear. This section includes brief overviews of these new technologies as well as a summary of the status of MCI.
Microsoft's DirectPlay technology provides connectivity services for games and other applications. Games designed with DirectPlay allow players to connect over a local network or via a modem. When you develop a game for using DirectPlay, you need only concern yourself with the performance of the communications medium, not with the network protocol or transport providing the communications.
At the 1996 Computer Game Developers Conference, Microsoft announced the DirectPlay Internet Gaming Architecture to support online gaming. The first incarnation of the Internet Gaming Architecture is manifested in the DirectX 3 release of DirectPlay. This release includes support for a game lobby to allow players to find and participate in game sessions. It also adds support for direct serial connections and TCP/IP connections over the Internet.
DirectInput provides access to analog and digital joysticks and to other input devices that track positions in an absolute coordinate system. Examples of such input devices include touch screens, digitizing tablets, and light pens. In addition, the extended capabilities of DirectInput provide support for rudder pedals, flight yokes, and virtual-reality headgear. Each input device can have up to six axes of movement, a point-of-view hat, and 32 buttons.
The DirectInput API for joysticks is based on the Win32 joystick API but uses a new device driver architecture to improve responsiveness and reliability. DirectX 3 includes a new COM-based API for mouse and keyboard devices that provides faster response for interactive games.
The Media Control Interface (MCI) debuted with the initial release of the Multimedia Extensions to Windows 3.0. It is intended to provide a high-level scripting interface to control all sorts of media devices. Since then, numerous Visual Basic® and OLE controls have been constructed based on MCI. These controls will continue to be supported, but you should consider using ActiveMovie to provide your high-level media-streaming services. ActiveMovie services replace those in MCI to take advantage of the high performance of DirectX technologies. In fact, ActiveMovie supports a subset of the MCI command set for backward compatibility with Microsoft Video for Windows. You can also easily drop an ActiveX control for ActiveMovie into your application for instant support of popular media types such as MPEG audio and video, AVI video, WAV audio, and QuickTime video.