So sánh với các trò chơi tương tự hiện nay trên thị trường, điểm yếu hay điểm nôi bật hơn của ứng dụng.. Trong khoảng 4 tháng làm việc, ứng dụng đã cơ bản hoàn thành va phát hành trên It
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HQC CONG NGHE THONG TIN
KHOA CONG NGHE PHAN MEM
TRAN XUAN BAC
KHOA LUAN TOT NGHIEP LAP TRINH TRO CHOI MO PHONG
THE LOAI GAME DANG BANG, MULTIPLAYER
Game programming to simulate board games, multiplayer
KY SU NGANH KY THUAT PHAN MEM
TP HO CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA CONG NGHE PHAN MEM
TRAN XUAN BÁC - 16520069
KHÓA LUẬN TÓT NGHIỆP
LAP TRÌNH TRÒ CHƠI MO PHONG
THẺ LOẠI GAME DẠNG BANG, MULTIPLAYER
Game programming to simulate board games, multiplayer
KY SU NGANH KY THUAT PHAN MEM
GIANG VIEN HUONG DAN
ThS ĐINH NGUYEN ANH DUNG
TP HO CHi MINH, 2021
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 453/QĐ-ĐHCNTT
ngày 19 tháng 07 của Hiệu trưởng Trường Dai học Công nghệ Thông tin.
1 ThS Nguyễn Trịnh Đông — Chủ tịch.
2 Th§ Nguyễn Tan Toàn — Thư ký.
3 ThS Nguyễn Thị Thanh Trúc ~ Ủy viên.
Trang 4LOI CAM ON
Em xin cảm ơn ThS Dinh Nguyễn Anh Dũng (giảng viên hướng dan) đã tận
tâm chỉ bảo, góp ý và định hướng phát triển cho ứng dụng Những lời khuyên của Thay đã giúp ứng dụng trở nên thực tế và dé dàng tiếp cận thị trường hon hon Em
rất biết ơn quá trình học các môn Game cùng với Thầy đã giúp em tích góp được rất
nhiều kiến thức và kinh nghiệm làm Game thực tiễn, những kiến thức vô cũng quý giá Em cảm on Thay.
Em xin cảm ơn ThS Trần Thị Hồng Yến (giảng viên phản biện) đã đưa ra nhiều
ý kiến đóng góp giúp em cải tiến ứng dụng cũng như hoàn thiện bản báo cáo khóa
luận.
Em xin cảm ơn nhà trường, các thầy cô, đặc biệt là các quý thầy cô khoa CNPM
đã tạo nền tang tư duy logic, tạo nền móng lập trình của em.
Em xin gửi lời cảm ơn đến quý thay cô, bạn bè và gia đình, trong quá trình xây
dựng đã dùng thứ ứng dụng và cho nhiều góp ý tích cực đề ứng dụng hoàn thiện hơn.
Trong quá trình thực hiện, em đã tham khảo và tìm kiếm tài liệu từ nhiều nguồn khác nhau, rất nhiều người đã trải qua van dé và dé lại những giải pháp, không thé kể
tên nhưng em xin cảm ơn sự đóng góp cộng đồng của mọi người.
Xin chân thành cảm ơn tắt cả.
Thành phố Hồ Chí Minh, tháng 06 năm 2021
Trần Xuân Bắc
Trang 5MỤC LỤC
TOM wyvà‹: 900950077 1
0000007 2 Phát biểu đề tài cv He 2
I0 0 2
Pham vi Ứng dụng - + + TH HH TH HH HT ng ri 2
Đối tượng ứng dụng - 22 ©22+2++22EE+2+1222111222111122771112271112 271112 ce 2
Phương pháp thực hiỆn - - <5 1 E2 T219 111111 121110101001 ớy 3
Kết quả mong đợi.
Tinh khả thi của ứng dụng - -: 525222222 S*‡E‡tetextErrkekererrrrrrerrke 3
Nội dung của luận văn.
Chương 1 TONG QUAN oc the 4
1.1 Giới thiệu khái quát.
1.1.1 Board Game c.cc tt rớy 4
1.1.2 Mutilplayer Game.
1.2 Game, Game Online và Board Game đang phát triên - 5
1.2.1 _ Sự tăng trưởng của ngành Game trong dai dich Covid 19 5
1.2.2 Khối lượng người choi Board Game khổng 16 và ngày một tăng 6 1.2.3 Các vấn đề được giải quyết ccccccccscrrrrrrrrrrrrrrrrrrrrree 6
Chương 2 GIỚI THIỆU CÔNG NGHỆP 2 +¿222222+ttC2Evzrrerrveccee 7
P Ni) 7
2.2 WeDGL — 8
2.3 Unity Photon NetwOrK - - +: - St E22 E111 01212111110 9
Trang 62.4 GameSparks (BaaS: backend as a S€TVIC€) -c-c+SeS+ttetererrkere 9
Chương 3 TRÒ CHOI BOARD GAME SIMULATOR
3.1 Giới thiệu tổng quát 22¿5222++222E+++t222EEEEEEEEEEEEEEEErrrrrkrrrre 1 3.2 Thiết kế kiến trúc
Chuong 4 MOT SO KY THUAT SU DỤNG -ccccz22cccsse+ 52
4.1 Kỹ thuật sử dụng trong Unity3D, C# 5-55 ccscetsesrerereree 52
4.1.1 RayCaSK HH 52
4.1.2 ScriptableObject «Sen 53
4.1.3 Script Define Symbol Setting -. -5-5c5ccc+cccccccscee 56
41.4 JsonUtility cĂĂ 5 Ssieeeieieerree 56
4.1.5 Convert Base64 Ăn 57
4.1.6 Json String Compress 5c cty 58
4.1.7 Ki 59
4.1.8 Một số Plugin được sử dụng: - - -5c+c+c+cscerereeeree 60
4.2 Kỹ thuật su dụng Framework Unity Photon Network - 62
Trang 74.2.1 PhotonView COmpOTIIL - 6 5 + SH ri, 62 4.2.2 _ Photon Transform View Component scsccc«ccssessrs 62 4.2.3 PunRPC TH HH HH HH HT HH HH kg, 63 4.3 Kỹ thuật sử dụng GameSparks (BaaS) - - - net 64
4.3.1 Cài đặt GameSparks trong unity3ÌD -s-ccccssssseseeresrres 64
4.3.2 Các cai đặt GameSparks S€TVIC€ Ă SH ngư, 65
4.4 Triển khai ứng dụng trên itCh.iO -2¿©22©5222x+2£xt2E+tzx+srxsrxrrxesree 71Chương 5 | DUNG THU VÀ PHAN HÔI 2- 2 2 E+£E+zEzEzrxerxcrez 73
5.1 Một số hình ảnh trải nghiệm của người dùng -¿©z©cs+cs=sce- 735.2 Một số phản hôi tiêu biỀU ¿ 2¿25¿©22©5222E22£EEEESEE+2EEezEeerkesrxerrreeee 765.3 So sánh với một số ứng dụng tương tự trên thị trường - 77Chương 6 KET LUẬN -2 +-E+EECEEEEEEEEEEEEEErrkerkerkrres 79
6.1 Tổng kết đa ~«e- | ⁄ 79
6.1.1 Mức độ hoàn thiện - - 5S S.S+ SE HH tre 79
6.1.2 Ưuđiểm ccichrrriirrrrrirrrrrriirrrriirrrro 796.1.3 Khuyết điểm -5- St EkEEEEEEEE121 111111111 cxe 79ÂN.) 1018 .A.Ả Ô 79
Trang 8DANH MỤC HÌNH VẼ
Hình 1.1 Minh họa Board Game cổ điển [ I I] ¿+ 5s s+x+E+EeEx+EeEerxzxeEerezxez 4Hình 1.2 Tổng doanh thu của ngành Game và sự tăng trưởng [ 14] - - 5Hình 1.3 Board game Ludo cô điển [15] -. ¿ 2¿- 5¿25++2++2£x+2zx+zx+erxezrxeszeee 6Hình 2.1 Unity Engine hỗ trợ làm Game đa nền tảng [16] , -~.cc-<csec++ 7
Hình 2.2 Unity Photon Network Asset Store Packages [19] -<+5 9
Hình 2.3 GameSparks Logo [21] 5< E211 1831118338 91 E911 11 11x vkrree 9
Hình 3.1 Entity — Component — System [23] - - 55555 + + +xsksseeesseeseeers 11
Hình 3.2 Kết nối Client — Server scsscssssssssssessssessssneesssneeessneeeesneeesnneeesnneeesaneses 12Hình 3.3 Các thành phan chính của phần Editor -¿ 5¿ 2 5z2cxz2zxzs+szsz 13
Hình 3.4 Cơ chế Spawn Object ở EditOr -2- 2222 s+SE+2E2EE+EEvEEeEEerrkerkerkerex 14
Hình 3.5 Cơ chế tải Project trên EditOr ¿5:52 ©++E22£E2EEtEEterxesrxerreeree 15Hình 3.6 Cơ chế người chơi trong phòng -. 22 2£ ©5£+2S22£+2EEtEE+eExezrxrrxeeree 16
Hình 3.7 Mô phỏng cơ chế hoạt động của Camera - 2 2 2+2 +x+£++z++£s2s+2 17
Hình 3.8 Cơ chế xử lý Mouse InpUI - ¿- + 5s x+EE£EE+EE+EE+EEzErEerkerkerxerkrree 18Hình 3.9 Cơ chế kế thừa Object chung -¿- ¿2+ ©5++2x+2£x+2x++zx+zrxezrxerresree 19Hình 3.10 Sơ đồ Use-Case đăng nhập -¿- 2 ++E+2E£+EE+EE+EEtrEErrksrxrrrerex 19
Hình 3.11 Sơ đồ Use-Case màn hình chính 2-22 x+x+zx++z+zzxerxezss 20
Hình 3.12 Sơ đồ Use-Case màn hình phòng chờ - 2-2 2 2 s2+x+z++zs+z+z +2 20Hình 3.13 Biéu đồ Sequence đăng nhập 2-2522 £+E£+E+E££EerEerxerxrrerree 21Hình 3.14 Biéu đồ Sequence đăng ký ¿- ¿5c SEeEE2EE2EE2EEEEEeEEerkerkrrkrree 22Hình 3.15 Biéu đồ Sequence quên mật khẩu -¿- ¿+2 5++zx+2z+zs+zzs+ 23Hình 3.16 Biéu đồ Sequence hiển thị danh sách Project . ¿-s¿+z=5+ 24Hình 3.17 Biéu đồ sequence tạo mới ProjeCt 2-5 s+52+££+E££kerkerxerxerssree 25Hình 3.18 Biéu đồ Sequence lưu PrOj€Cf - ¿2-2 E+SE+EE2E++E£EEEerEerkerxerkrree 26Hình 3.19 Biêu đồ Sequence tạo mới phòng chơi : 2¿2©5¿25z2cx+>s+scsz 27Hình 3.20 Biéu đồ Sequence gia nhập phòng chơi - 2-2 2s x+£x+zs+£sz +2 28
Hình 3.21 Giao diện màn hình đăng nhập - Ăn seeesersrrsersee 29 Hình 3.22 Giao diện màn hình đăng ky - 5 SĂ S22 2xx ssirrirrrerkrree 30
Trang 9Hình 3.23 Giao diện màn hình yêu cầu mật khâu mới . -¿- ¿25+ 30
Hình 3.24 Màn hình chính 6 6 + 1 3 23191931 91 01 vn ng ghng g g gưệp 31 Hình 3.25 Giao diện màn hình quản ly PrOJ€C( - 5 <5 << «1s sksseeeseese 32 Hình 3.26 Giao diện màn hình tạo mới PTOJ€CI 255 55 3+ + ++ve+ssessees 33
Hình 3.27 Giao diện màn hình tạo phòng ChƠI 5 33c * + x++txseexeerseerees 34 Hình 3.28 Giao diện màn hình gia nhập phòng chơi 555555 <++s++sss+ 35 Hình 3.29 Giao diện màn hình thông tin tai khoản - 555 s<c+<<ssssses 36
Hình 3.30 Giao diện màn hình thay đôi mật khẩu - ¿2s s+zxzs+ 37
Hình 3.31 Giao diện màn hình cập nhật Display Name 55 55+ <5<<52 38
Hình 3.32 Giao diện chính của phần Editor 2 5¿©¿+£+2x++zx+zzxzxssrxz 39
Hình 3.33 Giao diện bảng chỉnh sửa thông tin obJ€C( - 255555 <++ss+ssss+ 43
Hình 3.34 Giao diện màn hình danh sách hình ảnh đăng tải - - 44 Hình 3.35 Giao diện màn hình đăng tải hình ảnh - 5 55 <5<<<+x+s+sx2 46 Hình 3.36 Giao diện màn hình phòng ChỜ 5 5< 25 3E + E++EEseeEeeessereeersee 48 Hình 3.37 Giao diện của màn hình chơi Game - - c2 2+ + s££++£++2<£££+zz 49 Hình 4.1 Doan mã xử dụng Raycast [2Š] - + Series 52
Hình 4.2 Mô phỏng cơ chế ánh xa ảnh con chuột của các người chơi 53
Hình 4.3 Doan mã su dụng Raycast anh xạ ảnh con chuột - ‹ -««s+ 53
Hình 4.4 Doan mã tao Object Config bằng ScriptableObject -¿ 54
Hình 4.5 Doan mã su dung AssetDatabase Load Asset - s-cs+e+sses 54
Hình 4.6 Cau hình của một Scriptable Object Config - ¿2s s+zxz>sz 55
Hình 4.7 Cài dat Script Define Symbol Setting trong Unity3D - 56 Hình 4.8 Doan mã sử dung Script Define Symbol -««++-««+++se++seexsssss 56
Hình 4.9 Doan mã sử dụng JsonUtility Parse chuỗi Json -. 5 5-552 57
Hình 4.10 Doan mã Convert từ Base64 sang Texture [30] -. ‹ -«<<<+ 57 Hình 4.11 Doan mã Convert từ Texture sang Base64 - cc-cscssssee 58
Hình 4.12 Doan mã nén chuỗi Ison . ¿222 2+ +E+E+E‡E+E+EEEEEEEEeEvErErErteErereree 58
Hình 4.13 Doan mã giải nén chuỗi đã nén sang ISON . - ¿2 2s 2+s5s 59
Hình 4.14 Material 3D 'TeX( cccecccccccsceccessssesseeeeeesseesseeeeeeeesseessseeeeees 60
Trang 10Hình 4.15 Đoạn mã sử dung DOTween làm Animafion - - 5 «<< £+<x+xx 60
Hình 4.16 Component WebGL Input trên Input Field UĨ - 5 «<<<+ 61 Hình 4.17 Doan mã hàm GetÏmage -. + + + 13k ng trên 61 Hình 4.18 Photon View COImPORTTI - 4 5 5E E11 931 119 1 1 nh ng ng tr 62 Hình 4.19 Photon Transform View compOTI€TI 5 3S sseeeeeeereere 62
Hình 4.20 Doan mã gửi RPC qua tat cả Clientt - 2-2 2 2+se£xe£xe£xzzzrszxez 63
Hình 4.21 Doan mã nhận lệnh gọi R.PC - - G25 E211 k**E* Vi skksrree 63 Hình 4.22 Cài đặt RPCs của Photon Unity NetWOrK - ccs«cs«cssessssessee 64 Hình 4.23 GameSparks APÏ - <1 3 12121191 9 1g ng ng 64
Hình 4.24 Setting GameSparks trong nity3ÌÏ se, 65
Hình 4.25 Cau hình GameData trên GameSparks - 2 25c + s2£s+£szs+2 65
Hình 4.26 Cau hình Event trên GameSparks 2- 2-2 2 2+ +x£E+£x+zzrszsez 66
Hình 4.27 Doan mã CloudCode Save Project Model [39] -« -<«<+<<s>+ 66
Hình 4.28 Doan mã gửi LogEventRequest Save Project Model từ Client 67
Hình 4.29 Doan mã gửi AuthenticationRequest từ C]ienf «+ +-«+<<+ 68 Hình 4.30 Doan mã gửi RegistrationRequest từ CÏient - -«<<<<<<++<ss+ 68 Hình 4.31 Doan mã gửi ChangeUserDetailsRequest từ CÏient - 69
Hình 4.32 Doan mã custom AuthenticationRequest ở BaaS -«‹+- 69
Hình 4.33 Doan mã gọi Mailjet API Send Mail ở BaaS - << c+<<<<+2 70 Hình 4.34 Doan mã xử lý Reset Password ở BaaS - chư, 70 Hình 4.35 Doan mã gửi AuthenticationRequest với hành động resetPassword 7 Í Hình 4.36 Itch.io lưu trữ va phát hành trò chơi [4Š] s5 55+ ++<++s+sexsxs 71 Hình 4.37 Giao diện trò chơi trên trang Web - c c ng ng 72 Hình 5.1 Cờ Vua đã được tạo ra bởi Board Game SimulatOr - - 73
Hình 5.2 Cờ Tướng đã được tao ra bởi Board Game SimulafOr 73
Hình 5.3 Cờ Cá Ngựa đã được tạo ra bởi Board Game Simulator 74
Hình 5.4 Cờ Ty Phú đã được tạo ra bởi Board Game SimulatOr - ‹ 74
Hình 5.5 Chơi cờ Cá Ngựa trên Board Game Simulator 5s s55 +++s+ 75 Hình 5.6 Ảnh chụp 4 người chơi cờ Ty Phú cùng một thời điểm - 75
Trang 11Hình 5.7 Tabletop Simulator trên Stream [46]
Trang 12DANH MỤC BANG
Bang 5.1 Bảng ý kiến phản hồi đóng góp
Bang 5.2 Bảng so sánh ứng dụng và TableTop Simulator
Trang 13DANH MỤC TỪ VIET TAT
STT Từ viết tắt Ý nghĩa
1 Client - Phần chung được hiểu là ứng dụng (giữ ứng
dụng với BaaS).
- Trong game: người chơi khách (giữ người chơi
client với người chơi host).
2 Host Người chơi máy chủ (người chơi tạo server,
cũng chính là chủ phòng).
3 BaaS Backend as a service (cũng được hiểu là
server, cũng chính là GameSparks).
4 PUN Photon Unity Netwoking (xử lý multiplayer).
4 Multiplayer Nhiêu người chơi.
5 Board game Các trò chơi dạng bảng nói chung.
6 Object Cac déi tuong trong game
7 Input Cac component nhập thông tin từ ban phim,
chuột.
8 Button Button nhận hành động click chuột.
9 Display Thông tin hiện thị trên UI: image, text,
10 Model Cac object 3D phục vụ việc đồ họa 3D
Trang 14TÓM TAT KHÓA LUẬN
Tổng quan, giới thiệu về xu hướng chơi game trong tương lai, cách thức chơicác trò chơi dang bảng đang thay đồi
Giới thiệu về trò chơi và đánh giá mức độ khả thi của trò chơi
So sánh với các trò chơi tương tự hiện nay trên thị trường, điểm yếu hay điểm
nôi bật hơn của ứng dụng
Công nghệ nao có tính tương thích cao, không kén thiết bị, thực sự vận hànhtrên trình duyệt của thiết bị mà không cần cài đặt thêm phần mềm thứ ba
Lua chọn công nghệ tối ưu, có sự quan tâm nhiều và đảm bảo hiệu năng
Trong khoảng 4 tháng làm việc, ứng dụng đã cơ bản hoàn thành va phát hành
trên Itch.io với đường dẫn: https://banogames.itch.io/board-game-simulator
Quá trình xây dựng ứng dụng đồng thời dùng thử trên một tập người dùng đãnhận được nhiều ý kiến đóng góp và cập nhật
Hiện tại ứng dụng dang được cải tiến, tối ưu và quảng bá cộng đồng (trên các
mạng xã hội).
Trang 15MỞ DAU
Phát biểu đề tài
- _ Trong quá trình chon đề tài, sau khi nghiên cứu về xu hướng của ngành game
và cũng như tập người chơi của các dạng game Dong thời với sự cỗ van của
giảng viên phụ trách cũng như khía cạnh chủ quan cũng là sở thích chơi game
cá nhân, em đã quyết định lựa chọn làm thể loại Board game và chơi
Mutilplayer.
- _ Mức độ cạnh tranh thấp, nếu trò choi dang Board game Mutilplayer đang có
rất nhiều trên thị trường, nhưng nếu nói về ứng dụng hỗ trợ tạo Board game
thì rat ít Xét về mức độ thì những các ứng dụng hỗ trợ tạo board game nỗi trội
hiện tại có quy mô lớn hơn, nhưng về mức độ thân thiện với người dùng Boardgame simulator dễ tiếp cận hơn
- Tan dụng cơ hội, bắt kịp xu hướng của thị trường game, em đã bắt đầu nghiên
cứu va phát triên trò choi Board game simulator sớm nhat có thê.
Mục tiêu
- Tim hiểu về xu hướng chơi game trên thé giới
- _ Xây dựng và hoàn thiện trò choi Board game simulator.
- Dua vào thực tiễn và thu thập được một lượng người dùng thân thiết
Phạm vỉ ứng dụng
- Khong có phạm vi về địa lý, chính trị hay tôn giáo,
Đối tượng ứng dụng
- _ Những người chơi game trên PC hoặc sẵn sang trải nghiệm trò chơi trên PC.
- _ Những người choi board game truyền thống và muốn sáng tạo game mới hay
thay đôi cách choi game cô điền
- _ Cộng đồng những người chơi yêu thích board game
Trang 16Phương pháp thực hiện
- Trai nghiệm các ứng dụng tương tự, xem đánh giá cộng đồng, ghi chú những
điểm đáng quan tâm
- _ Thiết kế cau trúc cơ bản của ứng dụng
- _ Nghiên cứu và tìm nhiễu những công nghệ hỗ trợ
- Bat đầu xây dựng ứng dụng
- Dua ứng dụng ra thị trường va theo dõi đánh giá của người choi.
Kết quả mong đợi
- _ Hiện tại ứng dụng đã được xuất bản trên Itch.io và bắt đầu nhận được những
phản hồi từ những người chơi thử nghiệm
- Ung dụng chạy trên nên tang web và tương thích với hầu hết các browser hiện
hành, cũng như hoạt động tốt trên ba hệ điều hành: Window, Mac và Linux
Tính khả thi của ứng dụng
- _ Mức độ tương thích các hệ điều hành, trình duyệt cao mức độ cũng như phan
hồi tích cực từ những người chơi thử nghiệm cho thấy mức độ khả thi của ứngdụng đang rất tốt
Nội dung của luận văn
Nội dung luận văn được chia thành 5 chương chính:
- Tổng quan
- Giới thiệu công nghệ.
- Tro chơi Board game simulator.
- Một số kỹ thuật được sử dụng
- Dùng thử va phản hồi
- Tong kết và hướng phát triển
Trang 17Chương 1 TONG QUAN
1.1 Giới thiệu khái quát
1.1.1 Board Game
- Board Game là thé loại trò choi cờ bàn, bao gồm 2 hay nhiều người tương tac
trực tiếp với nhau thông qua một bàn cờ Board Game thường được sử dụng
dé chơi là các vật dụng như: các lá bài, các quân cờ, bàn cờ, xí ngau, thẻ card,
xúc xắc Đề hỗ trợ cho từng cuộc chơi
- Hiện nay, Board Game được sản xuất và lưu hành rất nhiều nơi trên thế giới
Những trò cho Board Game chủ yếu phô biến ở Châu Âu Tại Việt Nam tuy
chưa phô cập rộng rãi nhưng Board Game cũng đã dan phổ biến Một số BoardGame nổi lên như một trào lưu trong giới trẻ Việt như: Uno, Ma sói, Mèo nô,
cờ tướng, Cờ cá ngựa, cờ ty phú [12]
1.1.2 Mutilplayer Game
- Multiplayer là thé loại Game có nhiều người chơi cùng hợp tác hoặc chống lại
nhau, đòi hỏi phải có kết nối mạng Lan hoặc kết nối Internet trên cùng một
máy chủ [13]
- Multiplayer là cái tên báo quát cho các thé loại Game như:
o MoBa (trò chơi trực tuyến mô phỏng các trận chiến)
Trang 18o MMORPG (Game nhập vai trực tuyến nhiều người chơi).
o MMOFPS (Game bắn súng trực tuyến).
o Và, nhiều thể loại Game Online khác
1.2 Game, Game Online và Board Game dang phát triển
1.2.1 Sự tăng trưởng của ngành Game trong đại dịch Covid 19
2020 Global Games Market
Per Device & Segment With Year-on-Year Growth Rates
Hình 1.2 Tổng doanh thu của ngành Game và sự tăng trưởng [14]
- _ Khi mà đại dịch vẫn chưa có dấu hiệu được kiểm soát thì thị trường game thế
giới vẫn tiếp tục tăng trưởng mạnh mẽ trong năm 2020
- _ Những thông tin này được hé 16 bởi công ty phân tích thị trường Newzoo,
những dữ liệu này bao gồm nguồn thu từ quảng cáo trong trò chơi (tăng trưởnghơn 59% trong suốt thời gian dịch bệnh bùng phát) và các giao dịch từ những
trò chơi Console của người dùng Ngoài ra thì những quảng cáo trong game
đã bất ngờ thu về một nguồn thu đáng kể, đạt doanh thu hơn 3 tỷ USD tại thị
trường Mỹ trong năm 2019.
- Dan số thé giới hiện đang có 7,8 tỷ người và có đến 4,2 tỷ (53,6%) người hiện
đang có thê tiếp cận được với kết nối Internet và trong năm 2020 này đang có
2,96 tỷ người đang chơi những trò chơi điện tử Theo như Newzoo dự đoán
thì trong năm 2023 thì con số này sẽ tăng lên 3 tỷ người Đây cũng là lý dokhiến cho những chỉ số của thị trường game toàn cầu luôn có dấu hiệu tăng dù
bị chi phối bởi nhiều yếu tố khác nhau
5
Trang 191.2.2 Khối lượng người choi Board Game không lồ và ngày một tăng
- Theo báo cáo của ResearchAndMarkets.com, thị trường Board game toàn cầu
được dự báo sẽ đạt trị giá 12 tỷ USD trong năm 2023.
Với tình hình của đại dịch ảnh hưởng lớn tới tư duy chơi Game các dòng Game
cổ điển của người chơi đang có hướng chuyên biến, cách thức chơi Game
truyền thống đang dan thay đôi sang choi Game Online trên các thiết bi và tốc
độ chuyền đôi được đầy nhanh hơn
1.2.3 Cac vấn đề được giải quyết
Câu hỏi đặt ra khi một người chơi có ý tưởng về Board game của mình, làm
sao đề hiện thực nó?
o Cần đầu tư cho những đồ vật cần thiết? (các loại xúc xắc, bài, đồ vật
với các hình thu, các hình vẽ, ).
o Làm sao có thé cùng nhau xây dựng khi mỗi người ở một quốc gia?
Board Game Simulator sẽ giải quyết 2 vấn đề quan trọng:
o Hỗ trợ khối lượng Object, Model day đủ cho việc sáng tạo Board Game
o_ Giải quyết vấn đề địa lý
Board Game Simulator không phải là một trò chơi chơi các Board Game, nó
là công cụ để sáng tạo một Board Game hoàn chỉnh, và hỗ trợ chơi Board
Game đó.
Trang 20Chương 2 GIỚI THIỆU CÔNG NGHỆ
2.1 Unity3D Engine
< unity
Hinh 2.1 Unity Engine hé tro lam Game da nén tang [16]
- Unity li mộtGame Engineda nền tangduoc phát triển bởi Unity
Technologies, ma chủ yếu đề phát trién video game cho máy tinh, consoles vàđiện thoại Lần dau tiên nó được công bố chạy trên hệ điều hành OS X, tai
Apples Worldwide Developers Conference vào năm 2005, đến nay đã mở
rộng 27 nên tảng
- 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, Unitytrướ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.
- Unity, nói một cách đơn giản, là công cụ trò chơi phố biến nhất thé giới Nó
gói rất nhiều tính năng lại với nhau và đủ linh hoạt dé tạo ra hầu hết mọi trò
chơi.
- _ Với các tính năng đa nền tảng vô song, Unity phổ biến với cả các nhà phát
triển sở thích và các studio AAA Nó được sử dụng dé tạo ra các trò chơi như
Pokemon Go, Heathstone, Rimworld, Cuphead và nhiều trò chơi khác
- API tập lệnh C # và tích hợp Visual Studio có sẵn Unity cũng cung cấp
JavaScript như một ngôn ngữ kịch bản và MonoDevelop như một IDE cho
những người muốn một sự thay thế cho Visual Studio
Trang 21- Unity ra đời từ năm 2005, nó đã phát triển một lượng lớn người dùng va một
thư viện tài nguyên tuyệt vời Unity không chỉ có tài liệu tuyệt vời, mà vô sốvideo và hướng dẫn trực tuyến vô cùng lớn [17]
2.2 WebGL
- WebGL là một DOM API (Document Object Model), nó có thé dung 6 moi
ngôn ngữ tương thích với DOM như: Javascript, Java Da số các nhà phát triển
trình duyệt như Google (Chrome), Opera (Opera), Mozilla (Firefox), Apple
(Safari), cũng như nhiều nhà phát triển đồ họa 3D khác đều là thành viên của
WebGL Working Group thuộc hiệp hội Khronos [18]
- WebGL cho phép máy tính thao tác với phần cứng đồ hoa cụ thé thông qua
Javascript, và từ đó vẽ được mô hình lên trang web Trước khi có WebGL,
thao tác với phần cứng chỉ thực hiện được thông qua phần mềm Trình duyệt
vì vậy nên mắc kẹt với môi trường 2D (trừ những plugins do bên thứ ba như
Adobe Flash).
- WebGL xuất hiện trong vô số các framework phổ biến liên quan tới đồ hoa
hiện tại như: A-Frame, Three.js, Babylon.Js, SketchFab, Unity,
- Ưu điểm của WebGL:
o_ Hỗ trợ tốt trên Unity3D Engine
o_ Một API dựa trên chuẩn đồ họa 3D pho bién va duoc chap nhan rong
rai.
o Tuong thich da trinh duyét, da nén tang
o Tích hợp chặt chẽ với HTML, tương tác được với các phan tử HTML
khác và sử dụng các cơ chế xử lý event chuẩn của HTML
o_ Có tính năng đồ họa Hardware-accelerated 3D, đảm nhận trách nhiệm
tận dụng card đồ họa vào việc xử ly hình ảnh và nội dung của website.o_ Môi trường script giúp dựng các mô hình 3D dễ dàng, không cần phải
biên dịch và liên kết dé thay được sản phẩm
Trang 222.3 Unity Photon Network
Hinh 2.2 Unity Photon Network Asset Store Packages [19]
- Photon Unity Networking (PUN) là framework Unity dành cho các trò choi
mutilplayer Tính năng mai mối linh hoạt đưa người chơi của bạn vào cácphòng nơi các đối tượng có thể được đồng bộ hóa qua mạng RPC, Thuộc tínhtùy chỉnh hoặc sự kiện Photon "mức thấp" chỉ là một số tính năng Giao tiếp
nhanh chóng và đáng tin cậy (tùy chọn) được thực hiện thông qua (các) máy
chủ Photon chuyên dụng, các máy khách không cần kết nối one to one
- Photon Unity Networking sẽ hỗ trợ thiết bị của người chơi sẽ hoạt động như
một server, các người chơi khác có thể kết nối vào server của người chơi đã
tạo [20]
- _ Ưu điểm của Unity Photon Network
o Thư viện tích hợp của Unity3D engine.
Trang 23GameSparks là một trong số các nhà cung cấp Trò chơi BaaS (backend as a
service) tốt nhất Nó có thể cung cấp nhiều hơn là chỉ cung cấp tính năng phụ
trợ săn sàng sử dụng cho các ứng dụng chơi game.
Đây là một nền tảng phía máy chủ có thé giúp bạn quản lý cơ sở hạ tang ứngdụng và tích hợp các tính năng cần thiết có thể làm cho ứng dụng trò chơi hoạtđộng tốt hơn theo cách tốt nhất có thê
GameSparks cho phép quản lý các ứng dụng ngay cả sau khi chúng ra mắt vàcung cấp các dịch vụ linh hoạt và có khả năng mở rộng cao, giúp việc thay đổi
cập nhật dễ dàng [22]
Tại sao chọn game sparks làm BaaS cho game:
©
le)
Gói Developer GameSparks được sử dụng miễn phí.
GameSparks cho phép các nhà phát triển quản lý nền kinh tế của họ baogồm giao dịch, hàng hóa ảo, tiền tệ và hệ thống thành tích Nó cũng
cung cấp các giải pháp phát hiện gian lận, IAP và quản lý danh mục
hiệu quả.
GameSparks cung cấp một giải pháp tuyệt vời cho trò chuyện, bảng xếphạng, bạn bè và nhiều tùy chọn nhiều người chơi đầy đủ khác Toàn bộcác tính năng cần thiết khác như giải đấu, đội, hành lang và mai mối,
v.v cũng được bao gồm
Hiệu suất cao, tốc độ xử lý nhanh
Tất cả các tính năng của GameSparks đều có tính tùy chỉnh cao Nócũng có thể cho phép truy cập lớp PaaS đầy đủ tính năng có thể cho
phép tạo API tùy chỉnh với Cơ sở dữ liệu như một giải pháp Dịch vụ,
logic máy chủ và hơn thế nữa
Giải pháp quản lý người chơi hiệu quả của GameSparks có thể cung
cấp quyên truy cập dé dàng hơn và tùy chỉnh vào tóm tắt và lịch sử của
người chơi Thậm chí, nó còn cung cấp các giải pháp giao tiếp linh hoạt
cho người chơi thông qua nhiều kênh
10
Trang 24Chương 3 TRÒ CHƠI BOARD GAME SIMULATOR
3.1 Giới thiệu tổng quát
- Tro chơi gồm 3 phan:
o Phần Editor (phần chính):
"Hỗ trợ người chơi tạo ra Project (Board game).
= Hỗ trợ người chơi quản lý các Project đã tao.
= Phần Editor được xử lý với backend service GameSparks
= Quản lý tài khoản người choi.
= Di liệu các Project tạo ra sẽ được lưu theo tai khoản của người
Trang 25- _ Kiến trúc ứng dụng được chia thành 3 phần:
o_ Phần quản lý tài khoản
o_ Phần Editor (phần chính)
" Cơ chế quản ly Object
" Cơ chế lưu, tải Project
o Phan Game
* Cơ chế quan lý người choi
" Cơ chế tai và khởi tạo Game từ Project
“_ Cơ chế quản ly Object
- Một số cơ chế chung (phan Editor và phan Game):
o_ Cơ chế xử lý Camera
o Cơ chế xử lý Mouse Input
o_ Cơ chế quản lý Object, Model
3.2.2 Mô tả các cơ chế
3.2.2.1 Phan quan lý tài khoản
Application BaaS
Hình 3.2 Kết nối Client — Server
- Phần quản lý tài khoản được thiết kế với kiến trúc Client — Server
- Cac hành động đăng nhập, đăng ký được gửi Request lên BaaS va nhận
Response hiển thị ở Application
3.2.2.2 Phần Editor
- Phần Editor sẽ gồm ba thành phan chính:
Controller, UI, Resource Config.
12
Trang 26Hình 3.3 Các thành phan chính của phan Editor
o Phan Controller:
= Object Manager: Quan ly Object trên bàn, quan lý việc tao hay
x6a Object khoi Project.
= Camera Manager: Quản lý góc nhìn người choi, thu phóng, di
chuyền, xoay Camera
= Input Manager: Quản lý, xác định Input từ bàn phím, con chuột.
o Phan UI:
" Game Scene: Hién thị toàn bộ Object, cac đối tượng được cài
đặt ở Project Các đối tượng được hiển thị bằng Camera dưới
góc nhìn 3D.
=" Canvas Manager: Quản ly Canvas, các đối tượng hiển thị trên
Canvas dưới góc nhìn 2D Canvas bao gồm các Popup, Button,
Text, Input field,
o Phan Resource:
13
Trang 27= Game Object Config: Liên kết với tất cả Model, quản lý Model
và tạo Config thủ công Các Model sẽ được truy cập theo Loại,
Kiểu, Mã định danh
" Cơ chế quản ly Object:
© Các Object được quan lý theo 3 tang truy xuất theo cấp
độ:
Loại (Type) — Kiểu (Kind) — Mã định danh (ID)
“_ Cơ chế Spawn Object:
Hình 3.4 Co chế Spawn Object ở Editor
e Mỗi loại Object sẽ có một Spawner riêng.
e Mỗi Spawner có chức năng tao Object theo từng loại và
quản lý ObJect theo từng loại.
14
Trang 28e Tất cả Object, Spawner sẽ được quản lý bởi Game Object
Manager.
- _ Thiết kế cơ chế lưu, tai Project Model:
o_ Các Project Model được lưu dưới dạng chuỗi Json và được gửi lên và
load với BaaS.
o Khi tải Project, chuỗi Json sẽ được tải về và Parse ra thành Project
Model, từ đó bắt đầu truy vẫn các đối tượng trong Project Model vàkhởi tạo lên màn hình hiển thị
Objects manager |——»| Object spawner
Hinh 3.5 Co ché tai Project trén Editor
3.2.2.3 Phần Game
- Co chế quản lý người choi:
o Người chơi tạo phòng sẽ khởi tạo phòng, trở thành người chơi chủ (Host
Player).
o Các người choi khách tham gia vào phòng sẽ trở thành người chơi
khách (Client Player).
15
Trang 29Hình 3.6 Cơ chế người chơi trong phòng
o Người choi Client với Host theo kiến trúc Client — Servero_ Tất cả các người chơi trong phòng sẽ cùng kết nối với người chơi chủ
phòng.
o Cơ chế khởi tạo Game từ Project:
o Ứng dụng sẽ truy xuất dữ liệu với BaaS theo Project ID, lay được chuỗi
Json và từ chuỗi Json parse thành Project Model.
o_ Từ Project Model, phan Game sẽ truy xuất các đối tượng trong Project
Model và khởi tạo các Object Mutilplayer (các Object Photon Room).
3.2.2.4 Cac cơ chế chung
- Cơ chế xử lý Camera:
o Camera được xử lý tương tác với Input từ chuột và bàn phím:
“ Cơ chế xử lý Camera với con chuột:
e Chuột giữa: Nhấn giữ kéo chuột thay đổi vị trí Camera
trên thé giới (song song với mặt phang thế giới)
e Chuột phải: Thay đổi gốc quay Camera theo gốc nhìn thứ
nhất
e Lăn chuột giữa: Thay đôi độ cao Camera (theo trục Y —
vuông góc với mặt phăng thế giới)
16
Trang 30“_ Cơ chế xử lý Camera với bàn phim:
e Các phim Horizontal (A, D, <, >): Quay Camera xung
quanh tâm điểm của mặt phang thé giới [24]
Hình 3.7 Mô phỏng cơ chế hoạt động của Camera
e Các phim Vertical (W, S, ^, v): Thay đổi độ cao Camera
(theo trục Y — vuông góc với mặt phẳng thé giới)
- _ Cơ chế xử lý Mouse Input:
© Cơ chế xử lý Mouse Input sử dụng Rayscast (bắn một tia lấy các object
cắt qua) [25]
Các ObJect được lây sau khi bắn sẽ được xử lý theo thứ tự gần nhất so
với Camera.
Từ danh sách các Object được bắn trúng sẽ chuyên đến các xử lý riêng
cho từng Object khi được chon.
17
Trang 31Màn hình
Object 1
Hinh 3.8 Co ché xtr ly Mouse Input
- Co chế object chung:
o_ Mỗi Object sẽ có 3 loại Prefab:
Base Prefab, Editor Prefab và Game Prefab
(Edior Prefab và Game Prefab được kế thừa từ Base Prefab)
o Các Prefab kế thừa được thừa hưởng các Component chung từ Base
như: Mesh Render, Collider, Skin, Behavior, Animation,
18
Trang 32Editor object
Mesh Collider
Trang 343.2.3.2 Biểu đồ Sequence chính
Bas5 (Backend
Service)
Nhắp username, passwork
'Gửi thẳng tinusemam, password
Kiểm tra user name, passwork
Kit qua đăng nhap
Kiểm tra ket quả
Hình 3.13 Biéu đồ Sequence đăng nhập
21
Trang 35- Sequence đăng ký:
service)
Yêu cầu dang ky
Yêu cầu nhập thông tin dang ky
username, password, email, name
Nhập thông tin dang ký
Kiễm tra input
Gửi thông tin dang ký
Kiém tra thông tin đăng ký
[Không hợp lê gìn đăng ký
Trả về thông báo
5e
Hình 3.14 Biêu đồ Sequence đăng ký
22
Trang 36- Sequence quên mật khâu:
Yéu cau quên mat khẩu
: Trả vd thẳng bán
mm —.s gáo
Hình 3.15 Biéu đồ Sequence quên mật khẩu
23
Trang 37- Sequence hiền thị danh sách Project:
¬ BasS (Backend
=¬
'Yêu cau danh sach project
Load danh sách project
Kiém tra danh sách project
: < Hién thi danh sách
Lưu danh sách project
Hình 3.16 Biéu đồ Sequence hiển thị danh sách Project
24
Trang 38Xác nhận tao praject
Trả về kết quả -k~~~
Câu nhật danh sách peaject
Hiển thị danh sách project
_ sen h
Hình 3.17 Biểu đồ sequence tạo mới Project
25
Trang 39- Sequence lưu Project:
Load toản bộ model
Format data sang json
Gửi project data
Tra vé két qua '
Hình 3.18 Biéu đồ Sequence lưu Project
Lay project data tồn tại
Cap nhap project data
26
Trang 40- Sequence tao mới phòng chơi:
Hình 3.19 Biéu đồ Sequence tạo mới phòng chơi
27