Bài giảng Mobile Game - Công Nghệ Thông Tin | Đại học Mỏ – Địa chất

Bài giảng Mobile Game - Công Nghệ Thông Tin | Đại học Mỏ – Địa chất được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!

1
M
M
M
MM
C L
C L
C L
C LC L
C
C
C
C C
Chương 1: Giớ di đội thiu v lp trình game và các nn tng lp trình trên thiết b ng ..... 3
1.1 Gi i thi u v Game và các th i game ph bi n hi n nay .................................... 3 lo ế
1.2 Game engine và m ngôn ng l p trình game ph bi n ...................................... 8t s ế
1.2.1 Gi u vi thi Game engine ........................................................................... 8
1.2.2 Các ngôn ng l p trình game ph bi n ............................................................... 9 ế
1.3 Các n n t ng phát tri n ng d ng trên thi t b ng ........................................... 16 ế di độ
1.3.1 Web Application (Web App) ............................................................................ 17
1.3.2 Hybird application ............................................................................................ 19
1.3.3 Native APP ....................................................................................................... 22
Chương 2: Giớ thư việi thiu v ngôn ng lp trình python và mt s n Game ................ 26
2.1 Ngôn ng l p trình python....................................................................................... 26
2.1.1 Khai báo bi n trong python .............................................................................. 26ế
2.1.2 Hàm Print trong py .................................................................................... 29thon
2.1.3 Kiểu dữ liệu trong python ................................................................................. 30
2.1.4 Toán t ........................................................................................ 44 trong python
2.1.5 Câu l nh r nhánh ............................................................................................. 48
2.1.6 Vòng l p ........................................................................................................... 51
2.1.7 Hàm trong python ............................................................................................. 55
2.1.8 Input và đọc ghi file .......................................................................................... 60
2.1.9 Module trong python ........................................................................................ 64
2.1.10 Package trong python ..................................................................................... 68
2.1.11 Map, filter trong python ................................................................................. 72
2.1.12 Class trong python .......................................................................................... 73
2
2.2 Các thư viện lp trình Pygame và Pyglet trong python ........................................... 76
Chương 3: Thiết kế giao din vi Tkinter trong python ................................................... 79
Chương 4: Lập trình game cơ bản vi python ................................................................. 106
4.1 Yêu c u v t và c u hình .............................................................................. 106 cài đặ
4.2 T ng quan yêu c ................................................................................... 106 ầu trò chơi
4.3 Các bước to game ................................................................................................ 107
4.3.1 Cơ bản v layout ............................................................................................. 107
4.3.2 Gi u v Canvas ...................................................................................... 110i thi
4.3.3 n v ng trong game .............................................................. 112Cơ bả các đối tượ
4.3.4 Thêm Breakout items ..................................................................................... 116
4.3.5 Di chuy n và x lý va ch m ........................................................................... 118
4.3.6 Starting Game ................................................................................................. 122
4.3.8 Chơi game ....................................................................................................... 124
Chương 5: Tạ ằng thư việo game b n Pygame .................................................................. 126
5.1 Hướng dn to game Space Invader ...................................................................... 126
5.2 Đóng gói game ....................................................................................................... 134
Chương 6: Giới thiu các Engine to game ..................................................................... 137
6.1 Gi i thi u các khái ni u khi làm game .................................................. 137 m khởi đầ
6.2 Gi i thi n t ng Cocos ........................................................... 139 ệu game engine đa nề
6.3 Cài đặt và tạo game đơn giản trong Cocos creator ................................................ 144
6.4 T ng quan v unity game engine ........................................................................... 179
6.4.1 T ng quan v unity game engine.................................................................... 179
6.4.2 T M HI U V UNITY ENGINE................................................................... 182
6.4.3 Các khái ni n trong unity ................................................................... 184ệm cơ bả
3
Chương 1: Giới thiệu về lập trình game và các nền tảng lập trình
trên thi t b ế ị di động
1.1 Gi i thi u v Game và các th i game ph loạ biến hi n nay
Để phân loi nhng loi game khác nhau, chúng thường đượ ững đặc da trên nh c
điểm, các xây dng các nhân v a các nhân v ật cũng như các tương tác trong game giữ ật để
xác đị ại game đang phổnh th loi, mt s th lo biến hin nay.
Game mô ph ỏng
Game mô ph ng v n là m t trong nh ng th i game xu t hi n s m nh t trên th lo
trường, đưc nhiều người hưởng ng do nh ng tr i nghi m m i l c a game, c t a game
ph ng game nh p vai, chi n thu n ph i th c hi n nhiỏng thườ ế ật,… người chơi cầ u
nhim v khác nhau trong game, x lý các tình hu i v ống và tương tác vớ i nhân v t khác
để nâng cao k năng tăng thêm trả ệm khi chơi game. Nhữi nghi ng game phng
thường là nhng game online.
Các nhà phát hành thư ững người chơi lạ ằng các đưa ra ng gn kết nh i vi nhau b
các event, ph ng ho c c a nhân v t trong game, nh ng ho ng t ần thưở ặc cơ chế p độ ạt độ
đội để tăng tương tác giũa các game thủ ỏng thườ . Các ta game ph ng có hiu ng và
đồ h a r p m c phát triất đẹ ắt để thu hút người chơi, thường đượ n trong th i gian dài
đượ c nhà phát hành h tr rt nhiu. Mt trong nh m cững nhược điể a game phng
chính th c m t c nh nh trong game khá dài, ời gian để người chơi đạt đượ ấp độ ất đị
ngoài ra nhà phát hành cũng hỗ người chơi thể dàng hơn trong quá tr np th đ d
trình tr i nghi ệm game, nhưng chính điều này đã dẫn đến các t a game mô ph ng tr thành
sân chơi cho nhữ ạnh được đầu công nghệng ông ln vi ngun tài chính vng m .
Mt vài t i tia game mô ph ng n ếng như: Võ Lâm Truyề ỳ, Đột Kích, Minecraft, …n K
4
Minecraft T a game mô ph ng nhi u qu c gia. ỏng được ưa chuộ
Hin nay, các t a game ph ỏng đình đám đã không còn giữa được “phong độ”
như trước, thay vào đó là những t a game m i v i m t s bi i nh ến đổ đang đang rất nhiu
game th ưa chuộng, nhng ta game này v n gi được tính ch t nh p vai cho ng ười chơi,
nhưng thay vì cần mt thời gian dài và đầu tư nhiều công s c, ti n b c thì nh ng game m i
ch cn tri qua mt th i gian nh nh rèn luyất đị n k năng, game ctrọng vào k năng
người chơi hơn thay vì sứ ững ưu điểm hơn c mng và nhng vt phm trong game, vi nh
các game ph c thi t kỏng trước đây như: tính t đội trong game cao, game đượ ế ế theo
nhng b nh nh và s k t thúc màn n m vản đồ ất đị ế ếu người chơi hoàn thành nhiệ . Mt vài
ta game ni bật như: Liên Minh Huyền Thoại, PUBG, …
Game offline
S bùng n c a các game offline v p và chân th n gây chú ý ới đồ hoạt đẹ ực đang dầ
trong làng game vi t, nh ng t i nghi m trên nh ựa game cho phép người chơi có thể tr ng
thiết b không k t n i m i nghi k t n ế ạng, tuy nhiên để tăng trả ệm, người chơi thể ế i
mng gi a nh tham gia ng nhau. M t s t a game ph bi ững máy tính để ến như:
Warcraft, L4D2, …
5
L4D2 T a game nh c nhi u s ập vai gây đượ chú ý.
Game Casual
Game casual là mt th c hoàn toàn v i game mô ph ng vì th loại game trái ngư i
gian chơi game rấ ắn và người chơi chỉ ời gian để chơi, phù hợt ng cn dành ít th p cho mi
đối tượng, game được t o ra v i m c ch để chơi cho vui, giúp người chơi thư giãn và thoải
mái. Các tựa game casual thưng xoay quanh v gi ải đố, s p x ếp hay logic, … với s lượng
các màn t qua hchơi nhất định. Khi vượ ết các màn game thì xem như game thủ đã chiến
thng.
Candy Crush Saga T ng m t th a game ni tiế i.
6
Vi mục địch là thư giãn nên các tựa game casual đang được chú ý và phát tri n r t nhanh.
Trước đây game thủ ựa game này “game mini”, thường đượ thường gi nhng t c các
website game h trên trình duy t, tuy nhiên v i s phát tri n nhanh chóng c a các thitr ết
b di động, các ta game casual ph biến đượ ụng di độc phát trin trên các ng d ng. Mt
s game khá ph n cho th biế loại này như: Candy Crush Saga, Mario, Temple Run, …
Game m i ạng xã hộ
Game mạng xã hội – một thể loại game mới nổi lên nhờ sự phát triển nhanh chóng
của các trang mạng hội lớn như Facebook. Một trong những đặc điểm nổi bật của các game
mạng xã hội này là thể liên kết rất nhiều người chơi ở nhiều khu vực khác nhau thông
qua tài khoản mạng xã hội cá nhân của họ. Vì không có rào cản về c khu vực địa khác
nhau, nên các tựa game mạng hội được rất nhiều người chơi, một tựa game thể lên
đến hàng chục triệu người chơi như: Happy Farm, FarmVille, Đảo Rồng, Do tính chất
mạng hội nên những game này thường được hỗ trợ trên các trình duyệt khi người
dùng đăng nhập vào tài khoản mạng hội, các nhà phát triển game cũng đang dần lấn
sang thị trường mobile do lượng người sử dụng điện thoại để chơi game thay cho PC ngày
càng tăng.
Các t ng xã h c hàng ch gi a game m ội đượ c triệu người chơi trên thế i.
Game th o ực tế – VR
Game th c t ế o là m t trong nh ng t a game m i là và có th phát tri n m nh trong
tương lai, nguyên nhân th ại game này chưa phát mạ ệt Nam chính là chi phí để lo nh Vi
s h u m t dàn thi t b ế “chất lượng” để chơi game là khá ln nên ch nh ững người có điều
kin tài chính m nh m i thích h p vi nh ng t phát tri ựa game này, thêm vào đó sự n
7
ca các game th c t ế chưa thậ ật để thu hút được lượt s ni b ng phát trilập trình viên n
cho th loi game này, d n ch ng c ẫn đế ất lượ ủa game cũng không được đánh giá cao.
Th i game d ki n s phát tri n m nh trong nh lo ế ững năm tới.
Game tương tác ảo – AR
Mt trong nh ng t ựa game tương tác o từng làm a gió Vit Nam Pokemon
Go, tuy hi n là m t trong nh ng t a gane n ti s lượng người chơi đã giảm nhưng đây vẫ
tương tác ảo đáng chú ý nhất. Các tựa game AR cho phép người dùng có th tương tác trực
tiếp v i nh ng nhân v t b ật “ảo” trong game thông qua các thiế di động, người chơi cần
phi v ng, di chuy i nghi u này th t s mận độ ển để tr ệm game, điề i l n c mang đế m
giác thú v cho nhi ều người chơi. Với hàng trăm triệu lượt t i v , Pokemon Go là m t trong
nhng t game m ra th trường game tương tác o Vit Nam, t a game này không ng ng
cp nht và ha s n nhi u trmang đế i nghi p d m h ẫn hơn và thu hút người chơi.
8
Game tương tác ả ộng đồo Pokemon GO tng gây st c ng game Vit.
1.2 Game engine và m t s ngôn ng l p trình game ph biến
1.2.1 Gi i thi u v Game engine
t ph n m c vi t k phát tri n game, hi n Đó là mộ ềm đượ ết để thiế ế ểu đơn giả
lo thi ph n m m trung gian k t n a nhi u ng d ng trong cùng h ế ối tương tác củ ng giúp
bn t ng, v t th , thi t l ng, ánh sáng, xây dạo ra các đối tượ ế ập môi trườ ựng các tương tác
mt cách d dàng và nhanh chóng hơn vì không cần viết các hàm cp thp.
Game
Engine
Ngôn ng
lập trình
Đó là các game
Môi
trường
Chi phí
Cocos2d-x
C++, Lua,
JavaScript
Dragon City, Castle Clash, Card
Puzzle.
Đa nền
tng
Min phí
Unity
C#, UnityScript,
JavaScript
The Fall, Satellite Reign, Fat City,
Thiên thn truy n, Pokemon Go
Đa nền
tng
Min phí
(Personal)
Unreal
Engine
C++, Python
Music Inside Stardrop, Snake pass,
Street Fighter
Đa nền
tng
Min phí (5% doanh
thu bán game)
Libgdx
Java
Spartania, Five Nights at Freddy's 3,
DragonutZ: Tiny Warrior
Đa nền
tng
Min phí
9
Các game Engine thông d ng
Ngoài các Game Engine, còn 1 l a ch làm ra game s d ng các ọn khác để
Game Builder. Trong Game Builder, ch c t s graphics, vi t m t vài dòng ần đưa vào mộ ế
lệnh đơn giản, thay đổ cài đặt, đưa thêm m ồi click “Build” thì trò i mt s t s hành vi r
chơi củ ạn đưa b c thc hin. Tuy Game Builders giúp bn tiết kim rt nhiu thi gian
nhưng bạn li không th làm ch hoàn toàn mi tình hung kết qu game ca bn
cũng sẽ ắt đầ Game Builder như: GameMaker, gp nhiu hn chế. Bn th b u vi 1 s
Stencyl, GameSalad, …
1.2.2 Các ngôn ng l p trình game ph n biế
Ngôn ngữ l p trình C
Đượ đầc phát trin t u th n nay ngôn ngập niên 1970, đế lp trình C vn ngôn
ng ph bi c dùng trong gi ng d y v l p trình y tính t ến, đư ại các Trường CĐ, ĐH.
Đây là một trong nh ng ngôn ng mà hầu như lập trình viên nào cũng biết. C là ngôn ng
rt logic, ch t ch và có th can thi p c p th ấp nên được ưa chuộng rng rãi, nhất là để viết
các ph n m m h ng, các ng d ng nhúng bên c nh các ph n m ng d ng thông th m
thường. Trong lĩnh vự được dùng để ững game đơn gic lp trình game, C có th viết nh n
10
nTerris, caro, cờ vua, mìn, đua xe… cả ạp nhưng sẽ nhng game phc t cn rt
nhiu thi gian và nhân s .
Ngôn ng l i m i b u l p trình d dàng n p ập trình C giúp cho ngư ắt đầ ắm đượcduy lậ
trình v i các khái ni m l n, h , toán t , c u khi n, c ập trình đơn giản như biế ng ấu trúc điề u
trúc l p, hàm, tham s ố… Sau khi đã nắm v ng l p trình trên ngôn ng C, b n hoàn toàn có
th h c ti p, nâng cao sang các ngôn ng l ng (C++, C#, Objective- ế ập trình hướng đối tượ
C, Java, Python, …) mộ ng hơn.t cách d
M c xây d ng trên ngôn ng C++ t s game đượ
Counter Strike một tựa game bắn súng đã quá quen thuộc với mọi người
Counter - Strike
Doom III Engine
King Quest
Starcraft
World of Warcraft
Warcraft III
Football Pro
Master of Orion III
Maplestory
11
Invictus
Ngôn ngữ l p trình C++
Khác bi t chính gi a C và C++ là C++ là m t ngôn ng l ng. ập trình hướng đối tượ
Nếu l p trình C, b n s phân tích v ấn đề, gii quy t và lế ập trình theo tư duy tuần t v i các
hàm thì l ng b n s phân tích, gi i quy t l p trình theo ập trình hướng đối tượ ế duy
hướng đối ợng. Trong đó, bạ nhìn i toán ới góc nhìn đối tượn s ng cn phi hp,
tương tác với nhau để thc hi n m t nhi m v nào đó. Mỗi đối tượng thuộc tính, phương
thc, s ki ng v c t i, s vi c, s ện riêng tương ới “đối tượngtrong thự ế như: con ngườ
vt, khái ni c làm quen v i các khái niệm, …. Bạn cũng sẽ đượ ệm như đóng gói, đa hình,
kế thừa, overload, delegate, …mà cần có thi gian mi có th hiu ng dng thành
tho. Tuy l n, nh t khi b n m i bập trình hướng đối tượng không đơn giả ắt đầu nhưng
khi đã nắ năng mở ẫn hộm vng thì kh rng, tùy biến cùng hp d i vic làm
dành cho nh ng l p trình viên C++ gi i luôn r ất “hot”.
Ngoài ra, v i kh năng cho phép bạn làm ch hoàn toàn tài nguyên máy tính, t ốc độ
hi ng d ng l p trình trên C++ tệu năng ca ốt hơn các ngôn ngữ khác. Do đó, C++
thường chn s d phát triụng để ển các game “bom tấn” trong Unreal Game Engine. Ngoài
ra, ngôn ng l l p trình trong các game engine Cocos2d-x ập trình C++ cũng được dùng để
khá ph bi n hi n nay. ế
Ngôn ngữ l p trình C#
C# là ngôn ng l c phát tri n b ập trình hướng đối tượng đư ởi Microsoft. C# khi đi
kèm v i Framework.NET cho phép b n t o ng d ng Windows v i WinForm, WPF, t o
website bng WebForm, MVC.NET và t ng d ng trên Windows Phone. Ngoài o ụng di độ
ra, C# còn được s d ng trong l t ập trình Xamarin để o ng d n tụng đa nề ng.
Chn l p trình C#, b n s t v khác do Microsoft không đỡ “vấ ả” hơn các ngôn ngữ
ngng nâng c p, c i ti n s n ph m Visual Studio .NET ngôn ng C# v ế i nhi u h tr,
tin ích trong quá trình xây d ng ng d ng.
Trong l p trình game, C# là ngôn ng c h chính trong game engine Unity nên n đượ tr ếu
mun tr thành chuyên viên l p trình game trên Unity, b n nên trang b cho mình ki n th ế c
vng ch l p trình C#. c v
Ngôn ngữ l p trình Java
12
Java là ngôn ng l ập trình hướng đối tượng nhưng khác với C++ nh kh năng "viết
code m n, th c thi kh m vi ng Java có th y trên t l ắp nơi". Chương trình phần m ết b ch
mi n n t xây d ng ảng khác nhau như Linux, Mac OS, Windows, ... Java được dùng để
các ph n m m desktop, ph n m u khi n, ng d ng web, c n t ềm điề ổng thông tin điệ
đặc bit, Java là ngôn ng chính để phát trin các ng dụng di động và game trên Android.
Java m t trong nh ng ngôn ng l p trình ph bi n nh t trên th i t i Vi t Nam. ế ế gi
Các d án Java luôn chi trong các doanh nghi p CNTT l n v i nhu c u tuy ếm đa số n
dng Java luôn m c cao. b n bi t không, nhi u nhà phát tri n ph n m ế ềm đã bắt
đầ u và gn bó su i mình vốt đờ i ngôn ng lp trình Java.
Một số game được xây dựng trên Java:
Tom Clancy’s Politika
Runescape
Powder Game
Star Wars Galaxies
Roboforge
Ngôn ngữ l p trình Python
Python đượ ững năm 1980 ngôn ngữc to ra vào cui nh lp trình ngun
m miễn phí. Python đưc xem mt ngôn ng kch b t ngôn ng ản, nhưng cũng m
dynamic, h tr hướng đối tượng, th t c và có phong cách l p trình ch ức năng như những
13
ngôn ng khác. B i tính m m d o, Python là m t trong nh ng ngôn ng l p trình b c cao
đượ c s d ng rng rãi nht ngày nay.
Python không i ngôn ng t c thi nhanh, hi u suph ốc độ th ất cao như C, C++ nhưng
Python là ngôn ng d h c - d làm và có th l p trình trong nhi ều lĩnh vực: ng d ng web,
x lý d liu, ti n ích desktop, game, ...
khá t i v i nh i m i bPython cũng được đánh giá ngôn ngữ ốt đố ững ngườ ắt đầu
hc l c l c s dập trình. Trong lĩnh vự ập trình game, Python ngày càng đượ ng rng rãi vi
các thư việ như Pygame và Pyglet. Ngoài ra, Python còn là ngôn ngn h tr h tr trong
Unreal Game Engine để phát tri ển các game “bom tấn”.
Ngôn ngữ l p trình Javascript
Dù yêu hay ghét nó thì Javascript v n là m t ngôn ng ph bi l p trình game. ến để
Nó ho ng t i HTML và CSS và là m t ngôn ng l p trình phù h phát ạt độ ốt hơn so vớ ợp để
trin game online.
Javascript có th được s d ng trên c front-end và back-end c a trang web. Nó có
mt cộng đồng h tr n l h u mtrc tuyế ớn cũng như sở t s lượng ln các framework h
tr.
Javascript đã đưc chng minh mt ngôn ng cc k linh hot vi s tr giúp ca
các thư viện để có th chy trên iOS, Android, các ng dng PC và trên phn cng.
14
Vi r t nhi ng d n tr c tuy n mi n phí và có c m ều hướ ế ột đồng như GitHub h tr,
Javascript là mt trong nh ng ngôn ng d h p c l p trình game. c, d tiế ận để
Mt s c xây d ng b ng Javascript: game đượ
HexGl
Sketch Out
CrossCode
Bejeweled
Swoop
Polycraft
Angrybirds
The Wizard
Little Alchemy
New Super Resident Raver
Ngôn ngữ HTML5
15
Ngôn ng HTML đã đi mộ ặng đưt ch ng dài k t ngày đầu tiên được phát trin
HTML5 đang phiên bản ph biến nht. kết hp vi Javascript (cùng vi các ngôn
ng xây d ng m t các game online khkhác) để t lo ng l.
HTML5 là m t ngôn ng tương đi d học, tuy nhiên cũng có phần hơi đơn giản
mt s điểm h n ch n l ế, nhưng phầ n các game online ch y trên HTML5. cùng v i
Javascript để t o ra các giao di ện trình phát và đồ họa trên thư viện WebGL. HTML5 là mt
la chn h p d n cho các nhà phát tri n nghi ệp dư và có phạm v n r ng rãi. trc tuyế
Mt s c xây d ng trên HTML5: game đượ
Kingdom of Loathing
Nothing to Hide
Gods will be watching
16
Roll It
Cookie Clicker.
1.3 Các n n t ng phát tri ng d ng trên thi t b ển ứ ế di động
Bt c khi nào công ty quy nh t o ra m ng d ng mobile, thì ph i m t v ết đị t ải đố i
s l a ch n c a Native app ( ng d ng gc) Hybrid app ( ng d u quan ụng lai) điề
trng nh t là tìm ki m nh ng cách hi u qu ế để thc hiện ý ng. Trong bài vi t này, chúng ế
ta s t gi tìm hi u s khác bi a Native app và Hybrid app, tìm hi m cểu ưu và nhược đi a
chúng cách chúng n quá trình phát tri n chung performance c ng ảnh hưởng đế a
dng. Chúng ta s xem xét các ng ngh được s d ng cho n n t ng iOS và Android trong
bi c nh phát tri b n th ển Native app Hybrid app đ chn mt công ngh phù h p
nht cho d c a mình. án
ng dụng mobile được xem là m t trong nh ng công c kinh doanh năng động nh t.
Chúng đã trở thành tiêu chun m i để xây dng kết ni v i khách hàng. Không ch v các
sn ph m ph n m m, mà b t k d ch v nào khác như ngân hàng, chia sẻ xe ho c giao hàng
đề u b ràng bu c phi ng dng mobile cho c Android iOS. Chúng cho phép các
công ty cung c i dùng c a h i nghi m thu n ti n và nhanh chóng h p th i. ấp cho ngườ tr
Kinh doanh được thúc đẩ ững đổy bi nh i mi liên t t nhi u ngành công nghi p ục, do đó, rấ
đã sử d ng các ng dng mobile ít nh t 6- t tuy t khi các công ty có s l a ch 7 năm. Thậ n
phát tri n Native app và Hybrid app vì c u tr thành m t gi i pháp h p lý cho nhi u hai đề
công ty. Hi n t i, m t s doanh nghi p d ch v t trong nh ng ví d ụ, như Uber, m Hybrid
app thành công, thích ng v i các ng d ụng di động hơn các trang web. Chúng giúp cải
thin kh ng cách kh c ti p v i khách hàng. Khách năng duy trì bằ năng ơng tác trự ế
hàng nh c mận đượ ức độ ận tăng lên như thông báo push, tù tiếp c y chn thanh toán mi, ...
Đây là một cơ chế ện đại, tuy nhiên chúng cũng đòi quan trng cho doanh nghip hi
hỏi đầu vào phát triển bo trì ng dng mobile. cui cùng, mi công ty s phi
đố i mt v i câu hi Native app hay Hybrid app t ta sốt hơn? Chúng tìm câu tr l i trong
bài vi i câu h i cho nh ng gì phù h i nhu ết này. Tuy nhiên, chúng ta nên thay đổ ợp hơn vớ
cầu điề ạn hơn, cũng như các công ty khác nhau các mu kin ca công ty b c tiêu
khác nhau, h n ch ngân sách th i gian, chi p th ế ến c tiế các giai đoạn vòng đời
17
kinh doanh. S không có câu tr l t c m ng h phát tri ời đúng cho t ọi trư ợp. Do đó, cả n
Native app và Hybrid app có th tr thành phương pháp tốt nh t cho các công ty khác nhau.
1.3.1 Web Application (Web App)
Web app là m t lo ại chương trình có khả năng làm máy tính thực hi n tr c ti p công ế
việc nào đó ngườ tương tác, cho phép i dùng mong mun. Các trang web này s
người dùng nhn, nhp, thao tác d liu. V ng sới các chương trình này, chúng thườ
kết ni ch i tt ch , có l nh g i máy ch m t cách liên t c v i s lượng nhi u.
Hình 1: T ng quan v web application
Điển hình cho các lo i web application b n th đã biết như các phần m m,
website chnh s a tr ng xã h c tuyến như canva, các trang mạ ội, các trang thương mại điện
t, website bán hàng, website qu n lý siêu th , ph n m m qu n lý nhà tr Mona House (v i
c b n tho n có thản web app và app đi ại)… Tại đó, bạ tìm ki thông ếm tương tác, chia s
tin, đăng tin, thự c hiện các thao tác đc thù mà t ng web app cung cp.
Phân biệt website và web app
Thc t thì ranh gi i phân chia nh n bi t gi a web app website khá mong ế ế
manh. Do đó, nhiều người nh ng gi a 2 khái ni m này không ph i ít. Tuy nhiên, b n ầm tưở
vn có th phân bi t 2 khái ni m này m i d ột cách tương đố ựa vào các so sánh dưới đây mà
18
c th hơn thì bạn th tham kho gia dch v thiết k a công ty DZR Web ế website c
và l p trình ng d ng c n v 2 d này. ủa chúng tôi, so sánh đ đưa ra kết lu ch v
Khả năng tương tác
Điể m khác bi t đầ u tiên và d nhìn thy nht website và web app đó là khả năng
tương tác. Mộ ữu ích, người đọt website cung cp nhng thông tin h c ch có th xem, nhìn
nghe ch không th ng hay t o nên s ng c tác độ ảnh hưở ủa trang, đó website.
Nhưng nếu web app, bn có th đọc, nghe, thao tác d liu trên trang bng cách nhp nút,
gi biu m u, nh n ph n h i t trang, nh n tin tr n, thanh toán. c tuyế
Mt s ví d c : th
+ M ng xã h ội Facebook, Viber, Youtube, … cho phép chúng ta có thể s d ng, k ết
nối người v i thông qua các n n t ng blog, các cuới ngườ c trò chuy n. Web app cho phép
người dùng chia s thông tin b i khác, giản thân, thông tin ngườ i trí và rt nhiu mục đích
khác.
+ Các c c tuy n cho phép b n vào c p nh m thông tin m t hàng a hàng tr ế t, tìm kiế
cn thi t mua, thanh toán. ết và đặ
+ Các ng d ng ngân hàng tr c tuy n cho phép b n chuy n, thanh toán, th c hi ế n
nhng giao dch d a trên d u vào c a m liệu đầ i khách hàng.
Khả p năng tích hợ
C thiết kế website và thiết k ph n m u có khế ềm đề năng tích hợp các phn mm
như kế toán, quản lý,… Tuy nhiên, nếu để ý b n s thy, web app có kh năng tích hợp cao
hơn bở c năng phứ ạp, thư ầu tương tác với nhng ch c t ng yêu c i các h thng b
sung.
c bit h thng qun lý quan h khách hàng CRM m t phn m m qu ng ản lý thườ
được tích hp trong web app, giúp vi c qu n lý bán hàng tr nên d dàng và hi u qu n.
Vic tích h p ph n m m CRM cho phép b n thu th p d i dùng t ng, liệu ngườ độ
lưu trữ ống CRM. Thông qua đó, bạ trong h th n th d dàng truy cp, kim tra b d
liệu khách hàng, phân tích hành vi thói quen khách hàng, cũng như giải quyết các khiếu
ni ca khách hàng mt cách tt nht.
Khác v ng t p trung vào vi c cung c i dùng ới web app, các website thườ ấp cho ngườ
nhng ch p. c năng cốt lõi hơn là các chức năng tích hợ
19
Khả c thông tin năng xác thự
Xác th c m t y u t c n thi t c p. tác d ng ế ế ủa các web app khi đăng nhậ
giúp b o m t tài kho n, tránh truy c p trái phép r ng d a các nh liệu riêng củ
người dùng.
M t s web app, khi b n t kh ng báo cho b n g i ý m đăng mậ ẩu, chúng thườ t
khu có tính b o m u, b n nên thay b ng m b o m t yế t khẩu khác để tăng độ t.
Nhưng đố ầu như không bắ ộc. Người vi website, vic xác thc thông tin h t bu i
dùng có th ngh có quy n truy c p vào các tùy ch n không có được đề đăng ký từ web để
sẵn. Nhưng nế ạn không đăng ký, bạu b n chth xem nhng thông tin công khai có sn
mà thôi.
Bên c nh nh ng thông tin v web app bên trên, khi dùng b ạn cũng cần lưu ý một s
điều sau đây:
Bảo v thông tin khách hàng
Web app c c thông tin khách hàng. B i l i dùng n b o v đư , bt c khi nào ngườ
nhp thông tin nhân ho c thanh toán, b u s nh c thông tin t khách hàng. ạn đề ận đượ
Nhng d ng c i dùng cu t thông tin khách liệu đầu vào thườ ủa ngư ối. Do đó, việc bo m
hàng là điề ần lưu tâm.u mà bt c công ty viết web app nào cũng c
Trách nhi m pháp lý
Luật pháp cũng quy định v vic bo mt thông tin khách hàng. Trong mi tình
hung, b n v s ới tư cách chủ h u web app c n trách nhi m b o v thông tin nhân
ca h.
1.3.2 Hybird application
ng d ng mobile m c cột bướ ếi ti n quan trng cho doanh nghip c a bn. Khi
bạn đưa ra quyết định to Hybrid app, bn nên tìm hiu quy trình phát trin ca nó, kim
tra t t c m y m mcác tính năng và tìm ra điể ạnh và điể ếu. ng d ng c coi này ban đầu đư
là một trang web được đưa vào các container. Do đó, mỗi page ph i s d ụng các API được
thiết k c bi n cế đặ ệt để đạt được các tính năng bản cũng như thu hút các phương ti a
bên th ba cho nó. Các ng d ng này v n nh ki m soát ch nh n t p ế độ web view để
HTML và JavaScript toàn màn hình t n d ng công c k t xu t c a các trình duy t trong h ế
điề u hành tích h p.
20
Công ngh d phát tri n Hybrid app được s ụng để
Như đã đề ển mobile đang làm việ cp, các công ty phát tri c vi s kết hp ca các
công ngh. Có ba khung ph bi n nh phát tri n ng d ng lai: ế t đ
Hình 2: Hybrid application
+ React Native: Facebook đã t sourced này để tương thích đa o ra công ngh open-
nn tảng. Các UI được đơn giả ất tăng đáng kển hóa có hiu su khi reloading. React Native
được ưu chuộ sư phầng s dng vì thi gian phát trin ngn. Các k n mm có quyn truy
cập vào các đơn vị ẵn để s áp dng, tuy nhiên, framework th thiếu các thành phn
nhất định. C Facebook và c ng xuyên cung c p thông tin c p nh ộng đồng thườ t.
c Microsoft h và duy trì nâng c p m nh m . + Xamarin: Open framework đư tr
Gần đây, họ đã đưa ra cách tiếp c n phát tri n Hybrid mobile app m i cho phép code across
platform. Nó đã giúp cả ốc độ đơn giải thin t phát trin và n hóa bo trì. Các nhà phát trin
có th s d ụng logic chung, tuy nhiên, các quy định UI s duy trì c cho t ng n n t ng. th
Xamarin s không x h a ph c t lý đồ ạp nhưng phù hợ ụng đơn giảp vi các ng d n. Công
ngh c ch n cho các d á ng kinh doanh. này thường đượ n định hướ
+ Ionic: Framework này t o ra các ng d ng mobile v i các công ngh web tiêu
chuẩn như JavaScript, CSS, HTML, Angular,... Các nhà phát triển cũng rất nhiu UI
component có th truy c x lý. Th i gian phát tri n là tuy t v i tập đơn giản để ời như vớ t
c các khung khác cho các ví d Hybrid app. M c có t t c các l i ích, vi c bo trì có
| 1/186

Preview text:

MỤC C L ỤC ỤC Ụ
Chương 1: Giới thiệu về lập trình game và các nền tảng lập trình trên thiết bị di động ..... 3
1.1 Giới thiệu về Game và các thể loại game phổ biến hiện nay .................................... 3
1.2 Game engine và một số ngôn ngữ lập trình game phổ biến ...................................... 8
1.2.1 Giới thiệu về Game engine ........................................................................... 8
1.2.2 Các ngôn ngữ lập trình game phổ biến ............................................................... 9
1.3 Các nền tảng phát triển ứng dụng trên thiết bị di động ........................................... 16
1.3.1 Web Application (Web App) ............................................................................ 17
1.3.2 Hybird application ............................................................................................ 19
1.3.3 Native APP ....................................................................................................... 22
Chương 2: Giới thiệu về ngôn ngữ lập trình python và một số thư viện Game ................ 26
2.1 Ngôn ngữ lập trình python....................................................................................... 26
2.1.1 Khai báo biến trong python .............................................................................. 26
2.1.2 Hàm Print trong python .................................................................................... 29
2.1.3 Kiểu dữ liệu trong python ................................................................................. 30
2.1.4 Toán tử trong python ........................................................................................ 44
2.1.5 Câu lệnh rẽ nhánh ............................................................................................. 48
2.1.6 Vòng lặp ........................................................................................................... 51
2.1.7 Hàm trong python ............................................................................................. 55
2.1.8 Input và đọc ghi file .......................................................................................... 60
2.1.9 Module trong python ........................................................................................ 64
2.1.10 Package trong python ..................................................................................... 68
2.1.11 Map, filter trong python ................................................................................. 72
2.1.12 Class trong python .......................................................................................... 73 1
2.2 Các thư viện lập trình Pygame và Pyglet trong python ........................................... 76
Chương 3: Thiết kế giao diện với Tkinter trong python ................................................... 79
Chương 4: Lập trình game cơ bản với python ................................................................. 106
4.1 Yêu cầu về cài đặt và cấu hình .............................................................................. 106
4.2 Tổng quan yêu cầu trò chơi ................................................................................... 106
4.3 Các bước tạo game ................................................................................................ 107
4.3.1 Cơ bản về layout ............................................................................................. 107
4.3.2 Giới thiệu về Canvas ...................................................................................... 110
4.3.3 Cơ bản về các đối tượng trong game .............................................................. 112
4.3.4 Thêm Breakout items ..................................................................................... 116
4.3.5 Di chuyển và xử lý va chạm ........................................................................... 118
4.3.6 Starting Game ................................................................................................. 122
4.3.8 Chơi game ....................................................................................................... 124
Chương 5: Tạo game bằng thư viện Pygame .................................................................. 126
5.1 Hướng dẫn tạo game Space Invader ...................................................................... 126
5.2 Đóng gói game ....................................................................................................... 134
Chương 6: Giới thiệu các Engine tạo game ..................................................................... 137
6.1 Giới thiệu các khái niệm khởi đầu khi làm game .................................................. 137
6.2 Giới thiệu game engine đa nền tảng Cocos ........................................................... 139
6.3 Cài đặt và tạo game đơn giản trong Cocos creator ................................................ 144
6.4 Tổng quan về unity game engine ........................................................................... 179
6.4.1 Tổng quan về unity game engine.................................................................... 179
6.4.2 TM HIU V UNITY ENGINE................................................................... 182
6.4.3 Các khái niệm cơ bản trong unity ................................................................... 184 2
Chương 1: Giới thiệu về lập trình game và các nền tảng lập trình trên thiết bị di động
1.1 Giới thiệu về Game và các thể loại game phổ biến hiện nay
Để phân loại những loại game khác nhau, chúng thường được dựa trên những đặc
điểm, các xây dựng các nhân vật cũng như các tương tác trong game giữa các nhân vật để
xác định thể loại, một số thể loại game đang phổ biến hiện nay. Game mô phỏn g
Game mô phỏng vốn là một trong những thể loại game xuất hiện sớm nhất trên thị
trường, được nhiều người hưởng ứng do những trải nghiệm mới lạ của game, các tựa game
mô phỏng thường là game nhập vai, chiến thuật,… người chơi cần phải thực hiện nhiều
nhiệm vụ khác nhau trong game, xử lý các tình huống và tương tác với với nhân vật khác
để nâng cao kỹ năng và tăng thêm trải nghiệm khi chơi game. Những game mô phỏng
thường là những game online.
Các nhà phát hành thường gắn kết những người chơi lại với nhau bằng các đưa ra
các event, phần thưởng hoặc cơ chế cấp độ của nhân vật trong game, những hoạt động tổ
đội để tăng tương tác giũa các game thủ. Các tựa game mô phỏng thường có hiệu ứng và
đồ họa rất đẹp mắt để thu hút người chơi, thường được phát triển trong thời gian dài và
được nhà phát hành hỗ trợ rất nhiều. Một trong những nhược điểm của game mô phỏng
chính là thời gian để người chơi đạt được một cấp độ nhất định trong game là khá dài,
ngoài ra nhà phát hành cũng hỗ trợ nạp thẻ để người chơi có thể dễ dàng hơn trong quá
trình trải nghiệm game, nhưng chính điều này đã dẫn đến các tựa game mô phỏng trở thành
sân chơi cho những ông lớn với nguồn tài chính vững mạnh và được đầu tư công nghệ.
Một vài tựa game mô phỏng nổi tiếng như: Võ Lâm Truyền Kỳ, Đột Kích, Minecraft, … 3
Minecraft – Tựa game mô phỏng được ưa chuộng ở nhiều quốc gia.
Hiện nay, các tựa game mô phỏng đình đám đã không còn giữa được “phong độ”
như trước, thay vào đó là những tựa game mới với một số biến đổi nhỏ đang đang rất nhiều
game thủ ưa chuộng, những tựa game này vẫn giữ được tính chất nhập vai cho người chơi,
nhưng thay vì cần một thời gian dài và đầu tư nhiều công sức, tiền bạc thì những game mới
chỉ cần trải qua một thời gian nhất định rèn luyện kỹ năng, game chú trọng vào kỹ năng
người chơi hơn thay vì sức mạng và những vật phẩm trong game, với những ưu điểm hơn
các game mô phỏng trước đây như: tính tổ đội trong game cao, game được thiết kế theo
những bản đồ nhất định và sẽ kết thúc màn nếu người chơi hoàn thành nhiệm vụ. Một vài
tựa game nổi bật như: Liên Minh Huyền Thoại, PUBG, … Game offline
Sự bùng nổ của các game offline với đồ hoạt đẹp và chân thực đang dần gây chú ý
trong làng game việt, những tựa game cho phép người chơi có thể trải nghiệm trên những
thiết bị không có kết nối mạng, tuy nhiên để tăng trải nghiệm, người chơi có thể kết nối
mạng giữa những máy tính để tham gia cùng nhau. Một số tựa game phổ biến như: Warcraft, L4D2, … 4
L4D2 – Tựa game nhập vai gây được nhiều sự chú ý. Game Casual
Game casual là một thể loại game trái ngược hoàn toàn với game mô phỏng vì thời
gian chơi game rất ngắn và người chơi chỉ cần dành ít thời gian để chơi, phù hợp cho mọi
đối tượng, game được tạo ra với mục chỉ để chơi cho vui, giúp người chơi thư giãn và thoải
mái. Các tựa game casual thường xoay quanh về giải đố, sấp xếp hay logic, … với số lượng
các màn chơi nhất định. Khi vượt qua hết các màn game thì xem như game thủ đã chiến thắng.
Candy Crush Saga – Tựa game nổi tiếng một thời. 5
Với mục địch là thư giãn nên các tựa game casual đang được chú ý và phát triển rất nhanh.
Trước đây game thủ thường gọi những tựa game này là “game mini”, thường được các
website game hỗ trợ trên trình duyệt, tuy nhiên với sự phát triển nhanh chóng của các thiết
bị di động, các tựa game casual phổ biến được phát triển trên các ứng dụng di động. Một
số game khá phổ biến cho thể loại này như: Candy Crush Saga, Mario, Temple Run, … Game mạng xã hội
Game mạng xã hội – một thể loại game mới nổi lên nhờ sự phát triển nhanh chóng
của các trang mạng hội lớn như Facebook. Một trong những đặc điểm nổi bật của các game
mạng xã hội này là có thể liên kết rất nhiều người chơi ở nhiều khu vực khác nhau thông
qua tài khoản mạng xã hội cá nhân của họ. Vì không có rào cản về các khu vực địa lý khác
nhau, nên các tựa game mạng xã hội được rất nhiều người chơi, một tựa game có thể lên
đến hàng chục triệu người chơi như: Happy Farm, FarmVille, Đảo Rồng, … Do tính chất
là mạng xã hội nên những game này thường được hỗ trợ trên các trình duyệt khi người
dùng đăng nhập vào tài khoản mạng xã hội, các nhà phát triển game cũng đang dần lấn
sang thị trường mobile do lượng người sử dụng điện thoại để chơi game thay cho PC ngày càng tăng.
Các tựa game mạng xã hội được hàng chục triệu người chơi trên thế giới. Game thực tế ảo – VR
Game thực tế ảo là một trong những tựa game mới là và có thể phát triển mạnh trong
tương lai, nguyên nhân thể loại game này chưa phát mạnh ở Việt Nam chính là chi phí để
sở hữu một dàn thiết bị “chất lượng” để chơi game là khá lớn nên chỉ những người có điều
kiện tài chính mạnh mới thích hợp với những tựa game này, thêm vào đó là sự phát triển 6
của các game thực tế chưa thật sự nổi ậ
b t để thu hút được lượng lập trình viên phát triển
cho thể loại game này, dẫn đến chất lượng của game cũng không được đánh giá cao.
Thể loại game dự kiến sẽ phát triển mạnh trong những năm tới . Game tương tác ảo – AR
Một trong những tựa game tương tác ảo từng làm mưa là gió ở Việt Nam là Pokemon
Go, tuy hiện tại số lượng người chơi đã giảm nhưng đây vẫn là một trong những tựa gane
tương tác ảo đáng chú ý nhất. Các tựa game AR cho phép người dùng có thể tương tác trực
tiếp với những nhân vật “ảo” trong game thông qua các thiết bị di động, người chơi cần
phải vận động, di chuyển để trải nghiệm game, điều này thật sự mới lạ và mang đến cảm
giác thú vị cho nhiều người chơi. Với hàng trăm triệu lượt tải về, Pokemon Go là một trong
những tự game mở ra thị trường game tương tác ảo ở Việt Nam, tựa game này không ngừng
cập nhật và hứa sẽ mang đến nhiều trải nghiệm hấp dẫn hơn và thu hút người chơi. 7
Game tương tác ảo Pokemon GO từng gây sốt cộng đồng game Việt.
1.2 Game engine và một số ngôn ngữ lập trình game phổ biến
1.2.1 Giới thiệu về Game engine
Đó là một phần mềm được viết để thiết kế và phát triển game, hiểu đơn giản nó là
loại phần mềm trung gian kết nối tương tác của nhiều ứng dụng trong cùng hệ thống giúp
bạn tạo ra các đối tượng, vật thể, thiết lập môi trường, ánh sáng, xây dựng các tương tác
một cách dễ dàng và nhanh chóng hơn vì không cần viết các hàm cấp thấp. Game Ngôn ngữ Môi Đó là các game Chi phí Engine lập trình trường C++,
Lua, Dragon City, Castle Clash, Card Đa nền Cocos2d-x Miễn phí JavaScript Puzzle. tảng
C#, UnityScript, The Fall, Satellite Reign, Fat City, Đa nền Miễn phí Unity JavaScript
Thiên thần truyện, Pokemon Go tảng (Personal) Unreal
Music Inside Stardrop, Snake pass, Đa nền Miễn phí (5% doanh C++, Python Engine Street Fighter tảng thu bán game)
Spartania, Five Nights at Freddy's 3, Đa nền Libgdx Java Miễn phí DragonutZ: Tiny Warrior tảng 8
Các game Engine thông dụng
Ngoài các Game Engine, còn có 1 lựa chọn khác để làm ra game là sử dụng các
Game Builder. Trong Game Builder, chỉ cần đưa vào một số graphics, viết một vài dòng
lệnh đơn giản, thay đổi một số cài đặt, đưa thêm một số hành vi rồi click “Build” thì trò
chơi của bạn được thực hiện. Tuy Game Builders giúp bạn tiết kiệm rất nhiều thời gian
nhưng bạn lại không thể làm chủ hoàn toàn mọi tình huống và kết quả là game của bạn
cũng sẽ gặp nhiều hạn chế. Bạn có thể bắt đầu với 1 số Game Builder như: GameMaker, Stencyl, GameSalad, …
1.2.2 Các ngôn ngữ lập trình game phổ biến Ngôn ngữ lập trình C
Được phát triển từ đầu thập niên 1970, đến nay ngôn ngữ lập trình C vẫn là ngôn
ngữ phổ biến, được dùng trong giảng dạy về lập trình máy tính tại các Trường CĐ, ĐH.
Đây là một trong những ngôn ngữ mà hầu như lập trình viên nào cũng biết. C là ngôn ngữ
rất logic, chặt chẽ và có thể can thiệp cấp thấp nên được ưa chuộng rộng rãi, nhất là để viết
các phần mềm hệ thống, các ứng dụng nhúng bên cạnh các phần mềm ứng dụng thông
thường. Trong lĩnh vực lập trình game, C có thể được dùng để viết những game đơn giản 9
như Terris, caro, cờ vua, dò mìn, đua xe… và cả những game phức tạp nhưng sẽ cần rất
nhiều thời gian và nhân sự.
Ngôn ngữ lập trình C giúp cho người mới bắt đầu lập trình dễ dàng nắm được tư duy lập
trình với các khái niệm lập trình đơn giản như biến, hằng, toán tử, cấu trúc điều khiển, cấu
trúc lặp, hàm, tham số… Sau khi đã nắm vững lập trình trên ngôn ngữ C, bạn hoàn toàn có
thể học tiếp, nâng cao sang các ngôn ngữ lập trình hướng đối tượng (C++, C#, Objective-
C, Java, Python, …) một cách dễ dàng hơn.
Một số game được xây dựng trên ngôn ngữ C++
Counter Strike – một tựa game bắn súng đã quá quen thuộc với mọi người Counter - Strike Doom III Engine King Quest Starcraft World of Warcraft Warcraft III Football Pro Master of Orion III Maplestory 10 Invictus Ngôn ngữ lập trình C++
Khác biệt chính giữa C và C++ là C++ là một ngôn ngữ lập trình hướng đối tượng.
Nếu lập trình C, bạn sẽ phân tích vấn đề, giải quyết và lập trình theo tư duy tuần tự với các
hàm thì ở lập trình hướng đối tượng bạn sẽ phân tích, giải quyết và lập trình theo tư duy
hướng đối tượng. Trong đó, bạn sẽ nhìn bài toán dưới góc nhìn đối tượng cần phối hợp,
tương tác với nhau để thực hiện một nhiệm vụ nào đó. Mỗi đối tượng có thuộc tính, phương
thức, sự kiện riêng tương ứng với “đối tượng” trong thực tế như: con người, sự việc, sự
vật, khái niệm, …. Bạn cũng sẽ được làm quen với các khái niệm như đóng gói, đa hình,
kế thừa, overload, delegate, …mà cần có thời gian mới có thể hiểu rõ và ứng dụng thành
thạo. Tuy lập trình hướng đối tượng không đơn giản, nhất là khi bạn mới bắt đầu nhưng
khi đã nắm vững thì khả năng mở rộng, tùy biến là vô cùng hấp dẫn và cơ hội việc làm
dành cho những lập trình viên C++ giỏi luôn rất “hot”.
Ngoài ra, với khả năng cho phép bạn làm chủ hoàn toàn tài nguyên máy tính, tốc độ
và hiệu năng của ứng dụng lập trình trên C++ tốt hơn các ngôn ngữ khác. Do đó, C++
thường chọn sử dụng để phát triển các game “bom tấn” trong Unreal Game Engine. Ngoài
ra, ngôn ngữ lập trình C++ cũng được dùng để lập trình trong các game engine Cocos2d-x khá phổ biến hiện nay. Ngôn ngữ lập trình C#
C# là ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft. C# khi đi
kèm với Framework.NET cho phép bạn tạo ứng dụng Windows với WinForm, WPF, tạo
website bằng WebForm, MVC.NET và tạo ứng dụng di động trên Windows Phone. Ngoài
ra, C# còn được sử dụng trong lập trình Xamarin để tạo ứng dụng đa nền tảng.
Chọn lập trình C#, bạn sẽ đỡ “vất vả” hơn các ngôn ngữ khác do Microsoft không
ngừng nâng cấp, cải tiến sản phẩm Visual Studio .NET và ngôn ngữ C# với nhiều hỗ trợ,
tiện ích trong quá trình xây dựng ứng dụng.
Trong lập trình game, C# là ngôn ngữ được hỗ trợ chính trong game engine Unity nên nếu
muốn trở thành chuyên viên lập trình game trên Unity, bạn nên trang bị cho mình kiến thức
vững chắc về lập trình C#. Ngôn ngữ lập trình Java 11
Java là ngôn ngữ lập trình hướng đối tượng nhưng khác với C++ nhờ khả năng "viết
code một lần, thực thi khắp nơi". Chương trình phần mềm viết bằng Java có thể chạy trên
mọi nền tảng khác nhau như Linux, Mac OS, Windows, ... Java được dùng để xây dựng
các phần mềm desktop, phần mềm điều khiển, ứng dụng web, cổng thông tin điện tử và
đặc biệt, Java là ngôn ngữ chính để phát triển các ứng dụng di động và game trên Android.
Java là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới và tại Việt Nam.
Các dự án Java luôn chiếm đa số trong các doanh nghiệp CNTT lớn với nhu cầu tuyển
dụng Java luôn ở mức cao. Và bạn biết không, có nhiều nhà phát triển phần mềm đã bắt
đầu và gắn bó suốt đời mình với ngôn ngữ lập trình Java.
Một số game được xây dựng trên Java: Tom Clancy’s Politika Runescape Powder Game Star Wars Galaxies Roboforge
Ngôn ngữ lập trình Python
Python được tạo ra vào cuối những năm 1980 và là ngôn ngữ lập trình mã nguồn
mở miễn phí. Python được xem là một ngôn ngữ kịch bản, nhưng cũng là một ngôn ngữ
dynamic, hỗ trợ hướng đối tượng, thủ tục và có phong cách lập trình chức năng như những 12
ngôn ngữ khác. Bởi tính mềm dẻo, Python là một trong những ngôn ngữ lập trình bậc cao
được sử dụng rộng rãi nhất ngày nay.
Python không phải ngôn ngữ có tốc độ thực thi nhanh, hiệu suất cao như C, C++ nhưng
Python là ngôn ngữ dễ học - dễ làm và có thể lập trình trong nhiều lĩnh vực: ứng dụng web,
xử lý dữ liệu, tiện ích desktop, game, ...
Python cũng được đánh giá là ngôn ngữ khá tốt đối với những người mới bắt đầu
học lập trình. Trong lĩnh vực lập trình game, Python ngày càng được sử dụng rộng rãi với
các thư viện hỗ trợ như Pygame và Pyglet. Ngoài ra, Python còn là ngôn ngữ hỗ trợ trong
Unreal Game Engine để phát triển các game “bom tấn”.
Ngôn ngữ lập trình Javascript
Dù yêu hay ghét nó thì Javascript vẫn là một ngôn ngữ phổ biến để lập trình game.
Nó hoạt động tốt hơn so với HTML và CSS và là một ngôn ngữ lập trình phù hợp để phát triển game online.
Javascript có thể được sử dụng trên cả front-end và back-end của trang web. Nó có
một cộng đồng hỗ trợ trực tuyến lớn cũng như sở hữu một số lượng lớn các framework hỗ trợ.
Javascript đã được chứng minh là một ngôn ngữ cực kỳ linh hoạt và với sự trợ giúp của
các thư viện để có thể chạy trên iOS, Android, các ứng dụng PC và trên phần cứng. 13
Với rất nhiều hướng dẫn trực tuyến miễn phí và có cả một đồng như GitHub hỗ trợ,
Javascript là một trong những ngôn ngữ dễ học, dễ tiếp cận để lập trình game.
Một số game được xây dựng bằng Javascript: HexGl Sketch Out CrossCode Bejeweled Swoop Polycraft Angrybirds The Wizard Little Alchemy New Super Resident Raver Ngôn ngữ HTML5 14
Ngôn ngữ HTML đã đi một chặng đường dài kể từ ngày đầu tiên được phát triển và
HTML5 đang là phiên bản phổ biến nhất. Nó kết hợp với Javascript (cùng với các ngôn
ngữ khác) để xây dựng một loạt các game online khổng lồ.
HTML5 là một ngôn ngữ tương đối dễ học, tuy nhiên cũng có phần hơi đơn giản và
một số điểm hạn chế, nhưng phần lớn các game online chạy trên HTML5. Nó cùng với
Javascript để tạo ra các giao diện trình phát và đồ họa trên thư viện WebGL. HTML5 là một
lựa chọn hấp dẫn cho các nhà phát triển nghiệp dư và có phạm vị trực tuyến rộng rãi.
Một số game được xây dựng trên HTML5: Kingdom of Loathing Nothing to Hide Gods will be watching 15 Roll It Cookie Clicker.
1.3 Các nền tảng phát triển ứng dụng trên thiết bị di độn g
Bất cứ khi nào công ty quyết định tạo ra một ứng dụng mobile, thì phải đối mặt với
sự lựa chọn của Native app (Ứng dụng gốc) và Hybrid app (Ứng dụng lai) và điều quan
trọng nhất là tìm kiếm những cách hiệu quả để thực hiện ý tưởng. Trong bài viết này, chúng
ta sẽ tìm hiểu sự khác biệt giữa Native app và Hybrid app, tìm hiểu ưu và nhược điểm của
chúng và cách chúng ảnh hưởng đến quá trình phát triển chung và performance của ứng
dụng. Chúng ta sẽ xem xét các công nghệ được sử dụng cho nền tảng iOS và Android trong
bối cảnh phát triển Native app và Hybrid app để bạn có thể chọn một công nghệ phù hợp
nhất cho dự án của mình.
Ứng dụng mobile được xem là một trong những công cụ kinh doanh năng động nhất.
Chúng đã trở thành tiêu chuẩn mới để xây dựng kết nối với khách hàng. Không chỉ về các
sản phẩm phần mềm, mà bất kỳ dịch vụ nào khác như ngân hàng, chia sẻ xe hoặc giao hàng
đều bị ràng buộc phải có ứng dụng mobile cho cả Android và iOS. Chúng cho phép các
công ty cung cấp cho người dùng của họ trải nghiệm thuận tiện và nhanh chóng hợp thời.
Kinh doanh được thúc đẩy bởi những đổi mới liên tục, do đó, rất nhiều ngành công nghiệp
đã sử dụng các ứng dụng mobile ít nhất 6-7 năm. Thật tuyệt khi các công ty có sự lựa chọn
phát triển Native app và Hybrid app vì cả hai đều trở thành một giải pháp hợp lý cho nhiều
công ty. Hiện tại, một số doanh nghiệp dịch vụ, như Uber, một trong những ví dụ Hybrid
app thành công, thích ứng với các ứng dụng di động hơn các trang web. Chúng giúp cải
thiện khả năng duy trì bằng cách có khả năng tương tác trực tiếp với khách hàng. Khách
hàng nhận được mức độ tiếp cận tăng lên như thông báo push, tùy chọn thanh toán mới, ...
Đây là một cơ chế quan trọng cho doanh nghiệp hiện đại, tuy nhiên chúng cũng đòi
hỏi đầu tư vào phát triển và bảo trì ứng dụng mobile. Và cuối cùng, mỗi công ty sẽ phải
đối mặt với câu hỏi Native app hay Hybrid app tốt hơn? Chúng ta sẽ tìm câu trả lời trong
bài viết này. Tuy nhiên, chúng ta nên thay đổi câu hỏi cho những gì phù hợp hơn với nhu
cầu và điều kiện của công ty bạn hơn, cũng như các công ty khác nhau có các mục tiêu
khác nhau, hạn chế ngân sách và thời gian, chiến lược tiếp thị và các giai đoạn vòng đời 16
kinh doanh. Sẽ không có câu trả lời đúng cho tất cả mọi trường hợp. Do đó, cả phát triển
Native app và Hybrid app có thể trở thành phương pháp tốt nhất cho các công ty khác nhau.
1.3.1 Web Application (Web App)
Web app là một loại chương trình có khả năng làm máy tính thực hiện trực tiếp công
việc nào đó mà người dùng mong muốn. Các trang web này có sự tương tác, cho phép
người dùng nhận, nhập, thao tác dữ liệu. Với các chương trình này, chúng thường có sự
kết nối chặt chẽ, có lệnh gửi tới máy chủ một cách liên tục với số lượng nhiều.
Hình 1: Tng quan v web application
Điển hình cho các loại web application bạn có thể đã biết như các phần mềm,
website chỉnh sửa trực tuyến như canva, các trang mạng xã hội, các trang thương mại điện
tử, website bán hàng, website quản lý siêu thị, phần mềm quản lý nhà trọ Mona House (với
cả bản web app và app điện thoại)… Tại đó, bạn có thể tìm kiếm tương tác, chia sẻ thông
tin, đăng tin, thực hiện các thao tác đặc thù mà từng web app cung cấp.
Phân biệt website và web app
Thực tế thì ranh giới phân chia và nhận biết giữa web app và website khá mong
manh. Do đó, nhiều người nhầm tưởng giữa 2 khái niệm này không phải ít. Tuy nhiên, bạn
vẫn có thể phân biệt 2 khái niệm này một cách tương đối dựa vào các so sánh dưới đây mà 17
cụ thể hơn thì bạn có thể tham khảo giữa dịch vụ thiết kế website của công ty DZR Web
và lập trình ứng dụng của chúng tôi, so sánh để đưa ra kết luận về 2 dịch vụ này. Khả năng tương tác
Điểm khác biệt đầu tiên và dễ nhìn thấy nhất ở website và web app đó là khả năng
tương tác. Một website cung cấp những thông tin hữu ích, người đọc chỉ có thể xem, nhìn
và nghe chứ không thể tác động hay tạo nên sự ảnh hưởng gì của trang, đó là website.
Nhưng nếu web app, bạn có thể đọc, nghe, thao tác dữ liệu trên trang bằng cách nhấp nút,
gửi biểu mẫu, nhận phản hồi từ trang, nhắn tin trực tuyến, thanh toán.
Một số ví dụ cụ thể:
+ Mạng xã hội Facebook, Viber, Youtube, … cho phép chúng ta có thể sử dụng, kết
nối người với người thông qua các nền tảng blog, các cuộc trò chuyện. Web app cho phép
người dùng chia sẻ thông tin bản thân, thông tin người khác, giải trí và rất nhiều mục đích khác.
+ Các cửa hàng trực tuyến cho phép bạn vào cập nhật, tìm kiếm thông tin mặt hàng
cần thiết và đặt mua, thanh toán.
+ Các ứng dụng ngân hàng trực tuyến cho phép bạn chuyển, thanh toán, thực hiện
những giao dịch dựa trên dữ liệu đầu vào của mỗi khách hàng. Khả năng tích hợp
Cả thiết kế website và thiết kế phần mềm đều có khả năng tích hợp các phần mềm
như kế toán, quản lý,… Tuy nhiên, nếu để ý bạn sẽ thấy, web app có khả năng tích hợp cao
hơn bởi nó có những chức năng phức tạp, thường yêu cầu tương tác với các hệ thống bổ sung.
ặc biệt là hệ thống quản lý quan hệ khách hàng – CRM – một phần mềm quản lý thường
được tích hợp trong web app, giúp việc quản lý bán hàng trở nên dễ dàng và hiệu quả hơn.
Việc tích hợp phần mềm CRM cho phép bạn thu thập dữ liệu người dùng tự động,
lưu trữ trong hệ thống CRM. Thông qua đó, bạn có thể dễ dàng truy cập, kiểm tra bộ dữ
liệu khách hàng, phân tích hành vi thói quen khách hàng, cũng như giải quyết các khiếu
nại của khách hàng một cách tốt nhất.
Khác với web app, các website thường tập trung vào việc cung cấp cho người dùng
những chức năng cốt lõi hơn là các chức năng tích hợp. 18
Khả năng xác thực thông tin
Xác thực là một yếu tố cần thiết của các web app khi đăng nhập. Nó có tác dụng
giúp bảo mật tài khoản, tránh truy cập trái phép và rò rỉ những dữ liệu riêng tư của các người dùng.
Một số web app, khi bạn đăng ký mật khẩu, chúng thường báo cho bạn gợi ý mật
khẩu có tính bảo mật yếu, bạn nên thay bằng mật khẩu khác để tăng độ bảo mật .
Nhưng đối với website, việc xác thực thông tin hầu như không bắt buộc. Người
dùng có thể được đề nghị đăng ký từ web để có quyền truy cập vào các tùy chọn không có
sẵn. Nhưng nếu bạn không đăng ký, bạn chỉ có thể xem những thông tin công khai có sẵn mà thôi.
Bên cạnh những thông tin về web app bên trên, khi dùng bạn cũng cần lưu ý một số điều sau đây:
Bảo vệ thông tin khách hàng
Web app cần bảo vệ được thông tin khách hàng. Bởi lẽ, bất cứ khi nào người dùng
nhập thông tin cá nhân hoặc thanh toán, bạn đều sẽ nhận được thông tin từ khách hàng.
Những dữ liệu đầu vào thường của người dùng cuối. Do đó, việc bảo mật thông tin khách
hàng là điều mà bất cứ công ty viết web app nào cũng cần lưu tâm. Trách nhiệm pháp lý
Luật pháp cũng quy định về việc bảo mật thông tin khách hàng. Trong mọi tình
huống, bạn với tư cách chủ sở hữu web app cần có trách nhiệm bảo vệ thông tin cá nhân của họ. 1.3.2 Hybird application
Ứng dụng mobile là một bước cải tiến quan trọng cho doanh nghiệp của bạn. Khi
bạn đưa ra quyết định tạo Hybrid app, bạn nên tìm hiểu quy trình phát triển của nó, kiểm
tra tất cả các tính năng và tìm ra điểm mạnh và điểm yếu. Ứng dụng này ban đầu được coi
là một trang web được đưa vào các container. Do đó, mỗi page phải sử dụng các API được
thiết kế đặc biệt để đạt được các tính năng cơ bản cũng như thu hút các phương tiện của
bên thứ ba cho nó. Các ứng dụng này vận hành kiểm soát chế độ web view để nhận tệp
HTML và JavaScript toàn màn hình tận dụng công cụ kết xuất của các trình duyệt trong hệ điều hành tích hợp. 19
Công nghệ được sử dụng để phát triển Hybrid app
Như đã đề cập, các công ty phát triển mobile đang làm việc với sự kết hợp của các
công nghệ. Có ba khung phổ biến nhất ể
đ phát triển ứng dụng lai:
Hình 2: Hybrid application
+ React Native: Facebook đã tạo ra công nghệ open-sourced này để tương thích đa
nền tảng. Các UI được đơn giản hóa có hiệu suất tăng đáng kể khi reloading. React Native
được ưu chuộng sử dụng vì thời gian phát triển ngắn. Các kỹ sư phần mềm có quyền truy
cập vào các đơn vị có sẵn để áp dụng, tuy nhiên, framework có thể thiếu các thành phần
nhất định. Cả Facebook và cộng đồng thường xuyên cung cấp thông tin cập nhật.
+ Xamarin: Open framework được Microsoft hỗ trợ và duy trì nâng cấp mạnh mẽ.
Gần đây, họ đã đưa ra cách tiếp cận phát triển Hybrid mobile app mới cho phép code across
platform. Nó đã giúp cải thiện tốc độ phát triển và đơn giản hóa bảo trì. Các nhà phát triển
có thể sử dụng logic chung, tuy nhiên, các quy định UI sẽ duy trì cụ thể cho từng nền tảng.
Xamarin sẽ không xử lý đồ họa phức tạp nhưng phù hợp với các ứng dụng đơn giản. Công
nghệ này thường được chọn cho các dự án định hướng kinh doanh.
+ Ionic: Framework này tạo ra các ứng dụng mobile với các công nghệ web tiêu
chuẩn như JavaScript, CSS, HTML, Angular,... Các nhà phát triển cũng có rất nhiều UI
component có thể truy cập đơn giản để xử lý. Thời gian phát triển là tuyệt vời như với tất
cả các khung khác cho các ví dụ Hybrid app. Mặc dù có tất cả các lợi ích, việc bảo trì có 20