Unreal Technology Features
Tim Sweeney
Epic MegaGames, Inc.
tim@epicgames.com
http://www.epicgames.com/
This document is a trade secret of Epic MegaGames, Inc.
Editing tools
- UnrealEd is a realtime level design tool based on constructive solid geometry, optimized
for building realtime 3D environments.
- UnrealEd is fully integrated into the Unreal engine, so the camera views are
what-you-see-is-what-you-get: all lighting, texture placement, and geometry operations
take effect immediately, providing extremely fast feedback while building levels.
- UnrealEd "brushes," the basic units of CSG, can be unlimited in size: no
limitations on polygon counts or convexity.
- Brushes can be generated within the editor using many built-in tools such as box,
cylinder, sphere, staircase, spiral staircase, and cone.
- Brushes can be imported from .DXF or .ASC files.
- In UnrealEd, you are one mouse click away from launching your level for play testing.
- "Texture browser" tool for easily selection and replacement of textures.
- "Surface properties" tool for easily modifying attributes of surfaces such as
alignment, scaling, panning, and special effects.
- "Actor properties" tool for visual editing of actors, similar to Visual Basic.
Mesh animation
- All mesh animations (creatures, weapons, etc) can be imported as frames from .DXF files
output from state-of-the-art tools like 3D Studio Max, Alias PowerAnimator, SoftImage, or
motion-capture tools.
- Mesh animations support interpolation enabling perfectly fluid animation at high frame
rates. With interpolation, an animation recorded at 15 fps can be played back at 40
fps perfectly smoothly.
- Support for "tweening" between disjoint animation sequences, enabling monster
and player animation to smoothly flow between actions.
Rich, organic surface support
- Texture mapping for applying base detail to surfaces.
- Multicolored light and shadow mapping for applying complex, dynamic,
multicolored lighting to surfaces with shadowing and numerous special effects, including
water refraction caustics.
- Fog mapping for applying atmospheric and volumetric lighting and fog
effects to three-dimensional volumes of space.
- Detail texture mapping to add extremely close-up details to surfaces,
such as fine wood grain, pock marks on brick surfaces, or scratches to metal surfaces.
- Macro texture mapping for adding very large scale detail to surfaces,
for example, adding erosion patterns to an outdoor landscape, or applying a hand-painted
facade to a large building.
- Parametric, fractal, and animated texture mapping support for creating
organic animating materials with endless variety, such as fire, realistically wavy water,
scum, ice, puddles, and so on.
- Translucency, modulation, and masking texture effects.
- Sky portalization enables level designers to build complex "sky
volumes" containing realistic sky, stars, moons, suns, geometry, etc. and see out of
their level into the sky box, as if the sky box is infinite in size.
- Up to 12 levels of mipmapping.
- Supports texture animation sequences with variable playback rate and
automatic synchronization to one-shot special effects like explosions.
State of the art mesh support
- Curved-surface rendering support, with an adaptive level-of-detail subdivision surface
rendering algorithm, eliminating polygonization. This makes organic objects, such as
the alien cows in Unreal, exceptionally smooth and realistic.
- Supports environment mapping and chrome mapping, for reflective objects like those in Terminator
2.
- Parametric mesh deformation enables meshes to be made fatter or thinner to add variety
to organic objects.
- Character models may be "skinned" with up to eight independent texture maps of
sizes up to 256x256, enabling extremely high-detail texturing.
- Variable translucency, which enables transparent objects, like explosions and special
effects, to fade out smoothly.
- Modulation blending, enabling smooth, colored smoke and darkening effects.
Digital Sound System
- Supports 3D positioning via distance attenuation, stereo panning, doppler shifting.
- Supports software Dolby Surround sound encoding for full 360-degree panning among the
center, rear, left, and right channels (requires a Dolby decoder).
- Supports rich, ambient environmental sounds which can be fully controlled from
UnrealScript.
- Advanced software mixer supports up to 64 stereo channels of music and sound, and mixes
to a 32-bit buffer internally for maximum sound quality.
- Supports 8- and 16-bit samples using any playback rate from 4 kHz to 44 kHz.
- Dynamic sample interpolation enables high-quality pitch shifting without distortion.
- Optimized to take advantage of Intel's MMX technology, with fallback to support
regular Pentium® processors.
- Supports DSP-style reverb and echo postprocessing on the sound effect stream.
- Aural raytracing realistically simulates the echo and reverb characteristics of complex
environments. When enabled, UnrealEd pre-computes a reverb kernel for each
designer-specified zone in the level.
- Supports Microsoft DirectSound and legacy WinMM sound output for backwards
compatibility.
- Plug-in interface makes it possible to integrate other sound systems into the Unreal
technology.
Digital Music System
- Supports both CD audio and realtime digitally mixed music. Game designers can mix
and match soundtracks in both formats to take maximum advantage of the speed and quality
of CD music and the dynamic music and Internet portability of digitally mixed music.
- Smooth and instantaneous dynamic music changes for fading between songs, fading between
tracks within a song, fading to silence, and instantly switching songs.
- Realtime mixing of musical instruments and sound effects.
- Supports volume and panning envelopes for professional composing.
- Supports up to eight octaves per sample.
- Supports all widely used module file formats, including .mod, .s3m, .xm, and .it.
Lighting
- Multicolored lighting with true colored intermixing of fuzzy shadows.
- Supports raytraced and enveloped lighting.
- Radial, cylindrical, spotlight, searchlight, ambient, spherical, shell, and 20+ special
effect lights.
- Caustic effects such as "fire waver", "watery shimmer", and the like
can be applied to lights.
- Realtime editing of lights in UnrealEd.
- Multicolored lighting supported both on 3D hardware and in all software rendering modes
(with and without MMX technology). This gives designers a far more consistent look and
feel on all target hardware than is achievable with engines which only support
monochromatic lighting in software.
- Supports lens flares and coronas.
Rendering
- Software rendered 16- and 32-bit color with special optimizations for MMX technology and
Pentium II processors.
- Hardware rendered 16-bit color (24-bit coming when supported by hardware).
Technical programming
- Programming APIs in C++ and UnrealScript.
- Complete four-way calling interface between C++ and UnrealScript, enabling development
of complete projects in either language.
- Based on rich, extensible, object-oriented class hierarchy.
- Highly modularized and replaceable, with all Unreal I game code cleanly segregated from
all general engine code.
- C++ interface based on object model similar in style to MFC, the applications framework
used by nearly all non-game Windows applications.
- UnrealScript interface based on object model similar to Java.
» Garbage collected.
» One hundred percent portable: UnrealScript code runs on all supported platforms without
recompiling.
» "Everything is an object."
» Safe client-side "sandbox" execution model.
» Fully featured set of of datatypes and operators.
» Native language support for intuitively constructing hierarchical finite state machines
(HSFM's).
Game programming
- Game programming via C++ or UnrealScript.
- Object-oriented class hierarchy that maps naturally onto game concepts (players,
monsters, inventory, triggers, etc).
- UnrealScript native language support for states and state scoping of functions,
time-based execution and latent functions, and networking. This includes replication,
priority management, reliability, and remote procedure calls (RPC), enabling developers to
easily optimize their content for Internet play.
- Advanced AI, pathfinding, and navigation system.
- Powerful, fully customizable physics system.
Networking
- Unreal includes the most advanced game networking capabilities of any game to date.
- Supports both small LAN games and large-scale, server-based Internet games.
- Gamers can travel between UnrealServers on the Internet much like browsing Web pages,
with teleporters providing a link between servers.
- Automatic downloading of new content (levels, textures, sound, models, scripts) while
browsing the Unreal universe.
- Java-style client-side scripting capabilities enable high performance even over slow
28.8K Internet connections.
Portability
- Modularization of Unreal's platform-specific code makes the engine fairly portable.
- Already up and running on MacOS with 3D hardware support and Mac<->PC networking.
- Portable to any high-end system with 16+ megs of RAM. Next-generation consoles are
appropriate but current systems like the N64 and Playstation are not feasible.
Scalability
- Built on a highly modular, object-oriented foundation, the Unreal technology is designed
to evolve through many generations of technological advances.
- There are no hardcoded limits in Unreal. Scenes and levels of arbitrary complexity are
supported; the only factor that limits complexity is virtual memory and speed.
- There are no limits on the sizes (dimensions) of polygons, enabling the creation of
large outdoor spaces. Such areas perform quite well as long as visible polygon
counts are kept within reason. This is a significant advantage over "surface
cache" based rendering, which artificially restricts the size of surfaces.
Realtime algorithmic texture engine
- Wavy textures for producing on-the-fly planar displacement mapped textures with waves
such as ponds, oceans, lava, and puddles.
- Algorithmic field-based realistic fire, explosion, particle, smoke, and steam effects.
- Animated ball and line lightning.
- All effects are fully customizable with a gigantic number of adjustable parameters and
drawing modes.
- All effects are algorithmically generated in realtime, enabling seamless animation that
never repeats.
Deliverables provided to licensees
- UnrealEd and the standalone .DXF importing tools.
- Full, commented C++ and UnrealScript source code for everything.
- All corresponding executables and data.
- Limited documentation.
- All Unreal 1 game-specific content and game scripts. (For example purposes only. Not
redistributable.)
- Updates for the duration of the license period, provided at milestones during
development, which is on average every one to two months.
Dynamic scene graph technology
Dynamic scene graph (DSG) technology is a natural extension of portal technology.
A dynamic scene graph consists of a root node, corresponding to the player's
immediate surroundings, and a hierarchical tree of child nodes. Each DSG node has a
coordinate system transformation, clipping volume, and other rendering state associated
with it. Unreal's rendering engine constructs a dynamic scene graph on-the-fly as
each frame is rendered. New scene graph nodes are generated as the viewer's
visibility propagates outward through portals. Scene graph nodes are the basic
building blocks of many realistic effects and special effects, such as:
- Mirror surfaces.
- Semireflective materials, such as marble surfaces which partially reflect light.
- Non-euclidean, redirectable "warp" portal effects for seeing through
teleporters.
- Seeing through windows into an infinite sky zone in which a sky, planets, mountains, and
other objects are constructed.
- Skies and backgrounds with independent coordinate systems for independent translation
and rotation.
The strength of DSG rendering is that all of the node effects are fully interoperable.
For example, once a mirror DSG node is defined, mirrors are automatically supported
recursively (for hall-of-mirror type effects); mirrors work with skies;
mirrors work with warp portals; warp portals work with skies, etc.
Unreal's dynamic scene graph technology is a basic building block which will be
extended in future versions of the technology to incorporate such next-generation effects
as seeing between levels, seeing across multiple servers on the Internet, and refractive
water.
A complete solution
The biggest strength of the Unreal technology, relative to third-party and homegrown
tools, is that it provides a complete solution that has stood the tough test of real-world
game development. While there are certainly some quality third-party game
components on the market, such as QSound, Motivate!, and Caviar, they all provide only a
small part of the overall 3D game-development equation. The saying "God is in
the details" is very applicable to game engine development: a cool rendering
algorithm can only be exploited if it integrates seamlessly into an engine's
collision, visibility, and file management subsystems. All of Unreal's components
are designed together; they provide a consistent programming interface; and they fully
interoperate.
As a technology developed in conjunction with a leading-edge, high-detail game, the
tradeoffs that Unreal makes on detail versus realism are fundamentally sound. For
example, some people may criticise Unreal's cyllindrical actor collision system as being
limited or low-tech compared to an IK-based system. However, this decision was
made with an accute awareness of all the ramifications it had on the overall product:
cyllindrical collision makes AI, player control programming, and network predication much
simpler, and it keeps performance up. A collision system designed in isolation would
probably be more advanced than Unreal's, and it would probably cause countless headaches
when making it work with the rest of the codebase and making it run at a decent framerate.
Unreal Q & A
Q. Regarding Unreal programming, is C++ a reasonable language to use, given that most
game development is done in C?
A. Game developers have typically trailed mainstream software developers in utilization
of programming tools by three to five years (witness the lag time in the move from
assembly language to C; from DOS to Windows; and now from C to C++). This is most likely
due to the of game programming teams to be small and thus less susceptible to the problems
of large-scale software development than applications programming teams. In the era of
game engines leading up to Quake, C has proven to be a sufficient language for
development. The primary challenge of these products was extracting speed from slow PCs.
The codebases were small and fairly simple. The programming teams were two or three guys.
For the generation of game technology that begins with Unreal, 3D hardware and faster PCs
resolve many of the speed challenges. At the same time, increased user expectations and
feature gains shift the primary programming challenge to managing large codebases and
generationally improving a technology, rather than performing a ground-up rewrite of the
technology with each new project. C++, and object-oriented programming in general,
provides a solid foundation for large projects. Application developers moved from C to C++
about five years ago in order to reap the benefits of increased development efficiency. As
things evolve from simple to complex over time, developers need to move to new tools which
enable them to manage that complexity.
Q. Why is object orientation useful in a game?
A. Because many game concepts are inherently object-oriented. For example, all actors
in the world share a set of common functionality, such as the ability to move around and
collide with other actors. All weapons also have much in common, such as the ability to
fire and the ability to hold ammo. A simple and intuitive representation for this is a
class hierarchy. On another level, object orientation encourages modular code, which is
key to having multiple programmers working on a project.
Q. What have the key Unreal developers done in the past?
A. The Unreal developers come from a wide range of backgrounds:
Tim Sweeney (lead programmer; majority owner of Epic)
- BS in Mechanical Engineering, University of Maryland.
- Founded Epic MegaGames in 1991.
- Created the company's first major game, Jill of the Jungle.
- Was Epic's president and producer on many of the company's projects through 1995.
James Schmalz (lead artist, co-designer)
- BS in Mechanical Engineering, University of Waterloo
- Created Epic Pinball in 1993, the third most successful shareware game of all time.
- Produced and illustrated Extreme Pinball, 1995.
Cliff Bleszinski (lead level designer, co-designer)
- Designer of Jazz Jackrabbit and Jazz Jackrabbit 2.
Steven Polge (AI programmer)
- BS & MS in Electronic Engineering, University of North Carolina.
- Formerly worked as an engineer at Motorola and as a programmer at IBM.
- Created the ReaperBot plug-in for Quake.
Erik de Neve (Special effects & optimization programmer)
- Author of the shareware ALife and FireEngine programs.
Q. How do 256-color palettized textures compare to 16-bit color textures?
A. Though palettized textures are twice as memory-efficient as 16-bit textures, the
graphical quality for typical materialswhich have consistent color
schemesis much higher. In 16-bit, you only get 5 bits of color resolution for red
and blue, while for a typical palettized texture, you get more precision (typically 6-7
bits) for the most frequently used colors. Epic provides an extremely high quality color
quantization routine to convert 24-bit color source textures from programs like Photoshop
and Fractal Painter to Unreal's format. The importance of the quantizer should not be
underestimated; our quantizer typically outperforms Photoshop's by a factor of four (RMS
error).
Custom palettized textures have several significant advantages over the alternatives:
- Half the memory usage of 16-bit color textures, so you can choose to either use twice as
much texture detail or halve your memory usage.
- Twice the upload speed on 3D accelerator cards. In complex environments, texture
uploading can be a significant performance drain when moving around dynamic scenes.
- Far higher quality than single-palette engines like Quake, which force all textures in a
level to use the same palette. Since each texture in Unreal can have its own palette, you
can have tremendous color variety throughout a level without using more memory.
Until 3D hardware supports native 24-bit color textureswhich will probably occur
in late 1999palettized textures are best for game textures.
Q. With many other engine developers going to an all C/C++ approach, why is Epic
banking on UnrealScript?
A. Though built-in programming languages are fairly new to gaming, they are a
time-proven feature in the world of major software applications. For example,
Microsoft Word and Microsoft Access contain a fully-featured application-specific
programming language (VBA). In the gaming space, UnrealScript enables developers to
solve game programming problems with a tool designed for realtime game interaction. There
are a few vital game programming areas where UnrealScript excels well beyond languages
like C/C++. These are:
- Time. A game typically consists of thousands of independent objects moving around
and interacting with each other over time. UnrealScript gives each object a built-in
notion of time, and the ability to efficiently execute functions that take time to
complete. Such functions include waiting, walking to a destination point, or laying an
animation sequence. Time-based code is difficult to write and maintain in C/C++, as it
must be simulated through counters and gigantic switch() statements.
- State. Say you have a monster that can be attacking, hunting, patrolling, or
dead. These are "states," actions that an actor can be performing which require
different responses to stimuli. In UnrealScript, when a monster sees a player, his
"SeePlayer" function is called, which enables him to respond. In this example,
the monster should act differently to SeePlayer when he's attacking, hunting, patrolling,
or dead. UnrealScript support states and state-scoping of functions at the language level,
which provides a far cleaner and simpler solution than the brute-force approach to states
that game developers have used in the past.
- Networking. Unreal supports very high performance, low bandwidth network play
using a variety of simulation, replication, and RPC techniques, which can all be defined
and customized in UnrealScript.
Simulation is about having players perform physics and movement calculations on actors
locally, in order to conserve bandwidth. Simulation is a double-edged sword, however,
because it only works well in certain situations. By exposing the simulation capabilities
to UnrealScript, you can tweak and optimize your scripts to achieve the best balance
between network performance and realism.
Replication is a technique which enables a game server to send an approximate
representation of the game state to game clients. Because the complete game state exceeds
a 28.8K connection's bandwidth by orders of magnitude, Unreal employs many techniques to
give clients the best approximation of the state that can be made with a given bandwidth.
Remote procedure calls (RPCs) enable a client or server to call a function on the other
end of the connection. This is a very efficient, versatile way of communicating
information like sound effects, informational messages, and special events.
- Development efficiency. Whenever you can implement a feature in one-fourth as
much code and half the time by using a specialized tool, you gain a development advantage
over all of the companies that are still doing it "the hard way".
Q. So what's the catch with UnrealScript?
A. There are two catches: low brute-force performance, and lack of support for
low-level programming. UnrealScript is a byte-code-based language so it is far slower than
C/C++ and it also lacks support for low-level programming such as calling Windows API
functions. We use UnrealScript internally for all of our high-level game programming, and
C++ for all low-level support. Because we provide a fully featured interface for calling
functions between C++ and UnrealScript, you can write select, performance critical
routines in C++ when needed. Alternatively, you could eschew UnrealScript and write all
your game code in C++, if you wanted to do it the hard way. However, when used at a
sufficiently high level, UnrealScript execution time typically consumes less than five
percent of available CPU power.
Q. What is so special about Unreal's AI?
A. When people hear of AI, they tend to think of neural networks and fuzzy logic and
fancy theoretical foundations which aren't particularly useful when the overwhelming
limitation of past 3D game AI has been that creatures don't animate smoothly and don't
know how to find their way around an environment. This is why past game AI has basically
degenerated to enemies running toward the player, bumping into walls, getting stuck in
corners, and, in general, behaving stupidly.
Unreal's major advancement to game AI, pioneered by Steven Polge, is the path network.
A path network is basically a simple, automatically-generated "map" of the level
which creatures can use to navigate from place to place. So if a creature wants to find
you, and you're all the way across a level, the creature just follows the path network,
including going up and down stairs, through twisty passageways, opening doors and
operating elevators, and so on, until it reaches you.
The foundations of Unreal's AI are based on knowledge Steven gained while designing
network routers at IBMrouting networks are quite similar in implementation to his AI
path networks. Before joining Epic, these ideas were validated in his
"ReaperBot" add-in for QuakeC, which was a very intelligent AI based deathmatch
opponent that competed against players on the same terms as the players themselves.
An example of the power of path network AI can be seen in Unreal when a Skaarj
patrolling on a ledge far above you, sees you, then goes running in the other direction,
walks through a door, and comes out behind you on the other side.
This kind of scenario makes creatures look smart, and that's our goalnot to
create monsters which are necessarily hard to kill, but to create monsters that seem smart
and devious to the average player.
Q. What are Epic's long-term plans for the Unreal technology?
A. We plan to evolve and extend Unreal for many generations, much as Windows® and the
Intel X86 architecture have evolved over many generations of breakthrough improvements.
This is possible because the Unreal engine is modular and it is possible to upgrade and
replace certain components without breaking other components (well, without breaking them too
badly).
For example, we expect that the rendering engine will be redesigned from the ground up
for each major new version of the technology, because the four-fold improvements in 3D
graphics power that are occurring each year cause old assumptions to break and make
entirely new capabilities possible.
However, the rendering code is only about 20 percent of the Unreal codebase. Though
rendering is the most visible part of the engine, the vast majority of the development
effort on the project is invested in the tools, UnrealScript, the networking
infrastructure, and the component-based architecture. These components provide a solid
foundation which we will evolve to create Unreal 2 and beyond.
Q. What development tools does the Unreal team use internally?
A. Our programming environment consists of Microsoft Visual C++ 5.0 with version
control via Microsoft Visual SourceSafe, with occasional help from NuMega Bounds Checker,
Intel VTune, and Visual Basic 5.0. Artwork is created using a combination of Fractal
Painter and Photoshop. Modeling and animation are developed with a combination of 3D
Studio 4 and Alias PowerAnimator. Level design takes place in UnrealEd with occasional use
of 3D Studio MAX and Lightwave.
Q. How does Unreal's animation system compare to those of other 3D games?
A. There are two major categories of animation systems used in current games:
- Interpolated, frame-based animation (Unreal, Quake 2).
- Hierarchical animation (Super Mario, Jedi Knight, Tomb Raider).
With frame-based animation, artists can use advanced tools like 3D Studio MAX, Alias
PowerAnimator or motion capture systems to generate animations which can move and distort
in any way possible. Frame-based animations are perfect for capturing details such as
wrinkled skin bunching up, flowing capes, and morphing. Modern engines such as Quake 2 and
Unreal add interpolation to frame animation, making movement perfectly smooth at high
frame rates.
With hierarchical animation, a model is treated as a collection of rigid interconnected
parts. Thus hierarchical animations are severely limited in their ability to capture
organic details. However, hierarchical animations have a 10X-20X memory efficiency
advantage which is why they are the format of choice for Nintendo 64 games. Some
developers have attempted to add "soft skinning" onto a hierarchical animation
system, but the results are not comparable in quality to the skinning algorithms used by
state-of-the-art modelling packages.
Probably the most overwhelming advantage of frame-based animation is that it allows
animators to use all of the capabilities of the most advanced tools available. The
advantages show up in Unreal, for example, in areas such as these:
- The extremely smooth movements of the Skaarj's tail and dreadlocks, created in 3DS4
using the Bones Pro skeletal IK plug-in.
- The smoothly morphing Blob, created in 3DS4 with a metaball plug-in.
- The particle swarm weapon effects, created in Alias PowerAnimator using particle
systems.
Another advantage of frame-based animation is its ability to work in conjunction with
curved-surface rendering techniques, to provide smooth curved surfaces that deform and
animate smoothly. Curved surface techniques are generally not useful with hierarchical
animation, as the interpenetrating-joint problems are an overwhelming visual flaw.
Q. What is Unreal's long-term strategy regarding 3D hardware?
A. We are very much looking forward to the day when the majority of game buyers have at
least a 3dfx-quality 3D accelerator. Over time, the Unreal technology will evolve
into a hardware rendering-only platform. However, we realize that in the 1998
timeframe, the majority of gamers will not have 3dfx-quality hardware and, for the
time-being, software rendering is still vitally important in a mainstream PC game.
This is why the Unreal 1 technology is targeted dually at 3D hardware and software
rendering, with emphasis on creating a consistent set of features across all target
machines. For example, Unreal supports multicolored, intermixed lighting in all
software rendering modes, which frees designers from the difficulty of creating
environments with colored lighting when these environments also look good with only white
lighting.
Q. What is Epic's outlook on Java in relation to the Unreal technology?
A. Early on in our design phase, before UnrealScript was born, we researched Java as an
in-game scripting language. While Java is a very clean language with great built-in
Internet support, we found it ill-suited for game and tools development for several
reasons.
- Java has all of the limitations that make C++ a difficult language for managing
time-based events. Time-based programming in Java and C++ quickly degenerate into
huge switch() statements because the Windows 95/NT thread schedulers (which are at the
core of each Java thread) bog down under hundreds to thousands of threads. The
UnrealScript interpretter manages thousands of virtual (non-OS) threads with little
performance penalty because it is designed for high-speed virtual context switching.
- It is inefficient and difficult to share large amounts of complex object-oriented data
between Java and C/C++, which is a fatal flaw because of the tight coordination that must
exist between a performance-critical game engine written in C/C++ and its scripting
engine. The root of this problem is that Java's object model, which defines the
binary layout and accessibility rules for Java variables and functions, is very different
from that of C/C++. UnrealScript was designed from the ground up with data
structures which mirror their C++ counterparts, such as structs, classes, and strings, so
integration between C++ and UnrealScript is fairly straightforward.
Q. Is it good or bad for me (as a licensee) that other licensees are using the Unreal
technology to create 3D games?
A. Well, there are two popular arguments here, neither of which is particularly
correct. The first is that using a popular technology is bad, because other
developers are using it and it will be harder to differentiate your product. The
other is that having it at your disposal is necessary, because some of your strongest
competitors have it.
In reality, the Unreal technology is a tool, and it should be evaluated for projects
based on how just how good of a tool it is for the job at hand. The most important
criteria are how well it suits the needs of your project, and how well it compares to
other 3D technologies which are available. As for differentiation, there are
countless ways in which you can differentiate your product from others which use the
Unreal technology, and most of those center around making unique design and artistic
decisions, just as two painters can use the same kind of paintbrush to create very
different paintings.
Another point to consider is that Unreal is in many ways a mini-platform of its own.
Windows and the Nintendo 64 are full-blown platforms. The 3dfx hardware is a
mini-platform, in that many developers are targeting it specifically, and even more are
optimizing their products for it. Java is a mini-platform. Historically, there
has been safety in numbers in newly evolving platforms, and Bill Gates described this as
an "upward spiral": as more developers invest in the platform, it becomes more
successful, enabling increased reinvestment in the platform. Unreal has many
attributes which have been characteristic of platforms that have rapidly risen to success
in the past:
- High quality development tools.
- Strong first-party product development, in the form of Epic's initial Unreal title.
- Strong third-party product development, including Microprose's "Star Trek: First
Contact" and "Star Trek: Klingons," and Legend Entertainment's "Wheel
of Time."
- IHV and partner support, including NEC's commitment to create an optimized PowerVR
driver for Unreal and MPath's commitment to develop plug-in MPath support for the Unreal
technology.
- Grass-roots support, as evidenced by the 100+ Unreal fan sites on the Internet, for
example www.unreal.org and www.unrealnation.com .
Licensing & business information
Contact Mark Rein: mrein@epicgames.com, 1-905-939-8174.