<<

Copyright Warning & Restrictions

The copyright law of the United States (Title 17, United States Code) governs the making of photocopies or other reproductions of copyrighted material.

Under certain conditions specified in the law, libraries and archives are authorized to furnish a photocopy or other reproduction. One of these specified conditions is that the photocopy or reproduction is not to be “used for any purpose other than private study, scholarship, or research.” If a, user makes a request for, or later uses, a photocopy or reproduction for purposes in excess of “fair use” that user may be liable for copyright infringement,

This institution reserves the right to refuse to accept a copying order if, in its judgment, fulfillment of the order would involve violation of copyright law.

Please Note: The author retains the copyright while the New Jersey Institute of reserves the right to distribute this thesis or dissertation

Printing note: If you do not wish to print this page, then select “Pages from: first page # to: last page #” on the print dialog screen

The Van Houten library has removed some of the personal information and all signatures from the approval page and biographical sketches of theses and dissertations in order to protect the identity of NJIT graduates and faculty. ABSTRACT

GAME ENGINE ARCHITECTURE: A COMPREHENSIVE VIEW

by Donald Kehoe

Game eeome is a ee gowig ieisciiay ie A aiey o iee ski ses ee o come ogee o ceae a oessioa game ese age om a auio a

esig oug ogammig a eeome I is iicu o isoae e iee

isciies i game eeome sice eey asec o e game is co-eee o eeyig ese Ee i e ogammig omai ee ae a ume o su-isciies

a a game ca equie suc as ysics ogammig eiomea ogammig aiicia ieigece a ogammig e coe game egie A game ca ee e

eeoe i a ume o iee ways eeig o e esig o e ia ouc

is auig aay o equie isciies makes i iicu o oe eecie isucio i game eeome e eecy is o iie e isciies accoig o

aiioa acaemic caies is eas o oeig couses o game eeome a ae oo aowy ocuse o ea o ay ucioa games o o couses a ae uey

eoeica is esis aems o ouie e eeome o a geeic game egie a sow ow i ca e imemee wi miima skis eyo ose i ogammig I is iee o see as a ouaio o eeoes wo wi seciaie i a aicua aea

u wi oeeess ee o uesa wa a game egie is a ow ogammes i

iee ies ca wok wi i GAME ENGINE ARCHITECTURE: A COMPREHENSIVE VIEW

by Donald Kehoe

A Thesis Submitted to the Faculty of New Jersey Institute of Technology in Partial Fulfillment of the Requirements for the Degree of Master of Science in Science

Department of Computer Science

August 2009

AOA AGE

GAME EGIE ACIECUE A COMEESIE IEW

oa Keoe

Dr. James McHugh, Thesis Advisor Professorof Computer Science, NJIT

Dr. Andrew Sohn, Committee Member Date Associate Professor of Computer Science. NJIT

Dr, Michael Baltrush, Committee Member Date' Associate Professor of Computer Science, NJIT BIOGRAPHICAL SKETCH

Author: oa Keoe

Degree: Mase o Sn

Date: Augus 9

Education:

• aceo o As i Comue Sciece ew esey Isiue o ecoogy ewak • Mase o Sciece i Comue Sciece ew esey Isiue o ecoogy ewak 9

Major: Comue Sciece eicae o my oig wie Saa Keoe

ii ACKNOWLEDGMENT

This thesis would not have been possible without the support of Dr. James McHugh, whose guidance pushed me to gain a better understanding on the subject.

I would like to show my gratitude to Dr. Andrew Sohn and Dr. Michael Baltrush for their support and input in the development of this work.

Lastly, I offer my regards to all of those who supported me in any respect during the completion of the project.

viii TABLE OF CONTENTS

Chapter Page

1 IOUCIO A GAME EGIE OEIEW 1

ESIG CAEGES 3

1 age awae Cosieaios 3

Gaica Cosieaios 5

1 Game Egies 5

3 Game Egies

3 3 i yi Game Egies

3 Coss aom Caeges 7

3 GAME EGIE SUCUE

31 Eiome Sucue 1

311 ayee ackgous 13

31 ie Mas 1

313 3 eig Mas 1

31 Moe Oecs / Wak Masks 19

315 iay Sace aiios

3 eiiio ie asig 1

ESOUCE MAAGEME SYSEMS

1 Sies

Moes

3 iages 9

eices 3 i TABLE OF CONTENTS

Chapter Page

1 INTRODUCTION AND GAME ENGINE OVERVIEW 1

2 DESIGN CHALLENGES 3

2.1 age awae Cosieaios 3

Gaica Cosieaios 5

1 Game Egies 5

3 Game Egies

3 3 i yi Game Egies

3 Coss aom Caeges 7

3 GAME EGIE SUCUE

31 Eiome Sucue 1

311 ayee ackgous 13

31 ie Mas 1

313 3 eig Mas 1

31 Moe Oecs / Wak Masks 19

315 iay Sace aiios

3 eiiio ie asig 1

ESOUCE MAAGEME SYSEMS

1 Sies

Moes

3 iages 9

eices 3 ix TABLE OF CONTENTS (Continued)

Chapter Page

5 Amaues 3

Acios 35

7 Eiies 3

aices emoay Eiies

5 3 MOE EEIG

EIY SYSEM UCIOAIY 7

1 oucig

ackig 9

7 COISIO EECIO 5

71 isace Coisio 5

7 Ais Aige ouig oes 53

73 Come Eiy Coisios 5

7 a iig 55

75 ay acig 5

AIICIA IEIGECE 5

1 ues ase AI 5

Sci ase AI

3 Aaie AI 7

9 COSIG 9

AEI A SAME SIE ESOUCE MAAGE 71 LIST OF FIGURES

Figure Page

1 e cyce o e game egie

31 ackgou image a coesoig wak mask 15

3 a gi o quas a cage eig ma 1

1 Same sie see

ii CAE 1

IOUCIO A GAME EGIE OEIEW

Game eeome is a ee gowig ieisciiay ie A aiey o iee ski ses ee o come ogee o ceae a oessioa game is seces om a auio a esig oug ogammig a eeome I is iicu o isoae e iee

isciies i game eeome sice eey asec o e game is coeee o eeyig ese Ee wii e see o ogammig ee ae a ume o su

isciies a a game ca equie suc as ysics ogammig eiomea

ogammig aiicia ieigece a ogammig e coe game egie A game ca ee e eeoe i a ume o iee ways eeig o e esig o e ia

ouc

is auig aay o iee isciies makes i ey iicu o oe useu isucio i game eeome e eecy is o iie e isciies accoig o

aiioa acaemic eameaiaio is as e o couse oeigs o game

eeome a ae oo aowy ocuse o ouce ay ucioa games o couses

a ae uey eoeica is ae wi aem o ouie a geeic game egie a

ow i ca e imemee om scac wi miima skis eyo ogammig is wi see as e ouaio o eeoes a wi seciaie i a aea u wi aways

ee o ae e uesaig o wa a game egie is a ow ogammes i

iee ies ca wok wi i []

1 2

A game engine is the core set of data structures and functions that provide the foundation for developing a full game, The engine is responsible for managing all of the resources available to the system and providing the capability to utilize any given resource. This includes loading and drawing graphics as well as handling the input of the player.

The engine does not deal with the final upper- assets (graphics & sounds that are used in the game) or the specific configuration of the game logic, The game logic level is the part of the game that uses the capabilities provided by the game engine in order to give the final game its form and function. In most engines that are developed from scratch for a single game, the two components (engine & logic) will be intertwined,

In engines that are developed for long term use (beyond a single game) the components will deliberately be broken into separate parts of the project.

In the series of game engines (referred to by the game they were developed for or simple Id-Tech 1 through Id-Tech 5 { in development}) this breakdown is accomplished by an executable and library separation, The game engine compiles as a separate project into the executable, while the game logic project compiles into a run time linked library (Dynamic Linked Library or DLL for windows based architecture software object or SO for unix based architectures).[7] CHAPTER 2

DESIGN CHALLENGES

I oe o oey esig a game egie e esie caaiiies ee o e ieiie

e sye o game esie age make a aom wi icae esig coices o e game egie Games a ae mae o seciaie awae suc as ce oes a game cosoes wi aso ee secia aig o accou o imie sysem esouces

2.1 Target Hardware Considerations

Oce e age awae as ee ieiie e game egie ca e ae o accou

o ay imiaios a uiie ay eaues ee is a oeiew o e awae commoy use i game eeome

eeoig games o e esoa comue is commo sice mos eoe ae

esoa comues agig om ig e cusom eskos o oae aos Cs e

o ae a auace o memoy a ey as ocessos as we as e eei o a-

isks o saig a soig age amous o iomaio a iee access (ow use as e eice o eieig coe as we as oie esise wos Uouaey

C eoyme as o ake io cosieaio e muie oeaig sysems a a ee cusom uis o e game o imi wo ca ay e game y coosig o suo oy oe Sice Cs aso sue om aiae seciicaios ee is o ase ie caaiiy

a ca e assume o a sysems so miimum seciicaios mus e ae o

3 4 igoig ayig wi ess a e esie caaiiies is esis wi ocus o C

eeome

Wi we ase games ee is a gea aaage i a e seciic oeaig sysems ae geeay o a cosieaio e mao awack o we ase games is

imie caaiiies ese games geeay ui o e Aoe as o Micoso

Sieig eeome eiomes ese aoms ae imie i ei access o e

awae o e comue ayig e game a geeay eom ey sowy comae

o games eoye iecy o e C

A sog make ow is e ce oe game make Ce oes ae eace a

oi o eay oa sauaio o mos as o e wo wic makes em a iea

aom o eeoig games e awack o ce oes is a ey ae ey imie i ei caaiiies ey ae imie memoy a ocesso sees a o oa soage (i e om o a soi sae memoy ca is o guaaee (a e ime o is wiig e sie o a ogam a ca u o a ce oe is a imiig aco as we

e coe a coe mus a e eow a gie amou o memoy i oe o u a a

o eame ey ew ce oes ae suo o 3 acceeaio

A ey oua make is e a e cosoe ese cosoes ae awae

esige o ayig games a ae mae o e comac a oae ese ae e aaage o eig uey eicae o uig e game Oe aoms sae sysem

esouces wi oe ocesses u o so wi cosoes Aoug a o e sysem

esouces ae aaiae o e eeoes e sysem as ey imie esouces a may o em ae ie o o suo o 3 acceeaio

e mos comeiie make a e ime o is wiig is e ome cosoe

ome cosoes ae e isic aaages o oa access o sysem esouces as we as

ey goo sysem esouces ey ae o a wi e caaiiies o e esoa

Comues wie aig saa sysem caaiiies e amou o memoy ocesso

sees a-ie sies a 3 caaiiies aaiae o e eeoes ae kow o ay

gie cosoe e oy ea awack is e ee o e oicia eeome kis i

oe o ake u aaage o e sysem esouces a o isiue a game o a

sysem

2.2 Grphl Cndrtn

Oce a age aom as ee cose e gaica caaiiies may e icae y a

coice o moe caae aoms is coice may si e imoa is secio

coes e caaiiies o e iee gaica egie yes

2.2. 2 G Enn

We 3 acceeaio is o aaiae o e game iee oes o ca o 3 gaics

a uey game egie ca e eeoe eicae a-e cosoes usuay ae

awae assise ucios o aig oeaios eae o e maiuaio o wo

imesioa images is icues scaig a oaio o wo-imesioa images

Wi e gowig ouaiy o 3 games is acceeaio as ee oe om

mos gaics ocessos

games use aimae a images cae sies (see secio o sies o moe

eais o eese a game eemes a moe a age images o ae u scee 6 images a ackgou images e caaiiies o e game egie ocus o e maageme o esouces a ea wi a moeme a coisios i a eco sace

2.2.2 3D Game Engines

I e age aom as 3 acceeaio 3 game egies ecome a ossiiiy I is wo oig a 3 game egies ae ossie o sysems wiou 3 acceeaio u

imiaios ace o e game ecause eeyig as o e ae i sowae oe mea e game wou e ee mae o oe sysems I a 3 game mos o e games gaica asses wi e 3 moes is icues e acie eiies as we as e eiomes A moeme a coisios ae ae i a 3 eco sace

2.2.3 3D in 2D Hybrid Game Engines

We 3 acceeaio is imie u ig esouio images ae ossie a ecique cae 3 i is use is meo uses e-eee images o e uk o e gaics y iig e i-game camea o e oieaio o e eee oi o iew

e iusio o ue 3 is maiaie

is meo is easy o imeme Usig a 3 moeig a eeig ogam

(i is case ee www.blender3d.org) a ais wi ceae a u 3 iua eiome A eee image o e 3 eiome is ouce a e oieaio o e 3 camea is ecoe e image is oae io e game as e

u scee ackgou

I e game e camea is se o e same aamees (osiio oaio a e scee was eee om Ay aiioa gaics a ee o e aimae ae oae io e game as ue 3 oec moes a eee o o o e ackgou

Eeyig ece e ackgou image is suec o esecie eeig e esu is a eec wee e eie scee aeas o e 3 ee oug e uk o e scee is i acuaiy a image

Aoug is meo maage o sae ocessig owe a aow ou game o

u o oe awae i oes cause some oems i eeome a wi e eaie i secios eow

2. Cr ltfr Chlln

I oe o esue a a C game ca eac as may oeia cusomes as ossie e game egie ees o e ae o e oe o iee oeaig sysems Micoso

Wiows a Ae Macios sysems ae o ey commo u ey ae ey

iee om eac oe as a as sowae eeome is cocee

Sic ogammig coeios a e use o coss aom eeome

iaies ae use o o make a game easy o o e wo eeome iaies S

{Sime iec-meia aye} a OeG { Oe Gaics iay }ca e use ae

a Micosos iec o Aes coe S a OeG ae imemee o a mao oeaig sysems so ay cas o eie o ese iaies o o ee o e

ewie we comiig o a iee age sysem e eie oec is coe i

ASI saa C usig e C Saa iaies is way a asic ucios wi e aaiae o a age oeaig sysems CAE 3

GAME EGIE SUCUE

e uose o e game egie is o oie access o e sysems esouces a uae

e eemes i e game wo e Mai ucio o ay game egie wi ae e mai game oo esige o e iiie ui a ei coiio is me o eiig e

ogam ousie o e mai game game oo a ca o ei(; wi wok e wok o

e game egie ca e oke ow io wo asic asks uaig a awig (auio wok is ae y a seaae ea wic is maiaie y e S mie iay

igue 1 e cyce o e game egie is e su sysems o e egie ee o e uae o e ew ieaio a e e ame is aw

A eemes o e game egie ee o e uae equey is wi icue

e eiies o e sysem (see Secio 7 aices (see Secio a ay iu sucues Eeyig a is uae is ase o e same sice o ime so a we a

is uae a ees o e uae e egie ca aw eeyig ase o ei ew

aa

Eac saso o aw gaics is cae a ame Eac ame is aw y e game egie uig a ieaio o e mai game oo e imay aa sucue o

e aw oo is e aw suace A suace is a geeic sucue use o escie ay

ossie gaica image is ca e eie a icue i memoy o e memoy aess

o e ysica ieo suace e ysica ieo suace is e image a is isaye o e moioy o e mai game aw oo e ysica ieo suace is e oe a is mos imoa

o e uoses o smoo aimaio a secoay suace is eee as we

is seco suace (oe us eee o as scee o simiciy is wa is aw o

iecy wii e oo e iiia ca o eseue( wi cea is awig ue

Ae eeyig as ee aw o e secoay ieo suace e eie suace is coie o e ysica ieo memoy is ecique is cae "oue ueig" is

ees sow awig om causig a icke i e aimaios

eow ae e ucios use o ceae a ame

eseue(; //Cea e awig ue a i i wi a soi coo

awWo(; //aw e e-eee ack gou image o ou ue

awEiies(;//aw a 3 wo oecs o ou aw ue

awu(; //aw e eas u isay o ue o o o e ackgou a eiies

awMouse(; //aw e sie a makes u e mouse

eame(; //ace e coes o ou aw ue o e acua ieo suace o e aye o see 1

e oe is se ase o a ayee awig aoac Eeyig is aw o e same ieo ue eoe eig ock asee (ie o e scee is way ayig aw eoe ca e oewie y wa ges aw aewa A o e aw

ucios ae ecasuae y e cas o eseue(; a eame(; wic see o cea e awig ue so i ca e use agai a o i e ewy aw ue o e scee (ysica ieo suace

e oe mai ucio o e game oo is o uae a o e eemes imoa o e game is is accomise y a ca o UaeA( wic wi ca e uae ucios o a o e games iu sucues eiies aices a igs

A e mai oo ieaes e game egie wi uae a iomaio ae a o e coisios aiicia ieigece uaes a aw e e ame is mai oo

ees o e ae o u o e aeage o ames e Seco(S (e saa ae

o mos ieo games e moe acio is ioe i e game e moe a cosa

s is ecessay

e game egie is esosie o iiiaiaio o seices as we as e uaig a awig o e coe i e game Iiiaiaio wi ay ase o e seciic ees o a game egie Sow ee ae e coe ees o mos games

IiGaics(11; // Ses u e isay o awig a ceaes aw ues o iig

IiAuio(; // Ses u e auio sysem a auio esouce maageme

IiSieis(; // Ses u e sie esouce maage Eac o ese cas eie iiiaies a susysem o S / OeG o oas 11 coe eee y e game Ii_Gaics( is e ucio a iiiaies S &

OeG ess e sysem o iae gaic moes ceaes aw ues acquies a

oie o e ieo aw ue a ses e eau sae o OeG

Ii_Gaics( is e imay iiiaiaio ucio o e game egie Wii

is ucio e iaies use (S OeG ae iiiaie as we as e gaics susysem a iiia sas o e 3 eeig sysem ae se

oi IiGaics(

{

i ( S_Ii(S_IIAUIOS-IIIEO S II OYSICK

{

i(se "Uae o ii S %s" S_GeEo(;

ei(1;

}

ieoue = S_SeieoMoe(S_aaes S_aayes S_aae ags Wag;

scee = S_isayoma(em;

/ses e iewig o o e sie o e scee/

giewo(S_aaes S_aayes;

gMaiMoe(GOECIO;

goaIeiy(;

/iew age asec aio ea ci isace a ci isace/

guesecie( / 3 1 15;

gMaiMoe( GMOEIEW ;

/Cea coo o e ue/

}

Some secios o is coe ae ee omie o euce euacy 2

e ca o S_Ii ses u e S sysem a gies gaic coo o is

ogam S-SeieoMoe gies access o e ysica ieo ue memoy aess

o use wii S ucios is is eae ike ay oe S_Suace wic is a aa sucue a os iomaio o images

e cas o ucios wi a "g" ei ae use o coigue e OeG 3

eeig sysem ese wi se e scee esouio o e esie age (eemie i some o e omie coe o oug use seciie oios eemie e eeig ye

(i is case esecie iew wee oecs ae away om e camea aea smae as oose o oogoa iew wee e om camea as o eaig o e

eeig a ses e esecie aios A o ese umes ae saa o mos

OeG imemeaios

. Envrnnt Strtr

Mos games ake ace i seciic eiomes ese eiomes oe eee o as "mas" o "ees" oie e seig o e game uique caeges o e aye sucue o e game ay eeiece as we as aiioa equiemes o e game egie e ceaio a aicaio o e iee eiomes o a game ae a gea imac o e way may o e oe esouces ae esige a imemee

Eiies wi ee o ae uaig ucios eesige o wok wi e iee ways

e eiomes ae moee i aa is secio coes e mos commo meos

o imemeig eiomes as we as e meas wi wic eiies ca ieac wi

e eiome

.. 2 rd rnd

I sime games oe o moe ackgous ca ucio as e eiome I eaie games u e ackgou see oy aeseic uoses i oe games e

ackgou ca e ieace wi o oe ees We moe a oe ackgou image is use (usuay wi a asae o "key" coo e images ae ayee i a seciic oe Eiies a ie ewee ayes ee o e assige o a aye so a e game egie ca aw em i e coec oe

We wokig wi muie ayes aiioa secia eecs ca e imemee Oe is eee o as e aaa eec e eec aems o eicae

a asec o esecie weei oecs ae away om e iew aea o moe sowe a ey acuay o A eame ca e ou wie iig wee a mouai ca e see o i e isace As e ie sees ow e oa i is oious o e

ie a e o se is moig ey as ase o e osee moio o e gou ea

o e ie owee e mouai aeas o emai e same eaie o e ies

esecie

e moio i e aaa eec ca e simuae we wo o moe ayes (moe is ee ae use A o e images sae o e image aes away (a e is

aw ee o e ogessiey age a e cameas ouig o e ages aye wic is e coses o e camea a e as o e aw ees o e e sie o e

ayig eiome As e camea oows e ayes moeme a ges cose o e eges o e o aye eac aye aw is ose y a smae a smae eceage o

e acua camea osiio 4

I e coe same eow scee is e S-Suace oie o e awig

ue A S_ec is a sucue wi wo sige ieges y a wo usige ieges w & is is use to eie e ecage a is use to coy a ase

ewee suace ues e aa sucue ee coais iomaio aou e game

ee ee e oy eeme eee o is ayes wic is e ume o ayes use y

e ee Gaye is a aay o suace oies a coai eeeces o e images o

e aw eoe is ucio is cae e as ackgou image (Gaye[]is aeay aw o e scee

oi awee(

{

i i;

i maw;

i ma;

S_ec ame;

amew = scee-w;

ame = scee-;

maw = Gaye[eeayes-]-w;

ma = Gaye[eeayes-1]-;

o(i = 1;i eeayes;i++

{

/e e wo ies cacuae e ose o e ayes ase o e sie o e ages aye oe a we e ages aye is ecouee e iisio equas 1 wic ceaes o ose om e cameas osiio/

ame = (( Gaye[i]-w - Cameaw / (oa(maw - Cameaw Camea;

amey = (( Gaye[i]- - Camea / (oa(ma - Camea Cameay;

S_iSuace(Gaye[iamesceeU; 15

}

The map file can contain information about the background image(s), such as where exits (to other levels are), starting positions for entities and map objects, and other level controls. These controls are usually put into place by a map editing tool, which would also be created by the programmers of the game engine (or with programmers working closely with the engine programmers),

In order for entities to interact with the background correctly, additional information may sometimes be provided. One type of interaction is a walk mask, Walk masks are images, often times simple black and white) which correspond (same width and height) to the visual image being used for the background. Areas that the player (or other entities) can walk on are designated by being a set color (white) and areas that cannot be walked on are another color (black). The walk mask is never shown to the player, it is only used for calculations,

Figure 3.1 Background Image (left) and corresponding walk mask (right). 6

..2 l Mp

Aoe commo meo o eiome sucue is e use o ie mas ie mas ae ceae y a seies o ies (oe eesee y a sie e sucue o e ie ma is oy a aay (wo imesioa wee e eemes o e aay eae o wic ie is o

e aw We e ee is oae y e game egie a sige suace is ceae wee

e imesios ae se equa o e ume o ies muiie y e imesios o a iiiua ie (e eig a wi o e sie e e ies ae aw o e suace

o ae use e ackgou image is e-comue o see u awig ime sice mos sysems ae oimie o age is (ock ases o iomaio is case i is coyig oe ock o image aa oe aoe oe ume o is

ie mas ae a ume o aaages oe ackgou images ees ase o

ie mas wi ake u ess sace o e a isk o meia a e game is isiue o

is is ecause e image iomaio o e ie se (e sie coaiig a o e ies

o a gie ee is geeay goig o e smae a e ee a is ceae wi ose

ies uemoe e same ie se ca e use o muie ees

ie mas ieey ae ay eee wak masks associae wi e ie aa

iee ies ca e eemie (i e aig sage o eeome o e ae o e wake uo Oes ca e esigae as ockig wic ees eiies om wakig o o oug e ie I is seu e a iig agoims ca e aie ey easiy Aiioa iomaio ca e associae wi iee ies ase o e esig o a seciic game suc as eaig ies o ies a ac as eis o oe ees

ayee ackgous o ae a aaage oe ie mas ayee ackgou 17 images ca e ceae i moe aisic ways (oug aiig eeig o a 3 scee o

oogay wic eas o moe easig esus ies ee we-mae ies esu i oious gi aes i e eiome

Wii ie mae games some cacuaios ae ey sime a as Oe eame is e ocaio o a eiy eaie o a ie I is sye o game ee oug

e wo is oke u io ies moeme is geeay aowe o emai ee e ie

a a eiy ies oe is easiy eemie y iiig e osiio o e eiy y e sie o e ie (e / iew o i e sie o e ie is a owe o wo i siig ca

e emoye o make e cacuaio ee ase (e wee e ies ae y i sie

ee ae games a ae mae wi a comiaio o o meos o oie e

es o o syes I is sye o game e wo is eie y a ie ma e ie ma image is eoe om e game a gie o a ais e ais ca e ai oe e

ies o make a moe ui aua ookig eiome e game oes a cacuaios

ase o e ie ma iomaio wie e ayes see e wok o e ais

Aoe sye o game ca use ie mas a ayee ackgous ogee wi

e aaa eec e oegou (coses aye o aye is eie y a ie ma I

is meo a cea o emy ie ca e esigae so oe ayes ca e see i e

"isace" Mos "aome" sye games use is meo 18

3.1.3 3D Height Maps

Simple 3D games that need only the most basic of environments to interact with can use what is called a height map. Height maps are generated by the game engine from adjusting the 'z' values of the vertices in the mesh that defines the level. The level itself is usually a flat series of connect "quads" (quadrilaterals, or 4 sided polygons). The height and width of the level is determined by the map editing tools, as well as the changes in heights.[1]

Figure 3.2 Flat grid of quads (left) and changed height map (right),

Working with height maps allows easy use of tiles in 3D games, Tiles are often referred to as textures in 3D games. Height maps also allow for very simple game mechanics for the engine, Entities that walk on the ground (as opposed to flying entities) have a very simple means to test what height the ground is at. Using the ray tracing functions (see section 7.5) the game can find the exact triangle (or quad) from the map model that the entity is above and then find the exact point of intersection with the polygon, The entity's height can then be aligned to this point of intersection.

Boundaries can be determined based on the size of the map. Entities cannot move past these arbitrary borders. For boundaries within the playing field, blocking entities 19

ca e ace (see eiy coisio secio aoe o eeme eig ieeces o eeme

omas ca e use o eemie i a away is ocke o isace i e aue o

e oma eie y a ae is owe a a se eso e e ae is cosiee

oo see o aese

3.1.4 Model Objects / Walk Masks

Moe oecs ae eiomes a ae mae u o a Moe (see esouce secios

aoe o muie moes I e moe is sime eoug e eig ma meos o

eiome coisio ca e use u moe oe a o e comeiies o e wo

moe oec is gea eoug o waa e use o iay Sace aiios (see eow

We e game oes o equie e see a comeiy aoe y a S e use o a

moe oec a a wak mask is ossie

A wak mask i 3 is a sime moe oec a aigs o e come moe

oec sowig e eiome Wee e eiome moe oec is come ue o

e esig o e game e wak mask is us a sime mes oeayig e aeas o e

come eiome a ca e aese ike e wak masks i e 3 wak

mask oec is ee aw i is simy ke i memoy so cacuaios ca e oe o kee eeyig uig quicky sice ee is ess iomaio o seac oug i e

wak mask Sice e wak masks ae ieey sime a e awig moe i akes u a ess sace a e eee moe (o eue iomaio is eee eie e

wak mask wi ucio ike a eig ma oiig a sma se o iages wi wic

o seac o coisios 20

.. nr Sp rttn

A iay Sace aiio o S o so is a way o ogaiig e geomeic iomaio o e moe oec i a way a makes cacuaios a eeig easie a

ase o e game egie Ayig a S o a moe oec is a come a ime cosumig ocess is is oe we e ee esige is iise makig e ma a is aie y e ma eiig oos e esuig S ie ca e oae quicky (i is i a iay oma a use iecy y e game egie[1]

Ceaig e S woks y iig e iage a is e coses o e mioi o e ee I uses e ae escie y e iage o isec e wo io wo

aes e iage is mae e ae a e eac a is oke i a agai a agai ui eey iage as ee ae o e iay ee e iay ee is ogaie

y sacia eaios so a eey iage o oe a o e ee is oe sie o e ae a a o e oes ae o e oe sie o e ee

e S sees u coisio eecio sice e ee ca e aese o e

eaes ossie iages eoe ay ea comuaio ees o e aie As cacuaios ae aie y eie goig eee io e ee o ack u e ee oy e mos ikey iages ae cecke is ui a coisio is eece o e iages eig cecke ae ou o e age o e coisio

e S aso sees u eeig sice oy e iages a ca ossiy e i

e cameas iew (a o oe sie o aoe e eaes iage ee o e aw

uemoe e iages ca e e o e eee ase o e isace om e camea (e wic is ow mos eeig sysems (ike OeG ae oimie 2

.2 fntn l rn

A eiiio ie is a ai e ie coaiig coiguaio iomaio o oe aa i a

eua oma is ki o ie is ey useu o eiig aa eee o a oec ousie o coe suc as e iiia sae o a ee o ma is is eseciay eea o e

3 moes eoe om moeig oos sice may eo scis uiie a e ase

oma o esue maimum comaiiiy I is aso useu o eiig commo eemes i a game suc as aye saisics wic ee o e weake oe ougou

eeome a oe y someoe oe a e ogamme

e mos asic ucios use o e ie asig ae mae aaiae i e

ASII saa C eae ie "sio" Usig e saa I/O ie es isue a e souce coe emais aom ieee A same ie ase esige o oa i a is o iem aa is iusae eow iesese wi eaaoy commes

oi oaemise(

{

IE ie; /oie o e ie o oe/ ee e ie "iemiscg" is eig oee o eaig i e moe

i(ie == U

e oie ees o e cecke o aiiy I e ie oes o eis o i ee is some oe eea oem e game wi gie a eo ouu a emiae e ucio

eoe ay moe seious oems ca occu

memse(Iemissieo(Iem MAISIEMS; /eo a iomaio i e is/ e aay Iemis is a aay a soes a o e iomaio eae o iems i is game e ucio wi u iomaio io is is o ae use

wie((sca(ie "%s" u = EO(i MAISIEMS

/go oug e eie ie ie y ie/

i(scm(u"" ==

{

ges(u sieo(u ie;

coiue;/igoe e es o e ie/

}

is coe aows o commes i e ie a is eig ase Ay ie a egis wi a symo wi e igoe

i(scm(u"e" ==

{

Iemis[i]ie = i;

i++;

coiue;

Weee e keywo "e" is ecouee e ie is uae eig ay aa ey

o e eious iem ie

i(scm(u"uame" ==

{

gec(ie; /cea e sace eoe e wo/

ges(Iemis[i]uame ie;

c = sc(Iemis[i]uame ;

i(c = U c = ; /eace aiig eu wi emiaig caace/

coiue;

}

I oe o ea a sig i some secia ses ae equie o esue e sig is 3

omae coecy o use wi e ogam gec wi ea a sige caace om e

ue (i is case e eu aue is igoe ges wi ea e emaiig sig om

e ie is wi wok o sige wos o woe ies e ie is omae wi eac

ie eig i a eu caace u e sig i e game ees o e wi e

emiaig caace so sc is use o ocae e occuece o so i ca e cage o

i(scm(u"swi" ==

{

sca(ie "%i" Iemis[i]swi;

coiue;

}

o ieges a oe saa aa yes sca ca ae eeig iomaio io

ogam aiaes wi ease I uses e same coeios as e i amiy o

ucios ece sca eas iomaio om e seam as oose o wiig o i

}

cose(ie;

umems = i;

}

Oce a e iomaio is ea om a ie i is imoa o cose i oe a asig iomaio om e ies is oy oe we a game is eig eeoe e e ies

ae easy o ei u ake ime o ea a ca gow o ey age sies We a games

eeome is amos comee a eay o e eease i is commo o coe e

ies io a iay oma a ca e oae quicky wi a sige "ea" ca i iay

moe CAE

ESOUCE MAAGEME SYSEMS

Oe o e mai esosiiiies o a game egie is e as maageme o e esouces

eee y e game A game wi uiie a ume o iee esouces o e ca e

iua wo Games wi ee access o wiow sysems aimae images cae sies 3 moes sous a escios o e eemes o e game

e esouce maageme sysems o e game egie ae casses a ieace wi e es o e game egie sysems Oe sysems wi eques a esouce a e

e maage wi oa i io memoy a ass a eeece o i o o e equesig sysem We e esouce is eee e maage wi uiie e esouce o isace

awig a image o e scee o ayig a auio ie We e esouce is o oge

eee i as o e ee om memoy

Imemeaio o esouce maages is o iicu Saig wi secio 1

eow iee susecios wi e eaie Commo o a sysems is e ee o eiciecy Oe key eaue a wi imoe eomace o a esouce maage is

esigig e sysem o ae age umes o esouces i as as a way as ossie

ee ae wo ways a a age aiay sie is is maiaie i a ogam oe is o use a ike is e oe is o use a age saic sie aay ike iss ae oua sice i aows o ew esouces o e aocae o e y as eee y a ogam u

e ike is meo as a seious awack a makes em oo cosy o use o a

2 game egie

ike iss cay wi em a oeea a is cosy i ime aesig a

ike is is sowe a eeecig a aay eeme y is ie Aiioay aig

ew oes o eeig oes om a ike is is ee sowe Eey ime a ogam

equess moe memoy om e oeaig sysem o gies memoy ack o e oeaig sysem ee is a eay as e eques is ae o e oeaig sysems queue o igs o

o

Wi a saic aay e oeea o aocaig a eaocaig memoy is goe

u e cos is eiiiy a memoy Wi a saic aay ee is a ue imi o e amou o a gie ye o esouce A goo esig wi se is a a saey ig ue

imi u o oo ig is aso oies a saey e o e game Wi a ike is i is ossie o u ou o memoy wie a game is uig Wi a saic aay e ue

imi is wa is equese we e ogam is auce e game wi o u o a sysem a oes o ae eoug esouces aaiae o ese easos saic aays ae use o mos game egies

o eac ye o esouce maage ee is a aa sucue (see eow use o

escie i Aiioa aiaes ae ae o ese aa sucues o e esouce maage e ieame o e esouce a e eeece cou

e ieame o a esouce is imoa so eua coies o e same esouce ae o oae io memoy I is ossie o muie cas o oa e same esouce

y is ceckig o see i e esouce eig equese (y ieame as aeay ee

oae a oie o e eisig esouce ca e eue isea o oaig a ew coy 26

is aso es o make e geaes use o e imie amou o a esouce e

esouce maimum aies o e maimum ume o uique isaces o a gie ye

e eeece cou oe aeiae eCou o uses is a ay o e ume o oecs o eiies i e game usig a aicua esouce We a esouce is o

oge use y a oec o eiy i wi ca e ee ucio o a esouce I e

eeece cou os o eo oy e is e esouce acuay ee

Aoe meo o seamiig e esouce maageme o a game egie is o

e-cace a o esouces Ay gie ee e ma o sage o a game wi ae a is o kow esouces a ae use i a aea o e game (suc as e ieio o a

uiig a oe ie o a aseoi e e game egie wi oa a coy o eey sige esouces a may e use y e ee is way ee is a iiia u o oa

ime u wie e game is uig o aiioa isk oas ae eee ece i ae cases wee a esouce was oeooke Wi is iiia oa o eac esouce e

eeece cou wi ee eac eo e esouces ae uge oy we e ee is cose

4. Sprt

Sies ae aimae gaics i a game ey ae use o eese ayig i a 3 game a cao e eesee y 3 gaics is ca e ue o e suec eig ieiciey eesee y 3 oecs i e case o come igs suc as oiage o

ees o imossie igs suc as eec sees Sies ae e oy ye o gaics i

games 27

Sies ae aimae o sow aimaio a sie is comose o moe a oe

image eac eeseig a iee sa-so o moio cae a ame Games use wo

commo meos o eeseig sies iiiua images eeseig eac ame o

aimaio o a sie see coaiig a o e ames o aimaio o oe image e

sie see meo is e oe imemee ee o a ew easos I kees e ames o

aimaio easie o ack i es comessio wok o e eie see wic may e

smae a e iiiua ies a ee is ess o kee ack o i coe

I e aa sucue eow e u sie see o a sie is soe wi e

iomaio eee o gai access o a iiiua sie

yee suc

ca ieame[];

S_Suace rf /o use wi S/

i w ; /e wi a eig o e ames o e sies o e ie ise/

i ameseie; /eau is 1/

}Sie; e ieame o e sie is soe so a muie cas o oa ay gie sie

wi o esu i eua coies o e same sie i memoy A wi wok om e

same sie

Wii e aa sucue o S-Suace e suaces eig a wi (i

ies is soe o e sie o wok e eig a wi o eac ame o aimaio is eee as we e aw ucios wi aso ee e ume o ames e ie y

eau i is game egie i is se o 1 u i ca e cage as eee 28

When a single frame needs to be drawn the position within this surface is determined by:

X coordinate = % * width ( 4,1 )

Y coordinate = / * height ( 4.2 )

The individual frame can then be copied from the sprite sheet to wherever it is needed,

Below is an example of a sprite sheet:

Figure 4.1 Sample sprite sheet.

4.2 Models

Models are the collection of 3D information for an object in a game, Models are made with artistic tools such as 3D Studio Max or . A model is composed of a list of triangles. The triangles are created and arranged by an artist to represent a 3D object needed for the game. The object can be something simple like a rock or desk, or more complex like trees and people.

Model Objects, like sprites, can be animated, There are several ways of

implementing object animations. The most common are animation by frame where there

is a different model representing each frame of animation. There is Key Frame animation

where only select frames (Key Frames) are loaded and extra frames needed by the game

are interpolated between key frames, There is Armature animation where a skeletal 2 sysem is ceae wic mas iage eices o oes i e amaue I amaue aimaio oy e skeeo is aimae (wi key ames a e osiios o a moe oecs eices ae comue ase o e oses o e amaue is game egie uses

Key ame a Amaue aimaio[3]

4. rnl

e Moe oecs i e game egie ae comose o iages iages ae e simes geomeic sae a cao e oe y eaagig e ois o e iage

e ois o e iage ae eesee y eices (eow Eac iage is comose o e ee eices a make u is sae as we as e ee eices a ma o is

eue

iages ae mae o a ae cae a U ma e U ma aows e game egie o aig e iages ace o a iagua image wie e iage is eig

aw (eee y e game egie is aows o e 3 oecs o ae moe

eue a a sige a coo

yee suc

{

Gui iices[3]; / aay o iage ee iices /

Gui iices[3]; / aay o iage ecoo iices/

} iage; I e game egie a iage ees o kee ack o wic eices i e moe

ee is ae use y e iage a wic eue cooiaes i e moe ae use y

e iage Sice e mes o a oec is comose o a coiuous mes o eices coece y a iages mos eices ae a o may iages e same may e ue 30

o eue cooiaes u ue o e ees o e ayou o a image e same

iages a may sae eices a eges o e mes may o sae e same eices

a eges o e eue I is ossie o ae iee eues aie o iee

iages o e same mes as we

4.4 Vertices

eices ae ois i sace ey ae eesee y 3 oaig oi aues wic

escie e osiio o a ee aog e Y a aes eeig o eeoe

eeece a ee is someimes eesee y a aay wi 3 eemes a someimes

as a sucue (ame Coo wi 3 memes ( y e aay meo is moe comaie wi mai oeaios

eices ae a asic uiig ock o 3 cosucs 3 moes ae comose o

iages wic ae i u comose o eices Moeme a aimaio i 3 moes is accomise oug e asomaio o e osiios o e eices a make u e iages

4.5 Armatures

Amaues ae amewoks o oes a mimic e ucio o a moes skeeo a musce sucue Eac oe is associae wi some ume o eices i e moe

As a oe is moe a ose e ike eices ae moe aog wi e oe is is use i aimaio eesiey o make e o o e aimaig ais easie

I e game egie e use o a amaue as a ume o aaages oe simy usig a seies o moes o aimaio I is e amaue a is aimae o e 31 moe oec Wi a amaue a moe oy ees o ae oe ose e es osiio

o oe ames o aimaio e ose o e moe is cacuae ase o e oses o

e amaue

I a cases e amaue wi ae ess iomaio associae wi i a e moe ise so aig may ames o aimaio (eac soes e osiio a oaio o eac oe akes u a ess memoy a a aimae moe (wic soes e osiios o eey sige ee i e moe Weeas a yica moe wi ae a eas 5

eices a amaue wi ae o aeage 5 o oes a sigiica saigs o memoy

Amaues eis as seaae aa sucues om moes is meas a sige amaue ca e aie o a moes a i a asic sie a ye o isace a uma amaue ca seice ay uma sae moe e i a soie a iage a oo o ee a gia A sige amaue ca e ceae o a ose o oe ack aima is cus ow o e eeome ime o e ais so oy a sige aimaio sequece ees o e ceae

Amaues aso oie meaigu iomaio aou e moe i quesio

oes ae ame a ae osiio oaio a scae maiaie seaaey is ca e useu o uig aiioa oecs o a moe ike uig a ae i e a o a

aye o a eme o e ea o a kig o a gowig ig secia eec oe e eyes o a mose is ca cu ow o e memoy eee a ime o a ais as we sice a ew moe oes o ee o e ceae o eey ossie comiaio o iems

eig e o equime wo 3

May game egies wi use e iomaio o e amaue o ceae secia

eecs as we suc as "ag o ysics" wee a ucoscious caace ca e moe a e accoig o e amaue Oe eecs mae ossie wi amaues

ae ciig a saig o ea wo oecs a oes ca e ace iecy o e

ugs o a ae oo oes ca e ace iecy o e ses o sais

eow is e aa sucue o e amaue I makes use o e oe sucue

a e ose Sucue

yee suc

{

ca ame[]; /ame o e amaue/

oe oo; /oie o e oe a is e oo A amaue cao ae moe a oe oo oe/

oe oes; /e is o oes i is amaue/

ose ame; /e is o oses o eac ame/

}Amaue; is asic sucue o e amaue is sime I as a is o oes a a is o

osses is way e oes ca e accesse o ei iiia saes a osses ca e accesse y ame o e ieece om e es sae ogee ese ae use o

asom e associae eices om ei iiia saes

e is e aa sucue o e oes I is use o kee ack o e

eaiosis ewee e oes a e oes iiia sae

yee suc

{

ca ame[]; /ame o oe = ame o associae ee gou/ 33

ca ame[]; /ame o ae oe/

ca came[MA_KIS][]; /ames o cie/

oa ocaio[3]; /ase o is oe/

oa mai[][]; /e mai o e iiia oaio/

}oe; /some eies omie o simiciy/

e ame o e oe is imoa I is use o seac y eeece y e oe

oses a o eemie wic eices ae associae wi e oe oes ae ogaie i a ee sucue wi eac oe aig a sige ae a e ossiiiy o may cie e asomaios o e ae ae asse o o e cie ocaio is e

Y ocaio o e oe i sace eaie o e oea amaue e mai is e quaeio oaio mai o eey ose ame o e amaue eac oe as is ow associae iomaio

yee suc

{

ca ame[]; /seams eua u eee o seac y/

oa oc[3]; /ose ocaio om oigia sae/

oa o[]; /quaeia oaio o oe/

oa sc[3]; /e scae o is oe/

}oeose; oe oses ae sime e ose ame coais e cage i ocaio oaio a scae om e oes iiia es sae (gie y e oe iomaio

o e ogaie e amaue some sysems emoy wa ae kow as oe

Gous oe Gous ae ses o oes a ca e se o iee ames a oe 3

oes i oe gous Some oes ca e memes o muie gous is aows e

aimaos a esiges o ceae cusom aimaios a o e em auay

o eame e owe oy ca e ae o a "egs" gou a e ue oy

ca e ae o a oso gou wie e ea ca e mae is ow gou e egs cou

e se o cyce oug e u aimaio wie e oso ca e se o a iig o acio

aimaio wie e ea ca e gie a oi o ocus o I ee ae oes sae

ewee e gous (suc as e is a eck e ese oes wou ake e aeage

osiio icae y o gous

Aoe ecique aaiae o amaue aimaio uses e coce o ayeig

Seaae acios ca e "ayee" o o o eac oe wi iee ioiies o ge a

ee geae age o ossie amaue osiios I e eious eame aiioa

ayes ca e aie o e uig a aackig aye I e aye is akig amage

e e ai aimaios ca e ayee o o o e oe acios so e aye ca eac

o amage (wi e eece oes sea ou amog seea gous wie si

eomig oe acios I some moe game egies i is ossie o a ayes a

eac o eiomes (sycig wi e gou eai o sais icue acia aimaios a ieac wi oe eiies (soueig as someoe i a cow a a

e same ime

I oe o ae oes ake io cosieaio muie gous a ayee acios

e same ocess is aie o a ee a as moe a oe oe as a ae e weigs o a oses ee o e omaie (ike a eco wou e omaie eoe

e eomaio (ocess o cagig e eices ase o e oes akes ace A

asomaios a ae aie ae scae accoig o ei ow comoe wic is a

eceage o e oigiay iee moio

4.6 Atn

e ames o aimaio o a amaue (o moe o sie geeay equae o seciic

acios as se ames o eame a wakig sequece ca e eome ewee ames

a 5 o e aimaio ese sequeces ee o e ae ou eoe-a so e

ogamme ca ca e aoiae ame o aimaio a e esie ime As oecs gow is a-coe e-aig ecomes eious a ime cosumig o uae as

oec aamees cage a aus I oe o accommoae aiaios i e as a aisic ieeaio acios ca e use o e ogaie e aimaios

We usig acios as a escio o eiiio ie eac ie usuay coesos

o a sige sie aimae moe o amaue We ase e game egie wi a

ack o a geeic emae e acio ie wi is acios y ame e saig a eig ames o a acio e ame ae o seig oug a acio a ow a acio is ae we e as ame is aw We e aimaio is comee e game egie ees o kow wa o o e (assumig a iee acio as o ee cae a so cicuie e acio i quesio ee ae some ossie acios a e egie wi eom

• oo — is ag wi ae e aimaio esa we comee ui a ew acio is seciie • Osciae — is ag wi ae e ames egi o cou ack o e egiig oce e e is eace a e ack o e e oce e egiig is eace ui a ew acio is seciie • Ie — is ag wi se e e acio o a ie sae we iise 6

• o - is ag wi ae e aimaio o o e as ame ae e sequece is comee is ag is useu o e a yig aimaio wee e as ame is e ea ose • Cai acio - is ag wi swic e aimaio o e seciie acio ae is oe is comee Wi acios a eiiio ies (see secio eow e coos o e game

egi o e oke ou o e souce coe o e game egie As cusom acios ca e

eeece i a eiiio ie a e aoiae aimaios ca e ae o e acio

ie a aimaio e game ca ouce ew coe wiou e ee o uae e

souce coe

4. Entt

Eiies ae ay a a oecs i a game a ca ac o e ieace wi is

isiguises eiies om oe oecs i e game a ae ee o uey aeseic

uoses suc as aice eecs (ie a immoae oecs (e wo ise I

iee game egies eiies ae someimes eee o as "Oecs" "Acos"

"okes" o ay ume o aeae ems ese ems ae a ucioay syoymous []

Eiies ae simia o oe game esouces i a ey ca e ceae a

esoye o e y a ee o e maiaie quicky Eiies emsees use may o

e oe esouces i e game A yica eiy wi use a Moe o a Sie o eese ise Eiies wi use iee sous ougou e ie o a eiy

Uike oe esouces eiies ae uique A sige eiy cao e sae

ewee muie eiies e iomaio coaie wii a eiy may e eua 37 o equiae o aoe eiy o eame ee may e seea ue eiies a a

ook e same a moe e same u wic a ae iee osiios i sace a

iee eiies a ie e ues Eiies o o use eeece cous u a sige

"use" ag is ag is se o oe i e so i e eiy esouce aay is i use o eo i i is aaiae

e oe mai isicio is a eiies ca ucio ieey A eiies

ae a ucio oie cae a "ik" ucio A ik ucios ae e same

aamees a eu oig I is saa C imemeaio a eiies ee o e

asse a oie o ise I a C++ imemeaio is wou e accomise wi a

iua ucio wic ieey as access o is meme aa e ik ucio is use o gie uique eaio o iee eiies

Eey eiy i a game is sucuay e same ig ey ae a escie y

e same aa sucue Eac eiy gais is isicio ia iee aa a iee

ik ucios e aious yes o eiies ca eie e a-coe o gaie om a

escio o coiguaio ie A ik ucios ee o e eie a coe o eee oug a emee sci sysem (suc as yo o ua o e sake o see is game egie a-coe e ew eiies a wee use

Eey eiy as e oouiy o uae ise oce eey egie uae is is

oe y caig e ik ucio o e eiy (i i as oe e seciics o a ik

ucio wi ay u mos eiies wi ae ei moeme eauae coisios wi oe eiies cecke o a aimaios o e moe o sie oec icemee

eow is a same eiy sucue Oy oios o e eiy sucue a ae 38

eaie o is secio ae icue Icosequeia maieace iomaio as ee omie as we as iomaio a wou eai o a seciic sye o game

yee suc Eiy_

o may games iee eiies ca ae eaiosis o oe eiies e

wo mos commo eaiosis ae owe a age e owe o a eiy ca e e eiy a ceae i (suc as i e case o a oecie eig ceae y e weao a

ie i o a sumissie eaiosi ( suc as i e case o a eae eig e owe o suoiae oices

e age oie ca oi o aoe eiy o escie e ocus o is eiy

e ocus ca mea e iea age o a oecie (o isace a seekig missie o a eiy a sou e oowe e eac meaigs o ese wo useu oies wi cage (o e igoe as eee y iiiua eiies

suc Eiy_ owe; /oie o e owe eiy/

suc Eiy_ age; /oie o e age eiy/

i use; /o eeece i esouce maageme/ e moe a eue o e sie image (eeig o wee is eiy is a

3 o oec is e eeece o e moe o sie esouce ese ae asse o e

awig ucios o eac eiy

Moe moe; /e moe o e eiy i i as oe/

Sie eue; /e eue o e eiy/ e ik ucio is a ucio oie wic ca e cage o e y as

eee y a eiy e ik ucio is wa gies eac eiy is uique eaio as

escie aoe

oi (ik (suc Eiy se; /cae y e egie eey so oe o ae iu a make ecisios/

Ui3 eik; /use o ow oe e eiy iks/

Ui1 ikae; /use o icemeig aoe/ Eac eiy eeeces e gaica iomaio i e gaica esouce maages (moes sies Sice may iee eiies ca a eeece e same gaica iomaio some iomaio eae o e gaics ees o e maiaie

y iiiua eiies ame iomaio (o aimaio ees o e maiaie seaaey y iee eiies is is ecessay sice iee eiies a may use e same moe wi e a iee ois i a aimaio ase o iee acios

oa ame; /cue ame o ee/

i cou; /use o aimaio e oo aiae/

oa ae; /ow oe we uae ou ames/

Ui3 ameeay; /amou o eay ewee ames/ e osiio oaio scae a e ecos o cagig osiio oaio a scae wi ay o a eiy y eiy asis ee e ysics coeio o osiio (s is use

Coo s; /scee cooiaes/

Coo a; /acceeaio/

Coo ; /eco aues/

Coo oaio; /e oaio o e 3/

Coo oec; /e eco o oaio/

Coo scae; /e scae o e 3 moe/

Coo scaec; /e scaig eco/ 40

o ae coisio eecio a ais aige ouig o is maiaie o eac eiy e ouig o as e Y oses om e ocaio o e oec (s wi

e Wi eig a e imesios o e o o escie e quaiaea

o o; /e sie a ose o a

ais aige ouig o/

ea (ow muc amage a a eiy ca susai eoe yig is us e is o may aiaes a ae i ace o keeig ack o game seciic aa

i ea; /is is e eiys ea/

}eiy;

4.8 rtl & prr Entt

I ay game egie ayig a ca ac o e ace uo is esigae a eiy

Eiies ca e mae u o oe o moe sies o 3 moes Eiies equie moe sace a ocessig owe a is equie o some game isuas o aciee secia eecs i games emoay eiies (someimes eee o as aices ae oe use i ace o eiies

aices ae a aiaio o Eiies Weeas eiies ca eii come

eaios ase o iiiua ik ucios a uae ucios a aices oow

e same uae ucio is cus ow o e ocessig ime o aices o

aices o e eecie e game egie ees o e ae o ouce age umes o

em aices aso ie om eiies i a a aices eis o a ime iesa As soo as e iesa ecemes o eo e aice is ee a mae aaiae o 4

eeiiio Eames o aices i games icue amie weae eecs suc as ai o sow ie a smoke as we as saks a aiioa eaiig o eosios

e aa sucue o aices ees o e se u o aow o a ossie aice

yes suoe y e game egie ee is a eame ake om a game egie

yee suc aice

{

i ye; /ye o aice/

oa ssys; /cooiaes o wee e aice is geig eee/

oa y; /eco o aice/

oa aaya; /ow is e aice acceeaig/

Ui3 Coo; /wa coo is e aice?/

Ui3 coo; /Wa coo oes e aice ee o e eoe i ies/

Si1 GA; /Coo eco o e geeue a aa eseciey/

Sie sie;

i use;

}aice;

oe ow is aice aa sucue aows o e coo o e aice o e

eie wi a coo eco o coo esiaio e coo eco is e amou o cage aie o eac cae o a coo (e gee ue a aa i eac ame a e

aice is uae e coo esiaio is e age coo a e aice ees o e

y e ime e aices iesa eies is is accomise y a sime iea ieoaio ase o e emaiig iesa o e aice a eac ame

is game egie aice sysem aows o e 3 d imesio Usig sime 42

icks o awig e aices (aowig e aue o eec e y aues i a se aio a

3 eec ca e geeae wi e moio I some games a simuae a 3

eiome (wie o acuay eig 3 is eec is ey eu o maiaiig a

iusio I is wee a 3 game egie aice sucue aiioa oies o 3

moes wou e aaiae

A aices ae uae om oe ucio e Uaeaices ucio is

cae oce a game ame o uae a aw a o e aices i e game is

ucio cecks eac aice i e massie saic aay o aciiy uaes e

cooiaes a coo (a ay oe acos o e aice sysem a e aws eac

aice eoe moig o o ceck e e oe

aices gai ei om a ucio om aious aice emies A aice

emie ca e oe o wo yes a isa aice emie o a eiy aice emie

Isa aice emies ae ucios a ge cae oy oce o ay aice geeaig

ee ese ae useu o saks eis a eosios ees a oigiae a a sige

ame a ae o susaie o asig eecs suc as ai o a uig cam ie a

aice emie eiy is eee ese ae eiies a icooae aice geeaio

io ei uae ucios

e way aices ae emie ca eie e oea sae a om o a aice

sysem aices ca e emie om a sige oi a ae o aea aices emie

om a sige oi ca ceae e eec o a say (wi a sige iecio sig aom

aiaio a a acceeaio ow (gaiy eosios (wi a comeey aom

iecio sig acceeaio ue o gaiy o a i (ey sig aom eco ow 3 wi gaiy ayig a a aes (wee e saig oi o a aice ca e ay

aom oi yig wii e ae ca geeae weae eecs (wee e ae is i

e "sky" o e game aice acceeaio is se o gaiy a a aom "wi" eco is aie o aea moeme Aeas (some oume o ecose sae wee aices ca e geeae om ay aom oi wii e aea ae use o ocaie eecs wee a sige oi wi o suice suc as a oc (aea is e o o e moe aices acceeae away om gaiy o a og eec (aices ae gie a aom eco a ae sow moig o eece y gaiy

emoay eiies ae secia case esios o aices ey ae iee o eis o a se amou o ime a o o ik o ei ow ey us moe accoig o some ese aamees ee ae may yes o emoay eiies (aices ae a suse o emoay eiies u e mos commo is a ik iks equie wo osiios

o e ike ewee ey ae ceae y awig some eec oe e isace ewee

ose wo ois e mos commo eame is a o o eeciciy Eeciciy wi ac

ewee wo ois o simuae a eec i a game a eeciciy gaic is eie sece ewee e wo e ois o a smae gaic is ie ewee wo e ois

Secig woks we i a 3 game egie wee e gaic (amos aways aimae

as a esouio a is cose o e isace ewee e wo e ois Wee e

esus o secig wou ouce ugy esus iig (acig a seies o sies e o e i successio ca ouce ee esus Wi iig e sie ees o e mae wi e ie i mi y e ais Some aisic ogams ae iig oos o aciiae

is CHAPTER 5

3D MODEL RENDERING

Oe o e mos asic caeges o ay 3 game is o ceae e meo o eeig

e 3 iomaio is ucio "awMoe" sows e simiie meo o

eeig OeG e moe iomaio so i wi ook coec oe a e iomaio

o e mes is oae om a ie eoe om a aiss oo (ee[3]

oi awMoe(Moe moeSie eue Coo os Coo oCoo scae oa aa i ame i awMoe

{

i i;

GMgou gou;

GMiage iage; ese oies ae use o ceae a soa access o e a o a come aa sucue a is eee o eeig

gEae(GIGIG;

geuc(G_SC_AAG_OEMIUS_SCAA;

gEae(G_E;

ese eaig ucios e OeG ow e eeig o e iomaio a is aou o e se o i sou e ae

gusMai(;

OeG woks o a sack icie Ay oeaio oee o ee o a sack is auomaicay aie o owe ees o e sack u o o ige ees

44 45

i(eue = U

gEae(G_EUE_;

gieue(G_EUEeue-image; }

The above code checks to see if there is an associate texture to use when rendering the object. The below code will move and rotate and scale our object to the dimensions determined by the entity that owns this object. This way multiple entities can use the same object model but show them in different positions.

gasae(ososyos;

goae(o 1 ;

goae(oy 1 ;

goae(o 1;

gScae(scaescaeyscae;

The section below will step through the object by groups of triangles. The groups are organized into a linked list (a structure that is normally too slow to use in rendering and has been removed in more processor intensive games).

gou = moe-oec[ame]-gous;

wie (gou

gegi(awMoe;

o (i = ; i gou-umiages; i++

iage = moe-oec[ame]-iages[gou-iages[i]];

This loop traverses every triangle in the model that is a part of the group. It then feeds OpenGL the information with the three functions glNormal3fv (which describes the 46

oma o a ace a e ee use o smoo o a saig geCoo (wic gies e eue U cooiae o use a gee3 (wic gies OeG e ee i quesio is is oe ee imes oce o eac ee a makes u e iage

goma3(moe-oec[ame]-omas[3 iage- iices[]];

i(eue = Ug1eCoo(moe-oec[ame]-ecoos[ iage-iices[]];

gee3(moe-oec[ame]-eices[3 iage- iices[]];

/e oe wo iage ois omie ue o euacy/

}

gE(;

gou = gou-e;

}

goMai(; Oce OeG as ee gie e mes iomaio e sack is oe so a ay cages mae o is oec o o cou ay oe oecs o is easo a

eaues a ae ee eae ae isae

gisae(G_IGIG;

gisae(G_E;

gisae(G_EUE;

} CAE

EIY SYSEM UCIOAIY

o ceae e eec o a aisic oecie eiies ee o e uae ase o muie

acos Game egies ae acie so eeyig ees o e uae coiuousy o

e mos asic moeme o a oecie a eiy ees a eco e y a ossiy

comoes o a eco o a aay o ee oaig oi aues o eey uae oo

o e game egie eey eiy wi ae is ecos aue ae o is osiio is ceaes e moio

asic moio wi a sige eociy eco woks ie o may oecies a

oe sime eiy moio yes is aso woks we o yig a oeig oecs

sice e ik ucios o e eiies ca eemie e eco o moio e ik

ucio ca cacuae e iecio a e oec sou e moig i a e se e

eco ase o e iee eociy

o se oee oecies suc as ockes is si woks sice a ocke wou moe so as a sime iece moio is eecy acceae Gaiy ca e igoe

sice ay o o ue o gaiy may e egigie o sowe oecs o ay eiy a wou ae a oiceae o ue o gaiy a aiioa se is eee

Acceeaio ecos ca e aie o e moio eco y aig a

acceeaio eco o e eociy eco eoe i is i u ae o e osiio o e oec acceeaio ca e emuae We eaig wi muie oces suc as gaiy

7 48 and propulsion, accelerations can be summed before adding them to the vector. Often times, in order to maintain more meaningful control over the motion of the objects in the world, gravity is maintained as a separate, global variable (In games, not only is the magnitude of gravity variable, but the direction of gravity is also not a fixed constant).

This way, if gravity ever gets adjusted or turned off, it has a single point where it needs to be adjusted.

6. nn

Some types of projectiles need to be able to bounce off walls and objects that do not take damage. There are different approaches to doing this depending on the setup of the world and how accurate the game needs to be. The simplest way to create a bounce effect is applicable when the world is laid out in a grid, or all walls are axis aligned (planes fall in only two of the three possible axis). In this case, a simple reflection of one of the vector components is needed, For an example in 2D: a projectile that is moving in the positive

Y direction hits a ceiling or floor, then the Y component of the vector is negated

(multiplied by -1).

For more accurate reflections, the game engine will need to perform more calculations. The following formula describes how to calculate the resulting reflected vector from the initial (normalized) vector V of the object and the normal vector N of the intersected surface. 9

= - ( [o] (1

[o] is e o oucio oeao

e coe o cacuaig e eece eco oows oe a e eco ceae

wi e a oma eco

eececo(Coo Coo Coo

{

Coo em;

ecoScae ( ( oouc( em;

ecoSuac(em;

}

e Coo aa ye is a aay o ee sige oaig oi umes is ca

eese a oi a eco o oe cicumsaces wee ee oaig oi umes ae

aoiae

6.2 rn

o some yes o eiies eig ae o ack a oow oe eiies is esseia

omig missies a comue cooe ayes may ee o e ae o aus ei couse ase o e osiio a moio o a age eiy is sime oem ca

ecome ey come eeig o e esie eaio

o a AI ooe ackig a aye e AI age wi ee o ae a oie o

ei age e simes meas o oe i o e aye (o oe age is o cacuae 50

e esie eco o moeme y comaig e osiios o e age a e ackig eiy is woks we i oe sace u as so we was a oe osaces

oeiay ie ewee e age a acke e oowig is a sime agoim o geig a ey iec a o e age egaess o e osaces i e wo is agoim equies a e as ew osiios o e age e maiaie y e age ceaig a ai a ca e oowe e oge e ai e moe ikey e ue wi

o ose ack o e age e agoim is

1 Sa wi e cue osiio o e age

eom a iec ace o see i ay osaces osuc e iec a o e age

3 I e a is uosuce e cacuae moeme eco o e age

I e a is osuce se e e mos ece osiio as e ew age

osiio a eom se agai

5 I a eiousy osiios ae osuce e eak o e usui

is meo woks we o iec ackig u i e moio o a guie missie is

esie some aiioa wok mus e oe I missie guiace ee is a imi o ow

asicay e aecoy ca e aee o a gie uae is eso is maiaie as a aiae o e eiy (us aowig egees o eecieess o omig

oowig e same ses as sow aoe o ge e age ocaio e missie age e ees o eom aiioa comuaio e osiios ae use o cacuae

e oima (iec eco o e age e age o oaio is cacuae a wou

ee o e aie o e missies eco o mac e ew eco I is age is geae than the threshold then the threshold is used instead, The vector of the projectile is then rotated by the desired angle. For very smart missiles, the game can even allow the missile to track the trail of a target. CHAPTER 7

COLLISION DETECTION

I ay acie game eiies i e game wi ee o iecy ieac wi oe eiies a e game wo is oem as aious souios o iee siuaios

eeig o e sye o e game a ow accuae e coisio eecio ees o e

7.1 Distance Collision

e mos asic meo o coisio eecio ewee wo eiies is ase o usig a sie I is meo eiies ee o ae a cee oi a a aius Coisio ewee

wo eiies occus we e isace ewee e wo eiies is ess a o equa o e sum o e aii is is ase o e usua isace cacuaio sq(( 1 — + (y1

- y = 1 + e omua ees o e moiie o e uoses o eiciecy sice i coais squae oos Sice e acua isace oes o ee o e kow We ca moiy e omua o make e cacuaio sime y squaig ( 1 — + (y1 — y = (1 + oe a i e case o a 3 wo eeseaio e comoe

(1 - is ae o e equaio I cases wee is muc accuacy is o eee

u aiioa eiciecy is eee e squaes ca e comeey igoe e esu is

ess accuae u goo eoug o may game yes is meo is mos useu we

eaig wi seica o ey sma oecs

52 53

7.2 Axis Aligned Bounding Boxes

o mos game uoses a ais aige ouig o woks es A ouig o is a cose aoimaio o e sie a sae o a eiy i e om o a o is o is

ee oae i ay way egaess o e oaio a acios o e eiy is way assumios ca e mae aou e oieaio o e ouig oes a e ma o coisio cacuaios ca e mae muc sime

e ouig o is eesee y a sucue wi ou aues y w(wi

(eig We eaig wi 3 imesios a (e ae ae as we

i o_Coisio(AAo box1, AAo box2)

{

if((box1.x + box1.w >= box2.x) && (box1.x <= box2.x+box2.w) && (box1.y + box1.h >= box2.y) && (box1.y <= box2.y+box2.h) && (box1.z + box1.d >= box2.z) && (box1.z <= box2.z+box2.d))

eu 1;

eu ;

e aoe ucio oy woks we wo eiies ca e eesee y ais aige ouig oes I a eiy is us eesee y a sie-ess oi a ouig

o ca si e use u e w a aues ae e a eo

I is imoa o oe a i e eiy aa sucue e osiio o e eiy is maiaie seaaey om e y aues o e ouig o e y a aues o

e ouig o eese e ose o e o fr e eiy osiio aue is way

uicae iomaio oes o ee o e maiaie

I wou seem a e sie o a ouig o ca e cacuae om e 4 maimum sie o e eiy gaic (3 moe o sie o may games e

eaie sie o a eiys ouig o ca e eemie y a esig coice I some acio games eaig wi age ume o aaous eiies (suc as mies o ues i is commo o make e aye eiys ouig o smae a e aye a eeoe make e game moe ogiig o e ayes misakes

. Cplx Entt Clln

It is o ucommo o games o icooae come eiies o eiies a ae acuay mae u o muie eiies A eame o a come eiy may e a age sake e sake ca ake o a aiey o saes as i cois a es e sae o e sake wi cage asicay as i oes is is makes e use o isace coisios o ouig

oes ey iaccuae mos o e ime (sice mos o e ouig o wi e emy sace I cases suc as is moe come aagemes ca e mae

o sake-ike oecs a seies o ouig oes o a seies o emy eiies ca

e use Eac segme i e is ca ae is ow ouig o o is ow eiy wee ay coisios a acios ae asse o om / o a ae eiy wic oes e ikig

o a o e eiies a aes coisio ees

ese yes o come eiies ae ey imoa o games wee seciic oy

as ee o e ieiie suc as sooig games (wee sooig a eg ca isae a

igig games (wee e coisio eecio ees o e ey ecise I a igig game eac segme o a iges oy (as oeam ue am oy ea ig sis a ee a ee ei ow seaae coisio cecks is aes cases wee

o ayes ae aackig us e "is" ouig o wi coie wi iee 55

ouig oes o e ooe wic esus i iee eecs suc as a ock o i

wi moe o ess amage

Wi e use o amaues e moio o e come seies o ouig oes

ca e esaise y e oses o e oes i e amaue Aiioay e coo

ois ( e ea a ais o e oes ca e use as cee ois o isace coisio

eecios

.4 th ndn

I ay game wee comue cooe eiies ee o eemie ei ow maeues

o i games wee e aye wi esigae a age ocaio o ei uis o moe o i

is imoa o ae as a eiae a iig ee ae may meos o

eemiig a a o a eiy o oow om sime cas u agoims a wi

esu i a iae a u wiou eiaiiy o moe eac agoims suc as e

commoy use A (oouce ay-sa agoim[5]

Cas a u agoims ae e eiy moe i e eco owas e goa

ocaio We a osace is ecouee e eiy wi cage iecio ui is a is o oge osuce a coiue o moe A some oi we e esie iecio

(owas e goa is o oge osuce a a is esume I e ew a oes o

esu i a oeig owas e goa e e eiy wi ee o ackack ui a a oes u

is meo wi esu i a iae a i may cases u ee ae ossie

ayous wee i ecomes ieicie e meo is use es we ee ae oy a ew 56 osaces i a oe aea a e osaces ae a coe sae Cocae saes a mae-ike ayous wi esu i eeess ackackig eeig o e eso o

ow og a eiy wi aese a a eoe ackackig some comicae ayous may e amos imossie o aese We is meo is use i es o e use oy o sma scaes a oe i coucio wi oe moe comicae agoims (suc as we e cas-a-u meo ais

e A meo is e asis o mos a iig agoims e A woks es i a ie eiome (suc as a cess oa wee eac ie is coece o oy e aace ies (o ess we i is o a ege o e oa ee is a sime eaaio o

e A meo eaie aiy wi esciie aiaes isea o e oes

aiioay use ( g ec

wo iss Ucecke a Cecke ae equie

Ucecke — A is a coais ies a wi e cecke o e a e is coais e ie ( y is ae (y e ume o ses i ook o ge o is ie a

e esimae ume o ies e o ceck eoe e goa

Cecke - e same ye o is as ucecke ece is oe kees ack o wic ies ae aeay ee cecke

e oowig ses ae e ake

1 Gie e saig ie a i o e Ucecke is wi is esimae isace o goa [ = sq( + y o eame] Go oug e Ucecke is seacig o e is ie wi e smaes esimae isace o e goa 3 Ceck o see i is ie is e goa ie (i so e iis I o a e cie 57

o is ie (a ae o aeay ee ace i e Ucecke o Cecke is o e Ucecke is I a ci is aeay o oe o e iss a e ume o ses i ook o ge ee (is ies ses + 1 is ess a e ses o e ci i quesio i wi e e e-ae o e Ucecke is wi is ew iomaio

ace is ie i e Cecke is

5 eea ses oug 5 ui iise (a is ie is e goa ie We iise ui e a ase o e aes o eac ie ackwas om e goa ie ack o e sa ie (e ie wiou a ae

is meo wi i e mos eicie a o e goa om ay ocaio i ee eiss a a Uouaey is meo ca e ey sow i aicaio A ew ois o eiciecy ca e ae o icease e see u ey euce e accuacy oug is ca e comesae o ae ae easiy is game egie uses e oowig moiicaios o imoe eomace ime e a y ae ae ogee o

eemie e eaie esimae isace o e goa is ayes a iisio oeaio (a o squae oo wic is a cosy comuaio Cie ae ee ae ack io e is i a ase meo is ae ou

ow e agoim wi ouce a ai a eey ime i oe eiss ece a

a is o ecessaiy e mos eicie o oecome e oss o eiciecy e esuig

a is cu ow o a seies o way-ois o e eiy o oow is is accomise

y is sime moiicaio o eac oe i e a ceck o see i a ie ca e ace

om is oe o e e oe (o eac oe ae is oe wiou ecoueig a osace I a osace is ecouee se e eious oe as a way oi a eee a

oes ewee em 58

This way only important nodes are kept track of and superfluous tiles are ignored,

The entity can then follow its path by walking towards each node in succession until the goal is reached.

This game engine does not use a tile map to keep track of walkable terrain. The game uses a walk mask 3D model object to define the area that can be traversed. This 3D model is composed of a linked triangle mesh that defines the terrain, The above algorithms still apply, but this time, the tiles are individual triangles in the mesh and the children are adjacent triangles (a triangle is adjacent to another triangle if two of the vertices are shared between them). This style of game is very popular in the professional games industry, Most prominent is the game Starcraft, by blizzard entertainment,[8]

7.5 Ray Tracing

The process of ray tracing is one used frequently in 3D applications, It is used for many tests such as between two objects, the establishment of boundaries and the placing of objects on the "floor" of the world. Ray Tracing can also be used for advanced lighting techniques.

Ray tracing is done by projecting a ray from a single test point and checking to see if the line created will intersect with any of the triangles in the model being tested, For some cases the exact point in space where this intersection takes place needs to be returned.

In general the functions that use ray tracing need to provide a set of information that will be tested to determine if a collision between the ray and the model has occurred. 59

e ay is moee wi a saig osiio a a iecio e magiue o e

iecio is imoa o may aicaios o is es suc as we a eiy is moig a ees o so i i is a oygo i e game wo e ucios wi aso ee e

iage i quesio is is geeay gaie y usig a se o iages i a 3 moe o

oug aesig e iay sace aiio a makes u e ee o e game

is oem is oke ow io wo geea ess is e ay is cecke agais e ae escie y e eices o e iage i quesio (e ayae

ucio eow I e ay iesecs e ae eie y e es iage e e oi o iesecio (eue oug e coac oie is ese o see i i ies wii e

ouaies o e iage I e oi is wii e iage e ayIiage wi

eu 1 (ue a gie us e oi a wic e ay iesecs e es iage e

ayae ucio wi eu aiue i e ay is aae o e ae i i ois away

om e ae o is oo so o iesec wi e ae (meaig a e eiy is

eae owas e ae u wi o iesec i uig is ame

i ayiage(Coo sa Coo i Coo Coo Coo 3 Coo coac •

{

Coo oma;

i ;

= ayae(sa i 3 coac oma;

i( == eu ;

i(oiiage(coac 1 3oma == 1eu (1 ;

eu ;

}

ayae is e ucio a wi eemie i e ae is iesece y e 60

ay I is ees o cacuae e oma o e ae eie y e ee cooiaes i oU es iage is ucio is cacuaes e eiiio o e ae om e cooiaes o e ee eices a make u e iage I e cecks e ay agais

e ae o iesecio

i ayae(Coo sa Coo i Coo Coo Coo 3 Coo coac Coo oma{

oa AC;

oa eom;

A = (1y ( - 3 + (y (3 - 1 + (3y (1 - ;

= (1 ( - 3 + ( (3 - 1 + (3 (1 - ;

C = (1 (y - 3y + ( (3y - 1y + (3 (1y - y;

= -((1 (y 3 - 3y + ( (3y 1 - 1y 3 + (3 (1y - y 1;

eom = ((A i + ( iy + (C i;

i(eom == eu ;/ca iie y eo/

= - (((A sa + ( say + (C sa + / eom; e aoe coe cacuaes e eiiio o e ae escie y e iage

asse o e ucio I e cacuaes e iesecio o e eco a e ae I

e eomiao o e omua is eo (ca iie y eo e e ay is aae a wi ee iesec e ae y ceckig e esu ( i ca e eemie i e ay wi iesec e ae wii e age o e eco (ewee eo a 1 i e ay is

oiig away om e ae (ess a eo o i e ay wi iesec wi e ae

eyo e age o e eco

i(( ( = 1{ 61

coac- = sa + (i ;

oma- = A;

oma-y = ;

oma- = C;

eu 1;

}

coac- = sa + (i ;

oma- = A;

oma-y = ;

oma- = C;

eu -1; } Wi e oi o iesecio wi e ae kow (o aie e esuig oi

ees o e ese o see i i is wii e ous o e iage o eemie i a oi

ies isie a iage o ousie a ay ca e cas i ay iecio om e es oi I

e ume o iage eges cosse is o e e oi ies wii e sae i e

ume o eges cosse is ee (o eo e e oi is ousie e oec is is uimaey ase o e oa Cue eoem o cues

is cao e aie o e iage as is I e wo ies (e ay a ege o

e iage wee soe o e esu may o e accuae ue o a imiaio i e

ecisio o oaig oi umes Aiioay e ma o oig is cacuaio i

3 sace is uecessay a may e oiiie o a game

y oecig e iages 3 cooiaes oo a ae e ma ca e simiie oiiage is eemies wic o e 3 aes (Y o Y wou gie e es esu y ceckig e magiue o eac comoe o e aes 62

oma (gie y e ucio ayae e ages asoue comoe aue is e oe use I e uses a aiay ay (e a age eco i e osiie o y iecio ceae o see i i cosses e ee ies (ow a sime o e es iage igoig oe o e comoes o e cooiaes (eie e Y o comoe

i oiiage(Coo oi Coo 1 Coo Coo 3 Coo oma

{

i MaAis;

oa Maa;

Coo em;

Coo i = {1};

MaAis = ;

Maa = as(oma;

i(as(oma Maa

{

MaAis = ;

Maa = as(oma;

ow ceck ow may eges ae iesece y e iecio eco

swic(MaAis

{

case

i(ayCossEgeCoac(oii1 1y y U = cou++;

i(ayCossEgeCoac(oii3 3y y U = cou++;

i(ayCossEgeCoac(oii1 1y3 3y U = cou++; 6

eak;

}

eu (cou % ;

}

Wi e cou ow kow e ucio oigia ucio ayiage ca gie

a accuae a as ceck o see i ay ay (o eco iesecs ay iages is

ucio is equie o mos 3 game egies o cacuae coisios

e aoe ucio cas e ucio ayCossEgeCoac o eemie i e

es eco iesecs wi e d o e iage Sice is ucio igoes oe o e

ee imesios o e oi a iage is ucio is eaiey sime I uses e

omua o ies o ceck i ey iesec I ey o e ucio eus 1 wic is

ae o e cou o iesecios i e aoe ucio

i ayCossEgeCoac(Coo oiCoo oa 1 oa y1oa oa y Coo coac

• • •

Ue = ((y - y1(e - oi - (( - (ey - oiy;

i(Ue == eu ;/aae ca i/

Ua = ((( - (oiy - y1-((y - y1(oi - 1 / Ue;

U = (((e - oi(oiy - y1-((ey - oiy(oi - 1 / Ue;

es = oi + (Ua (e - oi;

esy = oiy + (Ua (ey - oiy;

es= 1 + (U (-1;

esy= y + (U (y-y1; I e ucio a cae ayCossEgeCoac ees e oi o coac iomaio es a esy wi coai e ois o coac

i(coac = U 64

coac- = es;

coac-y = esy;

1

i((Ua = (Ua = 1 (U = ( U = 1

eu 1;/ie segmes iesec/

ese

eu ;/ie segmes o o iesec/

1 CHAPTER 8

ARTIFICIAL INTELLIGENCE

e oio o Aiicia Ieigece i games is ey iee om e acaemic usui o eeoig a uy ieige age I games e goa is o simuae e eaio o aoe aye o geeae a esie eaio o aoe eiy i e game e aicaio o AI i games ca ay om e ey sime o e ey come o sysems

a wi ae e AI ea om isoy

8.1 Rules Based AI

e mos asic eame o aiicia ieigece i games is iusae i e ac-Ma eame e oigia ac-ma game a e aye coo e ac-ma wie e comue cooe goss a oame a sime mae o e aeage aye e goss aea o moe i a comicae ae as ey seac o e ayes eiy e

eaiy is a eac gos oows a ey sime agoim a icaes ei eaio []

Oe gos wou aways u e we ace wi a iesecio

Oe gos wou aways u ig we ace wi a iesecio

Oe gos wou u e e ig e e e ig ec

Oe gos wou u i a aom iecio a eac iesecio

ese ey sime ues mae e eaio o eac gos ey eicae u e oea esu wi eac o ese goss oowig ei ow aes ceae e

65 66 imessio a e goss wee aciey seacig o e aye is mos asic eame sowcases ow a agoim o ues ase "aiicia ieigece" ca e imemee

8.2 Srpt d AI

Moe come AI cooe eiies wi oow a comicae coe ase sci

ese ages wi ceck a seies o coiios o eemie ei eaio e coiios wi eemie e es ecoceie couse o acio o a gie siuaio A eiy i a sooig game wi ae ese yes o coiios o ceck agais

• I ea is eow a se aue e seac o ea

• I Ammo is eow a se aue e seac o ammo

• I eig aacke e seac o coe

• I Eemy age is i sig age e se eemy as acie age

• I Acie age is se e moe io age o age

• I i age o age e aack

• Ese Seac o a ai age

ese ues guie e AI ages eaio i oe o ceae a caege o e

uma ayes e ues ca e ause o icease o ecease e eecieess o e

AI a eeoe e iicuy o e aye is moe ca oe e imemee

ase o a iie sae macie wi eac sae ogaiig e coiios io a iee

ioiy ee is e same eiy oke io iee saes 6

• Seacig - oam ma ookig o ea Ammo a Eemies

o I eemy is ou se acie age a cage sae o Egage

o I ea is euce o ee eow se eso e se sae o age

• Egage - Moe io age o eemy Aack eemy i coe o I eemy is eeae cage sae o Seacig

o I ea is owee eow a se ee se sae o age • age - u om eemies Seac o ea

o I ea is ou a eemy is si acie e se sae o Egage o I ea is ou a eemy age is os e se sae o Seacig

8. Adptv AI

o games wi a ey ee a come eeiece e eious eames may o e eoug o oie aequae caege o uma ayes ayes ae ey goo a

eaig e aes a e AI wi a io we aeig o ues owee seemigy come o e aye o e coiuousy caege y e comue cooe eiies

e ieige ages ee o e ae o aa a aiciae e acios o e aye

is sye o Aiicia Ieigece is oe emoye i igig games ese games commoy ace wo comaas agais eac oe o ayes wi ae a wie

aiey o moes a wi iee os a cos Mos o e moes i a igig game ca e oie ow o a ey come aaaio o ock/ae/Scissos ock eas scissos ae eas ock scissos eas ae o ay gie siuaio i is kow wic o e ee is e es ecisio is is wee e eicios ae eee

e aaie AI wi ee o ack e isoy o eious aye ecisios is

isoy is cecke agais o ossie aes I acice mos eoe wi e o a 68 io easiy eicae aes e ee ayes wi make ose aes ae o

eemie a moe come e ee AIs wi kee ack o age isoies a eamie age cuks o e isoy o ae ceckig is oem is eacy e same ye o oem i ac eicio o ocessos ece is oe is moe come CHAPTER 9

CLOSING

e emes a oics iscusse i is ae eac ae a cucia oe o ay i a game egie Eac wi wok ogee o oie e asic sucue a oe ca use o ceae a

uy ucioa eecoic game Sues wi e ae o ake wa is eeoe om

is ae a comie i wi iiiua esig-seciic ucioaiy a asses o ceae a coesie we iegae game

I is cea a eiomes ae a cucia comoe o a game egie ue o e

ac eeyig ese i e game ees o ieac wi e eiome I oe o ui a asic eiome oe ees o ay e uamea coces iscusse i secio 3

e eiomes emsees waa ue suy ue o ei comeiy u wiou

is asic uesaig a sue wou e os

Wi e uesaig o ow a eiy sysem is esige a eeoe a

eeoe wi e ae o ceae e seciic om a ucioaiy o a eiy a wi

e use o make e coe a eiss i e ia ouc A eiy wi use e egie

esouces suc as 3 moes a aiicia ieigece o gie ie o e caaces i a game A ue suy o eiies wou go io ige ee coces a seciic agoims a wi aio eiy eaio suc as gou eaio e ouaio gie i is ae wi make suc suy moe uiu

e aea o aiicia ieigece o games is a massie ie e oics coee

69 7 i Cae coe e coces eee o asic game ucioaiy is is asouey esseia o ay eos i game eeome ue suy wi ui o o-aye caace eiy eaio suc as eaig a emuaig emoio AIs easieess is as eesie as e eiome i is ee a aiey o ieacio wii e game egie Iee moe a e eiome AI as a geae eec o e game ay eeiece a a ea uimie ee o aiaiiy wii e aea o ogammig is

ig ee o aiaiiy is wa waas a moe i-e eame o AI i uue wok

om is wok a age oy o esouces o assisig wi e eeua seciaiaio a comes om game eeome sou e eeoe Cuey I oes ee seaae acks wii game eeome icuig game ogammig 3 moeig eiome esig a eeome Eac o ese wi eei om ue

esouces o eac seciay AEI A

SAME SIE ESOUCE MAAGE

eow is s same o a u sie maageme sysem is sysem is oy eee o

e S (www,libsdl.org) meia iay A aa sucues a ucios eie wi"S_"o"IMG-"eogoeSiay

is sysem maages a age aay o oeia sies e sysem oies e

aiiy o oa sies esoy sies a ae o oge eee a ee sies o

iee ieo suaces Oioa ucios oie aow e sie o oae wi

coo coecio (oaSwaeSie a aw em i iee syes (ack Wie

a ie

yee suc Sie_

{

S Suace image;

ca ieame[];

i w ; /Wi a eig o e iiiua ames o e woe

image/

i ameseie;

i umames;

i coo1coocoo3;

i use;

}Sie;

eie MaSies 511

Sie Sieis[MaSies];

i umSies;

71 7

/

IiSieis is cae we e ogam is is sae

I us ses eeyig o eo a ses a oies o U

I sou ee e cae agai /

oi IiSieis(

i ;

umSies = ;

memse(Sieissieo(Sie MaSies;

o( = ; MaSies;++Sieis[]image = U;

}

/Ceae a sie om a ie e mos commo use o i/

Sie oaSie(ca ieamei sie i siey

{

eu oaSwaeSie(ieamesie siey -1 -1 -1;

}

Sie oaSwaeSie(ca ieamei sie i siey i c i c i c3

{

i i;

S Suace em;

/is seac o see i e equese sie image is aeay oae/

o(i = ; i umSies; i++

{

i((scm(ieameSieis[i]ieame==(Sieis[i]use

= 1(c1 == Sieis[i]coo(c == Sieis[i]coo(c3 ==

Sieis[i]coo3 73

{

Sieis[i]use++;

eu Sieis[i];

}

/makesue we ae e oom o a ew sie/

i(umSies + 1 = MaSies

{

i(se "Maimum Sies eace";

ei(1;

}

/i is o aeay i memoy e oa i/

umSies++;

o(i = ;i = umSies;i++

{

i(Sieis[i]useeak;

1

em = IMG_oa(ieame;

i(em == U

{

i(se "AIE O OA A IA SIE %s"ieame;

eu U;

}

S_SeCooKey(em S_SCCOOKEY SMaG(em-oma ;

Sieis[i]image = S_isayomaAa(em;

S_eeSuace(em;

/ses a asae coo o iig/

// S_SeCooKey(Sieis[i]image S SCCOOKEY

SMaG(Sieis[i]image-oma ;

SwaSie(Sieis[i]imagec1cc3;

/e coy e gie iomaio o e sie/

scy(Sieis[i]ieameieame; 4

/ow sies o ae o e 1 ames e ie u mos wi e/

Sieis[i]ameseie = 1;

i((sie (siey/as og as eie a y ae eo/

{

Sieis[i]umames = (Sieis[i]image-w / sie

(Sieis[i]image- / siey;

}

ese Sieis[i]umames = -1;

Sieis[i]w = sie;

Sieis[i] = siey;

Sieis[i]coo1 = c1;

Sieis[i]coo = c;

Sieis[i]coo3 = c3;

Sieis[i]use++;

eu Sieis[i];

}

/

We we ae oe wi a sie es gie e esouces ack o e sysem

so we ca ge em agai ae /

oi eeSie(Sie sie

{

/is es ceck o i e sie is si eig use/

sie-use--;

i(sie-use =

{

umSies--;

scy(sie-ieame"";

/us o e aa eeie ceck o see i e image is aeay ee/ 75

i(sie-image = USeeSuace(sie-image;

sie-image = U;

}

/a e es make sue we o eae ay oeia seg aus

yig aou/

}

oi CoseSies(

{

i i;

o(i = ;i MaSies;i++

{

/i sou mae i e sie is aeay ee

eeSie cecks o a/

eeSie(Sieis[i];

}

oi awGeySie(Sie sieS Suace suacei si sy i

ame

{

i i;

i ooy;

Ui g;

Ui3 ie;

Ui3 Key = sie-image-oma-cookey;

o = ame%sie-ameseie sie-w;

oy = ame/sie-ameseie sie-;

i ( S_ockSuace(sie-image

{

i(se "Ca ock scee %s" S_GeEo(;

ei(1; 6

}

o( = ; sie-;++

{

o(i = ;i sie-w;i++

{

ie = geie(sie-image i + o + oy;

i(Key = ie

{

S_GeG(ie sie-image-oma g ;

= ( + g + /3;

uie(suace s + i sy + S_MaG(sie-image-oma

;

}

}

}

SUockSuace(sie-image;

}

oi awSieie(Sie sieS_Suace suacei si syi

i y i ame

{

S_Suace em = U;

S_Suace em = U;

i i;

i y;

i ooy;

S-ec ec;

Ui3 ie;

Ui3 Key = sie-image-oma-cookey;

i((sie == U(suace == Ueu;

i(ame sie-umameseu; /es o aw as ou sie/

o = ame%sie-ameseie sie-w;

oy = ame/sie-ameseie sie-;

em = S_CeaeGSuace(S_SUACE sie-wsie-

S_aaemask gmaskmaskamask;

em = S_isayoma(em;

S_eeSuace(em;

ec = s;

ecy = sy;

ec = sie-;

ecw = sie-w;

i(em == U

{

i(se "Ca make em suace %s" S_GeEo(;

eu;

}

akScee(emKey;

i ( SockSuace(sie-image

{

i(se "Ca ock sie %s" SGeEo(;

eu;

1

i ( S_ockSuace(em

{

i(se "Ca ock em suace %s" SGeEo(;

eu;

}

o( = ; sie-;++

{

o(i = ;i sie-w;i++

{

ie = geie(sie-image i + o + oy;

i(Key = ie 7

{

i( = (sie-w - i - 1;

ese = i;

i(yy = (sie- - - 1;

ese y = ;

uie(em y ie;

}

}

}

S_UockSuace(sie-image;

S_UockSuace(em;

em = S_isayoma(em;

i(em = U

{

S_SeCooKey(em S_SCCOOKEY SMaG(em-oma

;

S_iSuace(em U suace ec;

}

S_eeSuace(em;

SeeSuace(em;

}

oi awSie(Sie sieS_Suace suacei si sy i ame

{

S_ec sces;

i((sie == U(suace == Ueu;

i((sie-umames = -1(ame sie-umameseu; /es

o aw as ou sie/

sc = (ame%sie-ameseie sie-w;

scy = (ame/sie-ameseie sie-;

scw = sie-w;

sc = sie-;

es = s;

esy = sy;

esw = sie-w;

es = sie-;

S_iSuace(sie-image sc suace es;

} AEI

SAME AICE SYSEM

is secio oies a uy ucioa same aice sysem is sysem is eee o e S iay e sie sysem (see aei A a e eiy sysem escie i

e esis oe a oy esise aice eecs equie e use o e eiy sysem

aice eecs a ae geeae a a sige isace o o ee esise uaig a ca e ae y e aice maieace ucio awAaices wic aes

o awig a uaig a aices

yee suc aice

{

oa ssys; /cooiaes o wee e aice is

geig eee/

oa y; /eco o aice/

oa aaya; /ow is e aice acceeaig/

Ui3 Coo; /wa coo e I?/

Ui1 ags; /so a e oy ag se is wi eece o

o/

Si1 G; /Coo iecio/

i iesa; /ow may uaes eoe ea/

/Some sies may o e ois u sies/

i ameoo; /e ame i is o a we o oo i/

i eayeayae; /ow muc ime o ause ewee uaig e

ame/

Sie sie;

1

i y; /i we i e sie a aw/

i use;

}aice;

aice aiceis[MAA]; i umaices;

oa OSe(oa ie /is wi gie a aom oa ewee ie a

-ie/

{

eu (((a( % ((i(ie + 1 1 - ie;

}

oi eseAaices(

{

memse(aiceissieo(aice MAA;

umaices = ;

}

aice Sawaice( /gie a oie o ewy ceae aices/

{

i i;

i(umaices = MAAeu U; /a ou o em a

aices/

o(i = ;i MAA;i++

{

i(aiceis[i]use == /es i e is aaiae so/

{

aiceis[i]use = 1;

umaices++;

eu aiceis[i];

}

}

eu U;/cac a/

1

oi awAaices( /aw a uae a o e aices a ae acie o e aw ue/

{

i ioekie;

Ui g;

kie = ;

oe = ;

o(i = ;i MAA;i++

{

i(oe = umaiceseak;

i(aiceis[i]use == 1

{

oe++;

i(aiceis[i]ags SIE

{

i(aiceis[i]sie = U

{

i((aiceis[i] == (aiceis[i]y ==

{ /awsie is ase a awsieie so o use i uess we ee o/

awSie(aiceis[i]siescee(iaiceis[i]s -

Camea - (aiceis[i]sie-w 5 aiceis[i]sy - Cameay -

(aiceis[i]sie- 5aiceis[i]ame;

}

ese

{

awSieie(aiceis[i]siescee

(iaiceis[i]s - Camea - (aiceis[i]sie-w 5 8

aiceis[i]sy Cameay (aiceis[i]sie-

5aiceis[i] aiceis[i]y aiceis[i]ame;

}

}

aiceis[i]eay--;

i(aiceis[i]eay =

{

aiceis[i]ame = (aiceis[i]ame +

1%aiceis[i]oo;

aiceis[i]eay = aiceis[i]eayae;

}

}

ese uie(scee (i(aiceis[i]s - Camea (i

(aiceis[i]sy - Cameay aiceis[i]Coo;

aiceis[i]iesa--;

i((aiceis[i]iesa (aiceis[i]s /i we ae eie o ae ou o sig/

{

kie++;

aiceis[i]use = ;

}

ese

{

i(aiceis[i]ags _WIE

{

/ aiceis[i]s += GameMaw;

aiceis[i]sy += GameMawy;/

1

aiceis[i]s += aiceis[i]; /ay eociy o a

osiios/

aiceis[i]sy += aiceis[i]y;

aiceis[i]s += aiceis[i]; 84

aiceis[i] += aiceis[i]a; /ay acceeaio o a eociies/

aiceis[i]y += aiceis[i]ay;

aiceis[i] += aiceis[i]a;

i((aiceis[i]ags _SIE == /as og as we ae o a sie aus e coo/

{

SGeG(aiceis[i]Coo scee-oma g ;

i( + aiceis[i] 55 = 55;

ese i( + aiceis[i] = ;

ese += aiceis[i];

i(g + aiceis[i]G 55g = 55;

ese i(g + aiceis[i]G g = ;

ese g += aiceis[i]G;

i( + aiceis[i] 55 = 55;

ese i( + aiceis[i] = ;

ese += aiceis[i];

aiceis[i]Coo = SMaG(scee-oma(Ui(Uig

(Ui;

}

}

}

umaices -= kie;

}

Eiy SawaiceE(Ui3 Cooi mi myUi ime

{

i i;

Eiy aE;

aE = ewEiy(;

i(aE == U 8

i(sou"Uae o aocae oom o a aice geeao";

eu U;

}

o(i = ;i SOUSEE;i++aE-sou[i] = U;

aE-owe = U;

aE-age = U;

aE-ik = U;

aE-uae = U;

scy(aE-Eame"aice"; /e ame o e ui o uiig/

aE-sie = U;

aE-eik = ;

aE-ikae = ; /use o icemeig aoe/

aE-eUae = ; /use o ow oe e eiy is uae uaig is meey aimaios/

aE-Uaeae = ; /use o icemeig aoe/

aE-sow = 1; /i 1 e i wi e eee we i is o scee/

aE-ame = ; /is wi e aom ae o/

aE-s = m;

aE-sy = my;

aE-ea = ime;

aE-eama = ime;/esouces use i o ow muc o a esouce i

as e/

aE-Coo = Coo;

eu aE;

}

/ Seciic isaces o aices ie eow /

oi ouaiUae(Eiy se

{ 86 i i;

Ui g;

oa k;

aice ewaice = U; i(se-ea ==

{

eeEiy(se;

eu;

} i(se-ea se-ea--;

o(i = ;i ;i++

{

ewaice = Sawaice(;

i(ewaice = U/es aways make sue we ae a aice/

{

SGeG(se-Coo scee-oma &, ;

k = OSe(5;

k += 1;

= (Ui(k ;/si e coos sigy/

g = (Ui(k g;

= (Ui(k ;

ewaice-Coo = S_MaG(scee-omag;

ewaice-s = se-s + OSe(;

ewaice-sy = se-sy + OSe(;

ewaice-s = ;

ewaice- = OSe(5;

ewaice-y = OSe(5;

ewaice- = 1 + OSe(5;

ewaice-a = ;

ewaice-ay = ;

ewaice- = ;

ewaice-G = ; 8

ewaice- = ;

ewaice-a = -15;

ewaice-iesa = ;

ewaice-ags = OE;

}

}

}

oi Sawouai(Ui3 Cooi mi myUi ime

{

Eiy ou;

ou = SawaiceE(Coommyime;

i(ou == Ueu;

ou-uae = ouaiUae;

ou-eUae = 5;

ou-Uaeae = 1;

}

oi SawsaSay(Ui3 Cooi mi myoa oa yUi

imei oume

{

i ik;

Ui g;

aice ewaice;

o(i = ;i oume;i++

{

ewaice = Sawaice(;

i(ewaice = U/es aways make sue we ae a aice/

{

S_GeG(Coo scee-oma g ;

k = OSe(5;

k += 1; 88

= (Ui(k ;/si e coos sigy/

g = (Ui(k g;

= (Ui(k ;

ewaice-Coo = S_MaG(scee-omag;

ewaice-s = m;

ewaice-sy = my;

ewaice-s = ;

ewaice- = + OSe(;

ewaice-y = y + OSe(;

ewaice- = ;

ewaice-a = ;

ewaice-ay = ;

ewaice- = ;

ewaice-G = ;

ewaice- = ;

ewaice-ay = 15;

ewaice-iesa = ime;

ewaice-ags = _OE;

}

}

}

oi iUae(Eiy se

{

i i;

Ui g;

oa k;

aice ewaice = U;

i(se-ea ==

{

eeEiy(se; 8

eu;

}

i(se-ea se-ea--;

o(i = ;i ;i++

{

ewaice = Sawaice(;

i(ewaice 1= U/es aways make sue we ae a aice/

{

SGeG(se-Coo scee-oma g ;

k = OSe(5;

k += 1;

= (Ui(k ;/si e coos sigy/

g = (Ui(k g;

= (Ui(k ;

ewaice-Coo = SMaG(scee-omag;

ewaice-s = se-s + OSe(;

ewaice-sy = se-sy + OSe(;

ewaice-s = se-eama;

ewaice- = OSe(1;

ewaice-y = OSe(1;

ewaice- = 15;

ewaice-a = ;

ewaice-ay = ;

ewaice- = ;

ewaice-G = ;

ewaice- = ;

ewaice-a = -5;

ewaice-iesa = ;

ewaice-ags = OE;

1

}

} 0

oi Sawi(Ui3 Cooi si syi sUi ime

{

Eiy i;

i = SawaiceE(Coossyime;

i(i == Ueu;

i-eama = s;

i-uae = iUae;

i-eUae = 5;

i-Uaeae = ;

}

oi ieUae(Eiy se

{

i i;

Ui g;

oa k;

aice ewaice = U;

i(se-ea ==

{

eeEiy(se;

eu;

}

i(se-ea se-ea--;

o(i = ;i 15;i++

{

ewaice = Sawaice(;

i(ewaice = U/es aways make sue we ae a aice/

{

SGeG(se-Coo scee-oma g ;

k = OSe(5;

k += 1; 91

= (Ui(k ;/si e coos sigy/

g = (Ui(k g;

= (Ui(k ;

ewaice-Coo = S_MaG(scee-omag;

ewaice-s = se-s + OSe(3;

ewaice-sy = se-sy + OSe(;

ewaice-s = ;

ewaice- = OSe(;

ewaice-y = -1 + OSe(;

ewaice- = 1 + OSe(5;

ewaice-a = ;

ewaice-a = 1;

ewaice- = -;

ewaice-G = -;

ewaice- = -;

ewaice-iesa = 1 + OSe(;

ewaice-ags = _WIE;

}

}

}

oi Sawie(Ui3 Cooi mi myUi ime

{

Eiy ou;

ou = SawaiceE(Coommyime;

i(ou == Ueu;

ou-uae = ieUae;

ou-eUae = ;

ou-Uaeae = 3;

ieUae(ou;

1 92

oi aiSoUae(Eiy se

{

i i;

Ui g;

oa k;

aice ewaice = U;

i(se-ea ==

{

eeEiy(se;

eu;

}

i(se-ea se-ea--;

o(i = ;i 1;i++

{

ewaice = Sawaice(;

i(ewaice = U/es aways make sue we ae a aice/

{

SGeG(se-Coo scee-oma g ;

k = OSe(5;

k += 1;

= (Ui(k ;/si e coos sigy/

g = (Ui(k g;

= (Ui(k ;

ewaice-Coo = SMaG(scee-omag;

ewaice-s = se-s + OSe(1;

ewaice-sy = se-sy + OSe(1;

ewaice-s = ;

ewaice- = OSe(1;

ewaice-y = OSe(1;

ewaice- = -5 + OSe(5;

ewaice-a = -1;

ewaice- = -1;

ewaice-G = -1;

ewaice- = -1;

ewaice-iesa = 1 + OSe(;

ewaice-ags = _WIE;

}

}

}

oi SawaiSo(Ui3 Cooi mi myUi ime

{

Eiy ou;

ou = SawaiceE(Coommyime;

i(ou == Ueu;

ou-uae = aiSoUae;

ou-eUae = 5;

ou-Uaeae = 1;

}

oi Isaiig(Ui3 CooUi imei oumeoa ece

{

i ik;

Ui g;

aice ewaice;

o(i = ;i oume;i++

{

ewaice = Sawaice(;

i(ewaice = U/es aways make sue we ae a aice/

{

SGeG(Coo scee-oma g ;

k = OSe(5;

k += 1;

= (Ui(k ;/si e coos sigy/ 94

g = (Ui(k g;

= (Ui(k ;

ewaice-Coo = SMaG(scee-omag;

ewaice-s = Camea + (Cameaw/+OSe(Cameaw;

ewaice-sy = Cameay + (Camea/+OSe(Camea;

ewaice-s = ;

ewaice- = OSe(1;

ewaice-y = OSe(1;

ewaice- = -1;

ewaice- = -1;

ewaice-G = -1;

ewaice- = -1;

ewaice-a = ece;

ewaice-iesa = ime;

ewaice-ags = WIE;

}

}

} REFERENCES

1 amaia aie Sace-Ceso Coe eciques a Agoims i Game ogammig ew ies Games 3

Mois ai a oigs Aew Game Aciecue a esig ew ies Games 3 3 Seie ae Woo Maso eie ackie ais om OeG ogammig Guie i Eiio Aiso-Wesey Ue Sae ie

eaua Mak Game ogammig Gems Caes ie Meia

5 ae Sea "Oimiig a iig" Game eeoe CM Meia C auay - Mac 5

es Aew Ege Cisoe iee Kei" Games is eagogy Usig Games a iua Wos o Eace eagogy" oua o Game eeome Caes ie Meia

7 I Sowae Aciisio uisig Ic Saa Moica CA 1997

ia Eeaime Saca Aciisio uisig Ic Saa Moica CA 199

95