Trò chơi chạy trực tiếp trên nềntảng Windows mà không cần cài đặt với hình thức server chạy trong mạng nội bộ,tuy nhiên người chơi vẫn có thé tìm được các server không cùng mạng do hệ th
Trang 1ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHAN MEM
NGUYEN DUY MINH TUẦN - 20520845
KHOA LUAN TOT NGHIEP XAY DUNG TRO CHOI TRUC TUYEN NHIEU NGUOI CHOI BANG
CONG NGHE UNITY3D
Building a multiplayer game using Unity3D
CU NHAN NGANH CONG NGHE PHAN MEM
GIANG VIEN HUONG DAN Th.S DINH NGUYEN ANH DUNG
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN Khóa luận tốt nghiệp với đề tài “KAY DUNG TRÒ CHƠI TRỰC TUYẾN
NHIÊU NGƯỜI CHƠI BẰNG CÔNG NGHỆ UNITY3D” là minh chứng cho
quá trình nỗ lực không ngừng nghỉ trong công việc tìm tòi, học hỏi suốt hơn 4
năm học tập tại trường Đại học Công nghệ Thông tin.
Trong quá trình thực hiện khóa luận, em đã nhận được sự hướng dẫn tận tình từ
quý thầy cô, cũng như sự hỗ trợ về mặt chuyên môn, tinh than từ phía gia đình, bạn bè Em xin chân thành cảm ơn toàn thé quý thầy cô trường Đại học Công
nghệ Thông tin nói chung và quý thầy cô trong Khoa Công nghệ Phần mềm nói
riêng đã dìu đắt em trên chặng hành trình tìm kiếm tri thức Đó là món quà vô
giá, cũng như hành trang hữu ích trên con đường sự nghiệp của ban thân sau
này.
Em xin được gửi lời cảm ơn sâu sắc đến thầy Đinh Nguyễn Anh Dũng, người đã trực tiếp hướng dẫn, chỉ bảo Những lời khuyên hữu ích của thầy đã giúp em kịp thời thích ứng và hoàn thành đúng tiến độ, đúng yêu cầu được đặt ra ban đầu.
Cảm ơn giảng viên phản biện và quý thầy cô trong hội đồng chấm luận văn về
những góp ý quý báu Cuối cùng, xin gửi lời cảm ơn chân thành nhất đến những người đã, đang và sẽ tiếp tục đồng hành, gắn bó cùng em trong từng chặng
đường đời.
Thành phố Hồ Chí Minh, ngày 20 tháng 06 năm 2024
Sinh viên thực hiện
Nguyễn Duy Minh Tuan
Trang 3MỤC LỤC
Chương 1: Tổng quan về dé tài s- 5-5 << s s£ss£ssessessessessessessessessese 2
1.1 Ly do chọn đề tài o-s-s< sec scscsssersersessessessessessessese 2 1.2 Đối tượng và phạm Vi dé tài - 5< s°s se sessessessessessessessessese 2
1.2.1 Mục tiêu đề tài -°-scs<csscvserseteeersersstkserserksrrssrssrssrrssre 2 1.2.2 Đối tượng của đề tài cs<s<cscsvsevsekseksersersessessessessessessrse 2 1.2.3 Phạm vi đề tài -s-s- se s©cseSsESsexsEEsExseEsessessessesessessessssserse 3 CHƯƠNG 2: TONG QUAN VE DE TÀI s«<ssseecvxseesrreseorrrsee 4
2.1 So lược về cách hoạt động của Unity -s-ss<ssessecssessessesse 4 2.2 Sơ lược về cách hoạt động của Netcode for GameObjects 5 2.3 Sơ lược về cách hoạt động của Unity Lobby s-sccsscssecsscse 6 2.4 _ Thiết kế hệ thống -s cscs©csecss©cscsscssessEssEssersersstsserssrssersssee 7
2.4.1 Phòng chơi (LOÌDY), o o5 << 5 << 5< 9 9 9.9 90v 0.0 09.00098609 06 7 2.4.2 Màn chơi (L€V€ÌÌ) s 5< < 5 5 5 5 9 9 90.0.0000 0004 009466896 08906 8
CHUONG 3: PHAN TÍCH THIET KE HỆ THÓNG -° 5-5° << 11
3.1 Use Case Diagram Người Chơi .o s5 <5 S5 S55 8505689568996 11
3.1.1 Sơ đồ Use Case 2-s5-cse<LeHE.HHE AH.AAE.1000.140n10seerke 11
3.1.2 Danh sách ACfOF oœ- 0G G G55 9 9 99 9.9.9 0000000 0009650 11 3.1.3 Danh sách các Use Case do< 55 <5 5< 9 9 99.9001.0009 0050 6896 88 12 3.1.4 Đặc tả các Use aA§G 0G Họ cọ Họ c0 000.000 09 0860680 13 3.2 Use Case Diagram Người chơi trong Game < «<< sse< ssses se 27
3.2.1 Sơ đồ Use Case sssssssssssssssssssssssssssssssssssssssssssssssnsssssssssessssssssesssssssssssssssses 27
3.2.2 Danh sách ÁCfOF œœo œ5 5S s5 9 9.59 9 9 1 0009.100000910008601 80 28
3.3 in a 46
3.4 Giao diện màn hìÌnh << 5< < s 9 9.99 0.0009 090890688996 48
3.3.1 Giao diện màn hình bắt đầu -s-s- 5s s<sessessessessess 48
3.3.2 Giao diện màn hình Lobby BrOWS€F 05-55-55 S S5 55595 49
3.3.3 Giao diện màn hình thông tin Lo y s-s5-< << «55s «sesss< sse 49
3.3.4 Giao diện màn hình màn Ch0ïÌ - << << 5 5< 55 8S 9564 9595959 50 3.3.5 Giao diện màn hình dừng trò €ÌƠï - << 5< «5< s5 ss sesss+ sse 50
Trang 4CHƯƠNG 4: KET LUẬN VÀ HƯỚNG PHAT TRIÊN .5 5 5 51
4.1 Kết 6am e.cecccescesssessessssssesssssessessssssecsscsscssessncsscssecsscssecsscsscssnssuceseeaneaseeses 51
4.1.1 Kết quả dat đưỢC - << 5< 5< 5< SseSseSseEseEseEseEsersersessersersessessese 51 4.1.2 Han ChE nh 6 51 4.2 Hướng phat triỂn s- se ©ss©esecssesserserssesssrserseerssrsee 51
Trang 5DANH MỤC HÌNH
Hình 2.1: Màn chơi duy nhất của chế độ chơi giải đó 2-2 2 25522 5+‡ 11 Hình 3.1 So đồ Use Case Actor Người ChOi cceccsccsscescsssssesssssesesssessestssesseesessesees li Hình 3.2: Sơ đồ Use Case Tạo LObby - 2-2-2 2 ++2£+E2EE2EE+EEEEEEEErrerrerreee 14 Hình 3.3: Sơ đồ Use Case Tùy Chỉnh Lobbyy ¿- 2 2 2 +2 s+++£++£z+xzzzzeez 16 Hình 3.4: Sơ đồ Use Case Thoát LObbY cc.csesssesssesssesssesssecssecssecssecsuecsssssceseessecsses 18 Hình 3.5: Sơ đồ Use Case Host Game .ccssesssessesssessessesssessessssssessusssessessusssesseesseeses 20 Hình 3.6: Sơ đồ Use Case Thoát Game ccscccssesssessesseessessesssessessesssessessusssessecsseeses 22
Hình 3.7: So đồ Use Case Tìm kiếm thông tin Lobby 2-2222: 24
Hình 3.8: Sơ đồ Use Case Vào LObbyy - 2-2 2 5++22+E2E2EEcEeEeErrrrrrrerrree 25 Hình 3.9: Sơ đồ Use Case Tham gia game -: 2-2 5+++++cx++zxvsrxrrxez 27 Hình 3.10: Sơ đồ Use Case Actor Người chơi trong game -2- 55+ 27 Hình 3.11: Sơ đồ Use Case Di chuyền 2-2: 22 S£+SE+E£+EE+EE+E£EE+EzErrerrerreee 30 Hình 3.12: Sơ đồ Use Case Tan công - + 2 2+ £+E++E++EE+E+EE+EzEerrrrrerreee 32 Hình 3.13: Sơ đồ Use Case Gây sát thương - 2 2 s+S++E++E£EzEzrerrerrerreee 34 Hình 3.14: Sơ đồ Use Case Dừng trò chơi -¿ 2 s¿+£+£++xe+xzrxerxezrxerxee 35 Hình 3.15: Sơ đồ Use Case Thoát Game -¿- 2 ¿+ £+++x£+E++£xerxezrxerxez 37 Hình 3.16: Sơ đồ Use Case Nhận sát thương - 2-2 2 2 +2 ++E++E++Ezzzzzrzrxee 39 Hình 3.17: Sơ đồ Use Case Chết 22 2++t tt eeieg 41 Hình 3.18: Sơ đồ Use Case Hồi sinh dé tham gia ccccccccecsesseessesseessessesssessesseesseeses 43 Hình 3.19: Sơ đồ Use Case Hồi sinh dé quan sát -2- 2 ¿522 ++sz+sz2£xez 45 Hình 3.20: Sơ đồ lớp LevelManager - 2-2 + + E+EE£EE+EE+EE+EEEEEEEEEEEEkrrerreee 46 Hình 3.21: Sơ đồ lớp LobbyManager - 2-2: 2 ++S£+E++EE+EE+E2EE+EEEErEkrrerreee 47
Hình 3.22: Giao diện màn hình bắt đầu -¿ ©2+c+ccxxrrtrkrrrrrrrrerrriee 48
Hình 3.23: Giao diện màn hình LobbyrOWSGT - - c5 + srrrsrerreeek 49 Hình 3.24: Giao diện màn hình thông tin Lobbyy - 5 <5 svseeseeserse 49 Hình 3.25: Giao diện màn hình màn chơi .- 5-5 25225 S3 +22 c+zseeeeeezss 50 Hình 3.26: Giao diện màn hình dừng trò ChO1 .- <5 5s + *++se+seexeeerseess 50
Trang 7DANH MỤC BANG
Bang 2.1: Vòng đời của một lớp kế thừa MonoBehaviour - 2-2 2 z+s+¿ 5
Bang 2.2: Các thành phần chính của Netcode for GameObjects -. - 6
Bảng 1.1: Danh sách Actor Người chơi - - 5c + stsevrerrrerrerererrerree 10
Bang 3.2: Danh sách Use Case người ChƠI - óc 5c SE EEEseekeeeererreeree 12
Bang 3.3: Bang Use Case Tạo LODyy - ch HH nàn 12 Bảng 3.4: Bang Use Case Tùy chỉnh Lobby .- - - <5 *+vvsseereeeseeereesrs 14 Bảng 3.5: Bang Use Case Thoát LODDyy 2c 2c 3321113 118131511111 rerre 16 Bang 3.6: Bang Use Case Host Game .- - 5 5 111v ng ng 18
Bang 3.7: Bang Use Case Thoát Œaime - - 2c 3 1v ng ng ngư 20
Bang 3.8: Bang Use Case Tìm kiếm thông tin Lobbyy .¿- 2-5522 525522 22
Bảng 3.9: Bang Use Case Vào LLODDy - óc c1 2E 9 ng ng nh rưy 24 Bảng 3.10: Bảng Use Case Tham gia Carm© - -. << + E+*kESeeeEeeeseeereeere 25
Bảng 3.11: Danh sách Actor Người chơi trong øame - - + +++s++ss>+ex++x 27 Bảng 3.12: Danh sách Use Case - - L2 2 12111211 11111111111 1 1 kg 28
Bang 3.13: Bảng Use Case Di chuyên -2- 2: ©52©5<SE2E£2EE£EEtzEEerxerxerrxrrkee 29 Bang 3.14: Bang Use Case Tan @8n2 -. o 6 Mmm 30
Bảng 3.15: Bảng Use Case Gây sát thương c1 net 32 Bảng 3.16: Bang Use Case mở màn hình dừng trò chơi 55+ s++<<s+s++x 34
Bảng 3.17: Bang Use Case Thoát øame - - - - 5c + + vs kirerirrrsrrrree 35
Bang 3.18: Bang Use Case Nhận sát thương cty 37
Bảng 3.19: Bảng Use Case ChẾT 2-5252 S1 SE 2E1EE12112717112117121111 2121 xe 39 Bang 3.20: Bang Use Case Hồi sinh dé tiếp tục tham gia -5- 41 Bang 3.21: Bang Use Case Hồi sinh dé quan Sat c cecceccsscsscsssesessesesessessseesesseaes 43
Trang 8TÓM TẮT KHÓA LUẬN
Theo số liệu của một bài báo của VTV1, năm 2023 vừa qua doanh thu ngành
Game tại Việt Nam đã đạt được doanh thu 500 triệu USD và hiện tại đang là thị
trường đứng thứ 5 tại Đông Nam Á Tuy nhiên, hiện tại thống trị trong các phòng
net, điện thoại và máy tính của người chơi vẫn là các tựa game nước ngoài như
Liên Minh Huyền Thoại, Genshim Impact, do các tựa game của các studio Việt
Nam hiện tại vẫn chưa đủ sức cạnh tranh.
Nhằm tìm hiéu thêm về quá trình sản xuất trò chơi điện tử nói chung và cảithiện trình độ bản thân nói riêng, em quyết định theo đuổi dé tài này với mục tiêu
là ngghiên cứu cách thức và tạo ra một tựa game nhiều người chơi đơn giản Tuy
vướng bận nhiều khó khăn như việc làm đồ án chỉ với bản thân và vướng bận lịch
thực tập doanh nghiệp fulltime nhưng trò chơi hiện tại đã hoàn thành và chạy được trơn tru.
Tro chơi được xây dựng sử dụng engine Unity3D va 2 công nghệ đi kèm là
Unity Lobby Service và Netcode for Gameobjects Trò chơi chạy trực tiếp trên nềntảng Windows mà không cần cài đặt với hình thức server chạy trong mạng nội bộ,tuy nhiên người chơi vẫn có thé tìm được các server không cùng mạng do hệ thống
Unity Lobby Service sử dụng server riêng của nó.
!
https://vtv.vn/cong-nghe/thi-truong-game-viet-nam-so-huu-nhieu-tiem-nang-can-duoc-khai-pha-202403 12104519037.htm
Trang 9Chương 1: Tổng quan về đề tài
1.1 Lý do chọn đề tài
Năm 2022 và 2023 được đánh giá là giai đoạn mà ngành game phát triển vượt bậc
nhất Theo số liệu từ NewzooŸ, cuối năm 2022, thế giới có gần 3,2 tỷ người chơi
game, tong doanh thu toàn ngành đạt tới con số lớn nhất từ trước tới nay là 182,9
tỷ USD Năm 2023, doanh thu ước tính sẽ chạm mốc mới là 187,7 tỷ USD Trong
đó, riêng game di động đã đóng góp hơn 92,6 tỷ USD.
Tuy thị trường game Việt Nam đang có các bước tiến rõ rệt, đại đa số các tựa game
phổ biến tại thị trường nước ta hiện nay là game nước ngoài, với các studio Việt
đang gặp rất nhiều khó khăn trong việc cạnh tranh với các studio triệu đô của các
cường quốc ngành giải trí như Mỹ và Trung Quốc, đặc biệt là trong khoản phát
triển các tựa game nhiều người chơi
Mục tiêu của khóa luận này là tìm hiểu cơ bản về phương pháp lập trình game
nhiều người chơi và lập trình một sản phẩm hoàn chỉnh nhằm trải nghiệm những
khó khăn và thách thức trong quá trình sản xuất trò chơi điện tử, cũng như cải thiện
và thách thức khả năng của chính bản thân em với tư cách là một game developer.
1.2 Đối tượng và phạm vi đề tài
1.2.1 Mục tiêu đề tài
Đề tài nhắm đến nghiên cứu cách thức lập trình, xây dựng một hệ thống frameworkgame nhiều người choi cơ bản cũng như tạo ra một prototype đơn giản nham trình
bày những gì đã nghiên cứu thành công.
1.2.2 Đối tượng của đề tài
Phương pháp và cách thức lập trình một tựa game nhiều người chơi
? https://newzoo.com/resources/blog/the-games-market-in-2022-the-year-in-numbers
Trang 101.2.3 Phạm vi đề tài
Phạm vi môi trường: Máy tính từ hệ điều hành Windows 10 trở lên
Phạm vi tính năng:
e Game chơi trong môi trường 3D, góc nhìn thứ 3.
e Người chơi chơi chung với nhau trong môi trường mạng nội bộ.
Trang 11CHƯƠNG 2: TONG QUAN VE DE TÀI
2.1 So lược về cách hoạt động của Unity
Khóa luận sử dụng công nghệ Unity làm nền tảng nghiên cứư và ứng dụng , vốn là mộtgame engine đa nền tảng được phát triển bởi Unity Technologies và hiện tại đang là
một trong những game engine thông dụng nhất hiện nay, sử dụng rộng rãi trong khắp
các studio trên toản thê giới và cũng là engine của nhiêu tựa game thành công như
Hollow Knight, Genshin Impact, BattleBit,
Một tựa game truyền thống lập trình trong Unity sẽ bao gồm nhiều cHinh 3D riêng biệt
(Scene) nối chung lại với nhau thành một game hoàn chỉnh, trong các Scene này sẽ baogồm các vật thê (GameObject) có thể chứa hoặc không chứa các thành phần
(Component) khác nhau, chứa một hoặc nhiều script kế thừa từ lớp MonoBehaviour
Vòng đời của một lớp kế thừa MonoBehaviour đơn giản hóa lại là như sau:
Tên Function Điều kiện kích hoạt | Chức năng
AwakeQ Chạy một lần duy Khởi tạo các biến, hàm số trong
nhất khi Scene lần đầu | Component một cách riêng biệt
được nạp.
OnEnable() Chay mỗi lần Trong trường hợp Object được bật từ
GameObject được bat | trạng thái tắt
từ trạng thái tắt
StartQ Chạy một lần duy Nối ghép các component với nhau
nhất scene lần đầu sau khi đã khởi tạo
được nạp sau khi Awake chạy xong.
Update() Chạy một lần duy Kiểm tra và chạy các game logic
nhất mỗi khung hình | như di chuyển nhân vật, cập nhật
UI,
Trang 12LateUpdateQ Chạy một lần duy Chạy các game logic yêu cầu biến,
nhất mỗi khung hình | hằng số và logic từ Update cũng nhưsau khi Update chạy chuẩn bị hằng số và logic cho lần
xong Update tiếp theo
OnApplicationQuit() | Chạy một lần duy Chuan bị logic dé thoát game
OnDisable() Chay mỗi lần Trong trường hợp Object được tắt từ
GameObject được tắt trạng thái bật
từ trạng thái bật.
OnDestroy() Chạy một lần duy Trong trường hợp GameObject bị
nhất khi GameObject | xóa (Viên đạn trúng đích, người chơi
bị xóa khỏi scene chét, )
hoặc scene bi Unload.
Bang 2.2: Vong đời của một lớp kế thừa MonoBehaviour
2.2 Sơ lược về cách hoạt động của Netcode for GameObjects
Netcode for GameObjects là một thư viện Networking cho Unity nhằm cho phép các
lập trình viên tạo ra một tựa game multiplayer dựa trên framework đã có sẵn của Unity.
Netcode for GameObject bao gồm các thành phan chính sau đây:
Tên Mở rộng Chức năng
NetworkObJect Mở rộng của Mở rộng một GameObJect thông
GameObJect thường cho phép tương tác với hệ thống
Netcode NetworkBehaviour | Mở rộng cua Mở rộng một MonoBehaviour với
MonoBehaviour nhiều khái niệm và function đề hỗ trợ
việc chạy trên network như quyền sở
Trang 13hữu (Ownership), OnNetworkSpawn(),
OnNetworkDespawn()
Hệ thống RPC Mở rộng các Cho phép việc gọi hàm thông qua
(remote procedure | fuction thông network.
call) thường.
NetworkVariable Mở rộng của các Cho phép việc đồng bộ các biến thông
biến thông thường | qua network
NetworkManager Không có Cho phép người Host, Tạo hoặc Gia
nhập Server cũng như tùy biến server
đó, đồng thời đảm nhận trọng trách
đồng bộ các Scene và tạo các
NetworkObject dé GameLogic sử dụng
Bang 3.2: Các thành phân chính của Netcode for GameObjects
Qua trình hoạt động của một tựa game sử dụng Netcode là như sau:
e Đầu tiên, trò chơi sử dụng NetworkManager dé tao Client Host hoặc Server dé
những người choi khác kết nói
e_ Khi những người chơi khác kết nối, NetworkManager sẽ đồng bộ các
NetworkObJect và NetworkBehaviour trong Scene thông qua việc khởi tạo và
xóa đi các bản sao của chúng trên máy của người chơi, đồng thời đồng bộ các
biến NetworkVariable đã được định sẵn từ trước
e Trong quá trình chơi, các logic game được chọn sẽ được chạy và đồng bộ trên
máy của tất cả người chơi thông qua các NetworkVariable và hệ thống Rpc
2.3 Sơ lược về cách hoạt động của Unity Lobby
Dịch vụ Lobby cung cấp cách đề người chơi khám phá và kết nối với nhau nhằm thựchiện nhiều kịch bản chơi game nhiều người khác nhau:
e Duyệt danh sách các phiên trò chơi có sẵn và cho phép người choi chọn và tham
gia một phiên.
Trang 14e Chia sẻ mã tham gia với bạn bè dé họ có thé kết nối trực tiếp vào phiên trò chơi
của bạn.
e Sử dụng Quick Join dé tìm bat kỳ trận đấu nào có sẵn và tham gia ngay
e_ Tạo một lobby riêng tư và gửi lời mời đến danh sách bạn bè trong trò choi của
bạn.
e©_ Tạo một lobby từ máy chủ trò chơi và sử dụng nó dé quản lý và giới hạn quyền
truy cập vào phiên máy chủ.
e_ Truy van các lobbies phù hợp với một tập hợp yêu cầu cụ thể (ví dụ: chế độ
chơi, loại bản đồ)
Lobby có thê tồn tại trong suốt thời gian của phiên trò chơi dé cung cấp cơ chế cho
người dùng tái tham gia một phiên trò chơi hiện có hoặc hỗ trợ việc di chuyên chủ nhà
sau khi bị ngắt kết nối không mong muốn
2.4 Thiết kế hệ thống
Trò chơi bao gồm 2 thành phan chính: phòng chơi va màn chơi
2.4.1 Phòng chơi (Lobby)
Đề đơn giản hóa quá trình tìm Server đề chơi và gia nhập màn chơi thì sản phẩm game
sử dụng một hệ thống lobby đơn giản Người chơi có thể tìm các Lobby đang mở thông
qua một Lobby Browser hoặc tự tạo một Lobby cho riêng mình Người chơi có thé tự
Lobby này bắt đầu Host server và các người chơi khác có thé gia nhập Server từ đây
Dữ liệu của một phòng chơi bao gồm:
e Id của phòng.
e Tên của phòng.
e Trạng thái của phòng.
e Địa chỉ IP cua Server.
e_ Chế độ chơi của Game
Dữ liệu của người chơi trong phòng chơi bao gồm:
Trang 15e Id của người chơi.
e Tén người chơi.
e Trạng thái của người chơi.
Khi tạo một Lobby, người chơi sẽ tự động được đặt thành chủ Lobby Chủ Lobby có
quyên thay đổi thông tin Lobby như tên và tinh public, cũng như sẽ đảm nhận quá trình
Host Server Khi chu Lobby rời phòng thì vi tri này sẽ được nhường cho người chơi
khác Nếu Lobby không còn người chơi thì sẽ bị xóa
2.4.2 Màn chơi (Level)
Màn chơi sẽ được chạy trên cả máy chủ và máy tính của người chơi.
Trong đó:
e Màn chơi cua máy chu sé đảm nhiệm vi trí xử lý logic màn chơi cũng như quan
lý các vật thể, biến, hàm số liên quan, dé đảm bảo tính bảo mật cũng như tính
đồng nhất, do chỉ có duy nhất Server chạy các logic này
e Màn chơi trên máy người chơi sẽ đảm nhận trách nhiệm truyền tải, đồng bộ và
xử lý dữ liệu từ màn chơi của máy chủ gửi về
Duy chỉ có script điều khiển nhân vật không hoạt động theo logic này do van đề về độtrễ Input Trong trường hop này, script chạy trên máy của người choi sở hữu script sẽ
đảm nhiệm phần xử lý logic
e Khi chuyền sang màn hình màn chơi, màn choi sẽ dựa trên thông tin phòng dé
khởi tạo màn chơi như sau:
e Với mỗi người chơi trong phòng, tạo một NetworkObject dé lưu trữ và đại diện
cho người chơi đó trong màn chơi.
Sau đó, màn chơi sẽ dựa trên chế độ chơi đã chọn từ màn hình thông tin dé nap logic
màn choi và bắt đầu trò choi
Một màn chơi sẽ có ba trạng thái đơn giản:
Trang 16e_ Chờ người chơi: Màn chơi sẽ chưa bắt đầu cho đến khi đủ số lượng người chơi
gia nhập Level Trong lúc đó thì người chơi có thể tùy ý duy chuyển xung quanh
khám phá man choi.
e Bắt đầu trò chơi: Màn chơi sẽ bắt đầu khi đủ số lượng người chơi gia nhập Tat
cả các người choi sẽ được đưa về một điểm xuất phát ngẫu nhiên và được cấp
cho một vũ khí và một số lượng mạng nhất định Nếu còn mạng thì khi chếtngười chơi sẽ được hồi sinh từ một điểm hồi sinh ngẫu nhiên Khi hết mạng thingười choi sẽ không thé hồi sinh được nữa
e Kết thúc trò chơi: Khi chỉ còn duy nhất một người chơi còn sống và còn mạng
thì trò chơi kết thúc và tuyên bố người chơi này thắng cuộc Sau một thời gianngắn thì trò chơi kết thúc, server sẽ tự hủy và mọi người chơi sẽ trở về màn hìnhchính ban đầu
2.5 Thiết kế của game và cách chơi
Hiện tại, trò chơi bao gồm ba chế độ chơi là Giải đó, Dau đơn và Sinh tồn Khi chủ
phòng chơi chọn một trong ba chế độ này, người đó cũng đồng chơi được quyền thay
đổi màn chơi theo ý họ muốn, miễn sao là màn chơi đó hỗ trợ chế độ chơi đã chọn
2.5.1 Các chế độ chơi giải đó
Là chế độ chơi chính của game, Giải dé là chế độ chơi dạng hợp sức (Co-op) mà trong
đó tất cả các người chơi phải hợp tác để cùng nhau đến được điểm cuối của màn chơi
Hiện tại, chế độ chơi giải đố chỉ có duy nhất một màn chơi và yêu cầu tối thiểu 2 người
dé bắt đầu
Trang 172.5.2 Chế độ chơi đấu đơn.
Dau don là một chế độ chơi theo dang đối choi (Players versus Players) Tat cả người
chơi khi gia nhập sẽ được cấp một vũ khí là gậy bóng chày cùng với mục tiêu là trở
thành người đầu tiên hạ gục được 5 đối thủ Khi bị hạ gục thì người chơi sẽ được hồi
sinh với không giới hạn số lần hồi sinh Trò chơi kết thúc khi có người chơi hoàn thànhmục tiêu Hiện tại, chế độ Dau đơn có 2 màn chơi va yêu cầu tối thiểu 2 người dé bat
dau
2.5.3 Chế độ chơi sinh tồn
Tương tự như Đấu Đơn, Sinh Tén là một chế độ chơi theo dạng đối chọi (Players
versus Players) và tất cả người chơi khi gia nhập sẽ được cấp một vũ khí là gậy bóng
chày Tuy nhiên, khác với Đấu Đơn, trong chế độ chơi Sinh Tồn mỗi người chơi sẽ chỉđược cấp 5 lần hồi sinh và nếu sử dụng hết số lần hồi sinh thì người chơi đó sẽ bị loại.Trò chơi kết thúc khi chỉ còn duy nhất một người chơi chưa bị loại và người này sẽ trở
thành kẻ thắng cuộc Hiện tại, chế độ Sinh Tôn có 2 màn chơi cùng sử dụng chung với
Dau Don và cũng yêu câu tôi thiêu 2 người đê bat đâu.
10
Trang 18CHUONG 3: PHAN TÍCH THIẾT KE HE THONG
3.1 Use Case Diagram Người chơi.
7 : xiend :— Vào Lobby -~S%°*°°*.Í Tham gia Game
Hình 3.1 Sơ đô Use Case Actor Người chơi
3.1.2 Danh sách Actor
Tim kiễm thông tin
các Lohhy
STT Tên Actor Ý nghĩa
1 Người chơi Là người chơi trực tiệp đứng ra Host server cho
game hoặc tham gia các server đã có sẵn, chưa ở
trong màn chơi.
Bang 4.1: Danh sách Actor Người chơi.
11
Trang 193.1.3 Danh sách các Use Case
lobby hiện tại, nhường
quyền Host lại cho người
chơi khác hoặc xóa luôn Lobby.
và chạy server trên máy
mình đồng thời bắt đầu trò
chơi.
màn chơi hiện tại và trở về
màn hình chính, đồng thờichấm dứt server nếu là
Trang 207 Vào Lobby Tham gia Game Người chơi gia nhập một
Lobby trong danh sách các
Lobby tìm được.
8 Tham gia Game Thoát Game Nguoi choi gia nhập một
server từ Lobby đã gia
nhập.
Bảng 3.2: Danh sách Use Case người chơi.
3.1.4 Đặc tả các Use Case.
3.1.4.1 Use Case Tạo Lobby
Use Case: Tạo Lobby.
Tác nhân chính: Người chơi.
Mô tả ngắn gon:
¢ Tạo một Lobby dé những người choi khác có thé gia nhập
Điều kiện tiên quyết:
e©_ Người chơi đã bật trò chơi và có kết nối Internet
Sự kiện kích hoạt:
e Nút “Host Lobby” được bam
Điêu kiện thực hiện:
e Không có.
Luong sự kiện chính:
e©_ Người choi bấm vào nút “Host Lobby” tại màn hình chính
e Người chơi được chuyển đến màn hình Lobby hiện tại
e Kết thúc Use Case
Luong thay thé: Không có
Bảng 3.3: Bảng Use Case Tạo Lobby
13
Trang 21Người chơi Hệ thông
Nút "Host Lobby”
duoc bam ¬
Có kết nỗi Internet
Hiễn thị lỗi không có kết nỗi
Yêu cau tao Lobby được gửi
Trang 223.1.4.2 Use Case Tùy chỉnh Lobby.
Use Case: Tùy chỉnh Lobby.
Tác nhân chính: Người chơi.
Mô tả ngắn gon:
e Tùy chỉnh thông tin Lobby hiện tai.
Điều kiện tiên quyết:
e©_ Người chơi đã bật trò chơi và có kết nối Internet
Sự kiện kích hoạt:
e Nút “Edit Lobby” được bam
Điêu kiện thực hiện:
e Người chơi là người đã tạo hoặc đang là Host của Lobby.
Luông sự kiện chính:
e©_ Người choi bam vào nút “Edit Lobby” tại màn hình thông tin Lobby
¢ Người chơi thực hiện các thay đổi mong muốn với Lobby
e Người choi bấm nút “Save”
e Kết thúc Use Case
Luong thay thé: Không có
Bang 3.4: Bang Use Case Tùy chỉnh Lobby.
15
Trang 23hình sửa thẳng tin Lobby
qười chơi nhập thông
erver nhận được yêu cầu và
chỉnh sửa thông tin.
Hình 3.3: Sơ đồ Use Case Tùy Chỉnh Lobby
16
Trang 243.1.4.3 Use Case Thoát Lobby.
Use Case: Thoát Lobby.
Tác nhân chính: Người chơi.
Mô tả ngắn gon:
e Thoát khỏi Lobby hiện tại.
Điều kiện tiên quyết:
e©_ Người chơi đã bật trò chơi và có kết nối Internet
Sự kiện kích hoạt:
e Nút “Exit Lobby” được bam
Diéu kién thuc hién:
e Nguoi chơi dang ở trong một lobby.
Luông sự kiện chính:
e©_ Người choi bam vào nút “Exit Lobby” tại màn hình thông tin Lobby
e Nếu còn người chơi khác trong lobby và người chơi là Host thì sẽ tự
động nhường lại
e Kết thúc Use Case
Luông thay thé: Không có
Bang 3.5: Bang Use Case Thoát Lobby.
17
Trang 25Người chơi Hệ thông
Server nhận được yêu cầu và
xóa người chơi khỏi Lobby.
trong
khác lài
Người chơi là Host
của Lohhy
on người chơi khac
Server chỉ định người chơi
Trang 263.1.4.4 Use Case Host Game.
Use Case: Host Game.
Tac nhan chinh: Nguoi choi.
M6 ta ngan gon:
¢ Người choi bắt đầu khởi tao và chạy server trên máy minh đồng thời
bắt đầu trò chơi
Điều kiện tiên quyết:
e Người chơi đã bật trò chơi và có kết nối Internet
Sự kiện kích hoạt:
e Nút “Host Game” được bam
Điêu kiện thực hiện:
e Người chơi là Host của một Lobby va đang ở trong lobby đó.
Luéng su kién chinh:
e Người choi bấm vào nút “Start Game” tại màn hình thông tin Lobby
e Người chơi sẽ được chuyển đến màn hình trò chơi
e Kết thúc Use Case
Luông thay thé: Không có
Bảng 3.6: Bảng Use Case Host Game.
19
Trang 27Nút "Host Game” không hiễn
Những người chơi còn lại
được chuyén qua màn hình
Trang 283.1.4.5 Use Case Thoát Lobby
Use Case: Thoát Lobby.
Tác nhân chính: Người chơi.
Mô tả ngắn gon:
e Người chơi thoát ra khỏi Lobby hiện tại và trở về màn hình chính,
đồng thời cham dứt server nếu là Host
Điều kiện tiên quyết:
e Người chơi đã đang ở trong màn hình Lobby.
Sự kiện kích hoạt:
e Nút “Exit Lobby” được bam
Điêu kiện thực hiện:
e Không có.
Luéng su kién chinh:
e Người choi bấm vào nút "Exit Lobby”
e Người chơi sé được đưa về màn hình chính của Game Nếu người
chơi là Host của Lobby thì Server sẽ chuyên quyền Host cho một
người chơi khác Nếu không còn người chơi nào thì Lobby sẽ bị xóa
e Kết thúc Use Case
Luong thay thé: Không có
Bang 3.7: Bang Use Case Thoát Game
21
Trang 29Người chơi
Nút "ExitLohhy”
được bam
Người chơi được đưa về
Yêu cầu được qửi tới Server
Server nhận được yêu cau và xủa người chơi khỏi Lobby cũng như Server Game hiện
tại.
Hình 3.6: Sơ đồ Use Case Thoát Game
22
Trang 303.1.4.6 Use Case Tìm kiếm thông tin Lobby.
Use Case: Tìm kiếm thông tin Lobby
Tác nhân chính: Người chơi.
Mô tả ngắn gon:
e Nguoi chơi tìm kiếm và nhận được một danh sách các Lobby
Điều kiện tiên quyết:
e©_ Người chơi đã bật trò chơi và có kết nối Internet
Sự kiện kích hoạt:
e Hoặc người chơi vừa được di chuyền tới màn hình chính
e Hoặc người choi bam nút "Refresh".
Điêu kiện thực hiện:
e Không có.
Luông sự kiện chính:
e Người choi vừa vào màn hình chính của tro choi.
e Danh sách các Lobby đang mở sẽ được tự động cập nhật trên man
hình.
e Kết thúc Use Case
Luong thay thé:
¢ Người choi bấm nút "Refresh"
e Danh sách các Lobby đang mở sẽ được tu động cap nhật trên man
hình.
e Kết thúc Use Case
Bảng 3.8: Bang Use Case Tìm kiếm thông tin Lobby
23