Games Development 2
Console Development &
Middleware
CO3301
Week 12
Today’s Lecture
1. Comparing PC & Console Development
2. Development Environments
• Commercial Dev Kits
• Hobbyist Development
3. Middleware
Note: All material here can be found in the public domain
PC & Console Development
• Historically, console development has been much
closer to the hardware than the PC
– Known hardware specification
– Tendency to drive hardware with assembly language,
direct I/O, interrupts, etc.
– To get maximum performance
• Early PC games were similar, but gradually moved
to higher level programming
– Due to wide range of possible hardware
– Two layer approach – API Driver
PC & Console Development
• Lifespan of a console is up to 7-8 years
– Between release and eventual fall from use
– E.g. PS1: 1994->2002, PS2: 2000->2008
• Hardware barely changes during this time
– Need to gain maximum performance, especially during
latter years
– Low level work essential for best performance
• PC hardware constantly evolves
– Can increase minimum spec slightly every year
– Higher level approach more suitable
Current Gen: PC vs Console
• However, the current generation of consoles are
more similar to a PC than previous
– Multi-core CPU
– Powerful GPU (similar to PC variants)
– Concurrent programming very important
– Shader programming key for graphics
– Games of similar standard
• Although PC games often have better graphics now
– Ability to develop using higher level API’s
• E.g. OpenGL ES, XNA
Current Gen: PC vs Console
• Still important differences between PC and
console development:
• Hardware is known
– Important general differences, e.g. may need to rely on
removable media
• Closer integration between parts
– E.g. CPU / GPU memory have symmetrical
performance (shared on 360), unlike a PC
• Low-level development still key
– Especially for commercial games
– Custom development environments for this
Commercial Development: Dev Kits
• Commercial console development requires a
Development Kit (Dev Kit)
– A special form of console that can be hooked into a PC
for programming / debugging etc.
• Supplied with a custom SDK
– Development environment
– Compiler and linker
– Graphics, Sound, Storage and other libraries
– Complete technical and software documentation
Commercial Development
• Dev kits must be licensed:
– Apply to platform holder
– Only experienced & viable developers accepted
– Licensing is easier later in console lifecycle
– Developer must sign NDA (Non-Disclosure Agreement)
• Dev kit details are a trade secret
• Dev kits are expensive
– £10,000+ each at launch
– Price drops with time
– Fair sized team can expect outlay > £100,000
PS3 Development Kit
• Playstation 3 dev kits (called the PS3 Reference Tool)
cost ~£1,500 each:
Current Dev Kit is same Original Dev Kit
shape as standard PS3
• Includes development tools (SN Systems):
– ProDG – development environment
– Distributed C++ compiler, linker, build tool
• Can compile and link on multiple PCs
PS3 Development Kit
• Two graphics libraries are part of the SDK:
– libgcm: low-level – direct access to RSX chip and
graphics memory
– PSGL: [rarely used] implementation of OpenGL ES (full
source code provided)
• Also a full game engine – PhyreEngine is available
(free for developers)
• Use a special debugging station for testing
– Standard console that can run discs burned by the
developer (effectively no copy protection)
Xbox 360 Development Kit
• An Xbox 360 dev kit cost Old Version
~£4,600 in late 2008
– Latest version is much less
than that now
New Version
• Compiles C or C++ using
Visual Studio variant
• Uses variations of PC libraries:
– DX 9+: like DX9 with low level extras
(command buffer, predicated tiling)
– XAudio2: Successor to DirectSound
– Many low level tools provided
Hobbyist Development
• The cost & licensing of professional development
kits prohibits hobbyist or homebrew games
• However, there are various free methods of
developing on consoles
– Official hobbyist development environments
– Otherwise, various methods to boot up development
environments on a normal console
• Hobbyist apps less potent than commercial:
– Limited tools, generic or simplified libraries
– Sometimes a lack of low-level hardware access
XNA
• XNA is a Microsoft-supported cross-platform
development environment for hobbyists
– Allows development for both Windows and Xbox 360
with the same code
– Requires subscription for Xbox360 development
• C# based
– Supersedes Managed DirectX
– Can be performance issues due to this
• Good collection of tutorials, samples etc.
• Not used in major commercial titles
Middleware
• Middleware traditionally describes software used
to connect different components or applications
• However, in games development, the term
middleware is used differently, describing self-
contained software libraries
– Performing distinct tasks, e.g. AI, physics or rendering
– I.e. Use middleware instead of own technology
• Typically this allows the developer to cut costs
– Less technology to develop
– Rely instead on a pre-built, robust solution
– At the expense of flexibility for their own needs
Middleware
• Middleware ranges from very general engines, to
specialist technologies
• A wide range of examples:
– Unreal [free], Unity [free], Source, etc. (Game engines)
– Havok, Bullet (Physics [both free])
– Euphoria (human animation synthesis)
– SpeedTree (Tree rendering)
– RAD Game Tools (e.g. Bink video)
– CRIWARE (audio, video)
– fmod (audio [free]), ScaleForm (vector UIs) etc.
– [Those noted as free are for non-commercial use only]