You are on page 1of 15

i Hc Quc Gia Thnh Ph H Ch Minh Trng i Hc Cng Ngh Thng Tin

BO CO MN HC NHP MN PHT TRIN GAME


ti: Lp trnh Game trn XNA & ng dng game Tank Battle
Gio vin hng dn: Hu Nguyn Thnh Nam

Sinh vin thc hin: 10520161 Cao Hong V

Thnh ph H Ch Minh, ngy 24 thng 12 nm 2013

Mc lc I. Gii thiu........................................................................................... 3 1. Tng quan ....................................................................................... 3 2. Gii thiu XNA .............................................................................. 4 II. XNA framework v XNA Game Studio................................................ 5 1. Gii thiu: ....................................................................................... 5 2. Kin trc XNA v cc trng thi x l trong game: .......................... 6 3. Content Pipeline ............................................................................. 7 4. Input control ................................................................................... 8 5. XNA audio system ........................................................................... 9 III. Game Tank .................................................................................... 10 1. Gii thiu chng trnh ................................................................ 10 2. Giao din gameplay ...................................................................... 10 3. Cu trc chng trnh ................................................................... 11

I.

Gii thiu
Ni dung chng ny gii thiu tng quan v nhu cu v xu hng pht trin game v Productline game da trn cc Game framework v Game engine. Gii thiu v cng ngh XNA ca Microsoft, ng thi nu ln mc tiu v ni dung ca ti.

1. Tng quan
Sc mnh ct li ca cng ngh gii tr Game chnh l do c my game engine v Game Framework cung cp. Game Framework l mt tp hp th vin cha cc hm v i tng h tr, cho php v, x l hot cnh, xy hiu ng m thanh t cc ti nguyn c sn, c xy dng vi mc ch c tnh ti s dng cao nht c th, t cc Game engine c xy dng. Game engine s to ra cc i tng Game, cc logic game cho mt th loi game c th. Mt s Game framework. Microsoft XNA Framework Direct X Game engine c th c hiu nh mt middleware (phn mm lp gia). Ni theo cch khc, Game Engine l phn mm kim sot mi hot ng, tng tc ca mt tr chi, t k thut n cch chi, logic game.V c bn, l mt thc th bao gm nhng cng vic lin quan n pht trin game nh v, m phng vt l, cc ngun tng tc vi game nhng nh pht trin tp trung vo vic pht trin chi tit ni dung ca game. Game engine cung cp nhng thnh phn cho php nhng nh pht trin c th tng tc nhm to nn game nh giao din, animation, s tng tc gia cc i tng, vt l v ngay c tr thng minh nhn to. Mi mt nh cung cp gii php game engine c cch tip cn ring v cc nh pht trin hin c kh nhiu engine thng mi la chn. BIGWORLD - L mt trong nhng engine tm tt, c thit k c bit phc v th trng game trc tuyn nhiu ngi chi. CRYENGINE - c bit n vi ta game bn sng CRYSIS nm 2007. UNREAL ENGINE ca EPIC - dnh cho cc hng pht trin game ton cu. QUBESOFT - Q ENGINE l c pht trin bi hai cu nhn vin ca Microsoft sng lp ra DirectX l Servan Keondjian v Doug Rabson. SIMUTRONICS - c xy dng da trn kinh nghim t thi game text.

Da trn cc tin ny, cc nh sn xut xy dng ra cc Product line ni tri trong ln gii tr Game, vi ni dung phong ph nh dng Game nhp vai Diablo, Prince Of Persia, dng Game dn trn Age Of Wonder, Age Of Empirevi my PC v dng Game nhp vai Final Fantasy, Kingdom Heart .. vi h my Nintendo, Play Station Cc phin bn sn phm trong Product line ny c cc nh sn xut xy dng tng bc, t giao din 2D th s ban u c nng cp ln giao din ha 3D, vi cc hiu ng particle ngy cng c sc, cng vi hiu ng m thanh honh trng lm cho Product line ca h ngy cng c a chung. Nhng c mt iu m cc Product line Game ny khng thay i hoc thay i rt t qua mi phin bn ca chng l ni dung chnh ca tr chi, ct li ca cc Product line, vic thay i ch yu c thc hin trong mi phin bn ra i ca mt Product line chnh l cch thc th hin ni dung l ra bn ngoi giao din, thit b output v tng tc vi ngi chi s khc nhau hoc c th, tuy s c mt s ci tin no nh s lng php thut, s lng v kh, s lng nhn vt, cch thc giao tip gia cc nhn vt, hot ng ca nhn vt trong Game nhng chung quy li, mi hot ng chnh vn tun theo mt ni dung nht nh. l con ng pht trin ch yu lm nn cc Product line Game ni ting trong lng gii tr Game, gn lin vi cc hng sn xut hng u nh Square Soft hin nay c bit vi ci tn Square Enix, Ubisoft, Khng nm ngoi con ng , ti ny xy dng nhng bc ban u cho mt Product line ca th loi Game dn trn da trn nn Microsoft XNA Framework.

2. Gii thiu XNA


XNA framework c thit k nh mt tp cc lp th vin dng cho cng ngh pht trin game, nhm pht huy cao nht tnh ti s dng ca m trn nhiu nn tn. N cng bao gm mt phin bn ca Common Language Runtime, c ti u ha cho yu cu lp trnh game, nhm cung cp mt mi trng thc thi c qun l cho cc game XNA. Cc Common Language Runtime ny u c sn trong mi trng Window XP, Window Vista, Zune v Xbox. T Game XNA c th chy trn bt k nn tn no c h tr XNA Framework, vi nhng sa i ti thiu hoc thm ch khng cn sa i. Nh vy, XNA framework gi gn nhng chi tit k thut mc thp trong m lp trnh ca mt game v m bo rng chnh bn thn framework s h tr cc nn tn khc nhau khi cc game c to ra t XNA framework c mang i thc thi mt nn tn tng ng. V
4

cng do , cho php cc nh pht trin game tp trung hn vo ni dung v kinh nghim lm game m khng cn phi bn tm v nn tn thc thi game. Ngoi ra, XNA framework cn tch hp thm mt s cng c, nh cng c to hiu ng m thanh XACT, nhm mc ch h tr kh nng sng to ni dung ngy cng tt hn. Nhng cng c ny s gip cho tc gi hnh thnh nhng tng mi v ni dung hnh nh, m thanh, s kt hp gia chng v xy dng cc hnh tng nhn vt tht nng ng. XNA framework cn cung cp cc gii php, k thut gip cho cc nh pht trin game c lp v chuyn nghip, to ra cc sn phm game chy trn nn tn Microsoft.

II.

XNA framework v XNA Game Studio


Ni dung chng ny gii thiu v XNA framework v XNA game studio,cch thc thc thi game v th hin ni dung game bng hnh nh, input v m thanh trong cng ngh XNA.

1. Gii thiu:
XNA framework l mt tp cc lp th vin h tr cho vic pht trin game trn cc nn tn Microsoft nh Window, Xbox 360, Zune. XNA Game studio l mt b cng c da trn cc phin bn h tr ca Microsoft Visual Studio , cho php cc nh pht trin game to cc ng dng da

trn cng ngh XNA trin khai trn cc mi trng thuc nn tn Microsoft nh Microsoft Window, Xbox 360 v by gi c c Zune. 2. Kin trc XNA v cc trng thi x l trong game: Bc u tin trong vic xy dng mt game l to ta mt lp k tha t Microsoft.Xna.Framework.Game , lp ny phi khai bo override cc phng thc Update, Draw, LoadContent v Initialize. Phng thc Update c trch nhim x l logic ca game v phng thc Draw c trch nhim v cc thnh phn ca game ra mn hnh. Phng thc Initialize cng vi hm contructor c trch nhim khi to cc gi tr ban u cho cc thnh phn ha, m thanh v input trong game. Phng thc LoadContent load ti nguyn ha bo gm cc hnh nh s v trong game v UnloadContent c trch nhim gii phng ti nguyn ha. public class Game1 : Microsoft.Xna.Framework.Game { public Game1() protected override void Initialize() protected override void LoadContent() protected override void UnloadContent() protected override void Update(GameTime gameTime) protected override void Draw(GameTime gameTime) }

Qu trnh thc thi cc trng thi x l ca mt game n gin c th c trnh by nh sau : Khi to ti nguyn x l ha, input, m thanh Load cc ti nguyn hnh nh, m thanh
6

Bt u thc thi vng lp ca game : o Ly input t ngi dng o Thc thi cc tnh ton nh AI, x l va chm o Kim tra yu cu kt thc game(ngi dng mun kt thc game) kt thc vng lp game o V hnh nh, pht sinh m thanh v tr li cc iu khin input. Gii phng cc ti nguyn Trong game XNA, Update v Draw c thc hin trong vng lp ca game thc hin cc thao tc hnh nh v logic game trong sut qu trnh game c thc thi, Initialize v constructor cng vi LoadContent s khi to cc gi tr ha, m thanh cho game, Unload s gii phng cc ti nguyn khi qu trnh thc thi game kt thc. Qu trnh thc thi ny c th c nh x vo solution ca XNA game nh sau: Game1() Khi to cc thnh phn chung(Game1.cs) Initialize() Khi to game (Game1.cs) LoadContent() Load cc ti nguyn hnh nh ha (Game1.cs) Run() chy vng lp ca game (Program.cs): o Update() c cc Input t ngi dng, thc hin tnh ton cho logic game, kim tra iu kin ngng thc thi game(Game1.cs) o Draw() Thc hin cc thao tc v ra mn hnh ni dung ca game thng qua cc ti nguyn load v thc thi x l(Game1.cs) UnloadContent() Free graphics resources (Game1.cs) 3. Content Pipeline XNA Game Studio Content Pipeline l mt tnh nng quan trng do XNA cung cp bi v n n gin ha vic ngi pht trin game load cc ti nguyn hnh nh, m thanh t cc nh dng khc nhau mt cch d dng. Do , ngi lp trnh khng phi bn tm n vic lm cch no load cc hnh nh, m
7

thanh v lm cch no c ni dung ca chng. T cc nh dng khc nhau, thng qua qu trnh x l vi XNA Game Studio Content PipeLine s c chuyn thnh nh dng dng chung cho tt c l .xnb, ni dung tp tin ny s c loacd v c ra trong game XNA nh Content manager.

4. Input control Input l thut ng chung ni n qu trnh nhn cc thao tc t ngi dng. Trong Microsoft XNA framework, namspace Microsoft.Xna.Framework.Input cho php h tr cc thit b input khc nhau bao gm gamepad(Xbox360), gamestick, mouse v keyboard. Gamepad(Xbox360) cung cp mt s kt hp tt gia cc button digital v cc stick analog, v vy c nhiu loi game c th c chi vi n. Cc gamepad ny c th c s dng trn h thng Window hoc trn my Xbox 360, nhng ch ti a 4 ci c s dng. Cch s dng: Ly trng thi ca gamepad bng phng thc GetState ca lp GamePad. Nhn ly trng thi t GamePadState v a ra cac thng tin x l tng ng trong phng thc Update() Keyboard ch bao gm cc button digital v khng c bt k iu khin analog no c. Nhng khng phi keyboard no cng h tr u cc phm c lit k trong lp Keys, v d nh nhng bn phm c in khng c cc phm tng gim m lng.Thng thng, keyboard c dng vi
8

nh mt thit b Input vi my tnh, nhng nu mt keyboard c s dng vi cng USB th c th s dng c vi c Window v Xbox 360 Cch s dng: Tng t nh dng gamepad, Keypad s c ly trng thi bng GetState() ca lp KeyBoard v nhn thng tin tr v t KeyboardState thc thi cc yu cu x l t ngi dng. Mouse l s la chn kh tt cho nhiu i tng th hin trong game, gi s trong mt game c ni dung thuc dng game dn trn, cc thao tc chut nhm x l vic scroll vng viewport qua khp bn hay vic iu khin mt s lng nhn vt ln trong game u cn thit phi thc hin qua mouse. Cng nh Keyboard, khng phi tt c cc mouse u h tr cc button. o Cch s dng: Dng GetState ly trng thi mouse t lp Mouse, thng qua cac thng tin ca MouseState tr li bng cc tnh ton vi ngi dng. Nh vy XNA h tr hu ht cc thit b input thng dng, nhng vic x l cc thit b input da v cc trang thi ca thit b. Nh vy, khi s dng XNA trn nn Window, bt k hot ng no ca mouse v key board thc hin u b ghi li trng thi v game cng thc thi lun trng thi d ca s game khng c forcus. 5. XNA audio system Trong XNA framework 2.0, cc file m thanh phi c add vo Content di nh dng c bit, c to ra t Microsoft Cross-PlatformAudio Creation Tool, c bit vi ci tn XACT, mt tool i km khi ci t XNA framework. XACT gip to ra Sound bank v Wave bank t nhiu file wav, AIFF, XMA v bin dch
9

thnh file XAP. File XAP ny cha cc m thanh a vo bng XACT. File XAP s c load t Content v c pht thng qua cc i tng AudioEngine, WaveBank , SoundBank. Nhng trong XNA framework 3.0 cung cp lp SoundEffect hoc (SoundEffectInstance). Vic s dng hai lp ny n gin hn dng XACT, v XACT khng hot ng trn Zune, nn gii php ca phin bn 3.0 s l mt ty chn tt cho cc game trn Zune.

III.

Game Tank

1. Gii thiu chng trnh Game Bn xe tank - Xe tng chnh do ngi chi iu khin bng cc phm mi tn, bn bng phm A - Xe tng ch i gi gn trong mn hnh, - Khng th i xuyn qua cc tng, b tng cc loi. - Bn thng c tng g. - n c cc vt phm tng sc mnh xe tng. - Xe tng ch t hnh. C health tng bn. Tiu dit vt phm ca ngi chi. - Vt phm a dng Game c vit bng th vin XNA - XNA cho Dev: http://download.microsoft.com/download/0/1/4/01483A18-289E4779-BB5A-0A28DFE18BC5/XNAGS40_setup.exe - XNA Redistribute cho my chy game: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a88c6dec-aeae42cda108-d35c013c3b97&displaylang=en 2. Giao din gameplay

10

3. Cu trc chng trnh Menu Start HISCORE ABOUT US EXIT Chng trnh s dng th vin XNA using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media;

11

Class

public Vector2 pos; Lu v tr ca n public Vector2 direct; Hng i ca n public Vector2 mySize; Kch thc ca n public int vantoc = 10; Vn tc ca n public override void Draw(GameTime gameTime) Hm v n public bool isCollides() Hm kim tra vin n c giao vi i tng khc khng

12

public Vector2 direct; Hng i ca xe tank public int health; Mu ca xe tng public Vector2 mySize; Kch thc ca xe tank public Vector2 pos; V tr ca xe tank public Texture2D textTure; Hnh nh ca xe tank cc hng khc nhau public override void Draw(GameTime gameTime); V xe tank public clsAnimation Explosion(); Thm hiu ng n public void Move(KeyboardState myKeyBoard); iu khin di chuyn cho xe tank public bool isCollides(clsWall wall) Kim tre xe tank c ng tng khng

13

protected Texture2D textTure; Hnh nh ca vt phm public Vector2 pos; V tr vt phm public Vector2 mySize; Kch thc vt phm Cc lp Item phc vu cho game Ngoi ra cn mt s lp ph khc

To hiu ng n

Hiu ng fade in out

V high score

14

Loading game

Tham kho source trong project Tank

15

You might also like