You are on page 1of 98

I HC NNG

TRNG I HC BCH KHOA

KHOA CNG NGH THNG TIN


Tel. (84-511) 736 949, Fax. (84-511) 842 771
Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn

N TT NGHIP K S
NGNH CNG NGH THNG TIN
M NGNH: 05115

TI:
XY DNG GAME 3D SWORD MAN TRN ANDROID
IOS V WINDOWS

SINH VIN: H TH TRANG


LP
: 06T4
CBHD
: THS. TRNH CNG DUY

NNG, 06/2011

Xy dng game 3D Sword Man trn Android, IOS v Windows

NHN XT CA CN B HNG DN

Nng, ngy , thng , nm 2011


Cn b hng dn

THS. Trnh Cng Duy

SVTH: H Th Trang Lp 06T4

Page 2

Xy dng game 3D Sword Man trn Android, IOS v Windows

NHN XT CA CN B PHN BIN

Nng, ngy , thng , nm 2011


Cn b phn bin

SVTH: H Th Trang Lp 06T4

Page 3

Xy dng game 3D Sword Man trn Android, IOS v Windows

LI CM N

Ti xin chn thnh cm n cc thy c gio trong khoa Cng Ngh Thng Tin cng
ton th thy c ca trng i Hc Bch Khoa Nng truyn t cho ti nhng kin
thc qu gi trong sut nhng nm hc va qua.
Xin chn thnh cm n thy: Trnh Cng Duy tn tnh ch bo v gip cho ti
hon thnh n ny.
Cui cng ti xin cm n cc bn trong khoa cng ngh thng tin, nhng ngi gip
, chia s nhng kin thc, kinh nghim, ti liutrong sut qu trnh nghin cu thc hin
ti.

SVTH: H Th Trang Lp 06T4

Page 4

Xy dng game 3D Sword Man trn Android, IOS v Windows

LI CAM OAN
Ti xin cam oan:
1 Nhng ni dung trong bo co ny l do ti thc hin.
2 Mi tham kho dng trong bo co ny u c trch dn r rng tn
tc gi, tn cng trnh, thi gian, a im cng b.
3 Mi sao chp khng hp l, vi phm quy ch o to, hay gian tr, ti xin
chu hon ton trch nhim.
Sinh vin thc hin
H Th Trang

SVTH: H Th Trang Lp 06T4

Page 5

Xy dng game 3D Sword Man trn Android, IOS v Windows

MC LC
CHNG 1. TNG QUAN V TI .................................................................................. 15
1.1. Gii thiu ti ................................................................................................................ 15
1.2. Mc ch, ngha ca ti ............................................................................................ 15
1.3. Phng n trin khai ti .............................................................................................. 15
CHNG 2. C S L THUYT ........................................................................................... 17
2.1. Gii thiu cc cng c lm game 3D .......................................................................... 17
2.1.1. Visual C++ ................................................................................................................. 17
2.1.2. Gii thiu v OpenGL ................................................................................................ 17
2.1.2.1. Gii thiu ............................................................................................................. 17
2.1.2.2. Cu trc lnh trong OpenGL................................................................................ 18
2.1.2.3. Th vin OpenGL ................................................................................................ 20
2.1.2.4. ng ng dn trong OpenGL (OpenGL Rendering pipeline) ........................... 21
2.1.3. Gii thiu v OpenGL ES 2.0 .................................................................................... 22
2.1.4. Gii thiu v h iu hnh ANDROID v IOS .......................................................... 23
2.1.4.1. ANDROID ........................................................................................................... 23
2.1.4.2. IOS ....................................................................................................................... 25
2.2. Gii thiu v 3D c bn ................................................................................................... 27
2.2.1. H ta 3D............................................................................................................... 27
2.2.2. Quy tc bn tay tri- bn tay phi .............................................................................. 28
SVTH: H Th Trang Lp 06T4

Page 6

Xy dng game 3D Sword Man trn Android, IOS v Windows

2.2.3. Xc nh v tr ca mt im trong ta 3D............................................................ 28


2.2.4. Cc php dch chuyn c bn trong 3D .................................................................. 29
2.2.4.1. Php Tnh tin (Translate).................................................................................... 29
2.2.4.2. Php bin dng theo mt t l .............................................................................. 30
2.2.4.3. Php quay quanh mt trc ta theo mt gc a ................................................ 31
2.2.5. Php chiu trong 3D ................................................................................................... 32
2.2.5.1. Chiu phi cnh ................................................................................................... 33
2.2.5.2. Chiu trc giao (php chiu vung gc) .............................................................. 33
2.2.6. Ta thc n thit b .............................................................................................. 34
2.3. Cu trc ca mt game..................................................................................................... 36
2.3.1. Game Loop (vng lp ca game) ............................................................................... 36
2.3.2. Framerate (FPS) ......................................................................................................... 37
2.3.3. B nh (memory) ....................................................................................................... 38
2.3.4. State ............................................................................................................................ 38
2.4. Gii thiu v NDK ........................................................................................................... 39
CHNG 3. PHN TCH TR CHI ..................................................................................... 43
3.1. H thng v tnh kh chuyn (portability): ...................................................................... 43
3.1.1. C/C++ v th vin ...................................................................................................... 43
3.1.2. Phn tch tnh kh chuyn (portability) ca cc thnh phn trong tr chi ............... 44
3.2. Xy dng h thng kh chuyn........................................................................................ 47
SVTH: H Th Trang Lp 06T4

Page 7

Xy dng game 3D Sword Man trn Android, IOS v Windows

3.2.1. S dng cc tin x l ................................................................................................ 48


3.2.2. S dng nguyn mu hm, lp tru tng ................................................................. 48
3.3. Cu trc ca mt Tr chi ............................................................................................... 49
3.3.1. Vng lp tr chi ........................................................................................................ 49
3.3.2. Cu trc tr chi ......................................................................................................... 51
3.3.3. Ni dung tr chi........................................................................................................ 53
3.3.4. ha ........................................................................................................................ 56
3.3.5. m Thanh ................................................................................................................... 58
CHNG 4. QU TRNH LP TRNH ................................................................................... 60
4.1. Thit k chng trnh ....................................................................................................... 60
4.2. Vng lp tr chi ............................................................................................................. 61
4.3. Ni dung tr chi ............................................................................................................. 62
4.3.1. Khi to v tr hin ti ca tri cy ............................................................................. 63
4.3.2. Cp nht trng thi ca tri cy .................................................................................. 63
4.3.3. Kim tra va chm ....................................................................................................... 64
4.3.4. Tnh ton li cc trng thi sau khi va chm .............................................................. 64
4.4. Ha ............................................................................................................................. 64
4.4.1.Ti shader v bin dch................................................................................................ 65
4.4.2. V mt i tng 3D .................................................................................................. 65
4.4.3. V mt i tng 2D .................................................................................................. 66
SVTH: H Th Trang Lp 06T4

Page 8

Xy dng game 3D Sword Man trn Android, IOS v Windows

4.5. Nhp ................................................................................................................................. 66


4.6. m thanh .......................................................................................................................... 67
4.7. Giao din ng dng .......................................................................................................... 67
4.8. Giao din xut nhp tp tin .............................................................................................. 68
CHNG 5. QUY TRNH CHUYN TR CHI ................................................................... 69
5.1. Chuyn sang IOS ............................................................................................................. 69
5.1.1. Ci t mi trng pht trin ..................................................................................... 69
5.1.2. To d n, bin dch ................................................................................................... 70
5.1.3. m thanh .................................................................................................................... 70
5.1.4. Nhp ........................................................................................................................... 71
5.1.5. Giao din ng dng .................................................................................................... 72
5.1.6. Xut nhp tp tin ........................................................................................................ 73
5.2. Chuyn sang Android....................................................................................................... 73
5.2.1 Ci t phn mm ........................................................................................................ 73
5.2.2. Hot ng ca JNI v quy trnh bin dch.................................................................. 74
5.2.3. ha ........................................................................................................................ 75
5.2.4. m thanh .................................................................................................................... 75
5.2.5. Cm ng chm............................................................................................................ 76
5.2.6. Giao din ng dng .................................................................................................... 77
5.2.7. X l file ..................................................................................................................... 78
SVTH: H Th Trang Lp 06T4

Page 9

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 6. QU TRNH KIM TH SN PHM GAME LM RA ................................ 80


6.1. Ci t h thng ............................................................................................................... 80
6.1.1. Ci t trn Android ................................................................................................... 80
6.1.2. Ci t trn IOS .......................................................................................................... 80
6.2. Kim th........................................................................................................................... 81
CHNG 7.MT S KT QU V DEMO CA GAME .................................................... 84
7.1. Kt qu demo trn Windows ............................................................................................ 84
7.2. Kt qu demo trn IOS..................................................................................................... 88
7.3. Kt qu demo trn Android (in thoi Galaxy s) ........................................................... 92
CHNG 8. KT LUN........................................................................................................... 97
8.1. Kt qu t c .............................................................................................................. 97
8.2. Nhng vn cn tn ng ............................................................................................. 97
8.3. Hng pht trin ca ti .............................................................................................. 97

SVTH: H Th Trang Lp 06T4

Page 10

Xy dng game 3D Sword Man trn Android, IOS v Windows

MC LC CC HNH
Hnh 1. Biu din OpenGl v mi quan h vi cc API ............................................................. 21
Hnh 2. Biu din ng ng dn trong OpenGL ....................................................................... 22
Hnh 3. Biu din ng ng dn trong OpenGL 2.0 ................................................................. 23
Hnh 4. Biu tng ca h iu hnh Android ........................................................................... 24
Hnh 5. Hnh nh ca h iu hnh IOS trn Ipad ..................................................................... 27
Hnh 6. Biu din h ta 3D ................................................................................................... 28
Hnh 7. Biu din quy tc bn tay tri- bn tay phi .................................................................. 28
Hnh 8. Biu din mt im trong h ta 3D ......................................................................... 29
Hnh 9. Biu din php tnh tin mt i tng theo mt vector ................................................ 30
Hnh 10. Biu din php bin dng mt vt theo mt t l ......................................................... 31
Hnh 11. Biu din php quay quanh mt trc ta theo mt gc a ........................................ 31
Hnh 12. biu din php chiu phi cnh .................................................................................... 33
Hnh 13. Biu din php chiu vung gc................................................................................... 34
Hnh 14. Biu din ta thc n thit b thng qua NDC ...................................................... 34
Hnh 15. Biu din v NDC ......................................................................................................... 35
Hnh 16. Biu din s bin i 3 chiu thnh 2 chiu ................................................................ 35
Hnh 17. Biu din qu trnh xy dng v chuyn tr chi. ....................................................... 47
Hnh 18. Biu din vng lp ca tr chi ................................................................................... 50
Hnh 19. Cu trc ca mt tr chi ............................................................................................ 51
SVTH: H Th Trang Lp 06T4

Page 11

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 20. Giao din ca tr chi ................................................................................................. 52


Hnh 21. Trng thi ca tr chi ................................................................................................ 53
Hnh 22. Biu din chuyn ng ca tri cy ............................................................................. 54
Hnh 23. Biu din thanh kim ca ngi chi ........................................................................... 55
Hnh 24. Biu din va chm gia thanh kim v tri cy ........................................................... 55
Hnh 25. Biu din tnh ton ta sau va chm ....................................................................... 56
Hnh 26. Biu din i tng 3D trong tr chi ......................................................................... 57
Hnh 27. Biu din giao din 2D ................................................................................................. 57
Hnh 28. Biu din cch b tr v giao din 2D trong tr chi.............................................. 58
Hnh 29. Biu din khung thit k ca chng trnh .................................................................. 60
Hnh 30. Cch k tha cc lp tr tng trn cc nn tng khc nhau ..................................... 61
Hnh 31. Biu din vng lp ca tr chi ................................................................................... 62
Hnh 32. Vng i ca mt tri cy ............................................................................................ 63
Hnh 33. S hot ng ca OpenGl ES 2.0 trong chng trnh ............................................ 64
Hnh 34. Kt qu demo v main menu trn Windows .............................................................. 84
Hnh 35. Kt qu demo giao din lc ang chi game trn windows ........................................ 85
Hnh 36. Kt qu demo lc ngi chi chm vo tri cy trn windows ................................... 86
Hnh 37. Kt qu demo lc Game over trn windows ................................................................ 87
Hnh 38. Demo giao din mn hnh highscore trn windows ..................................................... 88
Hnh 39. Kt qu demo biu tng icon ca game trn ios ........................................................ 89
SVTH: H Th Trang Lp 06T4

Page 12

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 40. Kt qu demo mn hnh mainmeu trn ios ................................................................... 90


Hnh 41. Kt qu demo mn hnh lc ang chi game trn ios ................................................. 90
Hnh 42. Kt qu demo mn hnh highscore trn ios.................................................................. 91
Hnh 43. Kt qu demo mn hnh gameOver trn ios ................................................................. 91
Hnh 44. Kt qu demo mn hnh About trn ios ........................................................................ 92
Hnh 45. Kt qu demo biu tng icon ca game trn Android ............................................... 93
Hnh 46. Kt qu demo mn hnh mainmenu trn Android ........................................................ 94
Hnh 47. Kt qu demo mn hnh game play trn Android ........................................................ 94
Hnh 48. Kt qu demo mn hnh highScore trn Android ......................................................... 95
Hnh 49. Kt qu demo mn hnh GameOver trn Android ....................................................... 96
Hnh 50. Kt qu demo mn hnh About trn Android ............................................................... 96

SVTH: H Th Trang Lp 06T4

Page 13

Xy dng game 3D Sword Man trn Android, IOS v Windows

MC LC CC BNG

Bng1. Biu din cc kiu d liu trong OpenGL ...................................................................... 19


Bng 2. Cc phin bn OpenGL ES c th s dng ND to ra th vin native .................... 42
Bng 3. Thc t ca cc thnh phn trong tr chi trn 3 h thng .......................................... 45
Bng 4. Bng nhn xt cc thnh phn tr chi trn c 3 h thng........................................... 46
Bng 5. Bn thit k m thanh .................................................................................................... 59
Bng 6. Biu din cc ca kim th v gamePlay ........................................................................ 82
Bng 7. Hnh biu din cc ca kim th v m thanh ................................................................. 83
Bng 8. Hnh biu din cc ca kim th v Interrupt ................................................................. 83

SVTH: H Th Trang Lp 06T4

Page 14

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 1. TNG QUAN V TI


1.1. Gii thiu ti
Vi pht trin ca thng tin di dng nh hin nay, thit b di ng tr thnh mt tr th
khng th thiu ca a s mi ngi. Cc tr chi gii tr trn di ng ngy cng a dng. c
bit s ra i ca h iu hnh android v IOS cng to ra bc pht trin mi cho cc ng
dng trn di ng.
Cng ngh game ngy cng pht trin. Tuy nhin a s cc game u lm dng 2D.
Thi gian gn y mt xu hng game mi l game dng 3D ang c a chung. V vy,
bn thn em chn ti ny nhm mun nghin cu v k thut lm game 3D trn h iu
hnh ANDROID v IOS. Bc u xy dng demo mt chng trnh game n gin phc v
cho qu trnh nghin cu v cng vic tng lai sau ny.

1.2. Mc ch, ngha ca ti


 Cng c nhng kin thc hc v nghin cu: tm hiu h iu hnh android v IOS,
nghin cu cng gh lm game 3D.
 Nghin cu cch xy dng mt game a nn tng, v qu trnh chuyn t windows sang
Android v IOS.
 Xy dng tr chi Sword Man trn h iu hnh android, IOS, Windows.

1.3. Phng n trin khai ti


hon thnh ti ny, trong qu trnh trin khai thc hin cn tun th cc bc sau:
 Lp k hoch thc hin ti.
 Thit k h thng v d liu.
 Xy dng chng trnh (chia nh cc chc nng thnh cc module v component gii
quyt tng phn).

SVTH: H Th Trang Lp 06T4

Page 15

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Cng c kt qu t c (bao gm kim th cc module v chc nng ca h thng,


chnh sa li nu c v tin ti hon thin chng trnh mc c th).
 Song song vi cc giai on trn l qu trnh hc hi, tch gp ti liu v cc kin thc v
cc cng c lin quan nhm phc v cho vic xy dng v hon thin ti.

SVTH: H Th Trang Lp 06T4

Page 16

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 1. C S L THUYT
2.1. Gii thiu cc cng c lm game 3D
2.1.1. Visual C++
Visual C++ l b cng c lp trnh nm trong b Microsoft Visual Studio. y l mt
mi trng lp trnh a nng dnh cho ngn ng C/C++ v v l mt mi trng lp trnh trn
h iu hnh Windows nn Visual C++ cho php lp trnh vin thc hin rt nhiu cng vic,
h tr lp trnh vin vic coding, thit k giao din.. Trong VC++ chng ta c th to c :
cc ng dng trn Windows, ActiveX, hay th vin lin kt ng DLLVC++ c nhiu cng
c gip vic thit k giao din cho chng trnh, kim li v sa li.
2.1.2. Gii thiu v OpenGL

2.1.2.1. Gii thiu


L mt b th vin ha m. C khong 150 hm gip xy dng cc i tng v
thao tc cn thit trong cc ng dng tng tc 3D.
OpenGL h tr cc hm ha:
Xy dng cc i tng phc tp t cc thnh phn hnh hc c bn (im, on, a
gic, nh bitmap).
Sp xp i tng trong 3D v chn im thun li quan st.
Tnh ton mu sc ca cc i tng (mu sc ca i tng c quy nh bi iu
kin chiu sng, texture ca i tng, m hnh c xy dng hoc l kt hp ca c 2 hoc 3
yu t ).
Bin i nhng m t ton hc ca i tng v thng tin mu sc thnh phn cc
pixel trn mn hnh (qu trnh ny c gi l rasterization).
C API a nn tng: Windows, Mac, Linux, Unix.

SVTH: H Th Trang Lp 06T4

Page 17

Xy dng game 3D Sword Man trn Android, IOS v Windows

Cc h thng dng nhng:


-

Iphone, Windows mobile

Dng cho a ngn ng:


-

C, C++, Python, Ruby, PHP

Dng cho c cch v trong 2D v 3D.


Nhng th OpenGL khng h tr:
Bn thn OpenGL khng c sn cc hm nhp xut hay thao tc trn window.
OpenGL khng c sn cc hm cp cao xy dng cc m hnh i tng, thay
vo , ngi dng phi t xy dng t cc thnh phn hnh hc c bn (im, on thng, a
gic).

2.1.2.2. Cu trc lnh trong OpenGL


OpenGL s dng tin t gl v tip theo l nhng t nhng t c vit hoa ch ci
u to nn tn ca mt lnh, v d glClearColor(). Tng t, OpenGL t tn cc hng s
bt u bng GL_ v cc t tip sau u c vit hoa v cch nhau bi du _, v d:
GL_COLOR_BUFFER_BIT.
Bn cnh , vi mt s lnh, m ch s lng cng nh kiu tham s c truyn,
mt s hu t c s dng nh trong bng sau:
Hu t

Kiu d liu

Tng ng vi

Tng ng vi

kiu trong C

kiu trong
OpenGL

8-bit integer

Signed char

Glbyte

16-bit integer

Short

Glshort

32-bit integer

Int or long

Glint, Glsizei

SVTH: H Th Trang Lp 06T4

Page 18

Xy dng game 3D Sword Man trn Android, IOS v Windows

32-bit floating-

Float

point
D

64-bit floating-

Glclampf
Double

point
Ub

8-bit unsigned

16-bit unsigned

Glbouble,
GLclampd

Unsigned char

integer
Us

GLfloat,

GLubyte,
GLboolean

Unsigned short

GLushort

32-bit unsigned

Unsigned int or

GLuint,

integer

unsigned long

GLenum,

integer
Ui

GLbitfield

Bng1. Biu din cc kiu d liu trong OpenGL

V d: glVertex2i(1, 3) tng ng vi xc nh mt im(x, y) vi x, y nguyn.


 Lu :
OpenGL c nh ngha mt s kiu bin, vic s dng cc nh ngha ny thay v nh
ngha c sn ca C s trnh gy li khi bin dch code trn mt h thng khc.
Mt vi lnh ca OpenGL kt thc bi v m ch rng tham s truyn vo l mt vector.
V d: glColor3fv(color_array) l mng 1 chiu c 3 phn t l float.

SVTH: H Th Trang Lp 06T4

Page 19

Xy dng game 3D Sword Man trn Android, IOS v Windows

2.1.2.3. Th vin OpenGL


 Core library
 OpenGL utility library(GLU)
 Links vi h thng window
 OpenGL Utility Toolkit(Glut)
khc phc mt s nhc im ca OpenGL, GLUT c to ra vi nhiu hm h
tr:
Qun l window
Display callback
Nhp xut (bn phm, chut)
V mt s i tng 3D phc tp (mt cu, khi hp)
 OpenGL cho h thng nhng
Mobile phone
PDAS
Video game consoles
 H ta ca OpenGL
OpenGL dng h ta theo quy tc bn tay phi.
 Mi quan h gia OpenGL vi cc API

SVTH: H Th Trang Lp 06T4

Page 20

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 1. Biu din OpenGl v mi quan h vi cc API


2.1.2.4. ng ng dn trong OpenGL (OpenGL Rendering pipeline)
ng ng dn ca OpenGL gm mt chui cc qu trnh x l theo trnh t. Hai
ha thng tin, d liu vertex-based v pixel-based, c x l thng qua cc ng ng, Kt
hp vi nhau sau c vit vo frame buffer.Ch rng OpenGL c th gi cc d liu
c x l li cho ng dng ca chng ta.

SVTH: H Th Trang Lp 06T4

Page 21

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 2. Biu din ng ng dn trong OpenGL


2.1.3. Gii thiu v OpenGL ES 2.0
L mt phn mm giao din v ha 3D phc tp trn cc thit b cm tay v
nhng. N chnh l th vin ha cho cc thit b cm tay v nhng vi lp trnh 3D phn
cng bao gm in thoi di ng, PDA, thit b, xe c, v h thng in t. Vi OpenGL ES
2.0 th chng ta c th lp trnh shader trn cc thit b nh v di ng.
 ng ng dn(pipeline) trong OpenGL ES 2.0

SVTH: H Th Trang Lp 06T4

Page 22

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 3. Biu din ng ng dn trong OpenGL 2.0


2.1.4. Gii thiu v h iu hnh ANDROID v IOS

2.1.4.1. ANDROID
Android cung cp mt b y cc phn mm cho cc thit b di ng: N l mt h
thng iu hnh, middleware v cc ng dng di ng ch cht. Cc Android Software
Development Kit (SDK) by gi c.

SVTH: H Th Trang Lp 06T4

Page 23

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 4. Biu tng ca h iu hnh Android


Android c xy dng cho php cc nh pht trin to ra cc ng dng di ng hp
dn tn dng tt c mt chic in thoi cung cp. N c xy dng c thc s m.
V d, mt ng dng c th ku gi bt k chc nng li ca in thoi nh thc hin cuc gi,
gi tin nhn vn bn, hoc bng cch s dng my nh, cho php cc nh pht trin to ra
phong ph hn v nhiu hn na nhng kinh nghim c kt cho ngi dng.
Hn na, n s dng mt my o tu chnh c thit k ti u ha b nh v ti
nguyn phn cng trong mt mi trng di ng. Android l m ngun m, n c th c
liberally m rng.
Android khng phn bit gia cc ng dng li ca in thoi v cc ng dng ca bn
th ba. Vi cc thit b xy dng trn H iu hnh Android, ngi dng c th hon ton thch
ng vi in thoi n li ch ca h. H c th trao i trn mn hnh ca in thoi, nhng
phong cch ca dialer, hoc bt k ng dng.
Android ph b ro cn xy dng cc ng dng mi v sng to. V d, mt nh pht
trin c th kt hp thng tin t cc trang web vi d liu trn in thoi di ng ca mt c
SVTH: H Th Trang Lp 06T4

Page 24

Xy dng game 3D Sword Man trn Android, IOS v Windows

nhn v d nh a ch lin h ca ngi dng, lch, hoc v tr a l cung cp mt tri


nghim ngi dng c lin quan hn. Vi Android, mt nh pht trin c th xy dng mt
ng dng cho php ngi dng xem v tr ca bn b ca h v c cnh bo khi h ang c
trong vng ph cn cho h mt c hi kt ni.
Vi Android tc nhanh v pht trin ng dng d dng.
Android cung cp truy cp n mt lot cc th vin cng c hu ch v c th c s
dng xy dng cc ng dng phong ph. V d, Android cho php cc nh pht trin c
c v tr ca in thoi, v cho php cc thit b giao tip vi nhau to iu kin cho ng
ng rich-to-peer ng dng x hi.
Rt nhiu nh pht trin h iu hnh Android vo cuc v cc ROM cho Android
c o c ra i vi nhiu tch nng ni tri c tch hp v y sng to.

2.1.4.2. IOS
IOS c bit n t thng 6 nm 2010. L mt h iu hnh trn thit b di ng ca
Apple. u tin n c pht trin cho iPhone. Sau c m rng cho cc thit b khc ca
Apple nh: Ipod touch, iPad v Apple TV.
IOS l h iu hnh ni ting nhanh gn v an ton ca Apple. IOS trn Iphone l mt
h iu hnh a nhim (chng ta va c th duyt web v va ti mt ci g t trn mng
v), c ci t trnh duyt web Safari an ton v tc nhanh.
H iu hnh IOS h tr Unicode, y l iu rt c quan tm ti th trng vit Nam.
Ngoi ra cc phn mm nh t in m, phn mm vn phng m
H iu hnh Iphone c nhng vo di dng 1 firmware, dng restore, update
trc tip t iTunes (th vin m nhc, ng dng khng l ca Apple) khi ci OS Iphone v
n l 1 dng firmware nn chng c nh trn chip, Rom phn cng ca Iphone, nhm ngn
chn hacker, nhng ngi b kha. Chnh v iu ny m mi khi chng ta update hay restore
ln phin bn mi th chng ta s khng th restore v phin bn c trc .
Phin bn IOS u tin l firmware 1.0.
SVTH: H Th Trang Lp 06T4

Page 25

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hin ti OS mi nht ca Iphone l 4.3.3.


 Mt s hnh nh v h iu hnh IOS trn ipad, iphone

SVTH: H Th Trang Lp 06T4

Page 26

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 5. Hnh nh ca h iu hnh IOS trn Ipad

2.2. Gii thiu v 3D c bn


2.2.1. H ta 3D
c nh ngha bi 3 trc ta : ox, oy, oz.

SVTH: H Th Trang Lp 06T4

Page 27

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 6. Biu din h ta 3D

2.2.2. Quy tc bn tay tri- bn tay phi

Hnh 7. Biu din quy tc bn tay tri- bn tay phi


2.2.3. Xc nh v tr ca mt im trong ta 3D
Cho im P (Px, Py, Pz) trong ta 3D. Ta biu din nh sau:

SVTH: H Th Trang Lp 06T4

Page 28

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 8. Biu din mt im trong h ta 3D


2.2.4. Cc php dch chuyn c bn trong 3D
 Translate
 Scale
 Rotate

2.2.4.1. Php Tnh tin (Translate)


 Tnh tin mt i tng P theo mt vector V

SVTH: H Th Trang Lp 06T4

Page 29

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 9. Biu din php tnh tin mt i tng theo mt vector


Cho vector V:
V = Vx * i + Vy *j + Vz *k
Php tnh tin P thnh P theo vector V c xc nh nh sau:
Tv: P -> P
Tv = { Px = Px + Vx, Py = Py + Vy, Pz = Pz + Vz}

2.2.4.2. Php bin dng theo mt t l


S: P -> P
S = { Px = Px *Sx, Py = Py *Sy, Pz = Pz * Sz}

SVTH: H Th Trang Lp 06T4

Page 30

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 10. Biu din php bin dng mt vt theo mt t l

2.2.4.3. Php quay quanh mt trc ta theo mt gc a

Hnh 11. Biu din php quay quanh mt trc ta theo mt gc a

 Quay quanh trc Ox, Oy, Oz


 Cch xc nh ta theo php quanh quay mt trc
SVTH: H Th Trang Lp 06T4

Page 31

Xy dng game 3D Sword Man trn Android, IOS v Windows

Quay quanh trc Ox:


R (a, x): P -> P
R (a, x) = {
Px = Px
Py = Py * Cos (a) Pz * Sin (a)
Pz = Py * Sin (a) + Pz * Cos (a)
}
Quay quanh trc Oy:
R (a, y): P -> P
R (a, y) = {
Py = Py
Px = Py * Cos (a) + Pz * Sin (a)
Pz = -Px * Sin (a) + Pz * Cos (a)
}
Quay quanh trc Oz:
R (a, z): P -> P
R (a, z) = {
Pz = Pz
Px = Px * Cos (a) - Py * Sin (a)
Py = Px * Sin (a) + Py * Cos (a)
}

2.2.5. Php chiu trong 3D


Gii hn vng v nh trn thit b 3D:
Tri, phi, trn, di, gn, xa.
SVTH: H Th Trang Lp 06T4

Page 32

Xy dng game 3D Sword Man trn Android, IOS v Windows

2.2.5.1. Chiu phi cnh


L hnh chiu c xy dng bng php chiu xuyn tm.
c im ca php chiu ny l to cho ngi xem c cm gic xa gn ging nh nhn
trong thc t.
L mt cch v trong hi ha, hay to hnh, dng th hin cc hnh nh 3 chiu mt
cch gn ng trn mt b mt 2 chiu nh vo cc quy lut phi cnh. Cc quy lut phi cnh
c xy dng trn cc quy tc hnh hc cht ch. Cc quy tc phi cnh gip hnh nh 2 chiu
tr thnh 3 chiu, khin chng c quan st c trc quan hn trn tranh v.
ng dng ca hnh chiu phi cnh l i km theo cc hnh chiu vung gc trong bn
v thit k kin trc v xy dng biu din cc cng trnh c kch thc ln.

Hnh 12. biu din php chiu phi cnh

2.2.5.2. Chiu trc giao (php chiu vung gc)


Trong php chiu ny, khong cch ca vt ti camera khng nh hng ti ln ca
vt khi hin th.
Php chiu trc giao hay cn c gi l php chiu nhn t trn xung hoc t di
ln. C 2 php chiu khc cng kh thng dng l:
SVTH: H Th Trang Lp 06T4

Page 33

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Php nhn t trc: Tia chiu song song vi trc x v mt phng quan st l yz. Php chiu
ny loi b thnh phn x ca P.
 Php chiu nhn t pha bn cnh: Tia chiu song song vi trc y v mt phng chiu ny
loi b thnh phn y ca P.

Hnh 13. Biu din php chiu vung gc


2.2.6. Ta thc n thit b
 Ta thc -> ta mt -> NDC -> Thit b

Hnh 14. Biu din ta thc n thit b thng qua NDC


 NDC
L thit b chun ha ta . C hnh dng l mt lp phng c ta cc im c
nh. Ch c nhng im nm trong NDC mi c v.
Xc nh ta theo quy tc bn tay tri.
SVTH: H Th Trang Lp 06T4

Page 34

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 15. Biu din v NDC

 Biu th hin s bin i 3 chiu thnh thnh im c ta 2 chiu

Hnh 16. Biu din s bin i 3 chiu thnh 2 chiu

SVTH: H Th Trang Lp 06T4

Page 35

Xy dng game 3D Sword Man trn Android, IOS v Windows

2.3. Cu trc ca mt game


 Cc khi nim trong game
2.3.1. Game Loop (vng lp ca game)
L thnh phn quan trng ca bt k game no. Game loop gip game chy n nh hn
khng b nh hng bi tc ng ca ngi dng.
Hu ht cc chng trnh truyn thng u p ng thng ip a vo ca ngi dng .
V d nh: word th nh dng v text theo nhng g ngi dng nhp vo, nu ngi dng
khng nhp vo th n khng lm g c. Nhng i vi mt chng trnh game th d ngi
dng c nhp vo thng ip hay khng thi n vn thc hin theo mt cu trc chng trnh c
sn y chnh l vng lp ca game.
Mt vng lp game rt n gin n c th trng nh th ny:
While ( user doesn't exit )
check for user input
run AI
move enemies
resolve collisions
draw graphics
play sounds
end while
Cc vng lp game c th thay i nh s pht trin ca game nhng hu ht chng u
da trn tng c bn ny.
Vng lp game khc nhau ty thuc vo nn tng m n pht trin.Vng lp game c
thc hin thng qua 2 hm chnh l Update v Paint.

SVTH: H Th Trang Lp 06T4

Page 36

Xy dng game 3D Sword Man trn Android, IOS v Windows

2.3.2. Framerate (FPS)


S ln v khung hnh trn mt giy. Framerate chm s lm cho ngi dng khng c
cm gic tht, nh hng n s tng tc ca ngi dng vi tr chi.
 Cc yu t lm cho framerate chm
Hnh v c kch thc ln.
Tnh ton trong game nhiu.
Li ca thit b.
 Cch ci thin framerate
Ti u ha tnh ton v cc iu kin thc hin trong game:
+ S dng t vng lp.
+ Dng php ton dch chuyn bit thay cho php nhn v php chia.
+ Khai bo cc bin v phng thc dng static.
Caching module ca cc file nh, ti u ha cc module dng v sao cho s lng
module v ra l t.
Dng Bacbuffer: Khng v tng sprite ra mn hnh m ta v cc sprite ln mt nh
sau v nh ra mn hnh.
B cc hiu ng khng cn thit.
 Limit Frame rate
L s gii hn li s ln v trn mt giy ca tr chi. Nhm mc ch dng trong
nhng trng hp ng dng c frame rate qu nhanh, s lm cho ng dng khng n nh.
nh hng n qu trnh x l, ngi chi khng chi kp v mt iu na l n dn n
vic nhanh ht pin ca thit b.
SVTH: H Th Trang Lp 06T4

Page 37

Xy dng game 3D Sword Man trn Android, IOS v Windows

2.3.3. B nh (memory)
L kch thc b nh c th dng chy chng trnh game ca thit b.
 Cc yu T nh hng n b nh trong game
File nh dng trong game.
m thanh dng trong game.
Cc file text, mng cha text trong game.
 Ti u ha b nh
n gin ha cc frame v hnh nh ng.
Chia nh ra thnh cc module nh.
Xa cc module ca d liu sau khi caching.
Dng gi sound c dung lng nh, Load sound khi chy sound v gii phng (free)
khi dng sound.
Dng mng mt chiu thay v dng mng 2 chiu.
Ch gi nhng i tng cn thit trong b nh. trnh vn phn mnh b nh (l
cc i tng thng dng (fonts, main characters, common interface sprites, ) ).
Load khi mun v v gii phng khi i ra khi mn hnh.
Trnh phn mnh b nh: load i tng c kch thc ln trc. Gi cho b nh n
nh. Khng load v gii phng qu nhiu ln.
2.3.4. State
L cc trng thi ca mt game. Chng c lin quan cht ch vi nhau.Thng thng
mt game thng c cc trng thi sau: mainmenu, gamestart, gamewin, gameover, about,
highscore, Exit
SVTH: H Th Trang Lp 06T4

Page 38

Xy dng game 3D Sword Man trn Android, IOS v Windows

2.4. Gii thiu v NDK


L b cng cho php nhng cc m code ln cc ng dng android. ng dng Android
chy trong my o Dalvik. NDK cho php chng ta dng cc ng dng vit bng ngn ng C
v C++ ln thit b android.
NDK cung cp mt s h tr sau:
Mt tp hp cc Toos v files build dng to ra cc th vin m t sources C v
C++.
Cch nhng cc th vin m vo mt file (.apk) gi ng dng m chng ta c th
chy c trn cc thit b android.
Ti liu, v d v mt s hng dn.
Mt b cc th vin C/C++ c h tr trong tt c cc phin bn sau ny ca h iu
hnh Android, bt u t Android 1.5. T phin bn 2.3 tr i, h iu hnh android cn h tr
them cch vit Activity bng C/C++.
NDK cung cp b header cho libc ( bt th vin C ), libm (bt th vin ton hc),
openGL ES(th vin ha 3D), giao din JNI(l giao din lin lc gia java v native
code), mt s th vin khc, c cha trong Development Tools.
 Khi no th Native code
Khng phi khi no NDK cng u c li vi tt c cc ng dng. V vy chng ta cn
cn bng li ch vi nhc im ca n. c bit trong trng hp s dng native code khng
lm tng hiu sut thc thi m lm tng s phc tp ca ng dng. Ni chung ch nn s dng
native code nu n l cn thit i vi ng dng ca mnh. Ch khng phi v chng ta thch
chng trnh trong C/C++.
Frame android cung cp 2 cch dng native code :
Dng Android framework vit ng dng ca mnh v dng JNI truy cp API
c cung cp bi Android NDK. K thut ny cho php chng ta tn dng cc tin ch ca
SVTH: H Th Trang Lp 06T4

Page 39

Xy dng game 3D Sword Man trn Android, IOS v Windows

Android framework, nhng vn cho php chng ta vit native code khi cn thit. Chng ta c
th ci ng dng s dng Native code thng qua JNI trn thit b chy android 1.5 hoc mi
hn.
Vit mt native activity, cho php chng ta thc hin ci t vng i ca ng
dng android trn native code. Android SDK cung cp lp NativeActivity cho php chng ta
ci t vng i thng qua cc hm sau (onCreate(), onResume(), ..).
 Development tool
NDK gm mt b cng c (compilers, linkers, ) dng to ra m nh phn cho b vi
x l ARM trn h iu hnh Linux, OS X, v Windows(vi Cygwin).
Cung cp mt b headers ca h thng cho cc API native chun m c m bo
c h tr trong tt c cc phin bn sau ny ca nn tng:
Libc (th vin C) headers.
Libm (th vin ton hc) headers.
Giao din JNI headers.
Liblog (Android logging) header.
OpenGL ES 1.1 v OpenGL ES 2.0(th vin graphics library) headers.
Libjnigraphics (Pixel buffer access) header(for Android 2.2. tr ln).
Th vin OpenSL ES native audio.
API cho ng dng android.
NDK cng cung cp mt h thng bin dch gip chng ta lm vic hiu qu vi m
ngun ca mnh m khng cn iu khin chi tit cc cng c/ nn tng/ CPU/ ABI. Ngi
dng ch cn to cc file bin dch n gin m t m ngun ca mnh m trong ng dng
Android s dng. V h thng bin dch s s dng cc file ny bin dch, v to ra mt th
vin ng b trc tip vo trong d n ca mnh.
SVTH: H Th Trang Lp 06T4

Page 40

Xy dng game 3D Sword Man trn Android, IOS v Windows

 H thng v phn mm yu cu
The Android SDK
- Hon tt ci t mt Android SDK (bao gm tt c cc ph thuc).
- Phin bn SDK Android 1.5 tr i.
H iu hnh h tr
- Window XP (32-bit) hoc vista (32- hoc 64 -bit).
- Mac Os x10.4.8 hoc hn (i vi X86).
- Linux (32 hoc 64 bit, th nghim trn Linux Ubuntu Dapper Drake).
Cc cng c Cn Thit
- i vi tt c cc nn tng, bt buc GNU Make 3.81 tr ln.
- i vi Window, bt buc Cygwin 1.7 tr ln. NDK khng lm vic vi Cygwin 1.5.
Nn tng Android tng thch
Cc th vin native c to ra bi Android NDK ch c th s dng trn cc thit b
Android phin bn 1.5 tr i. iu ny l do B cng c v ABI lin quan n nhng thay i
lm cho cc th vin native khng tng thch vi hnh nh h thng 1.0 v 1.1.
V l do ny nn chng ta nn s dng th vin native c to ra vi NDK trong ng
dng m c trin khai trn cc thit b chy trn nn tng android 1.5 tr i.
m bo tnh tng thch, mt ng dng dng th vin native to ra vi NDK phi
khai bo <uses- sdk> phn t trong file mainfese ca n, vi mt gi tr thuc tnh ca
android:minSdkVersion 3 hoc ln hn.
V d:
<manifest>
SVTH: H Th Trang Lp 06T4

Page 41

Xy dng game 3D Sword Man trn Android, IOS v Windows

<uses-sdk android:minSdkVersion="3" />


...
</manifest>

Nu s dng NDK to ra th vin native c s dng OpenGL ES API, th ng dng


cha cc th vin ch c th c trin khai trn cc thit b chy ti tiu l cc phin bn c
nu di y:

OpenGL ES Version

Compatible Android

Used

Platform(s)

OpenGL ES 1.1

Android 1.6 and

Required uses-sdk Attribute

android:minSdkVersion="4"

higher
OpenGL ES 2.0

Android 2.0 and

android:minSdkVersion="5"

higher

Bng 2. Cc phin bn OpenGL ES c th s dng ND to ra th vin native

SVTH: H Th Trang Lp 06T4

Page 42

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 3. PHN TCH TR CHI


3.1. H thng v tnh kh chuyn (portability):
3.1.1. C/C++ v th vin
t c yu cu t ra ca bi ton, l h thng c th chy c trn c ba H iu
hnh: Windows, Android v IOS. V trong qu trnh lm khng cn mt nhiu thi gian, chng
ta cn phi phn tch k lng v xut phng n ph hp tin hnh ra gii php v
xy dng bi ton.
Nhn xt:
 C ba h iu hnh u cung cp mi trng lp trnh trn ngn ng ANSI C/C++.
Windows: H tr sn.
IOS: GCC, kt hp vi Objective C.
Android: JNI t Android 1.5, Native Activity t Android 2.3.
 C ba h iu hnh u cung cp th vin OpenGL ES 2.0.
Android: T phin bn 2.1.
IOS: Hu ht cc thit b chy IOS u h tr OpenGL ES 2.0.
Windows: Thng qua b gi lp OpenGL ES 2.0 ca PowerVR.
 Mi trng C/C++ trn c ba h iu hnh tng i ging nhau. Tuy nhin s lng
cc th vin h tr khc nhau, do chng ta ch s dng cc th vin chun m c 3 u
h tr.
 C th d dng chuyn mt th vin C chun ln c 3 h iu hnh (trong trng hp
ng dng ny, ti chuyn thnh cng th vin LIB PNG h tr c v x l tp tin
hnh nh PNG trong C/C++).
SVTH: H Th Trang Lp 06T4

Page 43

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Tt c u h tr cc cng c pht trin mnh m, Android v IOS u chy trn nn


tng GCC.
 Do , trong qu trnh lp tr chi, chng ta nn s dng hp l cc cng c, th vin, m
ngun v lp trnh mt cch ti u c th s dng li trn c ba nn tng khc nhau ny
3.1.2. Phn tch tnh kh chuyn (portability) ca cc thnh phn trong tr chi
Thng thng, trong mt tr chi (tc l mt ng dng) s c cc thnh phn nh sau:
- Vng lp tr chi: l trung tm ca tr chi, qun l vng i, trng thi ca tr chi.
- Logic: l phn x l ca tr chi, x l thut ton, tr thng minh nhn to, tng tc
vi ngi chi.
- Ha: l phn th hin ca tr chi.
- m thanh: l phn khng th thiu ca tr chi, gip tr chi tr nn sinh ng hn.
- Nhp: i vi cc thit b IOS, Android th tng tc ch yu thng qua cm ng
chm (touch screen), gip ngi dng tng tc vi tr chi.
- Giao din ng dng: l b khung tng tc vi nn tng ca ng dng: cho php ng
dng khi chy, tm ngng, ngng, v x l cc s kin lin quan.
i vi cc thnh phn trn, ta c bng thc t nh sau:
Nn tng / Windows
Android
IOS
Yu t
Vnglp tr C th ci t ging nhau trn c ba h thng do u vit bng C/C++.
chi
Logic
Tng t, ta c th ci t ging nhau trn c ba h thng.
Ha
- Direct X.
- OpenGL ES 1.1.
- OpenGL ES 1.1.
- OpenGL.
- OpenGL ES 2.0. - OpenGL ES 2.0.
- OpenGLES (thng (C/C++: t Android
qua b gi lp).
2.1; Java: t Android
2.2).
m thanh
- C th s dng cc - MediaPlayer.
- Open AL.
SVTH: H Th Trang Lp 06T4

Page 44

Xy dng game 3D Sword Man trn Android, IOS v Windows

b th
thanh.

Nhp

Giao din
ng dng:

Xut nhp
tp tin

vin

m - SoundPool.
- Open SL ES (T
Android 2.2).
- H tr cc nh
dng: midi, wav,
m4a, mp3
- Nhn thng ip t - T View phng
windows.
thc
OnTouchEvent().
Khng h tr nhn s
kin cm ng trc
tip t JNI.
- main()  to ca - Activity vit bng
s v tng tc.
Java.
- Native activity vit
bng C/C++. (t
Android 2.3).
- Dng th vin - c tp tin t
<stdio.h>.
res/raw qua JNI.

- AVAAudioPlayer.
- H tr cc nh
dng: mp3, m4a.

- TouchBegan(),
TouchEnded() v
TouchMoved() trong
view controller ca
Objective C.
- AppDelegate vit
bng Objective C.

- c tp tin t ti
nguyn ng dng.
Ghi tp tin vo th
mc ti liu ca
ngi dng.

Bng 3. Thc t ca cc thnh phn trong tr chi trn 3 h thng


T bng thc t trn, ta c bng nhn xt sau:
Yu t
Vng lp tr chi
Logic Tr Chi
Ha

m thanh

Tnh Kh Chuyn






SVTH: H Th Trang Lp 06T4

Gii Php
Ci t bng C/C++.
Ci t bng C/C++.
Dng OpenGL ES 2.0. API 2.0
mnh m hn nhiu so vi 1.1 v
hu ht cc thit b hin ti u h
tr.
Khng c mt chun chung v m
thanh. Tuy nhin mc n
Page 45

Xy dng game 3D Sword Man trn Android, IOS v Windows

Nhp

Giao din ng dng




Xut nhp tp tin

gin, chng ta khng x l nhiu ti


m thanh (m thanh ni, v.v).
- Trn windows: khng ci t m
thanh.
- IOS: S dung AVAAudioPlayer.
- Android OS: S dng
MediaPlayer.
Tng t, ta khng c mt API
chung nhn cm ng, do
phn ny ta phi vit ring trn
tng h thng.
Phn ny ta phi vit ring trn
tng h thng.
Phn ny ta phi vit ring trn
tng h thng.

Bng 4. Bng nhn xt cc thnh phn tr chi trn c 3 h thng.


Vi la chn trn, tr chi ca chng ta s chy c trn cc nn tng vi cu hnh
nh sau:
 Windows: 32 bit, card ha h tr OpenGL ES 2.0.
 Android: phin bn 2.1 tr v sau.
 IOS: phin bn 3.0 tr v sau.
Da vo bng phn tch trn, ta tin hnh chia phn ci t ra cc phn sau.
 Phn c th s dng chung:
Chung cho tt c cc tr chi: cc thnh phn chung cho ton b cc tr chi.
Ring bit ca tr chi hin ti: v d thut ton, logic, tng tr chi.
Phn phi ci t ring: y l phn mnh phi ci t ring cho tng h
thng, tuy nhin, cc phn ny n gin hn nhiu so vi cc phn cn li,
chng ta s thit k ci t phn ny c th s dng chung cho ton b cc
tr chi.
T , ta suy ra quy trnh thc hin nh sau:

SVTH: H Th Trang Lp 06T4

Page 46

Xy dng game 3D Sword Man trn Android, IOS v Windows

Ci t phn chung.

Windows 32

Ci t cho windows,

Ci t tr chi

Ci t cho tng nn tng

Qu trnh chuyn
Tr chi

Hnh 17. Biu din qu trnh xy dng v chuyn tr chi.


Ta s u tin xy dng cc thnh phn chung nht, sau hon thnh tr chi trn
windows. Ni chng ta c s tr gip ca cc cng c v mi trng quen thuc gip chng
ta ci t v g ri mt cch d dng. Sau chng ta s thc hin a ln cc nn tng khc
mt cch d dng.

3.2. Xy dng h thng kh chuyn


d dng hn trong vic lp trnh cng nh vic chuyn tr chi t h thng ny sang
cc nn tng khc, ta cn phi xy dng h thng theo cc phng php sau.

SVTH: H Th Trang Lp 06T4

Page 47

Xy dng game 3D Sword Man trn Android, IOS v Windows

3.2.1. S dng cc tin x l


Cc thng s k thut ca cc thit b tng i khc nhau, i khi cng c s khc
nhau gia cc th vin trn cc thit b. Do ta cn phi s dng cc nh ngha tin x l
c th vit m ngun chy tt trn mi h thng.
Cc nh ngha tin x l c sn trn h thng:
-

WIN32: c gi tr ng khi nn tng bin dch hin ti l windows.


ANDROID: c gi tr ng khi nn tng bin dch hin ti l Android.
__IPHONE_4_0: c gi tr ng khi nn tng bin dch hin ti l IOS 4.0 tr v sau.
Cc cch s dng tin x l tng tnh kh chuyn trong chng trnh:

nh ngha cc thng s: cc thit b c th c mn hnh khc nhau, do ta a cc


thng s vo cc nh ngha lc bin dch.
#define SCREEN_W 960
#define SCREEN_H 640

Vit ring cho tng cu hnh: s dng tin x l #if, #else, #endif vit mt on m
m ch chy trn mt nn tng mong mun.
#if __IPHONE_4_0
#import <OpenGLES/ES2/gl.h>
#import <OpenGLES/ES2/glext.h>
#else
#include <GLES2/gl2.h>
#endif

3.2.2. S dng nguyn mu hm, lp tru tng


Khai bo mt nguyn mu hm, lp tru tng chung cho tt c cc h thng sau ta
ci t khc nhau trn mi nn tng khc nhau.
V d, do x l m thanh trong tr chi ny tng i n gin, do , ta cn hai hm
thc hin chi mt m thanh bt k v dng tt c cc m thanh ang chi. Ta khai bo nguyn
mu hm nh sau:
// Play Sound
void PlaySound(int id, int loop = 1);

SVTH: H Th Trang Lp 06T4

Page 48

Xy dng game 3D Sword Man trn Android, IOS v Windows

// Stop all sound


void StopSound();

V sau ta s vit hm ny trn cc h thng khc nhau s dng tin x l nh phng


php trn.

3.3. Cu trc ca mt Tr chi


3.3.1. Vng lp tr chi
Vng lp tr chi chnh l trung tm ca tr chi. Tr chi khc hn vi cc ng dng
hng s kin khc, ngay c khi khng c s kin xut nhp, tr chi vn phi hot ng v
p ng lin tc to ra hiu ng hot ng ca cc nhn vt, i tng trong tr chi.
C th v d tr chi nh mt cun phim hot hnh m ngi chi c th tng tc vi
cc nhn vt trong tr chi. to c hiu ng hot hnh, tr chi phi v hn 12 hnh trn
mt giy m bo hiu ng hot hnh. Ngoi ra tr chi cn phi tnh ton, x l cc s kin
pht sinh, tnh ton cc vt th, cc nhn vt v hot ng trong tr chi.
l hai cng vic chnh ca vng lp tr chi
-

Cp nht, tnh ton trng thi hin ti.


V cc nhn vt, i tng, giao din mn hnh.

SVTH: H Th Trang Lp 06T4

Page 49

Xy dng game 3D Sword Man trn Android, IOS v Windows

ng

Kt thc

Sai
X l s kin

Hnh 18. Biu din vng lp ca tr chi


Hai hnh ng ny c lp i lp li lin tip nhau trong sut tr chi hnh thnh nn
vng lp chnh ca tr chi. mi vic r rng v d dng hn, chng ta nn tch ring bit
hai hnh ng ny v s dng cc bin trng thi lp trnh.
V d:
Trong game cn v mt qu bng di ng. Ta nhn thy:
x l cp nht, tnh ton trng thi ca qu bng ta cn cc thng tin bao gm:
bn knh bng, v tr tri bng, v vn tc ca tri bng.
- v tri bng ln mn hnh: ta cn bit cc thng tin: bn knh, v tr.
Bn knh, v tr, vn tc: chnh l cc bin trng thi chung cho chng trnh. S dng
cc bin trng thi ny, hnh ng cp nht, ta khng cn quan tm tri bng c v
nh th no vn c th thc hin c v ngc li. Vic nhn mt gc nhn ring bit
s khin chng ta lm mi vic d dng v n gin hn nhiu.

SVTH: H Th Trang Lp 06T4

Page 50

Xy dng game 3D Sword Man trn Android, IOS v Windows

S ln v/cp nht trn mt giy gi l FPS (Frame per second). Thng thng, mt
tr chi 3D c s FPS chun l 60 FPS. S FPS cng ln th tr chi chy cng mt m, tuy
nhin nu s FPS qu ln th s gy hin tng tr chi qu nhanh, ngi dng khng th chi
tt c, khi , chng ta cn phi gii hn s FPS li mt gi tr mong mun.
FPS l gi tr ph thuc nhiu vo cu hnh ca thit b, do : vic chuyn i tr chi
trn nhiu h thng khc nhau s dn n s FPS khc nhau. Trn mt thit b mnh hn, s
FPS s tng ln, do chng ta s phi gii hn li. Ngc li, chng ta cn ti u ha thut
ton, cch v hoc chnh sa ni dung ca tr chi t c s FPS mong mun to ra
kt qu ti u cho ngi chi.
3.3.2. Cu trc tr chi

Hnh 19. Cu trc ca mt tr chi


Mt tr chi bao gm nhiu giao din khc nhau. V d: bng chn chnh, mc gii
thiu tr chi, mc im cao nht v tr chi. tch hp iu ny vo vng lp chnh, chng
ta s c mt bin trng thi lu li giao din hin ti ca tr chi, ri theo x l tng ng.
Da vo bin trng thi chng ta s lu li giao din hin ti v x l trng thi tng
ng. Tng t nh trong hm cp nht hoc hm v.
Trong thit k tr chi ca mnh, ti a ra cc giao din sau
-

Bng chn chnh: Hin th cc mc ngi chi c th truy xut c cc mc


khc trong tr chi.
im cao: Ghi li cc k lc c lp trong tr chi.
Gii thiu: Gii thiu s lc v tr chi.

SVTH: H Th Trang Lp 06T4

Page 51

Xy dng game 3D Sword Man trn Android, IOS v Windows

Tr chi: ni ngi chi chi v ghi im.


Kt thc tr chi: Khi ngi chi b mt ht mng.
Trng thi hin ti

X l bng chn

X l tr chi

X l s kin

X l gii thiu

Hnh 20. Giao din ca tr chi


Cc trng thi ca tr chi

SVTH: H Th Trang Lp 06T4

Page 52

Xy dng game 3D Sword Man trn Android, IOS v Windows

Chn Xem im

Xem im

Chn Gii thiu

Bng chn chnh

Gii Thiu

Chn Vo chi

Vo chi

Mt ht mng
Ht
Chn nt quay li
-

Hnh 21. Trng thi ca tr chi


3.3.3. Ni dung tr chi
Tr chi m phng hnh ng ct tri cy ca mt kim s. Tr chi ch c mt ch
chi duy nht tnh im. Ngi chi c bt u vi nm mng v mt thanh kim. Tri cy
ln lt c tung ln t bn di, ngi chi c nhim v s dng kim ct tri cy ra lm
i trc khi tri cy ri ra khi tm nhn. C mi tri cy ct thnh cng, ngi chi s
dnh c mt im.
kh ca tr chi: tng dn, c 50 im t c, tr chi s xut hin thm mt tri
cy khin mc kh ca tr chi tng ln. Ngc li ngi chi s c tng mt mng.
Tr chi kt thc: khi ngi chi mt tt c cc s mng ca mnh. C mi khi ngi
chi lm ri mt tri cy, ngi chi s b tr mt mng.
Cc thit k thut ton:
 Chuyn ng ca tri cy:
SVTH: H Th Trang Lp 06T4

Page 53

Xy dng game 3D Sword Man trn Android, IOS v Windows

Ban u v tr P tri cy c t bn di mn hnh. Tri cy c cung cp mt vn


tc ban u
v
. Trong mi trng tn ti gia tc trng trng . Theo , sau
mi khung hnh, ta c cp nht trng thi ca tri cy cho nh sau:

Hnh 22. Biu din chuyn ng ca tri cy


 Thanh kim ca ngi chi:
Thanh kim, vt chm ca ngi chi c nhp t mn hnh thng qua cm ng
chm. D liu vo tng i ri rc do hn ch ca h iu hnh. V d khi ngi dng lt
tay trn mn hnh th s c khong n im c ghi li (khng phi tt c cc im). T
nhng d liu ny, chng ta xy dng thnh thanh kim c hnh dng tng i nh hnh.

SVTH: H Th Trang Lp 06T4

Page 54

Xy dng game 3D Sword Man trn Android, IOS v Windows

Chm v cc im c ghi nhn

Thanh kim sau khi c render


D
A

Quy tc:

B
C

DB = BC = w/2.Trong , w l rng ca
thanh kim ti B.

Hnh 23. Biu din thanh kim ca ngi chi


 Kim tra va chm:
Ta kim tra va chm gia thanh kim v tri cy bng cch kim tra va chm gia thanh
kim v hnh ch nht vin xung quanh tri cy.

Hnh 24. Biu din va chm gia thanh kim v tri cy


 Tnh ton ta sau va chm:

SVTH: H Th Trang Lp 06T4

Page 55

Xy dng game 3D Sword Man trn Android, IOS v Windows

Trc khi va chm: Gia tc ca vt l . Sau khi va chm: Tri cy c ct lm 2, v


c truyn thm mt gia tc tng ng do lc chm truyn vo l

. Gia tc sau:

Hnh 25. Biu din tnh ton ta sau va chm


3.3.4. ha
Chng ta s dng b th vin OPENGL ES 2.0. Ta ci t mt s phng thc v
mt i tng 3D v v giao din 2D.
V i tng 3D:
-

Mt i tng 3D bao gm nh ngha v ta v mt i tng texture c lu


ring r.
D liu v ta trong tr chi c to ra bng phn mm 3DS Max Studio, v sau
c xut ra tp tin vn bn kiu obj (wave front object), y l d liu bao gm
cc thng tin v mt i tng:
Ta . (vertex position).
UV. (textcoord).
Vector Normal. ( tnh ton nh sng).
i tng 3D trong tr chi ch yu l tri cy v c ct sn ra lm 2 phn
bng nhau d dng x l trong tr chi.

SVTH: H Th Trang Lp 06T4

Page 56

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 26. Biu din i tng 3D trong tr chi


Cc i tng ny c t v m bo tnh n gin v tng tc thc thi trong
chng trnh.
V giao din 2D:
Giao din 2D l mt phn khng th thiu trong tr chi, v n l phn quan trng th
hin thng tin ti ngi dng.
v 2D trong OpenGL ES 2.0 chng ta to mt texture ri tin hnh v tng b i
tam gic 1 ra mn hnh. V d, v hnh bn di th chng ta v hai tam gic nh sau:

Hnh 27. Biu din giao din 2D


to ra ton b giao din 2D trong chng trnh, ta nn tt c vo mt texture c kch
thc ln, sau ti vo b nh v v tng b i tam gic nh m hnh trn.

SVTH: H Th Trang Lp 06T4

Page 57

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 28. Biu din cch b tr v giao din 2D trong tr chi

3.3.5. m Thanh
Tr chi tng i n gin, do trong chng trnh ta c hai loi m thanh sau:
 m thanh nn.
 m thanh hiu ng.
Ta c bn thit k m thanh nh sau:
Tn m thanh
MUSIC_TITLE
CUT

M t
Nhc nn.
m hiu ng

SVTH: H Th Trang Lp 06T4

Kch hot
Kch hot ti bng chn chnh.
Ngi dng chn mt menu.
Ngi dng ct thnh cng mt tri cy.
Page 58

Xy dng game 3D Sword Man trn Android, IOS v Windows

GAME_OVER

Nhc nn.

Khi tr chi kt thc.

Bng 5. Bn thit k m thanh

SVTH: H Th Trang Lp 06T4

Page 59

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 4. QU TRNH LP TRNH


4.1. Thit k chng trnh
Da vo cc phn tch, ta c thit k khung ca mt chng trnh.

Hnh 29. Biu din khung thit k ca chng trnh


- Lp Application l b giao tip gia ng dng v cc nn tng.
- Lp FileSystem l lp tru tng c dng thc hin cc hnh ng c/ghi tp
tin.
-Lp VideoDriver: l lp ci t cc phng thc v hnh lin quan n OpenGLES
2.0.

SVTH: H Th Trang Lp 06T4

Page 60

Xy dng game 3D Sword Man trn Android, IOS v Windows

- Lp Sprite2DManager, Sprite3DManager l lp chu trch nhim ti cc i tng


3D cng nh giao din 2D v v ln trong chng trnh.
mi nn tng cc i tng ny s c k tha v ci t khc nhau nu cn thit.

Hnh 30. Cch k tha cc lp tr tng trn cc nn tng khc nhau

 y l b khung cn thit chng ta tin hnh xy dng cc thnh phn trong


chng trnh.

4.2. Vng lp tr chi


Chng ta thc hin vng lp tr chi qua hai phng thc ca lp Application, l
phng thc Update() v Render().
- Phng thc Update: cp nht trng thi ca tr chi.
- Phng thc Render: Render ni dung ca tr chi ra mn hnh thit b.
Do tr chi bao gm nhiu giao din (bng chn chnh, xem k lc, xem gii thiu, chi
game). Chng ta s khai bo mt bin trng thi lu tr trng thi hin ti. Sau hm
Update v Render, chng ta s da vo bin trng thi ny cp nht tr chi.
void UpdateGame(int type)
{
switch (s_iCurrentState)
{

SVTH: H Th Trang Lp 06T4

Page 61

Xy dng game 3D Sword Man trn Android, IOS v Windows

case GAME_START:
UpdateGameStart(type);
break;
case MAIN_MENU:
UpdateMainMenu(type);

ng vi mi trng thi ta s dng mt ch th xc nh hnh ng hin ti l Paint


hay Render. Ngoi ra mi trng thi cn c cc hnh ng ti v hy b cc i tng trn.
-

UPDATE: Cp nht trng thi hin ti.


PAINT: Render trng thi hin ti.
CTOR: Ti cc i tng cn thit v v tnh ton trng thi hin ti.
DTOR: Hy b cc bin s dng trong trng thi hin ti.

Hnh 31. Biu din vng lp ca tr chi

4.3. Ni dung tr chi


Chng ta nh ngha cc bin trng thi ri ln lt ci t cc ni dung nh sau:
Cc bin dng v v cp nht tri cy:
enum {ST_NORMAL, ST_CUT, ST_HIDDEN};
struct Fruit
{
int status;
float x;
float y;
float ax;
float ay;
int model;
};

SVTH: H Th Trang Lp 06T4

Page 62

Xy dng game 3D Sword Man trn Android, IOS v Windows

Fruit fruits[MAX];
Cc bin dng lu tr v x l nhp t ngi chi:
int blades[MAX_BLADE][2];
int bladesLength = 0;

Ta c vng i ca mt tri cy nh sau:

Hnh 32. Vng i ca mt tri cy


 Cc chc nng ci t:
4.3.1. Khi to v tr hin ti ca tri cy
// gn gia tc
fruits[i].ay = 0.28f;
fruits[i].ax = (rand() % 10 - 5) * 0.01f;
// gn vtr
fruits[i].y = -2.8f;
fruits[i].x = (rand() % 90) / 10.0f - 4.0f;
// gn trng thi
fruits[i].status = ST_NORMAL;
// gn loi tri cy
fruits[i].model = (rand() % 3) * 3;

4.3.2. Cp nht trng thi ca tri cy


// Tnh ton li gia tc
fruits[i].ay -= 0.007f;
fruits[i].y += fruits[i].ay;
fruits[i].x += fruits[i].ax;
// Xc nh li trng thi
if (fruits[i].y < -3.0f)
{
fruits[i].status = ST_HIDDEN;
}

SVTH: H Th Trang Lp 06T4

Page 63

Xy dng game 3D Sword Man trn Android, IOS v Windows

4.3.3. Kim tra va chm


Chng ta kim tra ct nhau gia cc im thuc thanh kim v ng bin va chm ca
tri cy nh sau:
// ax, ay l ta ca tri cy.
float cx = blades[bladesLength - 2][0] + vx * j * stepLength;
float cy = blades[bladesLength - 2][1] + vy * j * stepLength;
if(fruits[i].status == ST_NORMAL
&&
PointerInRect(cx, cy, ax - 56, ay - 58, 112, 116))
{

// ct nhau
4.3.4. Tnh ton li cc trng thi sau khi va chm
fruits[i].ax += 0.02f * vx;
fruits[i].ay += 0.02f * vy;
fruits[i].model = fruits[i].model + 1;
fruits[i].status = ST_CUT;
Tuy nhin by gi, tri cy ca chng ta c ct lm 2: do , chng ta s c:
fruits[i
fruits[i
fruits[i
fruits[i
fruits[i
fruits[i

+
+
+
+
+
+

1].ax = -fruits[i].ax;
1].x = fruits[i].x;
1].y = fruits[i].y;
1].ay = -fruits[i].ay;
1].model = fruits[i].model + 1;
1].status = ST_CUT;

4.4. Ha
S hot ng ca OpenGLES 2.0 trong chng trnh nh sau:

Hnh 33. S hot ng ca OpenGl ES 2.0 trong chng trnh


ci t ha vi OpenGLES 2.0 chng ta cn phi ci t cc tnh nng sau.

SVTH: H Th Trang Lp 06T4

Page 64

Xy dng game 3D Sword Man trn Android, IOS v Windows

4.4.1.Ti shader v bin dch


OpenGLES 2.0 cung cp mt ng ng chng ta c th lp trnh cch thc hot
ng ca b x l ha.
Shader l b iu khin hot ng ca OpenGLES 2.0 v c chy ngay trn b x l
ha. Shader c vit bng ngn ng shader (glsl) v bao gm hai phn: shader nh (vertex
shader) v shader im nh (fragment shader). ng dng OpenGLES 2.0 ch c th hot ng
khi c xc nh mt cp shader trong h thng. Do chng ta phi ci t shader cho
lp x l ha ca mnh.
-

Ti shader t tp tin.
Bin dch shader.
Lin kt shader thnh chng trnh.
S dng chng trnh v.

4.4.2. V mt i tng 3D
v mt i tng 3D, chng ta s dng php chiu phi cnh. Mt i tng 3D
c xc nh bi cc thuc tnh:
- V tr, d liu, mu sc, UV ca tng nh thuc i tng.
- Quan h gia cc nh thuc i tng.
- Texture: hnh nh c p ln i tng .
Trong chng trnh, v tr, d liu, mu sc, uv ca i tng c lu di dng file
.OBJ c nh dng nh sau:
v $x $y $z ; nh c ta x y z
vt $u $v ; ta uv ca i tng.
vn $x $y $z ; vec-t chnh phng.
f $i/$j/$k $i/$j/$k $i/$j/$k; Xc nh mt mt tam gic ca i tng, trong :
$i: v tr ca ta , $j: v tr ca uv, $k: v tr ca vector chnh phng ti nh ,
Cc thng tin ny c nn li vo mt file nh phn cha nhiu i tng cng lc 
mc ch: d dng ti v thc hin trong chng trnh.

SVTH: H Th Trang Lp 06T4

Page 65

Xy dng game 3D Sword Man trn Android, IOS v Windows

Lc v, chng ta truyn cc tham s ny vo mt shader trong OPENGL ES v b x l


ha s v i tng ny ln mn hnh.
driver->SetArray(ATTRIB_VERTEX, 3, meshes[i].vertices);
driver->SetArray(ATTRIB_TEX_COORD, 2, meshes[i].texCoords);
//driver->SetArray(ATTRIB_NORMAL, 3, meshes[i].normals);
driver->SetTexture2D(0, manager>GetTexture(meshes[i].textureId));
driver->DrawArray(TRIANGLES, meshes[i].nVertices);

4.4.3. V mt i tng 2D
v mt i tng 2D, chng ta s dng php chiu vung gc. Tng t nh i
tng 3D, chng ta s lu thng tin ca cc i tng 2D vo mt file nh phn, sau ti vo
b nh v v ra.

4.5. Nhp
Ta s dng hm PointerEvent trong i tng Application nhn v x l cc s kin
nhp t cm ng / chut. trn windows, ta x l nh sau:
case WM_LBUTTONDOWN:
mouseDown = true;
bt::core::Application::GetApplication()
->PointerEvent(bt::core::POINTER_START, x, y);
break;
case WM_MOUSEMOVE:
if (mouseDown)
{
bt::core::Application::GetApplication()
->PointerEvent(bt::core::POINTER_MOVED, x, y);
};
break;
case WM_LBUTTONUP:
mouseDown = false;
bt::core::Application::GetApplication()
->PointerEvent(bt::core::POINTER_ENDED, x, y);
break;

trong tr chi ca mnh, chng ta ch cn ci t v x l hm PointerEvent m khng


cn phi bit tht s cm ng/chut c nhn nh th no.
V d:
SVTH: H Th Trang Lp 06T4

Page 66

Xy dng game 3D Sword Man trn Android, IOS v Windows

if (pointerState == POINTER_START &&


PointerInRect(m_iLastPointerX, m_iLastPointerY,
SCREEN_W - 100, SCREEN_H - 100, 100, 100))
{
SwitchState(MAIN_MENU);
}

4.6. m thanh
Ta a ra hai phng thc chi m thanh:
// Play Sound
void PlaySound(int id, int loop = 1);
// Stop all sound
void StopSound();

Tuy nhin, trong windows, chng ta khng x l m thanh do khng cn thit v


khng c thi gian thc hin.

4.7. Giao din ng dng


ng dng ca chng ta xy dng l ng dng console: c giao din gip chng ta
debug d dng. u vo ca ng dng l hm main() -> chng ta thc hin cc vic sau:
- Khi to ng dng.
- To ca s v khi to i tng OpenGL ES 2.0.
- Bt u tr chi.
- Gi vng lp tr chi.
app->StartApp();
while (!exit)
{
// Update and Paint
app->Update();
app->Render();
eglSwapBuffers(context->display, context->surface);
};
app->Destroyed();

SVTH: H Th Trang Lp 06T4

Page 67

Xy dng game 3D Sword Man trn Android, IOS v Windows

4.8. Giao din xut nhp tp tin


Vic xut nhp tp tin trong windows tng i n gin. Chng ta ch cn s dng cc
phng thc c bn ca th vin <stdio.h> thc hin.
// Open a file in Windows 32bits so easily
FILE* Win32FileSystem::OpenFile(const char *filename, const
char *mode)
{
FILE *file;
fopen_s(&file, filename, mode);
return file;
};

SVTH: H Th Trang Lp 06T4

Page 68

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 5. QUY TRNH CHUYN TR CHI


Sau khi thc hin ci t cc bc trn, ta c c ng dng tr chi hon chnh trn
windows. Tuy nhin, mc tiu ca chng ta l khin chng trnh chy c trn cc thit
b Android v IOS. lm c iu , chng ta cn phi tin hnh chuyn sang IPhone v
Android OS. lm c iu ta cn phi ci t cc thnh phn khc nhau trn cc h
thng ny.

5.1. Chuyn sang IOS


5.1.1. Ci t mi trng pht trin
Cho ti thi im ny, ng dng IOS ch c th pht trin, bin dch v g ri trn
XCODE. XCODE ch c th chy c trn h iu hnh MAC OS. V ng dng IOS ch c
th c t do phn phi hp php trn AppleStore. Do chng ta phi tin hnh ci t mi
trng pht trin cho IOS.
Ci t MAC OS, c 2 cch:
Phi mua thit b Apple, Mac OS c ci sn trn .
Ci t bt hp php s dng HackIntosh.
- Ci t Xcode 4, IOS Dev SDK 4.3
Xcode 4 c cung cp min ph cho nh pht trin IPHONE, MAC.
IOS Dev SDK 4.3 v Xcode 4 yu cu phin bn Mac 10.6.3 tr v sau.
pht trin ng dng v kim th trn thit b IOS tht s, ta phi c cc yu cu
sau:
-

Thit b IOS: iPhone, iPod Touch hoc iPad. iPod Touch l la chn hp l do cu
hnh cao tng ng iPhone nhng gi thnh li r hn nhiu (1/3).
Ti khon IPhone Developer ca Apple, i km xc nhn v b pht trin: c thi
hn mt nm vi gi l 99$. Ti khon ny cho php nh pht trin ng dng phn
phi ng dng ca mnh trn Apple Store di hnh thc min ph hoc thu ph.

SVTH: H Th Trang Lp 06T4

Page 69

Xy dng game 3D Sword Man trn Android, IOS v Windows

5.1.2. To d n, bin dch


Xcode cung cp cho chng ta cng c rt tt to d n v bin dch. Trong chng
trnh ca mnh, em s dng v d c sn ca iPhone SDK l Hello OpenGL ES 2.0 tin hnh
ci t tip cc thnh phn khc ca ng dng.
Sau chng ta tin hnh chuyn cc thnh phn khc vo iPhone.

5.1.3. m thanh
Ta s dng i tng m thanh AVAAudioPlayer ca AVFoundation tin hnh ci
t m thanh trn IOS.
-

Khi to m thanh:

Bt u mt m thanh:

SVTH: H Th Trang Lp 06T4

Page 70

Xy dng game 3D Sword Man trn Android, IOS v Windows

Tt tt c m thanh:

5.1.4. Nhp
S kin touch c nhn t lp ViewController ca ng dng, thng qua 3 hm:
- touchesBegan.
- touchesEnded.
- touchesMoved.
Ta ch cn ly ta Touch tng ng v tin hnh chuyn qua.

SVTH: H Th Trang Lp 06T4

Page 71

Xy dng game 3D Sword Man trn Android, IOS v Windows

i vi phin bn iPhone 4, chng ta phi nhn i ta (do iPhone 4 s dng mn


hnh vng mc c phn gii gp 4 ln phn gii iphone thng).
Trong iPhone khng h tr ta Touch ch mn hnh ngang. Do ta phi t tnh
ton theo cng thc: x = y, y = SCREEN_H x.

5.1.5. Giao din ng dng


Trong v d cho sn ca ng dng iPhone OpenGL ES 2.0, chng ta c c b
khung tin hnh xy dng ng dng. Do tt c m ngun c vit trn C++ nn ta
khng cn ch ti nhiu v cu trc chng trnh iPhone, chng ta ch cn gi cc hm
load ng dng C++ ca chng ta ln l c. Cc phng thc thm i tng ca chng ta
vo.
-

awakFromNib: l phng thc c gi sau khi View c load t file nib.


y chng ta s gi hm khi ng ng dng ca mnh.
renderFrame: l phng thc v ng dng IOS s dng OpenGL ES 2.0, y
chng ta s gi hm x l vng lp ca mnh.
ApplicationDelegate l lp x l cc s kin lin quan ti ng dng:
applicationDidEnterBackground: c gi khi ng dng b n i, y ta s gi
app->Paused.

SVTH: H Th Trang Lp 06T4

Page 72

Xy dng game 3D Sword Man trn Android, IOS v Windows

applicationWillEnterForeground: c gi khi ng dng hin tr li, y ta s gi


hm app->Resumed.

5.1.6. Xut nhp tp tin


Cc tp tin ti nguyn c a vo resource ca ng dng, khi bin dch cc tp tin
ny s c chp sang tp tin ng gi ca ng dng. Sau khi ci t, cc tp tin ny s c
chp vo th mc ci t ca ng dng. c c cc tp tin ny, chng ta cn phi ly
ng dn chnh xc s dng. ng dng IOS, ta ch cn thm hm ly ng dn
chnh xc.

5.2. Chuyn sang Android


5.2.1 Ci t phn mm
to mi trng pht trin trn Android ta cn ci t cc cng c sau:
-

Java SDK: yu cu chy ng dng Java.


Cygwin 1.7 tr v sau: dng gi lp mi trng pht trin linux, gcc v chy
NDK.
Android SDK: cn thit bin dch, ng gi ng dng Android. Ngoi ra Android
SDK cn cung cp cho chng ta cc cng c tng tc vi thit b di ng, v b
gi lp.
Android NDK: Dng bin dch m ngun C ra th vin t gi t java.

SVTH: H Th Trang Lp 06T4

Page 73

Xy dng game 3D Sword Man trn Android, IOS v Windows

5.2.2. Hot ng ca JNI v quy trnh bin dch


Nh chng ta u bit, ng dng android chy trn nn chnh l Java. Mun chy
C/C++ ta c hai gii php:
- S dng JNI: t android 1.5 tr v sau.
- S dng Native Activity: t android 2.3 tr v sau.
Native Activity l phng n la chn tt hn, bi v chng trnh s khng tn chi ph
giao dch gia my o Java v C/C++. Tuy nhin, ti thi im hin ti, s lng cc thit b
h tr Android 2.3 tng i him nn chng ta s s dng gii php JNI.
Hot ng ca JNI c m t nh sau:
Cc phng thc JNI c nh du bng t kha native.
Cc phng thc ny c vit bng C++ v bin dch ra th vin lin kt ng .so.
Th vin lin kt ng c Load ln trong chng trnh Java bng li gi
System.loadLibrary();
- Khi trong chng trnh Java c li gi ti hm native, my o Java s tm kim trong
th vin ng xem hm ny c ci t cha, sau cc i tng Java s c
chuyn thnh C++ thc hin li gi ti C++.
- Trong C++ cng cung cp cc th vin cho php giao tip ti my o v chng
trnh Java.
 Quy trnh xy dng mt chng trnh c s dng JNI nh sau:
- Khai bo phng thc native trong lp Java.
-

Khai bo v ci t phng thc ny trong C. (Nu C++ th phi s dng extern


C trnh sa tn trong C++). Quy tc t tn hm nh sau:

SVTH: H Th Trang Lp 06T4

Page 74

Xy dng game 3D Sword Man trn Android, IOS v Windows

tengoi_tenlop_tenphuongthuc

Sau dng NDK bin dch m ngun C thnh th vin lin kt ng v th vin
ny c t ng b vo th mc lib ca d n android.
- Vit chng trnh java gi cc hm native ny.
- Dng b SDK bin dch thnh ng dng apk.
Do cc bc s dng NDK bin dch c thc hin trn du nhc lnh, do chng
ta s to tp tin lnh thc hin iu ny.
-

5.2.3. ha
Android h tr OpenGLES 2.0 trong NDK t phin bn 2.1 tr v sau. V trong v d
NDK c sn v d thc thi vi OpenGL ES 2.0 nn ta c th s dng v d ny, sau thay i
cc thnh phn trong ti ng dng C++ v chy ln.
Ngoi ra bin dch vi OpenGL ES 2.0 th trong make file ca d n NDK ta phi
thm dng LOCAL_LDLIBS := -llog -lz -lGLESv2.

5.2.4. m thanh
NDK khng h tr chi m thanh cho n Android phin bn 2.2 tr v sau. Do
chng ta s s dng Java chy cc tp tin m thanh.
Phn ti cc tp tin m thanh, Play Sound v StopSound c ci t trong Java:

SVTH: H Th Trang Lp 06T4

Page 75

Xy dng game 3D Sword Man trn Android, IOS v Windows

Trong C++, ta ci t cc hm PlaySound v Stop Sound bng cch gi ti hm


PlaySound trong i tng Java.

5.2.5. Cm ng chm
Trong ng dng Android, ta nhn s kin cm ng chm thng qua hm
OnTouchEvent.

SVTH: H Th Trang Lp 06T4

Page 76

Xy dng game 3D Sword Man trn Android, IOS v Windows

T ta gi n cc hm native trong C++ v x l n.

5.2.6. Giao din ng dng


ng dng Java c vit theo Activity. Trong ng dng Java, chng ta ti mt
GLSurfaceView th hin giao din OpenGL ES 2.0. Trong cc hm ny, chng ta thm cc
phng thc gi chng trnh C/C++ ca chng ta t th vin native ln v thc hin.
Cc phng thc:
SVTH: H Th Trang Lp 06T4

Page 77

Xy dng game 3D Sword Man trn Android, IOS v Windows

onSurfaceCreate: c gi khi i tng GLSurfaceView c to ra, ti y ta cn


gi hm app->Init(), v app->StartGame().
onDrawFrame: hm c gi khi i tng c v ra. Ti y ta cn gi cc hm
app->Update(), v app->Render.

5.2.7. X l file
Cc tp tin trong res/raw s truy cp c t Android bng lnh fdopen(). Tuy nhin, ta
cn phi bit cc thng s ID thc hin truy xut ny.
 T Java ta c th ly cc thng s ny v truyn vo C/C++:

 Trong C++ ta lu li cc tham s ny.

 Sau s dng lc cn thit.

SVTH: H Th Trang Lp 06T4

Page 78

Xy dng game 3D Sword Man trn Android, IOS v Windows

Vy l ta c th c cc tp tin ti nguyn v hin th ln trong tr chi.

SVTH: H Th Trang Lp 06T4

Page 79

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 6. QU TRNH KIM TH SN PHM GAME LM RA


6.1. Ci t h thng
6.1.1. Ci t trn Android
C 2 cch ci t
 Dng Th nh
Copy file apk sau khi build ra vo th nh ca in thoi.
Sau vo in thoi. Chn chng trnh va copy vo th nh ci t.
 Dng cu lnh
Cm in thoi vo my tnh cho my tnh kt ni vi in thoi Android. Dng cu lnh:
adb devices kim tra xem my tnh kt ni vi in thoi cha.
Sau khi in thoi Android kt ni vi my tnh. Ta dng lnh:
Adb install -r <Tn ng dn n file apk> ci t trn in thoi.
Cch hy b game ci t
Chng ta vo mc setting -> Applications->Manage application. Ri sau chn vo ng
dng game m chng ta ci t trn my. Chn Unstill g ng dng game .
6.1.2. Ci t trn IOS
C 2 cch
 Ci t t XCode
u tin chng ta phi to mt ti khon developer trn Developer Center ca Apple
mt khong 99 $ vi thi hn dng l 1 nm.
Sau chng ta dng Xcode ci t ng dng game ln IOS. Vi iu kin l thit b
IOS c ng k vi ti khon trn.
SVTH: H Th Trang Lp 06T4

Page 80

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Ci t t AppleStore
ng dng phi c chuyn cho Applestore v c kim th vi i kim th ca
Applestore. Nu kim th thnh cng th Applestore s cho php a ng dng ln
Applestore.
Sau ngi dng ci t ng dng game ny qua iTunes (nu phn mm free th c
ci min ph nu khng ngi dng phi tr tin cho ng dng ci t trn).

6.2. Kim th
Danh sch cc ca kim th
 Kim th v Gameplay
S hiu ca kim th
iu kin ban u

Tc nhn
Hnh ng
Kt qu mong i

Thnh cng/Tht bi
Ghi ch

S hiu ca kim th
iu kin ban u

Tc nhn
Hnh ng
Kt qu mong i

1
2
Ngi dng touch vo nt
Ngi dng touch vo nt
start game vo chi game High Score xem bng kt
qu lu im
Ngi dng
Ngi Dng
Touch vo nt sart game
Touch vo nt HighScore
Game chuyn vo trng thi Game chuyn qua trng thi
Game Play. V bt u chi High Score. Hin ra bng
im kt qu
Thnh cng
Khng thnh cng

3
Ngi dng touch vo nt
High Score xem bng kt
qu lu im
Ngi dng
Touch vo nt HighScore
Game chuyn qua trng thi
High Score. Hin ra bng
im kt qu

SVTH: H Th Trang Lp 06T4

4
Ngi dng touch vo cc
loi qu chuyn ng trn
mn hnh
Ngi Dng
Touch trng vo cc qu
ang chuyn ng
Qu b touch tch ra lm 2
v ri xung. ng thi
c cng im
Page 81

Xy dng game 3D Sword Man trn Android, IOS v Windows

Thnh cng/Tht bi
Ghi ch

Thnh cng

Thnh cng

S hiu ca kim th
iu kin ban u

5
Ngi chi rt 5 qu
xung m cha c ct
lm 2
Ngi dng
5 qu tri cy ri xung m
k c ct lm 2
Game bo Game Over

6
Ngi chi trng thi
game Over. Thc hin
touch vo mn hnh
Ngi Dng
Touch vo mn hnh khi
trng thi game Over
Game quay tr v
MainMenu
Thnh cng

Tc nhn
Hnh ng
Kt qu mong i

Thnh cng

Thnh cng/Tht bi
Ghi ch

Bng 6. Biu din cc ca kim th v gamePlay


 Kim th v m Thanh
S hiu ca kim th
iu kin ban u
Tc nhn
Hnh ng

1
Ngi chi touch vo mn
hnh main menu
Ngi dng
Vo mn hnh Main menu

Kt qu mong i

Nhc nn c bt ln

Thnh cng/Tht bi
Ghi ch

Thnh cng

S hiu ca kim th
iu kin ban u

3
Ngi chi dng ht 5
mng
Ngi dng
Ngi chi dng ht 5
mng
Nhc game over c bt

Tc nhn
Hnh ng
Kt qu mong i

SVTH: H Th Trang Lp 06T4

2
Ngi chi touch vo cc
loi qu ang chuyn ng
Ngi Dng
Touch vo cc qu ang
chuyn ng
Nhc kim chm c bt
ln
Thnh cng

Page 82

Xy dng game 3D Sword Man trn Android, IOS v Windows

Thnh cng/Tht bi
Ghi ch

ln
Thnh cng

Bng 7. Hnh biu din cc ca kim th v m thanh


 Kim th v Interrupt
S hiu ca kim th
iu kin ban u

Tc nhn
Hnh ng
Kt qu mong i
Thnh cng/Tht bi
Ghi ch

1
Ngi dng ang chi
game, Bm vo nt gi, sau
vo li game
Ngi dng
Ngi dng Bm vo nt
gi
Game tr v li trng thi
trc khi interrupt
Khng Thnh cng

2
Ngi dng bm nt back
ti mn hnh main menu
Ngi Dng
Ngi dng bm nt back
ti mn hnh main menu
Game b minimize xung
Khng thnh cng

Bng 8. Hnh biu din cc ca kim th v Interrupt

SVTH: H Th Trang Lp 06T4

Page 83

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 7.MT S KT QU V DEMO CA GAME


7.1. Kt qu demo trn Windows
 Mn Hnh main menu

Hnh 34. Kt qu demo v main menu trn Windows

SVTH: H Th Trang Lp 06T4

Page 84

Xy dng game 3D Sword Man trn Android, IOS v Windows

 mn hnh lc ang chi game

Hnh 35. Kt qu demo giao din lc ang chi game trn windows

SVTH: H Th Trang Lp 06T4

Page 85

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Lc ngi dng chm vo tri cy ang chuyn ng

Hnh 36. Kt qu demo lc ngi chi chm vo tri cy trn windows

SVTH: H Th Trang Lp 06T4

Page 86

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Mn hnh lc b Game over

Hnh 37. Kt qu demo lc Game over trn windows

SVTH: H Th Trang Lp 06T4

Page 87

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Mn hnh Highscore

Hnh 38. Demo giao din mn hnh highscore trn windows

7.2. Kt qu demo trn IOS

 Biu tng Icon ca game

SVTH: H Th Trang Lp 06T4

Page 88

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 39. Kt qu demo biu tng icon ca game trn ios

SVTH: H Th Trang Lp 06T4

Page 89

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Mn hnh Mainmenu

Hnh 40. Kt qu demo mn hnh mainmeu trn ios


 Mn hnh Gameplay

Hnh 41. Kt qu demo mn hnh lc ang chi game trn ios


SVTH: H Th Trang Lp 06T4

Page 90

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Mn hnh Higscore

Hnh 42. Kt qu demo mn hnh highscore trn ios


 Mn hnh GameOver

Hnh 43. Kt qu demo mn hnh gameOver trn ios

SVTH: H Th Trang Lp 06T4

Page 91

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Mn hnh About

Hnh 44. Kt qu demo mn hnh About trn ios

7.3. Kt qu demo trn Android (in thoi Galaxy s)


 Biu tng Icon ca game

SVTH: H Th Trang Lp 06T4

Page 92

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 45. Kt qu demo biu tng icon ca game trn Android

SVTH: H Th Trang Lp 06T4

Page 93

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Mn hnh Mainmenu

Hnh 46. Kt qu demo mn hnh mainmenu trn Android


 Mn hnh Gameplay

Hnh 47. Kt qu demo mn hnh game play trn Android


SVTH: H Th Trang Lp 06T4

Page 94

Xy dng game 3D Sword Man trn Android, IOS v Windows

 Mn hnh Higscore

Hnh 48. Kt qu demo mn hnh highScore trn Android


 Mn hnh GameOver

SVTH: H Th Trang Lp 06T4

Page 95

Xy dng game 3D Sword Man trn Android, IOS v Windows

Hnh 49. Kt qu demo mn hnh GameOver trn Android


 Mn hnh About

Hnh 50. Kt qu demo mn hnh About trn Android

SVTH: H Th Trang Lp 06T4

Page 96

Xy dng game 3D Sword Man trn Android, IOS v Windows

CHNG 8. KT LUN
8.1. Kt qu t c
Tm hiu c cch xy dng mt game a nn tng, v qu trnh chuyn game t
windows sang Android v IOS.
Bit c cu trc ca mt game 3D.
Xy dng thnh cng mt game 3D trn h iu hnh Adroid, IOS v windows.Vi giao
din thn thin v d s dng.

8.2. Nhng vn cn tn ng
Cc tnh nng ca game cn kh n gin.

8.3. Hng pht trin ca ti


Xy dng thm cc tnh nng mi ca game : xut nhp tn ngi chi, To thm cc
hiu ng cho game. V c bit l pht trin game c th chuyn qua Khng ch c
windows, Adroid v IOS m trn cn nhiu h iu hnh khc na.

SVTH: H Th Trang Lp 06T4

Page 97

Xy dng game 3D Sword Man trn Android, IOS v Windows

TI LIU THAM KHO


Trang web: http://fly.cc.fer.hr/~unreal/theredbook/
L Phong: Hng dn lp trnh OpenGL cn bn.
Trang web: http://glprogramming.com/red/
L Tn Hng, Hunh Quyt Thng: k thut ha. Nh xut bn khoa hc v k thut, H
Ni-2000.
[5] Donald Hearn, M. Pauline Baker: Computer Graphics, Prentice-Hall, Inc., Englewood Cliffs,
New Jersey, 1986.
[6] Mt s ti liu khc v kinh nghim t thc tin.
[1]
[2]
[3]
[4]

SVTH: H Th Trang Lp 06T4

Page 98

You might also like