GAME ARCHITECTURE & PROGRAMMING

Game Architecture and Programming introduces readers to the technologies and software engineering practices used in the game industry today. It helps readers learn the basics of creating a PC game based on DirectX. The topic is effectively branched into two parts: game architecture and game programming. The examples and programming codes are practical and interesting to implement, hence providing a very engaging readership experience. It expects the reader to be familiar with C and C++ programming and have a very basic understanding of Windows programming. Once done, the readers will be able to build their first game on Windows by writing their own graphics and logic engine.
GAME ARCHITECTURE
core design
Core Design was a British video game developer best known for creating the popular Tomb Raider series. Based in the city of Derby, England, Core Design was set up in 1988 by Chris Shrigley, Andy Green, Rob Toone, Terry Lloyd, Simon Phipps, Dave Pridmore, Jeremy Heath-Smith, Kevin Norburn and Greg Holmes. Most were former employees of Gremlin Graphics. The studio was part of distribution company CentreGold when it was acquired by Eidos Interactive in 1996. Eidos subsequently sold most of CentreGold, but retained U.S. Gold, the owners of Core Design. Core had a brief history of producing titles for the Sega consoles, such as Thunderhawk for the Mega-CD and later the original Tomb Raider game for the Sega Saturn.
What Is a Game?
Here are some definitions from various sources:

1. A game has “ends and means”: an objective, an outcome, and a set of rules to get there. (David Parlett)
2. A game is an activity involving player decisions, seeking objectives within a “limiting context” [i.e. rules]. (Clark C. Abt)
3. A game has six properties: it is “free” (playing is optional and not obligatory), “separate” (fixed in space and time, in advance), has an uncertain outcome, is “unproductive” (in the sense of creating neither goods nor wealth — note that wagering transferswealth between players but does not create it), is governed by rules, and is “make believe” (accompanied by an awareness that the game is not Real Life, but is some kind of shared separate “reality”). (Roger Callois)
4. A game is a “voluntary effort to overcome unnecessary obstacles.” This is a favorite among my classroom students. It sounds a bit different, but includes a lot of concepts of former definitions: it is voluntary, it has goals and rules. The bit about “unnecessary obstacles” implies an inefficiency caused by the rules on purpose — for example, if the object of Tic Tac Toe is to get three symbols across, down or diagonally, the easiest way to do that is to simply write three symbols in a row on your first turn while keeping the paper away from your opponent. But you don’t do that, because the rules get in the way… and it is from those rules that the play emerges. (Bernard Suits)
5. Games have four properties. They are a “closed, formal system” (this is a fancy way of saying that they have rules; “formal” in this case means that it can be defined, not that it involves wearing a suit and tie); they involve interaction; they involve conflict; and they offer safety… at least compared to what they represent (for example, American Football is certainly not what one would call perfectly safe — injuries are common — but as a game it is an abstract representation of warfare, and it is certainly more safe than being a soldier in the middle of combat). (Chris Crawford)
6. Games are a “form of art in which the participants, termed Players, make decisions in order to manage resources through game tokens in the pursuit of a goal.” This definition includes a number of concepts not seen in earlier definitions: games are art, they involve decisions and resource management, and they have “tokens” (objects within the game). There is also the familiar concept of goals. (Greg Costikyan)
7. Games are a “system in which players engage in an artificial conflict, defined by rules, that results in a quantifiable outcome” (“quantifiable” here just means, for example, that there is a concept of “winning” and “losing”). This definition is from the book Rules of Playby Katie Salen and Eric Zimmerman. That book also lists the other definitions given above, and I thank the authors for putting them all in one place for easy reference.
Games Mean Gameplay
Gameplay is the specific way in which players interact with a game, and in particular with video games. Gameplay is the pattern defined through the game rules, connection between player and the game, challenges and overcoming them, plot and players connection with it. Video game gameplay is distinct from graphics, and audio elements.
Arising alongside video game development in the 1980s, the term gameplay was used solely within the context of video or computer games, though now its popularity has begun to see use in the description of other, more traditional, game forms. Generally, gameplay is considered to be the overall experience of playing a video game excluding factors like graphics and sound. Game mechanics, on the other hand, is the sets of rules in a game that are intended to produce an enjoyable gaming experience. Academic discussions tend to favor terms like game mechanics specifically to avoid gameplay since the latter term is too vague.
Gameplay types

There are three components to gameplay: “Manipulation rules,” defining what the player can do in the game, “Goal Rules,” defining the goal of the game, and “Metarules,” defining how a game can be tuned or modified. In video games gameplay can be divided into several types. For example,cooperative gameplay involves two or more players playing on a team, while in deathmatch gameplay players attempt to kill each other[citation needed]. Another example is "twitch" gameplay which is based around testing a players reaction times and precision, maybe in rhythm games or first-person shooters. Various gameplay types are listed below.
1. Asymmetric gameplay
2. Cooperative gameplay
3. Deathmatch
4. Emergent gameplay
5. Hack and slash
6. Leveled gameplay
7. Micromanagement
8. Nonlinear gameplay
9. Passive gameplay
10. Twitch gameplay
Initial Design
check out this simple game designing
1) Software architecture in general uses certain rules ,heuristics and pattern rules,heuristics and pattern
1. the problem is portioned so system can be easily maintained
2. the interfaces are created between these partions
3. the overall structure is maintained and the fow s made easy
4. Techniques are used to interface the system to its environment
5. Development and delivery approaches ,techniques and tools can be properly planned and executed
2) Architecture is important because
1. It controls complexity
2. It ensures best practices are followed
3. It takes care of consistency and uniformity
4. It increase predictability
5. It allows reuse
Game abstraction

1. Abstraction emphasizes on the idea and properties rather than how it works
2. It greatly reduces the complexity in large program by hiding irrelevant details
3. Game abstraction is the way by which game object interact
4. many gaming software objects are designed to communicate via API so that logic in gaming communicate via API so that logic in gaming software modules may be designed independently of each other
Hardware abstraction
1. Or every platform of different hardware configuration with different graphics card , sound card etc game have to be written and linked through common interface
2. Hardware abstraction will act as an interface between application and the hardware
3. HA interface is not difficult since they already exists
Use of Technology
The State of the Art. Blue-Sky Research.
Blue skies research (also called blue sky science) is scientific research in domains where "real-world" applications are not immediately apparent. It has been defined as "research without a clear goal" and "curiosity-driven science." It is sometimes used interchangeably with the term "basic research." Proponents of this mode of science argue that unanticipated scientific breakthroughs are sometimes more valuable than the outcomes of agenda-driven research, heralding advances in genetics and stem cell biology as examples of unforeseen benefits of research that was originally seen as purely theoretical in scope. Because of the inherently uncertain return on investment, blue-sky projects are politically and commercially unpopular and tend to lose funding to more reliably profitable or practical research. The specific name "blue skies" to describe this kind of research is mainly used in Great Britain.
Reinventing the Wheel.

To reinvent the wheel is to duplicate a basic method that has already previously been created or optimized by others. The inspiration for this idiomatic metaphor lies in the fact that the wheel is the archetype of human ingenuity, both by virtue of the added power and flexibility it affords its users, and also in the ancient origins which allow it to underlie much, if not all, of modern technology. As it has already been invented, and is not considered to have any operational flaws, an attempt to reinvent it would be pointless and add no value to the object, and would be a waste of time, diverting the investigators resources from possibly more worthy goals which his skills could advance more substantially.
The phrase is sometimes used without derision, when a persons activities might be perceived as merely reinventing the wheel, when they actually possess additional value. For example, "reinventing the wheel" is an important tool in the instruction of complex ideas. Rather than providing students simply with a list of known facts and techniques and expecting them to incorporate these ideas perfectly and rapidly, the instructor instead will build up the material anew, leaving the student to work out those key steps which embody the reasoning characteristic of the field.
"Reinventing the wheel" may be an ironic cliche—-it is not clear when the wheel itself was actually invented. The modern "invention" of the wheel might actually be a "re-invention" of an age-old invention. Additionally, many different wheels featuring enhancements on existing wheels (such as the many types of available tires) are regularly developed and marketed. The metaphor emphasizes understanding existing solutions, but not necessarily settling for them.
development process of game
Video game development is the process of creating a video game. Development is undertaken by a game developer, which may range from a single person to a large business. Traditional commercial PC and console games are normally funded by a publisher and take several years to develop. Indie games can take less time and can be produced cheaply by individuals and small developers. The indie game industry has seen a rise in recent years with the growth of new online distribution systems and the mobile game market.
Game development is the software development process by which a video game is produced. Games are developed as a creative outlet and to generate profit. Development is normally funded by a publisher. Well-made games bring profit more readily. However, it is important to estimate a games financial requirements, such as development costs of individual features. Failing to provide clear implications of games expectations may result in exceeding allocated budget. In fact, the majority of commercial games do not produce profit. Most developers cannot afford changing development schedule and require estimating their capabilities with available resources before production.
The game industry requires innovations, as publishers cannot profit from constant release of repetitive sequels and imitations.neutrality is disputed] Every year new independent development companies open and some manage to develop hit titles. Similarly, many developers close down because they cannot find a publishing contract or their production is not profitable. It is difficult to start a new company due to high initial investment required. Nevertheless, growth of casual and mobile game market has allowed developers with smaller teams to enter the market. Once the companies become financially stable, they may expand to develop larger games. Most developers start small and gradually expand their business. A developer receiving profit from a successful title may store up a capital to expand and re-factor their company, as well as tolerate more failed deadlines.

Game development, production, or design is a process that starts from an idea or concept. Often the idea is based on a modification of an existing game concept. The game idea may fall within one or several genres. Designers often experiment with different combinations of genres. Game designer usually produces initial game proposal document, that contains the concept, gameplay, feature list, setting and story, target audience, requirements and schedule, staff and budget estimates. Different companies have different formal procedures and philosophies regarding game design and development. There is no standardized development method; however commonalities exist.
Game development is undertaken by a game developer—ranging from an individual to a large company. There can be independent or publisher-owned studios. Independent developers rely on financial support from a game publisher. They usually have to develop a game from concept to prototype without external funding. The formal game proposal is then submitted to publishers, who may finance the game development from several months to years. The publisher would retain exclusive rights to distribute and market the game and would often own the intellectual property rights for the game franchise. Publishers company may also own the developers company, or it may have internal development studio(s). Generally the publisher is the one who owns the games intellectual property rights.
7 GOLDEN GAMBITS & 3 LEAD BALLOONS
OVERVIEW:
There are some classic dos and donts of game development learned over the years of transition from garage programming to the present. The book we are using in class refers to them as the Seven Golden Gambits and the Three Lead Balloons.
7 GOLDEN GAMBITS
Gambit #1 Plan for reuse. Dont reinvent the wheel.
Gambit #2 Document everything. DOnt keep it in your head.
Gambit #3 Design first, develop second.
Gambit #4 Schedule. Make sure everybody knows the targets.
Gambit #5 Catch mistakes as you go along.
Gambit #6 Control the degree of R&D.
Gambit #7 Know when to draw the line.
3 LEAD BALLOONS
Lead Balloon #1 Bad Management
Lead Balloon #2 Feature Creep
Lead Balloon #3 Coder Insularity
GAME PROGRAMMING
Technologies:
display
check out following link for more detail
For our games we need to draw some graphics. In this case we will be using OpenGL to assist in the drawing. The graphics will be drawn onto a display. One of the first things we shall be doing within our games program is creating a display onto which we can draw. We shall spend some time discussing the display and how to create it as it be useful to illustrate some programming terminology.
Firstly we need to use the LWJGL library that we have introduced into Netbeans during the setup.
To create a display on your computer takes one statement.
Display.create();
Mixing 2D & 3D
Implementing 2D as 3D objects can have benefits when you want to mix the two (a 2D interface floating in 3D space, like Dead Space for example). In the approach I would recommend you will have a 3D object that is the root of a 2D hierarchy. Use traditional 2D rendering to an off-screen buffer for all objects below that root, then use that as a texture for the 3D object (billboarded or not). You can have as many roots as you want (usually just 1 in a pure 2D game). The problem is that 2D rendering typically works pretty differently to 3D in non-trivial cases. Render order becomes more important and trying to sort polygons in traditional ways for 3D games tends to not work super well for lots of 2D billboards. Using explicit depth layers is faster, easier, and will be more correct in the general case. The "faster" bit is probably not as important for you as you seem to think, though itll become relevant at truly large numbers of sprites.

So far as engines, most do it your first way as they use an entirely separate library like Scaleform for all of their 2D rendering. Others, like Unity, have libraries to "optimize" some forms of 2D by rendering them separately (and doing various bits of geometry batching and depth ordering) though by default usually just uses the 3D pipeline straight up with a specialized orthographic camera setup. In short, I would recommend to have both scene types, but make sure you can render either view to a texture so it can be rendered into the other scene type.
DirectX
Why develop a DirectX game?
The answer is simple: you want to make a game that is graphics- or multimedia-intensive, and can use the features that many current graphics hardware devices provide. You may find this more complicated if you are new to game development, or if you have no experience with Windows development and C/C++, but theres still some good news: this is the simplest and most cohesive version of DirectX yet and the most powerful and feature-rich.
Planning your game is essential. If you are new to game development, and your game does not have demanding graphics requirements, consider developing it as a Windows Runtime app using JavaScript or Windows Runtime app using C++, C#, or Visual Basic instead. Also, there are many gaming middleware graphics and game development packages available for Windows platforms, and for some you dont need in-depth programming knowledge.
You develop Windows Runtime apps with DirectX and C++. We recommend that you have a good foundational knowledge of computer programming before you start developing with DirectX, because you will need strong knowledge of Windows resources and computer algorithms to use it effectively. A good understanding of linear algebra and trigonometry will also help you grasp the nature of many of the types and APIs youll use as you develop your game.
What is DirectX?
DirectX is Microsofts most extensive collection of graphics and multimedia APIs for game development. There are APIs for almost all aspects of the game development process: 2D and 3D graphics, audio, input, and text resources.
DirectX contains several sets of APIs:
Direct2D, a library of 2D graphics functions.
Direct3D, a library of both 2D and 3D graphics functions, and high-level shader language APIs
DirectWrite, a library of text and font rendering functions, particularly well suited to graphics and game development.
DirectXMath, a library of numerical methods and math functions for game development.
XAudio2, a full-featured audio and signal playback and mixing library.
XInput, a library of functions that support game controllers.
Resource caching
Resource files need a resource cache. If your game has a tiny set of graphics and sounds small enough to exist completely in memory for the life of your game, you dont need a cache. Its still a good idea to use resource files to pack everything into one file; youll save disk space and speed up your games load time. Most games are bigger. If your game is going to ship on a DVD youll have almost five gigabytes to play around in, and I doubt your minimum RAM specification will require 5Gb. What youll need is a resource cache—a piece of technology that will sit on top of your resource files and manage the memory and the process of loading resources when you need them. Even better, a resource cache should be able to predict resource requirements before you need them.
Resource caches work on similar principles as any other memory cache. Most of the bits youll need to display the next frame or play the next set of sounds are probably ones youve used recently. As the game progresses from one state to the next , new resources are cached in. They might be needed, for example, to play sound effects for the first time. Since memory isnt available in infinite quantities , eventually your game will run out of memory, and youll have to throw something out of the cache.
Caches have two degenerate cases: cache misses and thrashing. A cache miss occurs when a game asks for the data associated with a resource and it isnt there—the game has to wait while the hard drive or the CD-ROM wakes up and reads the data. A cache miss is bad, but thrashing is fatal.
Cache thrashing occurs when your game consistently needs more resource data than can fit in the available memory space. The cache is forced to throw out resources that are still frequently referenced by the game. The disk drives spin up and run constantly and your game goes into semi-permanent hibernation.
Most of the interesting work in resource cache systems involve predictive analysis of your game data in an attempt to avoid cache misses. There are some tricks to reduce this problem, some of which reach into your level design by adding pinch points such as doors, elevators, or barren hallways. Some games with open maps, like flight simulators, cant do this. They have to work a lot harder. Ill show you a very simple resource cache so you can get your bearings. Then, Ill discuss why this problem generally gets its own programmer-and a good one.
design practices
Smart & naked pointers
Clearly, all smart pointers wear clothing.
If you declare a pointer to another object, youve just used a naked pointer. Pointers are used to refer to another object, but they dont convey enough information. Anything declared on the heap must be referenced by at least one other object or it can never be freed, causing a memory leak. It is common for an object on the heap to be referred multiple times by other objects in the code. A good example of this is a game object like a clock. A pointer to the clock will exist in the game object cache, the collision system, the animation system, and even the sound system.
If you use naked pointers you must remember which objects implicitly own other objects. An object that owns other objects controls their existence. Imagine a ship object that owns everything on the ship. When the ship sinks, everything else is destroyed along with it. If you use naked pointers to create these relationships you have to remember who owns who. This can be a confusing or even impossible task. Youll find that using naked pointers will quickly paint you into a corner.
Smart pointers, on the other hand, hold extra information along with the address of the distant object. This information can count references, record permanent or temporary ownership, or perform other useful tasks . In a sense an object controlled by a smart pointer " knows " about every reference to itself. The horrible nest of naked pointers evaporates, leaving a simple and foolproof mechanism for handling your dynamic objects.
Game scripting languages.
A scripting language or script language is a programming language that supports scripts, programs written for a special run-time environment that can interpret (rather than compile) and automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), and embedded systems. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language. Scripting languages are also sometimes referred to as very high-level programming languages, as they operate at a high level of abstraction, or as control languages, particularly for job control languages on mainframes.
The term "scripting language" is also used loosely to refer to dynamic high-level general-purpose language, such as Perl, Tcl, and Python, with the term "script" often used for small programs (up to a few thousand lines of code) in such languages, or in domain-specific languages such as the text-processing languages sed and AWK. Some of these languages were originally developed for use within a particular environment, and later developed into portable domain-specific or general-purpose languages. Conversely, many general-purpose languages have dialects that are used as scripting languages. This article discusses scripting languages in the narrow sense of languages for a specific environment; dynamic, general-purpose, and high-level languages are discussed at those articles.
2D Drawing and DirectX
2D graphics are a subset of 3D graphics that deal with 2D primitives or bitmaps. More generally, they dont use a z-coordinate in the way a 3D game might, since the game play is usually confined to the x-y plane. They sometimes use 3D graphics techniques to create their visual components, and they are generally simpler to develop. If you are new to gaming, a 2D game is a great place to start, and 2D graphics development can be a good place for you to get a handle on DirectX.
You can develop 2D gaming graphics in DirectX using either Direct2D or Direct3D, or some combination. Many of the more useful classes for 2D game development are in Direct3D, such as the Sprite class. Direct2D is a set of APIs that primarily target user interfaces and apps that require support for drawing primitives (such as circles, lines, and flat polygon shapes). With that in mind, it still provides a powerful and performant set of classes and methods for creating game graphics as well, especially when creating game overlays, interfaces, and heads-up displays (HUDs) or for creating a variety of 2D games, from simple to reasonably detailed.
Before the advent of modern 3D graphics and the hardware that supports it, games were primarily 2D, and many of their graphics techniques involved moving blocks of memory around usually arrays of color data that would be translated or transformed to pixels on the screen in a 1:1 fashion. In DirectX, 2D graphics are part of the 3D pipeline. There is a much greater variety of screen resolutions and graphics hardware available, and your 2D graphics engine must be able to support them without a significant change in fidelity. 2D graphics development is a great way to get accustomed to developing with Direct3D, and will allow you to spend more time on other critical aspects of game development: audio, controls, and the game mechanics.
World Design and Cache Prediction
Perhaps youve just finished a supercharged version of ResCache —good for you. Youre not done yet. If you load resources the moment you need them, youll probably suffer a wildly fluctuating frame rate. The moment your game asks for resources outside of the cache, the flickering hard disk light will be the most exciting thing your players will be able to watch.
First, classify your game design into one of the following categories:
Load Everything at Once : This is for any game that caches resources on a screen-by-screen basis or level-by-level. Each screen of Myst is a good example, as well as Grim Fandango. Most fighting and racing games work under this model for each event.
Load Only at Pinch Points : Almost every shooter utilizes this design, where resources are cached in during elevator rides or in small barren hallways.
Load Constantly : This is for open map games where the player can go anywhere they like. Examples include flight simulators, massively multiplayer games, and action/ adventure games like Grand Theft Auto: Vice City.
The first scheme trades one huge loading pause for lightning fast action during the game. These games have small levels or arenas that can fit entirely in memory. Thus, theres never a cache miss . The game designers can count on every CPU cycle spent on the game world instead of loading resources. The downside is since your entire playing area has to fit entirely in memory, it cant be that big.
Shooters like Halo on the Xbox load resources at pinch points. The designers add buffer zones between the action where relatively little is happening in the game. Elevators are perfect examples of this technique. The CPU spends almost no time rendering the tiny environment inside the elevator, and uses the left over cycles to load the next hot zone. The player cant change his or her mind in the middle of the trip until the elevator gets to the right floor.
These buffer zones will exist in many places throughout the game, providing the player with a brief moment to load weapons and rest happy trigger fingers. The designers at Bungie took advantage of this and placed a few surprise encounters in these buffer zones, something that always made me freak out when I was playing Halo.
Hallways are another good example of buffer zones. If you ever wondered why the Master Chief in Halo spends a lot of time in abandoned hallways its because the Xbox is busy loading the next section of the map. The bigger the map, the longer the hallway. Its a great design conceit because the player is moving, making it feel like the action is still there. Even better, the folks at Bungie were wise enough to use the hallways to set the tone for the next fight with Covenant forces or The Flood—sometimes it was as simple as painting the walls with enemy blood or playing some gruesome sound effects.
Dont make the player read a bunch of text in between levels just to give yourself time to cache resources. Players figure this out right away, and want to click past the text theyve read five or six times. They wont be able to since youve got to spend a few more seconds loading resources and theyll click like mad and curse your name . If youre lucky, the worst thing theyll do is return your game. Dont open any suspicious packages you get sent in the mail.
Open mapped games such as flight simulators, fantasy role playing games, or action/ adventure games have a much tougher problem. The maps are huge, relatively open, and the game designers have little or no control over where the player will go next. Players also expect an incredible level of detail in these games. They want to read the headlines in newspapers or see individual leaves on the trees, while tall buildings across the river are in plain view. Players like that alternate reality. One of the best games that uses this open world design is Grand Theft Auto: Vice City.
3D Graphics Pipeline

Graphics pipeline or rendering pipeline refers to the sequence of steps used to create a 2D raster representation of a 3D scene. Plainly speaking, once you have created a 3D model, for instance, in a video game, or any other 3d computer animation, the graphics pipeline is the process of turning that 3D model into what the computer displays. In the early history of 3D computer graphics fixed purpose hardware was used to speed up the steps of the pipeline through a fixed-function pipeline, but the hardware evolved, becoming more general purpose, allowing greater flexibility in graphics rendering, as well as more generalized hardware, allowing the same generalized hardware to perform not only different steps of the pipeline, unlike fixed purpose hardware, but even limited forms of general purpose computing. As the hardware evolved, so did the graphics pipelines, the OpenGL, and DirectX pipelines, but the general concept of the pipeline remains the same.
The 3d pipeline usually refers to the most common form of computer 3d rendering, 3d polygon rendering, distinct from raytracing, and raycasting. In particular, 3d polygon rendering is similar to raycasting. In raycasting, a ray originates at the point where the camera resides, if that ray hits a surface, then the color and lighting of the point on the surface where the ray hit is calculated. In 3d polygon rendering the reverse happens, the area that is in view of the camera is calculated, and then rays are created from every part of every surface in view of the camera and traced back to the camera.
3D Middleware Review
A game engine is a software framework designed for the creation and development of video games. Video game developers use them to create games for video game consoles, mobile devices and personal computers. The core functionality typically provided by a game engine includes a rendering engine (“renderer”) for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, and a scene graph. The process of game development is often economized, in large part, by reusing/adapting the same game engine to create different games, or to make it easier to "port" games to multiple platforms.
In the broader sense of the term, game engines themselves can be described as middleware. In the context of video games, however, the term "middleware" is often used to refer to subsystems of functionality within a game engine. Some game middleware does only one thing but does it more convincingly or more efficiently than general purpose middleware. For example, SpeedTree was used to render the realistic trees and vegetation in the role-playing video game The Elder Scrolls IV: Oblivion and Fork Particle was used to simulate and render real time Particle Systems visual effects or particle effects in Sid Meiers Civilization V.
The four most widely used middleware packages[16] that provide subsystems of functionality include RAD Game Tools Bink, Firelight FMOD, Havok, and Scaleform GFx. RAD Game Tools develops Bink for basic video rendering, along with Miles audio, and Granny 3D rendering. Firelight FMOD is a low cost robust audio library and toolset. Havok provides a robust physics simulation system, along with a suite of animation and behavior solutions. Scaleform provides GFx for high performance Flash UI, along with a high quality video playback solution, and an Input Method Editor (IME) add-on for in-game Asian chat support.
Some middleware contains full source code, others just provide an API reference for a compiled binary library. Some middleware programs can be licensed either way, usually for a higher fee for full source code.

Game Architecture and Programming introduces readers to the technologies and software engineering practices used in the game industry today. It helps readers learn the basics of creating a PC game based on DirectX. The topic is effectively branched into two parts: game architecture and game programming. The examples and programming codes are practical and interesting to implement, hence providing a very engaging readership experience. It expects the reader to be familiar with C and C++ programming and have a very basic understanding of Windows programming. Once done, the readers will be able to build their first game on Windows by writing their own graphics and logic engine.
GAME ARCHITECTURE
core design
Core Design was a British video game developer best known for creating the popular Tomb Raider series. Based in the city of Derby, England, Core Design was set up in 1988 by Chris Shrigley, Andy Green, Rob Toone, Terry Lloyd, Simon Phipps, Dave Pridmore, Jeremy Heath-Smith, Kevin Norburn and Greg Holmes. Most were former employees of Gremlin Graphics. The studio was part of distribution company CentreGold when it was acquired by Eidos Interactive in 1996. Eidos subsequently sold most of CentreGold, but retained U.S. Gold, the owners of Core Design. Core had a brief history of producing titles for the Sega consoles, such as Thunderhawk for the Mega-CD and later the original Tomb Raider game for the Sega Saturn.
What Is a Game?
Here are some definitions from various sources:

1. A game has “ends and means”: an objective, an outcome, and a set of rules to get there. (David Parlett)
2. A game is an activity involving player decisions, seeking objectives within a “limiting context” [i.e. rules]. (Clark C. Abt)
3. A game has six properties: it is “free” (playing is optional and not obligatory), “separate” (fixed in space and time, in advance), has an uncertain outcome, is “unproductive” (in the sense of creating neither goods nor wealth — note that wagering transferswealth between players but does not create it), is governed by rules, and is “make believe” (accompanied by an awareness that the game is not Real Life, but is some kind of shared separate “reality”). (Roger Callois)
4. A game is a “voluntary effort to overcome unnecessary obstacles.” This is a favorite among my classroom students. It sounds a bit different, but includes a lot of concepts of former definitions: it is voluntary, it has goals and rules. The bit about “unnecessary obstacles” implies an inefficiency caused by the rules on purpose — for example, if the object of Tic Tac Toe is to get three symbols across, down or diagonally, the easiest way to do that is to simply write three symbols in a row on your first turn while keeping the paper away from your opponent. But you don’t do that, because the rules get in the way… and it is from those rules that the play emerges. (Bernard Suits)
5. Games have four properties. They are a “closed, formal system” (this is a fancy way of saying that they have rules; “formal” in this case means that it can be defined, not that it involves wearing a suit and tie); they involve interaction; they involve conflict; and they offer safety… at least compared to what they represent (for example, American Football is certainly not what one would call perfectly safe — injuries are common — but as a game it is an abstract representation of warfare, and it is certainly more safe than being a soldier in the middle of combat). (Chris Crawford)
6. Games are a “form of art in which the participants, termed Players, make decisions in order to manage resources through game tokens in the pursuit of a goal.” This definition includes a number of concepts not seen in earlier definitions: games are art, they involve decisions and resource management, and they have “tokens” (objects within the game). There is also the familiar concept of goals. (Greg Costikyan)
7. Games are a “system in which players engage in an artificial conflict, defined by rules, that results in a quantifiable outcome” (“quantifiable” here just means, for example, that there is a concept of “winning” and “losing”). This definition is from the book Rules of Playby Katie Salen and Eric Zimmerman. That book also lists the other definitions given above, and I thank the authors for putting them all in one place for easy reference.
Games Mean Gameplay
Gameplay is the specific way in which players interact with a game, and in particular with video games. Gameplay is the pattern defined through the game rules, connection between player and the game, challenges and overcoming them, plot and players connection with it. Video game gameplay is distinct from graphics, and audio elements.
Arising alongside video game development in the 1980s, the term gameplay was used solely within the context of video or computer games, though now its popularity has begun to see use in the description of other, more traditional, game forms. Generally, gameplay is considered to be the overall experience of playing a video game excluding factors like graphics and sound. Game mechanics, on the other hand, is the sets of rules in a game that are intended to produce an enjoyable gaming experience. Academic discussions tend to favor terms like game mechanics specifically to avoid gameplay since the latter term is too vague.
Gameplay types

There are three components to gameplay: “Manipulation rules,” defining what the player can do in the game, “Goal Rules,” defining the goal of the game, and “Metarules,” defining how a game can be tuned or modified. In video games gameplay can be divided into several types. For example,cooperative gameplay involves two or more players playing on a team, while in deathmatch gameplay players attempt to kill each other[citation needed]. Another example is "twitch" gameplay which is based around testing a players reaction times and precision, maybe in rhythm games or first-person shooters. Various gameplay types are listed below.
1. Asymmetric gameplay
2. Cooperative gameplay
3. Deathmatch
4. Emergent gameplay
5. Hack and slash
6. Leveled gameplay
7. Micromanagement
8. Nonlinear gameplay
9. Passive gameplay
10. Twitch gameplay
Initial Design
check out this simple game designing
http://www.wikihow.com/Build-a-Simple-Computer-Game-Using-Batch-Script

How to Build a Simple Computer Game Using Batch Script
Batch script is a basic scripting language that runs on any Windows or MS DOS operating system, the functions are based on the commands for the command lines in these operating systems. Also its pretty cool! Making a game with this script...
1) Software architecture in general uses certain rules ,heuristics and pattern rules,heuristics and pattern
1. the problem is portioned so system can be easily maintained
2. the interfaces are created between these partions
3. the overall structure is maintained and the fow s made easy
4. Techniques are used to interface the system to its environment
5. Development and delivery approaches ,techniques and tools can be properly planned and executed
2) Architecture is important because
1. It controls complexity
2. It ensures best practices are followed
3. It takes care of consistency and uniformity
4. It increase predictability
5. It allows reuse
Game abstraction

1. Abstraction emphasizes on the idea and properties rather than how it works
2. It greatly reduces the complexity in large program by hiding irrelevant details
3. Game abstraction is the way by which game object interact
4. many gaming software objects are designed to communicate via API so that logic in gaming communicate via API so that logic in gaming software modules may be designed independently of each other
Hardware abstraction
1. Or every platform of different hardware configuration with different graphics card , sound card etc game have to be written and linked through common interface
2. Hardware abstraction will act as an interface between application and the hardware
3. HA interface is not difficult since they already exists
Use of Technology
The State of the Art. Blue-Sky Research.
Blue skies research (also called blue sky science) is scientific research in domains where "real-world" applications are not immediately apparent. It has been defined as "research without a clear goal" and "curiosity-driven science." It is sometimes used interchangeably with the term "basic research." Proponents of this mode of science argue that unanticipated scientific breakthroughs are sometimes more valuable than the outcomes of agenda-driven research, heralding advances in genetics and stem cell biology as examples of unforeseen benefits of research that was originally seen as purely theoretical in scope. Because of the inherently uncertain return on investment, blue-sky projects are politically and commercially unpopular and tend to lose funding to more reliably profitable or practical research. The specific name "blue skies" to describe this kind of research is mainly used in Great Britain.
Reinventing the Wheel.

To reinvent the wheel is to duplicate a basic method that has already previously been created or optimized by others. The inspiration for this idiomatic metaphor lies in the fact that the wheel is the archetype of human ingenuity, both by virtue of the added power and flexibility it affords its users, and also in the ancient origins which allow it to underlie much, if not all, of modern technology. As it has already been invented, and is not considered to have any operational flaws, an attempt to reinvent it would be pointless and add no value to the object, and would be a waste of time, diverting the investigators resources from possibly more worthy goals which his skills could advance more substantially.
The phrase is sometimes used without derision, when a persons activities might be perceived as merely reinventing the wheel, when they actually possess additional value. For example, "reinventing the wheel" is an important tool in the instruction of complex ideas. Rather than providing students simply with a list of known facts and techniques and expecting them to incorporate these ideas perfectly and rapidly, the instructor instead will build up the material anew, leaving the student to work out those key steps which embody the reasoning characteristic of the field.
"Reinventing the wheel" may be an ironic cliche—-it is not clear when the wheel itself was actually invented. The modern "invention" of the wheel might actually be a "re-invention" of an age-old invention. Additionally, many different wheels featuring enhancements on existing wheels (such as the many types of available tires) are regularly developed and marketed. The metaphor emphasizes understanding existing solutions, but not necessarily settling for them.
development process of game
Video game development is the process of creating a video game. Development is undertaken by a game developer, which may range from a single person to a large business. Traditional commercial PC and console games are normally funded by a publisher and take several years to develop. Indie games can take less time and can be produced cheaply by individuals and small developers. The indie game industry has seen a rise in recent years with the growth of new online distribution systems and the mobile game market.
Game development is the software development process by which a video game is produced. Games are developed as a creative outlet and to generate profit. Development is normally funded by a publisher. Well-made games bring profit more readily. However, it is important to estimate a games financial requirements, such as development costs of individual features. Failing to provide clear implications of games expectations may result in exceeding allocated budget. In fact, the majority of commercial games do not produce profit. Most developers cannot afford changing development schedule and require estimating their capabilities with available resources before production.
The game industry requires innovations, as publishers cannot profit from constant release of repetitive sequels and imitations.neutrality is disputed] Every year new independent development companies open and some manage to develop hit titles. Similarly, many developers close down because they cannot find a publishing contract or their production is not profitable. It is difficult to start a new company due to high initial investment required. Nevertheless, growth of casual and mobile game market has allowed developers with smaller teams to enter the market. Once the companies become financially stable, they may expand to develop larger games. Most developers start small and gradually expand their business. A developer receiving profit from a successful title may store up a capital to expand and re-factor their company, as well as tolerate more failed deadlines.

Game development, production, or design is a process that starts from an idea or concept. Often the idea is based on a modification of an existing game concept. The game idea may fall within one or several genres. Designers often experiment with different combinations of genres. Game designer usually produces initial game proposal document, that contains the concept, gameplay, feature list, setting and story, target audience, requirements and schedule, staff and budget estimates. Different companies have different formal procedures and philosophies regarding game design and development. There is no standardized development method; however commonalities exist.
Game development is undertaken by a game developer—ranging from an individual to a large company. There can be independent or publisher-owned studios. Independent developers rely on financial support from a game publisher. They usually have to develop a game from concept to prototype without external funding. The formal game proposal is then submitted to publishers, who may finance the game development from several months to years. The publisher would retain exclusive rights to distribute and market the game and would often own the intellectual property rights for the game franchise. Publishers company may also own the developers company, or it may have internal development studio(s). Generally the publisher is the one who owns the games intellectual property rights.
7 GOLDEN GAMBITS & 3 LEAD BALLOONS
OVERVIEW:
There are some classic dos and donts of game development learned over the years of transition from garage programming to the present. The book we are using in class refers to them as the Seven Golden Gambits and the Three Lead Balloons.
7 GOLDEN GAMBITS
Gambit #1 Plan for reuse. Dont reinvent the wheel.
Gambit #2 Document everything. DOnt keep it in your head.
Gambit #3 Design first, develop second.
Gambit #4 Schedule. Make sure everybody knows the targets.
Gambit #5 Catch mistakes as you go along.
Gambit #6 Control the degree of R&D.
Gambit #7 Know when to draw the line.
3 LEAD BALLOONS
Lead Balloon #1 Bad Management
Lead Balloon #2 Feature Creep
Lead Balloon #3 Coder Insularity
GAME PROGRAMMING
Technologies:
display
check out following link for more detail
For our games we need to draw some graphics. In this case we will be using OpenGL to assist in the drawing. The graphics will be drawn onto a display. One of the first things we shall be doing within our games program is creating a display onto which we can draw. We shall spend some time discussing the display and how to create it as it be useful to illustrate some programming terminology.
Firstly we need to use the LWJGL library that we have introduced into Netbeans during the setup.
To create a display on your computer takes one statement.
Display.create();
Mixing 2D & 3D
Implementing 2D as 3D objects can have benefits when you want to mix the two (a 2D interface floating in 3D space, like Dead Space for example). In the approach I would recommend you will have a 3D object that is the root of a 2D hierarchy. Use traditional 2D rendering to an off-screen buffer for all objects below that root, then use that as a texture for the 3D object (billboarded or not). You can have as many roots as you want (usually just 1 in a pure 2D game). The problem is that 2D rendering typically works pretty differently to 3D in non-trivial cases. Render order becomes more important and trying to sort polygons in traditional ways for 3D games tends to not work super well for lots of 2D billboards. Using explicit depth layers is faster, easier, and will be more correct in the general case. The "faster" bit is probably not as important for you as you seem to think, though itll become relevant at truly large numbers of sprites.

So far as engines, most do it your first way as they use an entirely separate library like Scaleform for all of their 2D rendering. Others, like Unity, have libraries to "optimize" some forms of 2D by rendering them separately (and doing various bits of geometry batching and depth ordering) though by default usually just uses the 3D pipeline straight up with a specialized orthographic camera setup. In short, I would recommend to have both scene types, but make sure you can render either view to a texture so it can be rendered into the other scene type.
DirectX
Why develop a DirectX game?
The answer is simple: you want to make a game that is graphics- or multimedia-intensive, and can use the features that many current graphics hardware devices provide. You may find this more complicated if you are new to game development, or if you have no experience with Windows development and C/C++, but theres still some good news: this is the simplest and most cohesive version of DirectX yet and the most powerful and feature-rich.
Planning your game is essential. If you are new to game development, and your game does not have demanding graphics requirements, consider developing it as a Windows Runtime app using JavaScript or Windows Runtime app using C++, C#, or Visual Basic instead. Also, there are many gaming middleware graphics and game development packages available for Windows platforms, and for some you dont need in-depth programming knowledge.
You develop Windows Runtime apps with DirectX and C++. We recommend that you have a good foundational knowledge of computer programming before you start developing with DirectX, because you will need strong knowledge of Windows resources and computer algorithms to use it effectively. A good understanding of linear algebra and trigonometry will also help you grasp the nature of many of the types and APIs youll use as you develop your game.
What is DirectX?
DirectX is Microsofts most extensive collection of graphics and multimedia APIs for game development. There are APIs for almost all aspects of the game development process: 2D and 3D graphics, audio, input, and text resources.
DirectX contains several sets of APIs:
Direct2D, a library of 2D graphics functions.
Direct3D, a library of both 2D and 3D graphics functions, and high-level shader language APIs
DirectWrite, a library of text and font rendering functions, particularly well suited to graphics and game development.
DirectXMath, a library of numerical methods and math functions for game development.
XAudio2, a full-featured audio and signal playback and mixing library.
XInput, a library of functions that support game controllers.
Resource caching
Resource files need a resource cache. If your game has a tiny set of graphics and sounds small enough to exist completely in memory for the life of your game, you dont need a cache. Its still a good idea to use resource files to pack everything into one file; youll save disk space and speed up your games load time. Most games are bigger. If your game is going to ship on a DVD youll have almost five gigabytes to play around in, and I doubt your minimum RAM specification will require 5Gb. What youll need is a resource cache—a piece of technology that will sit on top of your resource files and manage the memory and the process of loading resources when you need them. Even better, a resource cache should be able to predict resource requirements before you need them.
Resource caches work on similar principles as any other memory cache. Most of the bits youll need to display the next frame or play the next set of sounds are probably ones youve used recently. As the game progresses from one state to the next , new resources are cached in. They might be needed, for example, to play sound effects for the first time. Since memory isnt available in infinite quantities , eventually your game will run out of memory, and youll have to throw something out of the cache.
Caches have two degenerate cases: cache misses and thrashing. A cache miss occurs when a game asks for the data associated with a resource and it isnt there—the game has to wait while the hard drive or the CD-ROM wakes up and reads the data. A cache miss is bad, but thrashing is fatal.
Cache thrashing occurs when your game consistently needs more resource data than can fit in the available memory space. The cache is forced to throw out resources that are still frequently referenced by the game. The disk drives spin up and run constantly and your game goes into semi-permanent hibernation.
Most of the interesting work in resource cache systems involve predictive analysis of your game data in an attempt to avoid cache misses. There are some tricks to reduce this problem, some of which reach into your level design by adding pinch points such as doors, elevators, or barren hallways. Some games with open maps, like flight simulators, cant do this. They have to work a lot harder. Ill show you a very simple resource cache so you can get your bearings. Then, Ill discuss why this problem generally gets its own programmer-and a good one.

design practices
Smart & naked pointers
Clearly, all smart pointers wear clothing.
If you declare a pointer to another object, youve just used a naked pointer. Pointers are used to refer to another object, but they dont convey enough information. Anything declared on the heap must be referenced by at least one other object or it can never be freed, causing a memory leak. It is common for an object on the heap to be referred multiple times by other objects in the code. A good example of this is a game object like a clock. A pointer to the clock will exist in the game object cache, the collision system, the animation system, and even the sound system.
If you use naked pointers you must remember which objects implicitly own other objects. An object that owns other objects controls their existence. Imagine a ship object that owns everything on the ship. When the ship sinks, everything else is destroyed along with it. If you use naked pointers to create these relationships you have to remember who owns who. This can be a confusing or even impossible task. Youll find that using naked pointers will quickly paint you into a corner.
Smart pointers, on the other hand, hold extra information along with the address of the distant object. This information can count references, record permanent or temporary ownership, or perform other useful tasks . In a sense an object controlled by a smart pointer " knows " about every reference to itself. The horrible nest of naked pointers evaporates, leaving a simple and foolproof mechanism for handling your dynamic objects.
Game scripting languages.
A scripting language or script language is a programming language that supports scripts, programs written for a special run-time environment that can interpret (rather than compile) and automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), and embedded systems. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language. Scripting languages are also sometimes referred to as very high-level programming languages, as they operate at a high level of abstraction, or as control languages, particularly for job control languages on mainframes.
The term "scripting language" is also used loosely to refer to dynamic high-level general-purpose language, such as Perl, Tcl, and Python, with the term "script" often used for small programs (up to a few thousand lines of code) in such languages, or in domain-specific languages such as the text-processing languages sed and AWK. Some of these languages were originally developed for use within a particular environment, and later developed into portable domain-specific or general-purpose languages. Conversely, many general-purpose languages have dialects that are used as scripting languages. This article discusses scripting languages in the narrow sense of languages for a specific environment; dynamic, general-purpose, and high-level languages are discussed at those articles.
2D Drawing and DirectX
2D graphics are a subset of 3D graphics that deal with 2D primitives or bitmaps. More generally, they dont use a z-coordinate in the way a 3D game might, since the game play is usually confined to the x-y plane. They sometimes use 3D graphics techniques to create their visual components, and they are generally simpler to develop. If you are new to gaming, a 2D game is a great place to start, and 2D graphics development can be a good place for you to get a handle on DirectX.
You can develop 2D gaming graphics in DirectX using either Direct2D or Direct3D, or some combination. Many of the more useful classes for 2D game development are in Direct3D, such as the Sprite class. Direct2D is a set of APIs that primarily target user interfaces and apps that require support for drawing primitives (such as circles, lines, and flat polygon shapes). With that in mind, it still provides a powerful and performant set of classes and methods for creating game graphics as well, especially when creating game overlays, interfaces, and heads-up displays (HUDs) or for creating a variety of 2D games, from simple to reasonably detailed.
Before the advent of modern 3D graphics and the hardware that supports it, games were primarily 2D, and many of their graphics techniques involved moving blocks of memory around usually arrays of color data that would be translated or transformed to pixels on the screen in a 1:1 fashion. In DirectX, 2D graphics are part of the 3D pipeline. There is a much greater variety of screen resolutions and graphics hardware available, and your 2D graphics engine must be able to support them without a significant change in fidelity. 2D graphics development is a great way to get accustomed to developing with Direct3D, and will allow you to spend more time on other critical aspects of game development: audio, controls, and the game mechanics.
World Design and Cache Prediction
Perhaps youve just finished a supercharged version of ResCache —good for you. Youre not done yet. If you load resources the moment you need them, youll probably suffer a wildly fluctuating frame rate. The moment your game asks for resources outside of the cache, the flickering hard disk light will be the most exciting thing your players will be able to watch.
First, classify your game design into one of the following categories:
Load Everything at Once : This is for any game that caches resources on a screen-by-screen basis or level-by-level. Each screen of Myst is a good example, as well as Grim Fandango. Most fighting and racing games work under this model for each event.
Load Only at Pinch Points : Almost every shooter utilizes this design, where resources are cached in during elevator rides or in small barren hallways.
Load Constantly : This is for open map games where the player can go anywhere they like. Examples include flight simulators, massively multiplayer games, and action/ adventure games like Grand Theft Auto: Vice City.
The first scheme trades one huge loading pause for lightning fast action during the game. These games have small levels or arenas that can fit entirely in memory. Thus, theres never a cache miss . The game designers can count on every CPU cycle spent on the game world instead of loading resources. The downside is since your entire playing area has to fit entirely in memory, it cant be that big.
Shooters like Halo on the Xbox load resources at pinch points. The designers add buffer zones between the action where relatively little is happening in the game. Elevators are perfect examples of this technique. The CPU spends almost no time rendering the tiny environment inside the elevator, and uses the left over cycles to load the next hot zone. The player cant change his or her mind in the middle of the trip until the elevator gets to the right floor.
These buffer zones will exist in many places throughout the game, providing the player with a brief moment to load weapons and rest happy trigger fingers. The designers at Bungie took advantage of this and placed a few surprise encounters in these buffer zones, something that always made me freak out when I was playing Halo.
Hallways are another good example of buffer zones. If you ever wondered why the Master Chief in Halo spends a lot of time in abandoned hallways its because the Xbox is busy loading the next section of the map. The bigger the map, the longer the hallway. Its a great design conceit because the player is moving, making it feel like the action is still there. Even better, the folks at Bungie were wise enough to use the hallways to set the tone for the next fight with Covenant forces or The Flood—sometimes it was as simple as painting the walls with enemy blood or playing some gruesome sound effects.
Dont make the player read a bunch of text in between levels just to give yourself time to cache resources. Players figure this out right away, and want to click past the text theyve read five or six times. They wont be able to since youve got to spend a few more seconds loading resources and theyll click like mad and curse your name . If youre lucky, the worst thing theyll do is return your game. Dont open any suspicious packages you get sent in the mail.
Open mapped games such as flight simulators, fantasy role playing games, or action/ adventure games have a much tougher problem. The maps are huge, relatively open, and the game designers have little or no control over where the player will go next. Players also expect an incredible level of detail in these games. They want to read the headlines in newspapers or see individual leaves on the trees, while tall buildings across the river are in plain view. Players like that alternate reality. One of the best games that uses this open world design is Grand Theft Auto: Vice City.
3D Graphics Pipeline

Graphics pipeline or rendering pipeline refers to the sequence of steps used to create a 2D raster representation of a 3D scene. Plainly speaking, once you have created a 3D model, for instance, in a video game, or any other 3d computer animation, the graphics pipeline is the process of turning that 3D model into what the computer displays. In the early history of 3D computer graphics fixed purpose hardware was used to speed up the steps of the pipeline through a fixed-function pipeline, but the hardware evolved, becoming more general purpose, allowing greater flexibility in graphics rendering, as well as more generalized hardware, allowing the same generalized hardware to perform not only different steps of the pipeline, unlike fixed purpose hardware, but even limited forms of general purpose computing. As the hardware evolved, so did the graphics pipelines, the OpenGL, and DirectX pipelines, but the general concept of the pipeline remains the same.
The 3d pipeline usually refers to the most common form of computer 3d rendering, 3d polygon rendering, distinct from raytracing, and raycasting. In particular, 3d polygon rendering is similar to raycasting. In raycasting, a ray originates at the point where the camera resides, if that ray hits a surface, then the color and lighting of the point on the surface where the ray hit is calculated. In 3d polygon rendering the reverse happens, the area that is in view of the camera is calculated, and then rays are created from every part of every surface in view of the camera and traced back to the camera.
3D Middleware Review
A game engine is a software framework designed for the creation and development of video games. Video game developers use them to create games for video game consoles, mobile devices and personal computers. The core functionality typically provided by a game engine includes a rendering engine (“renderer”) for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, and a scene graph. The process of game development is often economized, in large part, by reusing/adapting the same game engine to create different games, or to make it easier to "port" games to multiple platforms.
In the broader sense of the term, game engines themselves can be described as middleware. In the context of video games, however, the term "middleware" is often used to refer to subsystems of functionality within a game engine. Some game middleware does only one thing but does it more convincingly or more efficiently than general purpose middleware. For example, SpeedTree was used to render the realistic trees and vegetation in the role-playing video game The Elder Scrolls IV: Oblivion and Fork Particle was used to simulate and render real time Particle Systems visual effects or particle effects in Sid Meiers Civilization V.
The four most widely used middleware packages[16] that provide subsystems of functionality include RAD Game Tools Bink, Firelight FMOD, Havok, and Scaleform GFx. RAD Game Tools develops Bink for basic video rendering, along with Miles audio, and Granny 3D rendering. Firelight FMOD is a low cost robust audio library and toolset. Havok provides a robust physics simulation system, along with a suite of animation and behavior solutions. Scaleform provides GFx for high performance Flash UI, along with a high quality video playback solution, and an Input Method Editor (IME) add-on for in-game Asian chat support.
Some middleware contains full source code, others just provide an API reference for a compiled binary library. Some middleware programs can be licensed either way, usually for a higher fee for full source code.
