Đề tài sẽ đi sâu vào tìm hiểu các kĩ thuật được sử dụng trong việc lập trình một AI cụ thể là việc tìm kiếm người chơi.. Nguyên lí hoạt động Thuật toán Xử lý Hành vi Bat thường dựa trên
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
TRAN QUOC HUY - 20520554
KHOA LUAN TOT NGHIEP
AINPC
Research on Algorithm and Application in Developing
3D Game with NPC AI system
KY SU NGANH KY THUAT PHAN MEM
GIANG VIEN HUONG DAN THS NGUYEN THI THANH TRUC
TS NGUYEN THI XUAN HUONG
TP HO CHÍ MINH, NĂM 2024
Trang 2LOI CAM ON
Khóa luận tốt nghiệp với dé tài “Nghiên cứu các thuật toán và ứng dung pháttriển game 3D với hệ thống AI NPC” 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 thần từ phía gia đình, bạn
bè.
Em xin gởi lời cảm ơn chân thành đến tập thể quý Thầy Cô Trường Đại họcCông nghệ thông tin — Dai học Quốc gia TP.HCM và quý Thầy Cô khoa Công nghệphần mềm đã giúp cho em có những kiến thức cơ bản làm nền tảng để thực hiện đề
tài này.
Đặc biệt, em xin gui lời cảm ơn và lòng biết ơn sâu sắc nhất tới Cô Nguyễn Thị
Thanh Trúc Cô đã trực tiếp hướng dẫn tận tình, sửa chữa và đóng góp nhiều ý kiến
quý báu giúp em hoàn thành tốt báo cáo môn học của mình
Trong thời gian một học kỳ thực hiện đề tài, em đã vận dụng những kiến thứcnền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiếnthức mới Từ đó, em đã có gắng hết sức dé hoàn thành một báo cáo đồ án tốt nhất.Tuy nhiên, trong quá trình thực hiện sẽ không tránh khỏi những thiếu sót Chính vìvậy, em rất mong nhận được những sự góp ý từ phía các Thầy Cô nhằm hoàn thiệnnhững kiến thức mà em đã học tập và là hành trang để em thực hiện tiếp các đề tài
khác trong tương lai.
Xin chân thành cảm ơn các quý Thầy Cô!
Thành phố Hồ Chí Minh, ngày 24 tháng 06 năm 2024
Sinh viên thực hiện
Huy
Trần Quốc Huy
Trang 31.5 Các hướng nghiên cứu liên Quan - s6 1+ 19119 11 9v knrưy 17
1.6 Pham vi đề tài 4⁄0 tee SEI co — ằ-ũgs-«s 18
CHƯƠNG 2 CƠ SỞ LÝ THUYET o csccccscsscssesssseeseeesseecsaneessneessneessneeesneesenses 19
2.1 Unity , XẾp ổn, S OQ QQQ QC HH, 19
2.1.1 Giới thiệu UnI(y -.L Sc SH HH nghệ 19
2.1.2 Các thành phan cơ bản của Unify - ¿2-52 +2s+£+E+£+Eers+rezxerxee 19
2.2 Thuat ton AI Co 1 Se 20
2.2.1 Thuật toán A* ( Thuật toán tìm đường di ) 55s << xxx 20
2.2.2 _ Thuật toán ngẫu nhiên có GiSU 0t 21
2.2.3 Thuật toán LOS ( Line of Sight ) - c Si, 23
2.2.4 Thuật toán xử lí hành vi bất thường -2- + 2 2+++c£z+E+£zzxzxererxez 25
2.2.5 _ Fimite State MachIne - cv ng ng ng re 25
CHƯƠNG 3 XÂY DỰNG HE THONG GAME 22: 2 +S++£++E+£++zezxse2 27
3.1 Cuối o0 27
3.2 Hệ thống nhân vật -:- 2 ©++SE+E£EE#EE2EEEEEEEEEE1E1711121711171 111.1 xe 29
3.2.1 Người ChơƠI S Ăn ST TH 29 3.2.2 NPC ( Ememies ) -cc QQnnQnnn v 30
Trang 4SE SN) 9 4 33
3.2.4 NPC “ĐiẾC” như 38
3.2.5 NPC “CÂm” Quế 41
3.2.6 Đồng xu c.c St TT T1 121 T111 1010111211111 crye 423.2.7 Ga bông -c.cc tt T2 E111111 1111211111111 43
3.2.8 Pa 0 e 44
3.2.9 Nó 0 45
3.3 Xây dựng đồ họa game - ¿ke SE EE21511121111 2171112171111 cxe 463.4 Dé họa nhân vat trong game - ¿2 + +S2+E+E£EE+E+EEEEEEEEEEEEEerkrkrrererree 46
3.5 _ Xây dựng giao dIỆn GAME - c2 + 110 ng kg 47
3.5.1 Giao diện start ØaIT€ - -c 131119991111 11 11 1v ng re 47 3.5.2 — Giao diện trÒ ChƠI - LH nnnnnHnHnHgệt 48
CHƯƠNG 4 PHAN TÍCH THIET KE HỆ THÓNG - : :-©++5+++c5+z2 5I
4.1 Xây dựng sơ đỒ use Ca$e - 521cc 3 1 St 111811 211111111 1111111111 xe 51
4.1.1 Sơ đồ use case Player - 5 c- Set E211 212121215121 211.1 xe 51
4.1.2 Sơ đồ use case NPC -ccc thư 51
4.2 — Danh sách AC(OF G9 HH HH ni 52 4.3 Danh sách đặc tả Use CaS€ - Q2 2 211111101101 52
4.4 Đặc ta USE CAS© TQ HQ Họ về 54
AAD Di chuy cicccccccccccccccsccscscsescscsscscscssescssescscsscscsesecsvsesessessscseseesesseeesees 54
4.4.2 — Chạy Ăn HT TH HH HH HH Hà 54 4.4.3 _ Thu thập đá quý - + St ng TH HH tr 55
4.4.4 Nhat đồng XU oeceecccccccccssssessesscsessescsesscsessessssessssessessssessssessesssseeseaeseesees 564.4.5 Mua vật pham hỗ tro cecccccccccscscsscsccssscsssssseseseseesescsessssessescseeseseseesesees 564.4.6 Chọn vat pham hỗ tro ceccccccsccscscsesessscseesssessscsesssscsessssesesscsesscseseesesees 57
Trang 54.4.7 Sử dụng vật phâm hỗ trỢ -¿- ¿5+ ©5£2x2x+EE+EE2EEEEEeEEeExerxzrrrrrrei 57
AAS Mở CỬa Ă.2Q 21222 2H HH 11212121212 re 58 4.4.0 Xem S€(tLInE HH ngờ 58 4.4.10 Chơi lại trÒ CHhƠI cc 1S 1122201011111 11111111921 1111111111111 822351 111kg 58
4.4.11 Di chuyển ngẫu nhiên - ¿E5 SE2EEEEE2E£EEEEEEEEEEEEEEEErErrrkrrrrs 594.4.12 Truy đuổi người chơi ¿5-5 ++x+SSE+E£EEEEEEEEEEEEEEEEEEEEEEEEEEErkrrree 604.4.13 Tìm kiếm người chơi - 2 ¿S52 +E‡SE+EEEEEEEEEEEEEEEEEEEEEEErErrkrrerkrei 60
4.4.14 Phát hiện người chơi + 2 ++s£+x£2E£EE£EEEEEEEEEEEEEEEEEEEEEEeErrrrei 61
CHƯƠNG 5 TONG KẾT - 2-52 SE2S22E92E2EE2EE2123121221212111212121121 2.21 xe 62
` 62
511 Kết quả đạt được , 4 A cena Sigs ee sÓ, Lee 625.12 Han chế ZZ ết 625.1.3 Hướng phát triển : ¿2¿©2¿2x22x2EtEkEEEEEEEEkeEkererererves 63/.08i200/9:7 7/047 9n 64
Trang 6DANH MỤC HÌNH ẢNH
Hình 2.1 Logo Unity c1 1101 S9 ng gưy 19
Hinh 2.2 /0080/10/15011/)011)080.1ỐỐỒ 20
Hình 2.3 Sơ đồ hoạt động của thuật toán ngẫu nhiên có điều kiện 22
Hình 2.4 Mô phỏng xác định việc bi phát hiện trong thuật toán LOS 24
Hình 2.5 Sơ đồ hoạt động của thuật toán LOS 2c Series 24Hình 2.6 Sơ đồ mô tả ESM -. -c¿- 52t tre 26Hình 3.1 Bản đồ trò chơi ( mặt cắt ) + - + 2+E+E£EE+E£EEEEzEeEEEErErrkrkerrree 27Hình 3.2 Bản đồ trò chơi nhìn từ trên xuống - 2 - 2 2 s252+x+£sz£ezxccez 28Hình 3.3 Cánh công hoàn thành trò chơi - - ¿2 + 2+++E+£££E+E££zE+Eecszeszs 28
Hình 3.4 FSM các trạng thái của NPC trong trò chơi - « «<< c+sec++ 33 Hình 3.5 Tạo hình NPC “im” - << c 1111311121222 1111k 92211111 krrec 34
Hình 3.6 Vùng phát hiện của NPC “mùi” - 2 c che rey 35
Hình 3.7 Biểu đồ quyết định 2 vectOr - ¿+ ¿52 ©S2x+£x+Ex+EE£EEeExzExzzezrecsee 36Hình 3.8 Vector ban đầu của NPC -¿- ¿252 2x22E2E2EEE2EeExekrrkerrererrrei 37Hình 3.9 Quyết định Vector thứ nhất trong giai đoạn tìm kiếm - 37
Hình 3.10 Quyết định vector thứ hai trong giai đoạn tìm kiếm 38
Hình 3.11 Tạo hình NPC “Điếc” ¿5c cct tri 39Hình 3.12 Mô phỏng tầm nhìn thực tế của NPC “Điếc” -s5c++s+5s+2 40
Hình 3.13 Tạo hình NPC ““CÂIỶ” G- c1 1H HH ng ch 4I
Hình 3.14 Đồng xu - 2 5S S SE E9 12111E11211112111 1111111111111 11111 te 42
Hình 3.15 Gấu bông - 2 -©% 2+E9EE+EEEE#EEEEEEE2E1212121712112111711 21111 xe, 43
Hình 3.16 Luu đạn choáng << 1E 1118311111139 31111 99 1 1 ng ve 44 Hình 3.17 NƯỚC 'EỌ( - G1 9n nh 45
Hình 3.18 Một số assest được tạo từ FIST 0 — 46Hình 3.19 Một số assest được tạo từ việc biến đổi model ¿s2 <<: 47
Hình 3.20 Giao diện start game - - - + 1111k rưy 47
Hình 3.21 Giao diện trò chƠI - + <2 1133111332222 1 1 E351 rrree 48 Hình 3.22 Giao diện trò chơi khi có NPC - <1 E+++sssssseeexs 49
Hình 3.23 Giao diện trò chơi có cánh cổng hoàn thành trò chơi - 49
Hình 4.1 Sơ đồ use case Play€r ¿5-5 2E SE EEEE 2212121112111 xe 51
Trang 7Hình 4.2 Sơ đồ use case NPC
Trang 8DANH MỤC BANG
Bảng 3-1: Bảng mô tả giao diện Start gaME - 55x eeeeeere 48 Bảng 3-2: Bảng mô tả giao diện trO ChơƠI - c3 11 13 svrereeree 50 Bảng 4-1: Bảng mô tả danh sách actor - - c5 + 11333 EESsseeerreeseeerre 52 Bảng 4-2: Bảng danh sách đặc tả use Ca§€ 2G HH nhe, 33
Bang 4-3: Đặc tả use case đi chuyên ¿5-5 S2+E+ESt+EvEEEEEEEEEeErrkrrrrrree 54
Bang 4-4: Đặc ta use Case Chay SH TH HH re 55 Bảng 4-5: Đặc ta use case thu thập đá quý - «5tr 56
Bảng 4-6: Đặc tả use case nhặt đồng XU wicccccesseseesesssesesseseeeesecececececeecccecceceseeeesess 56
Bang 4-7: Đặc ta use case mua vật pham c.ccccececccscscsescssssesesessesessesesesesesvees 57Bang 4-8: Dac ta use case chon vat pham — 57Bang 4-9: Đặc ta use case sử dụng vật phẩm - 25 + z+s+£+£szx+zcez 58
Bảng 4-10: Đặc ta use Case MO CỬA 25 5 0111111 911v vn key 58
Bảng 4-11: Đặc tả use case Xem S€f[ITØ - - - G1111 39111 9v ng re 58 Bảng 4-12: Đặc ta use case chơi lại trò CƠI - c5 +++seeeexseeeeesss 59
Bảng 4-13: Đặc tả use case di chuyển ngẫu nhiên 2- 2 5522522522522 59Bang 4-14: Đặc tả use case truy đuôi người chơi - 2s + s+s+s+zszx+zzcs2 60Bảng 4-15: Đặc tả use case tìm kiếm người chơi -.- 2-5 +22s2c++s++s+>s+2 60
Bang 4-16: Đặc tả use case phát hiện người chơƠï -‹- 5 «5s «+ s£sseesseess 61
Trang 9DANH MỤC TỪ VIẾT TẮT
STT | Ký hiệu chữ viết tắt Chữ viết đầy đủ
1 NPC Non-playable character (Nhân vật không thé
điều khiển)
2 AI Artificial Intelligent (Trí tuệ nhân tạo)
3 RPG Role-playing games (Game nhập vai)
4 FPS First-person perspective (Goc nhin thir nhat)
5 RNG Random number generate
6 ROV Range of View
7 FOV Field of View
8 FSM Finite-state machine
Trang 10CHƯƠNG 1.GIOI THIEU ĐỀ TÀI
1.1 Tổng quan
Ngày nay, trí tuệ nhân tao (AI) dang dong vai trò ngày cảng quan trong trong
nhiều lĩnh vực, và ngành công nghiệp game cũng không ngoại lệ Việc ứng dụng
AI vào game 3D mở ra nhiều tiềm năng to lớn, hứa hẹn mang đến những trải nghiệmchơi game mới mẻ, hấp dẫn và chân thực hơn cho người chơi
Đề tài nghiên cứu các thuật toán AI của NPC ra đời nhằm mục đích nghiên cứu
vào vận hành trong game Đề tài sẽ đi sâu vào tìm hiểu các kĩ thuật được sử dụng
trong việc lập trình một AI cụ thể là việc tìm kiếm người chơi Đồng thời, đề tài
cũng sẽ phân tích hướng đi và cách cải thiện các thuật toán, từ đó đưa ra đánh giá
và kết luận về các thuật toán được sử dụng
Lý do lựa chọn đề tài này xuất phát từ niềm đam mê với game và mong muốntìm hiểu về những thuật toán được sử dụng trong lĩnh vực này Việc tìm hiểu và
ứng dụng nó vào game 3D có thê mang lại nhiều lợi ích cho cả nhà phát triển game
và người chơi Do đó, nghiên cứu về đề tài này có ý nghĩa khoa học và thực tiễn.
1.2 Mục tiêu đề tài
Mục tiêu của đề tài là xây dựng một game 3D và áp dụng các thuật toán trongviệc tìm kiếm và theo đuôi người chơi Game sẽ được hoàn thiện ở mức độ có thểdemo được các tính năng cơ ban và các thuật toán AI Các thuật toán AI truy đuổingười chơi sẽ được nghiên cứu và tham khảo từ nhiều trò chơi khác nhau Dựa trênnhững gi đã tìm hiểu, các thuật toán này sẽ được xây dung và tái hiện trong game
Ngoài ra, đề tài còn mục tiêu tìm hiểu sâu về hành vi con người và áp dụng vàotriển khai các thuật toán nâng cao, nhằm làm cho AI trở nên giống con người hơn
Sự cân bằng giữa thuật toán và tính chơi được của game cũng sẽ được nghiên cứu
và điều chỉnh Cuối cùng, việc nghiên cứu các kiểu thuật toán khác nhau trong việc
tìm kiếm người chơi sẽ tăng thêm tính đa dạng cho trò chơi.
Trang 111.3 Đối tượng game hướng tới
Game này hướng tới những người yêu thích thể loại game kinh dị, có khả năng
tư duy cao và phản xạ tốt dé tính toán được những bước đi tốt nhất trong việc tránh
né kẻ thù, cũng như bât cứ ai muôn tìm cảm giác hôi hộp khi chơi game.
1.4 Đối tượng nghiên cứu
Đối tượng nghiên cứu của dự án này bao gồm người dùng và các công nghệ sau:
- Người chơi: Nhóm nay mong đợi trải nghiệm chơi game, vì game hướng tới là
thể loại game kinh di nên mục tiêu là tạo ra game có một độ khó nhất định để cóthé gây áp lực cho người chơi, đồng thời tìm hiểu về hành vi tâm lí con người dé cóthé cải thiện hơn về AI
- Trí tuệ nhân tạo (AI): AI được phát triển và sử dụng trong việc tìm kiếm, theo
đuôi người chơi, cộng theo tính ngẫu nhiên và tính “người” trong đó
- Các trò chơi kinh dị có sẵn: Tìm hiểu các thuật toán dựa trên các game có sẵn từ
đó có thể học hỏi, áp dụng
1.5 Các hướng nghiên cứu liên quan
Môi trường và kịch bản tương tác:
Tạo ra các môi trường game và kịch bản có tính tương tác cao để mang lại cảmgiác chân thực và sợ hãi cho người chơi Điều này đòi hỏi sự sáng tạo trong việcxây dựng bối cảnh và tình huống trong game, sao cho người chơi cảm nhận được
sự hồi hộp và bat ngờ liên tục
Âm thanh, hình anh và ánh sáng:
Nghiên cứu sâu về âm thanh, hình ảnh và ánh sáng nhằm tối ưu hóa trải nghiệm
kinh dị Việc sử dụng âm thanh đáng sợ, hình ảnh rùng rợn và ánh sáng yếu sé tăng
cường yếu tố kinh dị và làm cho người chơi cảm thấy căng thắng, hồi hộp hơn
Thu thập và phân tích dit liệu:
Thu thập di liệu từ quá trình chơi game dé hiểu rõ hành vi của người chơi Dữliệu này sẽ cung cấp cái nhìn sâu sắc về cách người chơi tương tác với các yếu tốkinh di trong game và hiệu quả của những yếu tổ đó
Tôi ưu hóa và cải thiện trải nghiệm:
Trang 12Sử dụng dữ liệu đã thu thập để tối ưu hóa độ khó của game, tạo ra các kịch bản
mới và cải thiện trải nghiệm người chơi Điều này giúp đảm bảo rằng game không
chỉ gây sợ hãi mà còn thú vị và thách thức người chơi một cách hợp lý.
1.6 Phạm vi đề tài
Phạm vi môi trường của đề tài này được xác định là các máy tính có hệ điều hành
từ Windows 10 trở lên Về mặt tính năng, game sẽ là một trò chơi 3D với góc nhìnthứ nhất (FPS), cho phép người chơi trải nghiệm một mình Gameplay của game sẽtập trung vào một màn chơi duy nhất nhưng có cấu trúc thay đổi mỗi lần chơi nhờ
vào việc sử dụng các kỹ thuật Random Number Generation (RNG).
Trò chơi hoàn chỉnh sẽ bao gồm nhiều chức năng khác nhau Hệ thống nhân vật
sẽ có hai loại: người chơi và kẻ thù, mỗi loại có chức năng và hành vi riêng biệt.
Hệ thống hitbox sẽ được thiết kế đa dạng, với các môi trường tinh như mặt đất,
tường và cửa có khả năng chặn người chơi Các hitbox của vật tương tác như đá
quý va máy ban hàng tự động sẽ được thiết kế để người chơi có thé tiếp xúc trựctiếp Hitbox của kẻ thù sẽ hoạt động tương tự với môi trường xung quanh như cách
người chơi tương tác, nhưng khi đụng phải người chơi sẽ dẫn đến tình trạng game
over Ngoài ra, hitbox của kẻ thù cũng sẽ được sử dụng đề phát hiện người chơi
Hệ thống tương tác trong game cho phép người chơi tương tác với các vật phẩm
hỗ trợ và item hoàn thành nhiệm vụ Hệ thống item va inventory sẽ cho phép ngườichoi thu thập và lưu trữ các vật pham trong inventory, mỗi vật pham sẽ có tác dụngriêng biệt, giúp người chơi tạo lợi thế trong game
Trang 13CHƯƠNG 2.CƠ SỞ LÝ THUYET2.1 Unity
2.1.1 Giới thiệu Unity
Unity là một nền tang phát triển game đa nền tang, được sử dụng dé tạo ra cácứng dụng trò chơi 2D và 3D cho nhiều thiết bị như máy tính cá nhân, console, điện
thoại thông minh, máy tinh bảng, va web Unity được biết đến với tinh dé sử dụng,
unity
Hinh 2.1 Logo Unity
2.1.2 Các thành phan cơ bản của Unity
linh hoạt và cộng đồng mạnh mẽ
Cảnh: Cảnh là một tập hợp các đối tượng đại diện cho một môi trường hoặc man
chơi trong game Unity hỗ trợ nhiều cảnh trong một dự án, cho phép bạn tạo ra
những thế giới game phức tạp.
Doi tượng: Đối tượng là đại diện cho các yếu tố cụ thé trong game, như nhân vật, vật phẩm, cảnh quan Mỗi đối tượng có thể có nhiều thành phần, thuộc tính và
hành vi riêng.
Thành phan: Unity sử dụng mô hình thành phan để tổ chức các đối tượng trong
game Mỗi thành phần có các thuộc tính và phương thức riêng, giúp quản lý và tái
sử dụng code dễ dàng.
Hệ thống sự kiện: Hệ thống sự kiện cho phép bạn kết nối các thành phần và đối
tượng khác nhau trong game Khi một sự kiện xảy ra, nó sẽ thông báo cho các đốitượng đã đăng ký dé thực hiện hành động phù hợp
Trang 142.2 Thuật toán AI cơ bản
2.2.1 Thuật toán A* ( Thuật toán tìm đường di )
2.2.1.1 Giới thiệu
Thuật toán A* được phát triển bởi Peter Hart, Nils Nilsson và Bertram Raphael
vào năm 1968 Đây là một thuật toán tìm kiếm thông minh sử dụng phương pháp
heuristic dé tối ưu hóa việc tìm đường Thuật toán này tìm kiếm đường đi từ điểmbắt dau (start) đến điểm dich (goal) trong một đồ thị bằng cách mở rộng các điểm(node) sao cho chi phí đường đi tổng cộng là nhỏ nhất
2.2.1.2 Nguyên lí hoạt động
Thuật toán A* sử dụng hai hàm chi phí chính:
g(n): Chi phí đường đi từ điểm bắt đầu đến node n
h(n): Hàm ước lượng chi phí từ noden đến điểm đích Hàm này thường được gọi
là hàm heuristic.
Thuật toán A* sử dung tổng chi phí ƒ(m) để đánh giá các node, được tinh bằngcông thức: [Ƒ{t) = g(n) + A(n)j Thuật toán sẽ mở rộng node có f(n) nhỏ nhấttrước, nghĩa là node mà tông chi phí ước lượng thấp nhất
Trang 152.2.1.3 Ưu và nhược điểm của thuật toán A*
Ưu điểm: Tìm được đường đi ngắn nhất, thông minh nhất
Nhược điểm: Tốn khá nhiều về mặt bộ nhớ và thời gian tính toán khi đồ thị quá
dạng.
2.2.2.2 Nguyên lí hoạt động
Thuật toán ngẫu nhiên có điều kiện hoạt động dựa trên việc phân chia xác suất
thực hiện các hành động khác nhau dựa trên điều kiện hiện tại của hệ thống, các
bước của nó như sau.
Xác định điều kiện: Xác định trạng thái hiện tại của đối tượng, ví dụ việc xác
định xem bản thân có đói không, có mệt không, có đang hăng hái không, các yếu
tố từ bên ngoài đang ảnh hưởng chúng ta như thế nào
Phân phối xác xuất: Dựa trên trạng thái hiện tại, phân phối xác suất cho các
hành động khác nhau Ví dụ: Khi ta đang đói:
e 30% sẽ chọn việc mua gi đó dé ăn
© 30% sẽ chọn việc mua gì đó dé uống
Trang 16Lựa chọn hành động
Di chuyển điểm ngẫu nhiên
Thực hiện hành động
Di chuyển điểm ngẫu nhiên
Hình 2.3 Sơ đồ hoạt động của thuật toán ngẫu nhiên có điều kiện
Trang 172.2.2.3 Ý nghĩa và ứng dụng trong trò chơi
Thuật toán ngẫu nhiên có điều kiện là một công cụ mạnh mẽ để tạo ra hành vi
động và khó đoán trong nhiều ứng dụng khác nhau Bang cách kết hợp xác suất và
điều kiện, thuật toán này giúp tăng cường tính thực tế và thử thách trong các hệthống mô phỏng và trò chơi
2.2.3 Thuật toán LOS ( Line of Sight )
2.2.3.1 Giới thiệu
Thuật toán LOS là một thuật toán dùng dé xác định xem một NPC có thể nhìnthấy người chơi hay không LOS được sử dụng rộng rãi trong các trò chơi để môphỏng tầm nhìn của NPC, giúp tăng tính thực tế và thách thức cho trò chơi
2.2.3.2 Nguyên lí hoạt động
Thuật toán LOS bao gồm 3 yếu tố:
Tầm nhìn ( Range of View ): Đây là khoảng cách tối đa mà NPC có thể nhìnthấy người chơi
Góc nhìn ( Field of View ): Đây là góc mà NPC có thê nhìn thay, thường là một
góc hình nón mở rộng từ vi trí của NPC.
Kiểm tra không có vật can ( Obstacle check ): Sử dụng Raycasting để kiểm
tra xem có vật can nao giữa NPC và người chơi hay không.
Quá trình kiểm tra LOS bao gồm ba bước chính Đầu tiên, tính khoảng cách giữaNPC và người chơi, và xác định hướng từ NPC đến người chơi Nếu khoảng cáchnày nhỏ hơn hoặc băng tầm nhìn của NPC, bước tiếp theo là kiểm tra góc giữahướng của NPC và hướng đến người chơi Nếu góc này nằm trong phạm vi gócnhìn đã định trước (field of view), hệ thống sẽ tiễn hành kiểm tra Raycast
Raycasting là kỹ thuật được sử dụng để xác định xem có vật cản nào trên đườngthắng giữa NPC và người chơi hay không Nếu không có vật cản nào và Raycasttrúng người chơi, điều đó có nghĩa là người chơi đã bị NPC phát hiện Ngược lại,nếu Raycast gặp phải vật cản trước khi đến người chơi, điều này cho thấy ngườichơi đang bị che khuất và không bị NPC phát hiện Kỹ thuật này đảm bảo rằng NPCchỉ phản ứng với người chơi khi thực sự có tầm nhìn trực tiếp và không bị cản trở
bởi các vật thê khác.
Trang 18Hình 2.4 Mô phỏng thuật toán LOS
Trang 192.2.4 Thuật toán xử lí hành vi bat thường
2.2.4.1 Giới thiệu
Hành vi bất thường là những hành vi không mong muốn hoặc không thể dự đoántrước xảy ra trong quá trình hoạt động của các thực thể trong game Các hành vinày có thé bao gồm:
Nhân vật bị kẹt: Khi nhân vật không thé di chuyển được do va chạm với các vậtthé khác hoặc do lỗi logic
Lỗi điều hướng: Khi nhân vật không thể tìm đường đúng tới đích
Hành vi không đồng bộ: Khi nhân vật thực hiện các hành động không phù hợp
với kịch bản hoặc sự kiện trong game.
2.2.4.2 Nguyên lí hoạt động
Thuật toán Xử lý Hành vi Bat thường dựa trên các kỹ thuật phát hiện va xử lý déduy trì trạng thái hoạt động bình thường của thực thé Các bước cơ bản của thuậttoán bao gồm:
Phát hiện hành vi bat thường: Sử dụng các điều kiện đề xác định khi nào mộtthực thé có hành vi bất thường
Đánh giá và phân loại: Xác định loại hành vi bất thường và mức độ nghiêm
trọng của nó.
Xử lý và khôi phục: Thực hiện các biện pháp để khôi phục trạng thái bình
thường của thực thé, chang han nhu thiét lập lai vi trí hoặc trang thai của thực thé.
2.2.5 Finite State Machine
2.2.5.1 Giới thiệu
Finite State Machine (FSM) là một mô hình toán học dùng đề thiết kế logic của
hệ thống, bao gồm các trạng thái và các chuyển đổi giữa các trạng thái đó Tronggame và lĩnh vực AI, FSM được sử dụng để quản lí hành vi của NPC, chia hành vi
phức tạp của NPC thành các trạng thái đơn giản và dé quản lí hơn.
2.2.5.2 Nguyên lí hoạt động
Các thành phần chính bao gồm:
States ( Trạng thái ): Đại diện cho các điều kiện cụ thê của đối tượng
Trang 20Transitions ( Chuyển đổi ): Các điều kiện dé chuyên từ trạng thái này sang
2.2.5.4 Ý nghĩa
Việc sử dung FSM sẽ giúp việc quản lí các trạng thái của đối tượng dé dang hơn,tránh việc gây ra lỗi, ngoài ra cũng có thé dé dang thay đổi các yếu tố cũng nhưđiều kiện dé có thé phù hop hơn
States C
Action A Condition 4
Hình 2.6 Sơ đồ mô ta FSM
Trang 21CHUONG 3.XAY DỰNG HỆ THONG GAME
3.1 Giới thiệu game
Mục tiêu: Người chơi can thu thập đủ các đồ vat ( đá quý ) dé có thé hoàn thành
game, cũng trong thế giới đó, sẽ có ba kẻ ác luôn canh giữ những đồ vật đó và truyđuôi người chơi, nhiệm vụ của người chơi là vừa sống sót vừa thu thập dé có thé
thoát khỏi trò chơi.
Bản đồ: Bản đồ gồm các thành phần chính như cửa, đồ vật hoàn thành nhiệm
vụ, đồ vật hỗ trợ, kẻ thù, điểm kết thúc trò chơi, điểm bắt đầu trò chơi, các bức
tường, được xây dựng trên nền tảng 3D, trên một mặt phẳng có chiều dài và rộng
bằng nhau
Trang 22Hình 3.3 Cánh công hoàn thành trò chơi
Trang 233.2 Hệ thống nhân vật
3.2.1 Người chơi
3.2.1.1 Thông tin tổng quan
Người chơi (Player) là nhân vật chính mà người chơi điều khiển trong trò chơi,
người chơi có thé tương tác với môi trường xung quanh, thu thập các vật pham, đối
phó với các kẻ thù và giải thoát khỏi bản đồ game Người chơi có thé thực hiệnnhiều hành động khác nhau như nhặt đồ, sử dụng vật phẩm, và di chuyền trong
không gian 3D của trò chơi.
3.2.1.2 Di chuyển
Người chơi sử dụng các phím W,A,S,D để đi chuyền lên, trái, xuống, phải,
camera của game được gắn vào phần đỉnh đầu của người chơi, con chuột dùng dé
điều chỉnh camera của người chơi Về căn bản, cách di chuyển tương tự như một
game FPS thông thường.
3.2.1.3 Khả năng và cơ chế hành động
Thu thập va quản lý vật phẩm: Người chơi có thé thu thập các vật phẩm nhưđồng xu, nước ngọt, gấu bông và lựu đạn choáng Mỗi vật phẩm có tác dụng vàcách sử dụng riêng biệt Hệ thống túi đồ của player cho phép chứa tối đa ba vậtphẩm cùng một lúc Khi một vật phẩm mới được thu thập, nó sẽ hiển thị trong túi
đồ của người chơi và có thé được lựa chon dé sử dụng
Ném vật phẩm: Người chơi có thé ném gấu bông/lựu đạn choáng với góc ném
điều chỉnh bằng hướng camera của người chơi Khi ném, vật phẩm hỗ trợ sẽ đượcném ra theo hướng đã xác định, các vật phẩm sẽ tương tác với môi trường xung
quanh như bật ra, và cuôi cùng là cham dat.
3.2.1.4 Tương tác với môi trường
Player có thê khám phá môi trường xung quanh, thu thập vật phâm từ các vị tríđịnh trước hoặc ngẫu nhiên Hệ thống camera giúp player tránh hoặc đối phó vớiNPC, NPC sẽ đuổi theo người chơi khi phát hiện
Trang 243.2.2 NPC ( Enemies )
3.2.2.1 Thông tin tong quan
NPC là nhân vat mà người choi cần phải né tránh, kẻ thù có khả năng tìm kiếm,truy đuôi, và bảo vệ những viên đá quý Có nhiều loại kẻ thù nhưng mặt bằng chungvẫn sẽ có những điểm chung như phương thức di chuyên, truy đuôi, tìm kiếm
3.2.2.2 Hành vi co bản ( hành vi chung )
Trạng thái bình thường ( Idle ):
Ở trạng thái bình thường, NPC di chuyền một trong hai địa điểm sau:
e Địa điểm chứa đá quý chưa được nhặt bởi người chơi
e Địa điểm bắt kì trên map có thé di chuyền.
NPC sử dụng thuật toán ngẫu nhiên có điều kiện để chọn địa điểm đi chuyền,
công thức được tính như sau:
10 x số đá quý con ton tại trên ban đồ
y = 100 - x(%)
Trong do:
X là tỉ lệ NPC sẽ chon vi trí chứa điểm đá quý dé di đến (sử dung thuật toán A*),
X có giá trị từ 0-80% tùy vào số đá quý còn lại trên bản dé
Y là tỉ lệ NPC sẽ chọn vị trí ngẫu nhiên trên bản đồ dé đi đến ( sử dụng thuậttoán A*),Y có giá trị từ 20-100% tùy vào số đá quý còn lại trên bản dé
Trạng thái truy đuỗi ( Chasing ):
Trạng thái truy đuôi xảy ra ngay khi người chơi kích thích điều kiện phát hiệncủa NPC Các điều kiện có thể là bị nhìn thấy hoặc bị nghe thấy, ở trạng thái truyđuôi, NPC sẽ dùng thuật toán A* dé di chuyển tới vị trí cuối cùng người chơi kíchthích điều kiện phát hiện NPC Trong quá trình truy đuổi, NPC sẽ cập nhật vị trí
cuối cùng nảy theo thời gian thực, đảm bảo vị trí luôn được cập nhật, đồng thời
NPC sẽ tăng tốc độ di chuyền so với trạng thái bình thường Một số NPC sẽ phat ratiếng động đe dọa, giúp người chơi có thé biết được mối đe dọa
Trong trạng thái truy đuổi, độ ưu tiên của việc truy đuôi sẽ theo thứ tự như sau:
Bị nhìn thay -> Gau bông -> Tiéng động người chơi chạy -> Tiếng động khác
Trang 25Khi có lớn hơn 1 yếu tố kích thích NPC vào trạng thái truy đuổi, NPC sẽ dựa vào
độ ưu tiên và di chuyên đến đó, mỗi kẻ thù sẽ có sự kích thích trang thái truy đuổikhác nhau, trong trò chơi này sẽ có ba yếu tố chính khiến người chơi bị phát hiện:
Tiếng động người chơi chạy: Khi người chơi chạy hoặc di chuyên nhanh trongvùng phát hiện của NPC nhất định, NPC sẽ nhận diện và di chuyển tới vị trí kíchthích cuối cùng đó
Bị nhìn thấy trong vùng phát hiện: Nếu người chơi lọt vào tầm nhìn và giữaNPC và người chơi không có vật cản, NPC sẽ nhận diện và di chuyên tới vi trí kíchthích cuối cùng đó
Tạo tiếng động trong vùng phát hiện: Các hành động như mở cửa, ném đồchơi sẽ tạo ra âm thanh, khi NPC có vùng phát hiện tiếp xúc với địa điểm tạo âmthanh, NPC sẽ nhận diện và đi tới những điểm đó
Trạng thái tìm kiếm ( Searching ) :
Trang thái tìm kiếm là một giai đoạn hậu của giai đoạn truy đuổi, xảy ra khi NPC
đã di chuyên tới vị trí cuối cùng của trạng thái truy đuổi và không có điểm kíchthích khác Các đặc điểm nồi bật của trạng thái tìm kiếm bao gồm:
Chu Kỳ Tìm Kiếm: Trạng thái truy đuổi sẽ kéo dai trong khoảng thời gian cỗ
định, cụ thể là 6 giây Trong suốt chu kỳ này, NPC sẽ chủ động tìm kiếm người
chơi trong khu vực mà chúng mat dấu
Phản ứng với kích thích mới: Trong khi đang ở trạng thái tìm kiếm, nếu NPC
nhận được bat kỳ kích thích mới nào như tiếng động hoặc nhìn thấy người chơi,chúng sẽ ngay lập tức chuyền lại trạng thái truy đuổi
Thuật Toán Tìm Kiếm: Mỗi loại NPC có thể sử dụng các thuật toán tìm kiếm
khác nhau, nhưng mục tiêu chung là di chuyển thông minh dựa trên hướng vi trícuối cùng mà người chơi được phát hiện Các thuật toán tìm kiếm có thể bao gồm
di chuyên theo các mẫu nhất định, kiểm tra các khu vực xung quanh
Chuyển về trạng thái bình thường: Khi kết thúc chu ky tìm kiếm mà không
phát hiện ra người chơi, NPC sẽ quay về trạng thái bình thường
Tốc độ di chuyến: Trong trang thái tìm kiếm, tốc độ di chuyền của kẻ thù thườngtương đương với tốc độ lúc truy đuổi
Trạng thái không bình thường ( Abnormal ):
Trang 26Trạng thái không bình thường xuất hiện khi kẻ thù gặp phải các tình huống bấtthường hoặc lỗi kỹ thuật, như bị kẹt hoặc không thé thực hiện hành vi theo dự định.Việc xử lý các trang thái không bình thường là cần thiết dé duy tri trải nghiệm mượt
mà cho người chơi Dưới đây là một số khía cạnh quan trọng của trạng thái không
bình thường:
Vấn đề: NPC đôi lúc sẽ bị kẹt ở một vị trí nào đó, có thể là do va chạm với vật
thể môi trường hoặc va chạm với NPC khác Trò chơi sẽ kiểm tra vị trí cuối cùngcủa kẻ thù trong một khoảng thời gian (4s) Nếu phát hiện thấy kẻ thù không dichuyền hoặc di chuyển rất it trong thời gian này, hệ thống sẽ xác định rằng kẻ thù
đang bị kẹt.
Biện pháp xử lí: Khi kẻ thù bị phát hiện trong trạng thái kẹt loại 1 ( kẹt quá 4s
và dưới 10s ) sẽ cho kẻ thù quay về trạng thái bình thường và di chuyền tới một vị
trí mới được chỉ định, khi kẻ thù bị kẹt loại 2 ( kẹt qua 10s ) sẽ reset lai vi tri của kẻ
thù ( sẽ có kiểm tra nếu điểm đó gần người chơi không )
Trường hợp đặc biệt: trong thuật toán tìm kiếm của kẻ thù “mù” và kẻ thù
“câm”, việc kẻ thù bị kẹt là một sự dự tính và không được tính là trường hợp bat
thuong.
Trang 27Người chơi bị phát hiện
————
Di chuyển ngẫu nhiên Di chuyển tới vị trí kích thích
Trạng thái bình thường Trạng thái truy đuổi
Người chơi bị phát hiện Người chơi bị phát hiện
Kết thúc chu kì tìm kiếm Tới địa điểm kích thích cuối cùng
3.2.3.1 Thông tin tổng quan
NPC "Mù" là một trong những đối thủ chính mà người chơi phải đối mặt trong
trò chơi “Mù” có khả năng phát hiện và theo dõi người chơi dựa trên chuyển động
và âm thanh, đặc biệt là khi người chơi chạy trong phạm vi phát hiện của nó.
Trang 283.2.3.2 Thuật toán phát hiện
Vùng phát hiện ( vùng nghe thay ) của NPC “mù” là một hình cầu rộng 15 đơn
vị map Khi người chơi đạt một vận tốc nhất định trong khu vực phát hiện của NPC
“mù”, cụ thể theo công thức sau, khi người chơi đã đạt vận tôc x:
x = runspeed — 0.375)
Người choi mở cửa / ném đô choi vào vùng phat hiện của kẻ thu cũng được coi
là một nhân tố kích thích sự phát hiện của NPC “mù”
Trang 293.2.3.3 Thuật toán truy đuổi
NPC “mù” có những đặc điểm của NPC khi ở trong trạng thái truy đuôi, khi truyđuôi, chúng sẽ phát ra tiếng động để đe dọa NPC “mù” vì không thể thấy nên thứ
tự ưu tiên của nó sẽ là:
Gau bông -> Tiếng động người chơi chạy -> Tiếng động khác
3.2.3.4 Thuật toán tìm kiếm
Kẻ thù “mù” sẽ suy luận vị trí có thé của người chơi bằng cách dùng chính hướng
của NPC với bản đồ khi đó dé quyết định hướng đi tiếp theo, khi tìm kiếm sẽ có hai
giai đoạn tương ứng với hai đường đi:
Lần một, sử dụng độ nghiêng của góc dé quyết định hướng đi tiếp theo ( trênxuống trái phải, vuông góc với bản đồ ), lần hai, sử dụng chính góc đó dé suy luận
và quyết định hướng đi tiếp theo nếu tại lần một NPC đã bị kẹt ( trường hợp đặc
biệt và không bị tính là NPC bị kẹt và reset).