100 likes | 120 Views
GAM666 – Introduction To Game Programming. Course Overview. Programmer's perspective of Game Industry Introduction to Windows Programming 2D animation using DirectX 7 3D animation using DirectX 9 Sound using DirectX Audio Joystick using DirectInput 3D animation using OpenGL
E N D
GAM666 – Introduction To Game Programming Course Overview • Programmer's perspective of Game Industry • Introduction to Windows Programming • 2D animation using DirectX 7 • 3D animation using DirectX 9 • Sound using DirectX Audio • Joystick using DirectInput • 3D animation using OpenGL • Other parts of DirectX • Student Project
GAM666 – Introduction To Game Programming Performance Matters • Hardware limits what you can do • Requires highest level of programming skill to get the most out of the machine • Dedicated hardware evolves to get past bottlenecks, e.g. 3D Acceleration
GAM666 – Introduction To Game Programming 3D Acceleration Background • Current technology stores 3D objects as collections of triangles in 3D space which must be projected and clipped onto the 2D screen in front of you • Images (textures) are laid across these triangles making them seem more than just triangles • Lighting calculations further enhance realism by adjusting the final colour depending on the location of light sources • Some or all of the necessary calculations can be offloaded from CPU to video card
GAM666 – Introduction To Game Programming 3D Acceleration Background • 3Dfx effectively created the market in mid 90s by introducing arcade-style acceleration to consumer PC market (using a proprietary API, Glide) • Microsoft created a Game Development library called DirectX, working with video card manufacturers to provide a common API to use with all brands of video card • OpenGL (originally from SGI) was also adapted to work with any brand of accelerated video card • nVidia and ATI now dominate the market
GAM666 – Introduction To Game Programming 3D Acceleration Trends • Until recently, the focus was on developing video cards that accelerated specific calculations involved in 3D rendering • Currently, the focus is on putting programmable computing power onto the video card (GPU), giving more flexibility to the developer (Shaders) • Future trends will focus on parallel processing solutions, which will probably change the fundamental techniques used to store and render 3D objects (e.g. Ray tracing)
GAM666 – Introduction To Game Programming DirectX Overview • Microsoft's game programming library • Useful for all sorts of high performance multimedia applications, not just games • Built on COM technology, but also has a managed (.NET) interface • New releases are backwards compatible with previous releases • Has allowed Microsoft to be involved with ongoing development of game hardware • Deals with all the major aspects of game programming, individual components can be used independently of others
GAM666 – Introduction To Game Programming DirectX Components • DirectX Graphics • DirectDraw (low-level 2D surfaces) • Direct3D (3D acceleration) • DirectX Audio • DirectSound (low-level sound buffers) • DirectMusic (music and sound effect management) • DirectInput (keyboard, mouse, joystick, force feedback) • DirectSetup (to write DirectX installers) • DirectShow (multimedia streaming) • DirectPlay (game networking)
GAM666 – Introduction To Game Programming OpenGL Overview • OpenGL began as a 3D rendering library before real-time 3D graphics was practical • Originally developed by SGI (Silicon Graphics, a minicomputer manufacturer), now maintained by a multi-vendor body • Manufacturers of 3D-capable video cards usually supply accelerated OpenGL drivers along with DirectX drivers • Widely used alternative to Direct3D for 3D rendering in games • Multi-platform: Windows, Unix/Linux, Mac
GAM666 – Introduction To Game Programming Jobs for Game Programmers • Days of one person creating a game are over • Large teams required to build a modern, commercial quality game • Designers (art or programming background) • Artists • Programmers • Programming jobs can be quite specialized • Engine, Special effects • AI, Game play, Scripting • Artist/Designer/Programmer tools • Sound, Networking
GAM666 – Introduction To Game Programming Course Project • Make your own individual game [skeleton] • Important traits: • You understand the code (no black boxes) • Some interesting aspect of gameplay • Real-time 3D graphics, sound, joystick • Relatively independent of hardware • What you might not achieve: • Full set of features, lots of levels • Nice looking art, good sounds • Motivation: start your personal Game Programming Portfolio