PHẠM HỒNG VẺ
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------
Phạm Hồng Vẻ
CÔNG NGHỆ THÔNG TIN
PHÁT TRIỂN GAME ONLINE
ĐA NỀN TẢNG
LUẬN VĂN THẠC SĨ KỸ THUẬT
Công nghệ thông tin
2016A
Hà Nội – 2017
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------Phạm Hồng Vẻ
PHÁT TRIỂN GAME ONLINE
ĐA NỀN TẢNG
Chuyên ngành : Công nghệ thông tin
LUẬN VĂN THẠC SĨ KỸ THUẬT
Công nghệ thông tin
NGƯỜI HƯỚNG DẪN KHOA HỌC :
TS.Nguyễn Tuấn Dũng
Hà Nội – 2017
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn : Phạm Hồng Vẻ
Đề tài luận văn: Phát triển game online đa nền tảng
Chuyên ngành: Công nghệ thông tin
Mã số HV: CA160456
Tác giả, Người hướng dẫn khoa học và Hội đồng chấm luận văn xác nhận
tác giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày 28
tháng 10 năm 2017 với các nội dung sau:
1. Chỉnh sửa lại nội dung Chương 1, mục 1.1: Tổng quan về game online.
2. Chỉnh sửa lại nội dung Chương 1, mục 1.3: Các công cụ engine hỗ trợ
phát triển game đa nền tảng.
3. Chỉnh sửa lại nội dung Chương 2, mục 2.1: Tổng quan về Unity3D
engine.
4. Cập nhập tài liệu tham khảo được sử dụng trong luận văn.
Ngày 04 tháng 11 năm 2017
Giáo viên hƣớng dẫn
Tác giả luận văn
CHỦ TỊCH HỘI ĐỒNG
1
LỜI CAM ĐOAN
Tôi xin cam đoan luận văn thạc sĩ “Phát triển game online đa nền tảng” là cơng
trình nghiên cứu của riêng tôi. Các số liệu và tài liệu trong luận văn là trung thực và
chưa được công bố trong bất kỳ cơng trình nghiên cứu nào. Tất cả những tham khảo
và kế thừa đều được trích dẫn và tham chiếu đầy đủ.
Học viên
Phạm Hồng Vẻ
2
LỜI CẢM ƠN
Để có thể hồn thành luận văn tốt nghiệp này. Em xin chân thành cảm ơn các thầy
cô giáo trong trường đại học Bách Khoa Hà Nội nói chung, viện cơng nghệ thơng
tin và truyền thơng nói riêng đã đào tạo cho em những kiến thức bổ ích, những kinh
nghiệm quý báu trong suốt thời gian học tập cao học tại đây.
Em xin gửi lời cảm ơn tới thầy giáo, TS Nguyễn Tuấn Dũng – Giảng viên viện công
nghệ thông tin và truyền thông đại học Bách Khoa Hà Nội đã tận tình hướng dẫn
em trong suốt quá trình làm luận văn tốt nghiệp.
Do cũng chưa có nhiều kinh nghiệm trong lĩnh vực làm game online nên có thể cịn
nhiều sai sót. Em rất mong nhận được sự đóng góp ý kiến, những hướng dẫn chỉ bảo
từ phía các thầy cô giáo.
Em xin chân thành cảm ơn !
Hà Nội, tháng 9 năm 2017
Học viên: Phạm Hồng Vẻ
3
Mục Lục
Danh mục các ký hiệu, các chữ viết tắt ............................................................. 6
Danh mục các hình vẽ ....................................................................................... 7
Mở đầu .............................................................................................................. 8
1. Lý do chọn đề tài ........................................................................................... 8
2. Lịch sử nghiên cứu ........................................................................................ 8
3. Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu ............ 9
4. Tóm tắt cơ đọng các luận điểm cơ bản và đóng góp mới của tác giả ........... 9
5. Phương pháp nghiên cứu ............................................................................... 9
Chương 1: Tổng quan về phát triển game online ............................................ 10
1.1 Tổng quan về game online ................................................................. 10
1.1.1 Giới thiệu về game online .............................................................. 10
1.1.2 Phân loại game online .................................................................... 11
1.2 Lịch sử và xu hướng phát triển ngành công nghiệp game .................... 13
1.3 Các công cụ engine hỗ trợ phát triển game đa nền tảng ....................... 16
1.3.1 Unity 3D ......................................................................................... 16
1.3.2 Cocos2d-x ...................................................................................... 18
1.3.3 LibGDX.......................................................................................... 19
Chương 2: Tổng quan về Unity3D và Photon Server ..................................... 20
2.1 Tổng quan về Unity3D engine .............................................................. 20
2.1.1 Unity3D là gì? ................................................................................ 20
2.1.2 Sơ lược lịch sử hình thành và phát triển của Unity........................ 23
2.1.3 Tính năng của Unity3D engine ...................................................... 25
2.1.4 Các khái niệm cơ bản trong Unity3D ............................................ 26
2.1.5 Sơ nét về giao diện của Unity ........................................................ 29
2.2 Tổng quan về Photon Server ................................................................. 31
2.2.1 Photon Server là gì? ....................................................................... 31
4
2.2.2 Tính năng của Photon Server ......................................................... 31
2.2.3 Kiến trúc của Photon Server .......................................................... 33
Chương 3: Phát triển game đua xe online ....................................................... 35
3.1 Mô tả tổng quan về game đua xe online ............................................... 35
3.2 Thiết lập kết nối với server và quản lý Room, Player .......................... 37
3.2.1 Cấu hình Photon Cloud Server....................................................... 37
3.2.2 Kết nối đến Server và tạo phòng .................................................... 38
3.2.3 Quản lý người chơi tham gia cuộc đua .......................................... 39
3.2.4 Tùy chọn xe và chọn bản đồ vịng đua .......................................... 40
3.3 Thiết kế mơ phỏng vật lý cho xe ........................................................... 41
3.3.1 Cấu trúc vật lý của xe ..................................................................... 41
3.3.2 Điều khiển xe di chuyển................................................................. 43
3.3.3 Đồng bộ vị trí xe của tất cả người chơi .......................................... 43
3.4 Thiết kế đường đua ............................................................................... 45
3.5 Đánh giá hiệu năng................................................................................ 47
3.6 Kết luận ................................................................................................. 49
Tài liệu tham khảo ........................................................................................... 50
5
Danh mục các ký hiệu, các chữ viết tắt
Viết tắt
Thuật ngữ tiếng Anh
Thuật ngữ tiếng Việt
SDK
Software Development Kit
Gói cơng cụ phát triển phần
mềm
API
Application Program Interface
Giao diện ứng dụng
PC
Personal Computer
Máy tính cá nhân
CCU
Concurrent Users
Lượng người trực tuyến
RPC
Remote Procedure Call
Lệnh điều khiển từ xa
UDP
User Datagram Protocol
Giao thức gói truyền tin
HTTP
The Hypertext Transfer Protocol
Giao thức truyền thông siêu liên
kết sử dụng trong Web
IDE
Integrated Development
Environment
Môi trường phát triển
TCP/IP
Transmission Control
Protocol/Internet Protocol
Bộ giao thức truyền thông sử
dụng trong mạng Internet
6
Danh mục các hình vẽ
Hình 1.1 Máy chơi game đầu tiên ra đời ..................................................... 13
Hình 1.2 Máy chơi game console ............................................................... 14
Hình 1.3 World of Warcraft ....................................................................... 15
Hình 2.1 Unity nổi bật với khả năng build đa nền tảng ................................ 21
Hình 2.2 Giao diện mới nhất của Unity hiện nay ......................................... 25
Hình 2.3 Thành phần Scene của Unity ........................................................ 27
Hình 2.4 Một số kiểu của GameObject: nhân vật, ánh sáng, cây cối, âm
thanh……………………………………………………………..……...27
Hình 2.5 Component của một GameObject ................................................ 28
Hình 2.6 Scripting .................................................................................... 28
Hình 2.7 Mơi trường làm việc của Unity.................................................... 30
Hình 2.8 Giá chi phí Server cho mỗi lượng CCU khác nhau ........................ 31
Hình 2.9 Photon Cloud Server ................................................................... 32
Hình 2.10 Photon High Level Architecture ................................................ 33
Hình 3.1 Giao diện trong game .................................................................. 36
Hình 3.2 Giao diện Menu phịng đợi (Lobby) ............................................. 36
Hình 3.3 File PhotonServerSettings ............................................................ 37
Hình 3.4 Giao diện nhập Nickname ............................................................ 38
Hình 3.5 Giao diện tạo/tham gia một phịng ................................................ 38
Hình 3.6 Giao diện danh sách những người tham gia vịng đua trong Room . 40
Hình 3.7 Danh sách Model xe người chơi có thể chọn ................................. 40
Hình 3.8 Mơ phỏng vật lý cho xe ............................................................... 41
Hình 3.9 Cấu trúc vật lý của xe .................................................................. 42
Hình 3.10 Các thành phần vật lý và những đoạn Script được đính kèm để điều
khiển xe .................................................................................................... 42
Hình 3.11 PhotonView .............................................................................. 44
Hình 3.12 Giao diện đường đua .................................................................. 45
Hình 3.13 Các CheckPoint trên đường đua ................................................. 46
Hình 3.14 Mơ phỏng giả lập người chơi di chuyển trên đường đua. ............. 48
7
Mở đầu
1. Lý do chọn đề tài
Sự phát triển mạnh mẽ của Internet cũng như công nghệ di động trên thế giới trong
những năm vừa qua càng làm cho game online ngày càng mở rộng trên tất cả các
nền tảng như PC, web và thiết bị di động. Đây chính là lý do chính em quyết định
chọn đề tài phát triển game online đa nền tảng để đáp ứng được tất cả các nhu cầu
giải trí trên mọi thiết bị, và đặc biệt là tiềm năng mà ngành công nghiệp game mang
lại.
2. Lịch sử nghiên cứu
Những cỗ máy chơi game đầu tiên đã có từ 1951, tuy nhiên đó chỉ là những cỗ máy
thô sơ. Sự phát triển của ngành công nghiệp game cũng gắn liền với sự phát triển
của máy tính và di động.
Năm 1951 – Máy chơi game đầu tiên ra đời
Nimrod được công nhận là chiếc máy chơi game đầu tiên trong lịch sử loài người.
Thứ máy móc được thiết kế đặc biệt để chơi một tựa game duy nhất mang tên Nim
được ra mắt trong một buổi triển lãm về khoa học.
Thập niên 70s – Thế hệ console đầu tiên
Thập niên 80 – Thời kì hồng kim của máy tính cá nhân
Thập niên 90 – Đĩa CD và PlayStation
Thập nhiên 2000s – MMO Thể loại game nhập vai
Thế kỷ 21 - Sự bùng nổ của game di động và đa nền tảng.
Dưới sự bùng nổ của smart phone và thị trường game PC đã trở nên bão hịa, ngành
cơng nghiệp game cũng có những bước chuyển mạnh mẽ. Những game sở hữu công
nghệ đa nền tảng (cross-flatform) sẽ trở thành xu hướng lựa chọn của các nhà phát
hành game vì chạy được trên tất cả các hệ điều hành như Ios, Android, Window,
MacOs, Webgame …
8
Từ đó các engine hỗ trợ phát triển game đa nền tảng cũng ra đời như Unity3D,
Libgdx, Cocos2d-x,... Trong luận văn này sẽ sử dụng Unity3D để phát triển game
đua xe online.
3. Mục đích nghiên cứu của luận văn, đối tƣợng, phạm vi nghiên cứu
Mục đích nghiên cứu trong luận văn này em sẽ nêu lên cái nhìn tổng quan về lịch sử
và xu hướng phát triển của ngành công nghiệp game. Tiếp theo sẽ giới thiệu một số
engine hỗ trợ phát triển game đa nền tảng như Unity3D, Libgdx, Cocos2d-x,... Sau
đó sẽ nghiên cứu chi tiết 2 cơng nghệ chính sẽ sử dụng trong luận văn để phát triển
game là Unity3D engine và Photon Server. Và cuối cùng sẽ đi sâu vào chi tiết để
phát triển một game đua xe online hồn chỉnh có thể chạy trên tất cả các nền tảng hệ
điều hành.
4. Tóm tắt cơ đọng các luận điểm cơ bản và đóng góp mới của tác giả
Luận văn đạt được một số điểm cơ bản và đóng góp như sau:
1. Trình bày tổng quan về game online, lịch sử phát triển và xu hướng phát
triển của ngành cơng nghiệp game.
2. Trình bày nghiên cứu chi tiết về các công cụ engine để phát triển một game
online đa nền tảng là Unity3D và Photon.
3. Xây dựng phát triển thành cơng một game đua xe online hồn chỉnh có thể
chạy trên tất cả các nền tảng hệ điều hành như Android, iOS, Window,
MacOS, Web, …
5. Phƣơng pháp nghiên cứu
Phương pháp nghiên cứu của đề tài là nghiên cứu từ những cái tổng quan xu hướng
phát triển rồi tích cực đi sâu vào nghiên cứu vấn đề một cách chi tiết. Cuối cùng là
xây dựng và phát triển giải pháp ứng dụng thực tế.
9
Chƣơng 1: Tổng quan về phát triển game online
Nội dung ch
ng n y sẽ giới thiệu một cái nhìn tổng quan về xu h ớng phát
triển ngành công nghiệp game và giới thiệu một số công cụ engine để hỗ trợ
l m game đa nền tảng.
1.1 Tổng quan về game online
1.1.1 Giới thiệu về game online
Game online là một dạng trị chơi được chơi thơng qua mạng máy tính có kết nối
internet. Sự nổi trội của Game Online là sự tồn tại cơ chế có thể kết nối nhiều người
chơi với nhau với những cách chơi đặc trưng. Được xây dựng và phát triển trên nền
tảng của mạng máy tính, chủ yếu là Internet. Game online, bên cạnh khả năng kết
nối cộng đồng rộng khắp, không giới hạn về địa lý, đa số các trò chơi trực tuyến hầu
hết có thể chơi miễn phí (Free to play) và đa dạng về thể loại, đáp ứng được các nhu
cầu đa dạng của người chơi.
Sự phát triển của game online cũng phản ánh sự phát triển của mạng máy tính, từ
những mạng nội bộ cho tới mạng toàn cầu Internet và chính sự tăng trưởng của
Internet.
Game online bao gồm những loại game, như game dựa trên mã hóa cho tới những
game lồng ghép các đồ họa phức tạp và những thế giới ảo mà nhiều game thủ có thể
chơi đồng thời. Rất nhiều game online có gắn với những cộng đồng ảo, biến nó trở
thành một dạng hoạt động xã hội vượt qua khỏi những game một người chơi thông
thường.
Sự phổ biến của Flash và Java đã dẫn đến một cuộc cách mạng Internet, nơi các
trang web có thể sử dụng video, âm thanh, và một tập hợp hoàn toàn mới các tương
tác người dùng. Khi Microsoft bắt đầu sử dụng Flash như một thành phần được cài
đặt sẵn để có thể sử dụng IE. Internet bắt đầu chuyển từ việc chỉ cung cấp dữ
liệu/thông tin sang việc sang việc cung cấp các loại hình giải trí theo u cầu. Điều
10
này đã mở đường cho nhiều trang web cung cấp các trò chơi cho người lướt web.
Một vài game online nhiều người chơi như World of Warcraft, Final Fantasy XI và
Lineage II áp dụng phí tháng đối với những người sử dụng dịch vụ game của họ,
trong khi một số game như Guild Wars thì khơng áp dụng phí tháng. Rất nhiều web
dựa vào phí quảng cáo thu từ các nhà tài trợ trên web, trong khi một số khác như
RuneScape, hay Tibia cho người chơi miễn phí nhưng đưa ra những lựa chọn trả phí
và khóa một số nội dung trị chơi đối với những người khơng trả phí.
Việc phát triển Flash của Macromedia cho đến khi Adobe mua hẳn, đã cho ra đời
nhiều nền tảng ứng dụng mạnh mẽ, điển hình như game flash với nền tảng lập trình
Action script kết hợp âm thanh hình ảnh sống động đã cho ra đời vài chục ngàn trò
chơi game flash. Với nhiều thể loại game hấp dẫn khá nhiều người chơi trực tuyến ở
Việt Nam trên nền tảng trình duyệt web như IE, Firefox, Opera, Maxthon,
Chrome....kết hợp plugin Flash Player chơi miễn phí với nhiều thể loại điển hình thú
vị hấp dẫn đông đảo trẻ em chơi và kể cả người lớn vì tính dễ chơi, khơng cần cài
đặt, kể cả trực tuyến hay ngoại tuyến.
1.1.2 Phân loại game online
Game online được phân chia thành một số thể loại như:
MMORPG (Viết tắt của Massively Multiplayer Online Role Playing Games):
là game nhập vai trực tuyến nhiều người chơi. Đây là thể loại game online
phổ biến nhất và có số lượng người chơi đơng đảo nhất. Ví dụ về loại MMO
này, bao gồm: World of Warcraft, Mu Online, TERA, Lineage...
MOBA (Viết tắt của Multiplayer Online Battle Arena): Tức là các trị chơi
trực tuyến mơ phỏng các trận chiến.Ví dụ về thể loại game này bao gồm
DotA 2, League of Legends...
MMORTS (Viết tắt của MMO Real Time Strategy Games): Đây là thể loại
game online có lối chơi chiến thuật thời gian thực. Ví dụ: Age of Empires,
Rise of Nations, War of Legends...
11
MMOFPS (Viết tắt của MMO First Person Shooter Games): Tức là thể game
online bắn súng trực tuyến. Sau MMORPG thì MMOFPS cũng là dịng game
có số lượng người chơi đơng. Ví dụ như Counter Strike.
MMOSG (Viết tắt của MMO Sports Games): Là thể loại game thể thao, ví
dụ như: FIFA, PES...
MMOR (Viết tắt của MMO Racing Games): Đây là thể loại game online đua
xe trực tuyến như Need for Speed, Drift City, Project Torque...
MMORG/MMODG (Viết tắt của MMO Rythm/Music Games hoặc MMO
Dancing Games): Những game online lấy đề tài về âm nhạc và vũ đạo. Ví dụ
như: Dance Dance Revolution, Audition Online...
MMOPG (Viết tắt của MMO Puzzle Games): Thể loại game giải đố trực
tuyến như Three Rings, Puzzle Pirates...
MMOCCG (Viết tắt của MMO Collectible Card Games): Thể loại game
đánh bài.
MMOCG (Casual game): Thể loại game phổ thông dễ chơi.
Các game online thuộc thể loại mơ phỏng đời sống thực tại (Ví dụ như
Second Life...).
Các game online thuộc thể loại chiến thuật theo lượt (Ví dụ như Ultracorps,
Darkwind:War on Wheels...).
Thể loại game online mô phỏng như Equilibrium/Arbitrage, The Sims
Online, Jumpgate...
Tuy nhiên những cách phân biệt trên chỉ là tương đối, với sự phát triển của game
online thì các nhà phát triển cịn có sự pha lẫn các thể loại game với nhau để tạo nên
sản phẩm có sự đa dạng và thu hút hơn. Ví dụ kết hợp cả ba yếu tố nhập vai, chiến
thuật và mạng xã hội vào trong một game thì sẽ tạo nên sản phẩm có sức thu hút
lớn. Ngoài ra nếu phân chia theo nền tảng thì game online cịn được chia theo một
số nền tảng sau như: Web game, PC game và Mobile game.
12
1.2 Lịch sử và xu hƣớng phát triển ngành công nghiệp game
Những cỗ máy chơi game đầu tiên đã có từ 1951, tuy nhiên phải tới 30 năm sau,
ngành công nghiệp game này mới thực sự phát triển vượt bậc. Dưới đây là những
khoảnh khắc quan trọng nhất trong lịch sử phát triển ngành công nghiệp game thế
giới.
Năm 1951 – Máy chơi game đầu tiên ra đời
Nimrod được công nhận là chiếc máy chơi game đầu tiên trong lịch sử lồi người.
Thứ máy móc được thiết kế đặc biệt để chơi một tựa game duy nhất mang tên Nim.
Được phát triển bởi Ferranti, một công ty nghiên cứu thiết bị điện tử có trụ sở chính
tại Anh. Nimrod lần đầu tiên xuất hiện trước công chúng vào 1951 trong buổi triển
lãm The Festival of Britain có chủ đề về Khoa học.
Hình 1.1 Máy ch i game đầu tiên ra đời
Vì máy tính thời đó thường rất lớn do hạn chế về công nghệ nên để thiết kế ra Nim
các nhà khoa học đã tốn rất nhiều công sức. Đây cũng là sản phẩm đầu tiên cho
phép con người có thể thử tài với máy. Một thứ công nghệ khởi nguồn cho trí thơng
minh nhân tạo của máy tính. Tại Festival này cũng có sự tham dự của Alan Turing –
nhà toán học, logic học, người sáng tạo ra ngành khoa học máy tính, ơng đến với tư
cách là một game thủ.
13
Nimrod đã tạo ra một liên kết rất chắc chắn giữa cơng nghệ, tiểu thuyết và giải trí.
Nó đưa nguồn cảm hứng tạo ra một sản phẩm làm cho con người cảm thấy „vui vẻ‟
bằng cơng nghệ. Sau đó, MIT – học viện công nghệ Massachusetts đặc biệt quan
tâm tới ý tưởng này. Họ đã đầu tư rất mạnh để phát triển nó.
Thập niên 70s – Thế hệ console đầu tiên
Hệ máy console đầu tiên mang tên The Magnavox Odyssey về căn bản đã thay đổi
cách con người tiếp cận với game. Lần đầu tiên xuất hiện tại Mỹ, các phiên bản
nâng cấp cũng đã có mặt tại khu vực Châu Âu. Đây là sản phẩm đầu tiên đưa game
vào một thiết bị rời – băng từ. Game thủ chỉ cần đưa đúng băng từ đó vào khe cắm
của chiếc console này là có thể chơi được tựa game đó.
Hình 1.2 Máy ch i game console
Thập niên 80 – Thời kì hồng kim của máy tính cá nhân
Chiếc máy tính cá nhân đầu tiên ra đời vào thập niên 80 cho phép bạn có thể cắm
trực tiếp với 1 màn hình TV. Nó khơng chỉ cho phép bạn chơi game, nó cịn giúp
bạn tự tạo ra một tựa game riêng của mình thơng qua các cơng cụ lập trình.
Thập niên 90 – Đĩa CD và PlayStation
Chiếc đĩa CD lần đầu tiên có mặt trên thị trường vào cuối những năm 80 nhưng phải
tới đầu 90, nó mới được tối ưu hóa để có dung lượng lớn hơn, chứa được nhiều dữ
14
liệu hơn và phù hợp để chứa các sản phẩm game lớn, bên cạnh việc sử dụng trong
ngành công nghiệp giải trí như phim ảnh và âm nhạc.
Cơng ty đầu tiên nhìn nhận ra được tương lai cực kì rộng mở với các sản phẩm sử
dụng đĩa CD này không ai khác chính là Sony. Người Nhật đã tạo ra một thế hệ
console đột phá mang tên PlayStation về cơ bản thay đổi cách con người tiếp cận
với game. Chiếc máy PlayStation đầu tiên ra đời vào 1994, đi kèm với nó là chiếc
controller khơng thay đổi nhiều trong suốt 20 năm qua.
Thập nhiên 2000s – MMO
Khái niệm MMO (Massive Multiplayer Online) – Trực tuyến nhiều người chơi, bắt
đầu khởi nguồn từ những câu hỏi tưởng chừng như rất đơn giản đó.
Trong thế giới MMO, World of Warcraft (2004) là tựa game lớn nhất và thành công
nhất trong lịch sử các game MMO đặc biệt là MMORPG – Game nhập vai trực
tuyến nhiều người chơi. Nhiều nhà phân tích đã ghi nhận rằng, có thời điểm WOW
có khoảng 50 triệu người online cùng lúc tính trên tất cả các server tồn cầu. Một
thế giới rộng lớn vơ cùng, một xã hội ảo cực mở và hơn hết là kết nối hàng triệu
game thủ đã mang lại những thành công, những danh tiếng khơng thể đo đếm với
World of Warcraft.
Hình 1.3 World of Warcraft
15
Thế kỷ 21 - Sự bùng nổ của game di động và đa nền tảng
Dưới sự bùng nổ của smart phone và thị trường game PC đã trở nên bão hịa, ngành
cơng nghiệp game cũng có những bước chuyển mạnh mẽ. Nếu như trước đây điện
thoại di động chỉ đơn giản là phương tiện liên lạc thì ngày nay chúng cịn được sử
dụng cho các nhu cầu giải trí và rất nhiều tiện ích khác. Tận dụng ưu điểm nhỏ gọn
và tiện lợi của smart phone, các nhà phát triển game đã nắm bắt và mở rộng thị
trường game từ PC sang các nền tảng di động. Dễ nhận thấy game sở hữu công
nghệ đa nền tảng (cross-flatform) sẽ trở thành xu hướng lựa chọn của các nhà phát
hành game vì chạy được trên tất cả các nền tảng hệ điều hành như iOS, Android,
Windows, MacOS, Webgame,…
1.3 Các công cụ engine hỗ trợ phát triển game đa nền tảng
Dưới sự bùng nổ của các thiết bị di động chạy nhiều nền tảng khác nhau như
Android, iOS, Windows Phone thì việc phát triển một dự án có thể chạy trên tất cả
các nền tảng này là cần thiết nhằm mở rộng thị trường người dùng. Nếu như trước
kia mỗi nền tảng là một dự án tách biệt và bảo trì riêng rẽ nên sẽ mất rất nhiều thời
gian và cơ hội. Chính vì vậy các cơng cụ engine để phát triển game đa nền tảng đã
ra đời nhằm giải quyết những vấn đề trên, viết mã nguồn một lần và chạy được trên
mọi nền tảng. Nổi bật trong số đó là những engine như: Unity3D, Cocos2d-x,
LibGDX. Trong phần này đề tài sẽ giới thiệu về những tính năng của các engine đó.
1.3.1 Unity 3D
Unity3D là một game engine giúp hỗ trợ triển khai đa nền tảng được phát triển bởi
Unity Technologies. Unity hỗ trợ cả việc phát triển game 2D và 3D, các chức năng
chủ yếu được viết bằng ngôn ngữ C#. Đây là một game engine phổ biến nhất trong
việc phát triển các thể loại game 3D vì các tính năng mạnh mẽ mà chúng cung cấp.
Unity nổi bật với khả năng xây dựng trò chơi chạy trên nhiều nền tảng. Hiện nay đã
hỗ trợ chạy trên tất cả 25 nền tảng hệ điều hành như: iOS, Android, Tizen,
Windows, Mac OS, Linux, WebGL, PlayStation,… Dưới đây là những tính năng
chính của Unity:
16
Mơi trường phát triển được tích hợp với tính năng kế thừa, giao diện kéo-thả
các thành phần UI, khả năng chỉnh sửa đồ họa 3D ngay trên giao diện Editor,
chức năng kiểm tra chi tiết và thiết lập các tham số, và đặc biệt tính năng
xem trước game ngay trong lúc xây dựng (live game preview), ngồi ra
Editor cịn có thể mở rộng bằng plugins.
Triển khai ứng dụng chạy được trên 25 nền tảng hệ điều hành như: iOS,
Android, Tizen, Windows, Mac OS, Linux, WebGL, PlayStation,…
Unity hỗ trợ những đồ họa APIs sau: Direct3D trên Windows và Xbox One;
OpenGL trên Linux, MacOS, và Windows; OpenGL ES trên Android và
iOS; WebGL trên web; và APIs độc quyền trên các máy chơi video game.
Ngoài ra, Unity hỗ trợ APIs cấp thấp như Metal trên iOS, MacOS và Vulkan
trên Android.
Unity cung cấp engine mô phỏng vật lý PhysicX. Các thành phần vật lý hỗ
trợ các thao tác về vật lý như: trọng lực trái đất, lực ma sát, lực đẩy, lực va
chạm, lực đàn hồi, vận tốc, gia tốc, sức cản gió và khơng khí, chuyển động
bánh xe,…
Unity cũng cung cấp các dịch vụ cho nhà phát triển, bao gồm: Unity Ads,
Unity Analytics, Unity Certification, Unity Cloud Build, Unity Everyplay,
Unity IAP, Unity Multiplayer, Unity Performance Reporting và Unity
Collaborate.
Unity Asset Server: Đây là một hệ thống quản lý phiên bản và quản lý các tài
nguyên trong game với một giao diện đồ họa được tích hợp vào trong Unity,
hỗ trợ cho làm việc nhóm trên cùng một project.
Unity cung cấp bộ thư viện Unity Networking API để hỗ trợ cho việc phát
triển game online.
Unity có cả phiên bản Free và phiên bản trả phí. Tuy nhiên với phiên bản
Free cũng cung cấp đầy đủ các tính năng cần thiết cho việc phát triển game.
17
1.3.2 Cocos2d-x
Cocos2d-x là một game engine mã nguồn mở theo giấy phép của MIT license, được
sử dụng để xây dựng các trò chơi, ứng dụng đa nền tảng. Cocos2d-x cho phép các
nhà phát triển sử dụng ngôn ngữ C++, Lua, Javascript để viết mã nguồn và triển
khai trên rất nhiều nền tảng như: iOS, Android, Windows Phone, Mac OS X,
Windows Desktop, Linux. Từ đó giúp cho việc phát triển được tiết kiệm chi phí,
giảm thiểu thời gian. Cocos2d-x được đánh giá là nhanh, dễ dàng sử dụng và rất
nhiều tính năng mạnh mẽ.
Cocos2d-x đã được sử dụng bởi rất nhiều các công ty lớn cũng như những nhà phát
triển độc lập. Ngày nay, có rất nhiều game và ứng dụng sử dụng Cocos2d-x được
xếp hạng cao trên các chợ ứng dụng AppStore và Google Play. Các công ty lớn đã
từng sử dụng Cocos2d-x có thể kể đến như: Zynga, Wooga, Glu, IGG, Big Fish
Games, Fingersoft, Gamevil, GREE, DeNA, Konami, CJ E&M, NHN, LINE,
Square Enix và Disney Mobile.
Dưới đây là những tính năng chính mà Cocos2d-x hỗ trợ:
Scene Management
Hỗ trợ đồ họa 2D
o
OpenGL ES 2.0
o
Các đối tượng UI: Button, CheckBox, LoadingBar, Slider, TextField.
o
Hiệu ứng chuyển tiếp giữa các cảnh, hiệu ứng gợn sóng, …
o
Các phép biến đổi như di chuyển, phép xoay, tỉ lệ,…
o
Hỗ trợ cảm ứng sensor trên mobile.
Hỗ trợ các xử lý tương tác vật lý như va chạm, đàn hồi,…
Hỗ trợ các hiệu ứng âm thanh.
Hỗ trợ Network như: HTTP(SSL), WebSocket API, XMLHttpRequest API.
18
1.3.3 LibGDX
LibGDX là một framework mã nguồn mở theo giấy phép của Apache license 2.0,
được viết bằng ngôn ngữ java. Nó cung cấp một mơi trường cho phép các nhà phát
triển sử dụng để triển khai ứng dụng đa nền tảng một cách nhanh chóng. LibGDX
hiện hỗ trợ triển khai ứng dụng game trên các nền tảng sau: Windows, Linux, Mac
OS X, Android (2.2+), BlackBerry, iOS, Java Applet, Javascript/WebGL. Dưới đây
là những tính năng chính của LibGDX:
Sử dụng thư viện đồ họa OpenGL ES 2.0 trên tất cả các nền tảng.
Hỗ trợ xử lý đồ họa sử dụng thư viện OpenGL ở mức thấp như: Vertex
arrays, Meshes, Textures, Framebuffer objects, Shaders, Simple shape
rendering.
Cung cấp một số APIs mức cao để xử lý đồ họa 2D như: thư viện bitmap,
Orthographic camera, High-performance sprite, Texture atlases, Bitmap
fonts, 2D Particle system, 2D scene-graph API, 2D UI library.
Cung cấp một số APIs mức cao để xử lý đồ họa 3D như: Perspective camera,
các API để hiển thị xử lý đồ họa 3D và hệ thống chiếu sáng.
Audio: Streaming music và hiệu ứng âm thanh.
Xử lý I/O như: hỗ trợ mouse và touch-screen, keyboard, accelerometer và
compass, Gesture detector.
Hỗ trợ xử lý các phép biến đổi toán học và vật lý như: các lớp Ma trận,
Vector, diện tích, thể tích vật thể, các phép nội suy, tính tốn giao điểm hoặc
giao tuyến.
19
Chƣơng 2: Tổng quan về Unity3D và Photon Server
Nội dung ch
ng n y sẽ giới thiệu chung các khái niệm c bản về Unity3D
l engine để phát triển game 3D v Photon Server l framework để xử lý
phía server cho game online.
2.1 Tổng quan về Unity3D engine
2.1.1 Unity3D là gì?
Unity là một phần mềm làm game đa nền tảng được phát triển bởi Unity
Technologies, mà chủ yếu để phát triển video game cho máy tính, consoles và điện
thoại. Lần đầu tiên nó được cơng bố chạy trên hệ điều hành OS X, tại Apple's
Worldwide Developers Conference vào năm 2005, đến nay đã mở rộng 27 nền tảng.
Cho đến nay, 6 phiên bản chính của phần mềm này đã được phát hành. Tại triển lãm
WWDC năm 2006, Apple đã trao thưởng giải Best Use of Mac OS X Graphics cho
ứng dụng này.
Unity hỗ trợ đồ họa 2D và 3D, các chức năng được viết chủ yếu qua ngôn ngữ C#.
Hai ngơn ngữ lập trình khác cũng được hỗ trợ trước kia là: Boo, đã bị loại cùng với
việc phát triển Unity 5 và UnityScript bị loại vào tháng 8 năm 2017 sau khi phát
hành Unity 2017. UnityScript là một ngôn ngữ lập trình độc quyền có cú pháp
tương tự JavaScript.
Phần mềm nhắm mục tiêu các đồ họa APIs sau: Direct3D trên Windows và Xbox
One; OpenGL trên Linux, macOS, và Windows; OpenGL ES trên Android và iOS;
WebGL trên web; và APIs độc quyền trên các máy chơi video game. Ngoài ra,
Unity hỗ trợ APIs cấp thấp như Metal trên iOS, macOS và Vulkan trên Android.
Trong 2D games, Unity cho phép nhập sprites và một renderer thế giới 2D tiên tiến.
Đối với 3D games, Unity cho phép thiết lập các đặc điểm kĩ thuật của các kết cấu và
độ phân giải mà cơng cụ trị chơi hỗ trợ, cung cấp các hỗ trợ cho bump mapping,
reflection mapping, parallax mapping, cảnh không gian ambient occlusion (SSAO),
20
hiệu ứng bóng đổ bằng cách sử dụng shadow maps, render thiết lập toàn cảnh đến
hiệu ứng. Unity cũng cung cấp các dịch vụ cho nhà phát triển, bao gồm: Unity Ads,
Unity Analytics, Unity Certification, Unity Cloud Build, Unity Everyplay, Unity
IAP, Unity Multiplayer, Unity Performance Reporting và Unity Collaborate.
Unity nổi bật với khả năng xây dựng trò chơi chạy trên nhiều nền tảng. Các nền
tảng được hỗ trợ hiện nay là Android, Android TV, Facebook Gameroom, Fire OS,
Gear VR, Google Cardboard, Google Daydream, HTC Vive, iOS, Linux, macOS,
Microsoft HoloLens, Nintendo 3DS family, Nintendo Switch, Oculus Rift,
PlayStation 4, PlayStation Vita, PlayStation VR, Samsung Smart TV, Tizen, tvOS,
WebGL, Wii U, Windows, Windows Phone, Windows Store, và Xbox One. Unity
trước đây cũng đã hỗ trợ 7 nền tảng khác chạy trên Unity Web Player. Unity Web
Player là một plugin của trình duyệt chạy trên Windows và OS X, đã bị gỡ bỏ vì lợi
ích của WebGL.
Hình 2.1 Unity nổi bật với khả năng build đa nền tảng.
21
Unity cung cấp 4 sự lựa chọn đối với người dùng. Dưới đây là danh sách các lựa
chọn hiện có:
Tên
License
All
Engine
Feature
Splash
Screen
Revenue
Capacity
Performance
Reporting
Premium
Support
Price
Personal
Có
Khơng thể
chỉnh sửa
$100,000
Khơng
Khơng
Free
Plus
Có
Có thể
chỉnh sửa
$200,000
Có
Khơng
$35
Monthly
Pro
Có
Có thể
chỉnh sửa
Unlimited
Có
Có
$125
Monthly
Enterprise
Có
Có thể
chỉnh sửa
Unlimited
Có
Có
Negotiated
Pricing
Một cuộc khảo sát tháng 5 năm 2012 của tạp chí Game Developer đã khẳng định
Unity là cơng cụ phát triển trị chơi hàng đầu trên di động. Vào tháng 7 năm 2014,
Unity đã đạt giải "Best Engine" tại liên hoan trao giải thưởng công nghệ hàng năm
của Anh.
Unity nằm trong top game engine tốt nhất cho việc sản xuất game 3D. Cùng với đó
là Unreal Engine và Cry Engine. Ngồi ra, tài liệu hướng dẫn Unity và cộng đồng
lớn cũng là một thế mạnh của Unity.
22
2.1.2 Sơ lƣợc lịch sử hình thành và phát triển của Unity
Phiên bản đầu tiên của Unity (Version 1.0.0) được tạo ra bởi ba nhà sáng lập là
David Helgason, Joachim Ante và Nicholas Francis tại Đan Mạch và được công bố
chính thức vào ngày 6 tháng 6 năm 2005. Tại thời điểm bấy giờ, Unity vẫn chưa hề
được biết tới trong ngành công nghiệp video game. Mục tiêu ban đầu là nhằm tạo ra
một công cụ game engine chuyên nghiệp với giá cả phải chăng cho các nhà phát
triển nghiệp dư. Đây cũng là một trong những yếu tố tạo nên sự thành cơng của
Unity vì nó hỗ trợ cho các nhà phát triển độc lập, những người khơng có đủ ngân
sách để mua những công cụ bản quyền đắt đỏ. Nguồn cảm hứng để hình thành nên
Unity được kế thừa từ sản phẩm Apple‟s Final Cut Pro với những tính năng như
giao diện kéo thả, quy trình làm việc dễ dàng, đơn giản hóa việc quản lý tài nguyên
trong game. Phiên bản phát hành đầu tiên chỉ dành cho hệ điều hành MacOS và các
nhà phát triển chỉ có thể triển khai sản phẩm được trên một vài nền tảng.
Cho đến phiên bản 1.1 Unity mới bắt đầu hỗ trợ chạy trên nền tảng hệ điều hành
Window và trình duyệt web. Đây cũng là khoảng thời gian ba nhà sáng lập cảm
thấy rằng engine của họ nên được nâng cấp để đạt tới một tiêu chuẩn cao hơn.
Nhóm đã dành ba tháng tiếp theo để sửa lỗi, tối ưu hóa engine game. Tất cả kết quả
này đã được tích hợp vào phiên bản Unity 1.5.
Năm 2007, phiên bản Unity 2.0 được phát hành với nhiều sự thay đổi lớn. Phiên bản
này tập trung vào việc hỗ trợ nền tảng Window và cải thiện web player tương thích
với nhiều nền tảng. Tại phiên bản này nhóm đã tích hợp thêm công cụ Microsoft
DirectX giúp cải thiện hiệu năng và tối ưu hóa trên nền tảng Window. Ngồi ra cịn
bao gồm các thay đổi lớn khác như: web streaming, real-time soft shadows,
networking, cơng cụ tạo địa hình, Unity Asset Server, cải thiện hệ thống GUI.
Dưới sự bùng nổ của các ứng dụng smartphone và sự ra đời của iPhone cùng với
AppStore, Unity Technologies đã quyết định phát triển thêm phiên bản cho phép
build ứng dụng chạy được trên cả iPhone. Unity iPhone đã được phát hành vào
tháng 12 năm 2008 gồm có 2 phiên bản là Basic và Pro.
23