1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật phần mềm: Tìm hiểu và phát triển các giải pháp sử dụng Map Generator để tự động tạo ra màn chơi cho game

59 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu và phát triển các giải pháp sử dụng Map Generator để tự động tạo ra màn chơi cho game
Tác giả Nguyễn Văn Thiện, Cao Phạm Tiến Anh
Người hướng dẫn ThS. Đinh Nguyễn Anh Dũng
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Kỹ thuật phần mềm
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố TP.HCM
Định dạng
Số trang 59
Dung lượng 53,75 MB

Nội dung

LỜI CẢM ƠNSau thời gian học tập xuyên suốt 4 năm tại Trường Đại học Công Nghệ Thông Tin thì chúng em đã thực hiện được khoá luận tốt nghiệp với đề tài “TÌM HIEU VA PHÁT TRIEN CÁC GIẢI PH

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẢN MÈM

NGUYÊN VĂN THIÊN - 20521952

CAO PHAM TIEN ANH - 20520380

Khóa Luận Tốt Nghiệp

CHO GAME

RESEARCHING AND DEVELOPING SOLUTIONS USING

MAP GENERATOR TO AUTOMATICALLY CREATE

GAME LEVELS FOR GAMES

CU NHAN NGANH KY THUAT PHAN MEM

GIANG VIEN HUONG DAN

THAC SĨ ĐINH NGUYEN ANH DŨNG

TP HO CHI MINH, 2024

Trang 2

LỜI CẢM ƠN

Sau thời gian học tập xuyên suốt 4 năm tại Trường Đại học Công Nghệ Thông Tin thì

chúng em đã thực hiện được khoá luận tốt nghiệp với đề tài “TÌM HIEU VA PHÁT

TRIEN CÁC GIẢI PHÁP SỬ DUNG MAP GENERATOR DE TỰ ĐỘNG TẠO

RA MÀN CHƠI CHO GAME”

Mặc dù gặp nhiều khó khăn trong quá trình thực hiện khóa luận nhưng nhờ nhận được

sự hỗ trợ tận tình từ những thầy cô, bạn bè tại trường đã giúp chúng em hoàn thành

được khoá luận lần này

Chúng em xin chân thành cảm ơn tất cả 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 đã chèo láicon thuyền đưa chúng em đến bến bờ tri thức Điều đấy là món quà vô giờ mà thầy cô

đã ban tặng, chúng em sẽ nhớ ơn thầy cô mãi sau này

Đặc biệt hơn, em xin gửi lời cảm ơn sâu sắc đến thầy ThS Dinh Nguyễn Anh Dũng,

người đã trực tiếp hướng dẫn, chỉ bảo Những lời nhận xét, góp ý rất đáng giá của thầy

đã giúp chúng em hoàn thành từng giai đoạn, mục tiêu đặt ra Những thứ thầy giúp đỡ

không chỉ giúp chúng em trong khoá luận mà còn là những kinh nghiệm quý báo cho chặng đường đời của chúng em trong tương lai.

Trong quá trình làm khoá luận, không thể tránh khỏi những sai sót Em mong thầy cô

giảng viên phản biện và hội đồng chấm thi có thể nhận xét để chúng em hoàn thiện

bản thân hơn nữa.

TP.HCM, 17 tháng 06 năm 2024

Nhóm sinh viên thực hiện

NGUYEN VĂN THIÊN

CAO PHAM TIEN ANH

Trang 3

MỤC LỤCChương 1 GIỚI THIEU DE TÀII - 2 2E E+SE+EE£EE£EEEEEE+EEEEEEEEEEEEEEEEEEEEEEEEEEErrkerreeg 2

1.2 ipìii0287n):0i11 10111777 3 2

1.3 Đối tượng sử dụng: - + ©5£ + z+Ex+EE2E19712112112111211211112111121121111111 11.1111 1 ee 5

1.4 Phương pháp thực hiỆn:: óc 1 1923199113301 1911 9119 1 111g nh TH HH ng nen 5

CHƯƠNG 2: CƠ SỞ LY THUYET VÀ CÔNG NGHỆ, 222¿555cs22cvcsccxvcsrr 7

2.1 lô Ắ . cccc 7 2.2 I/PDI€ 2/5 2n 8

2.2.1 Giải pháp Perlin ÌNOIS€: - Ác ST TH TT TH HH HH HH hệt 9

2.2.2 Giải thuật Tìm kiếm theo chiều rộng (BFS): - 2-2 ©5252+£E2E2EEeEEezEkerxerree 14 2.2.3 Giải thuật tìm kiếm A*: cờ 15 2.2.4 Đề xuất giải pháp tạo ra vùng tuần tra cho kẻ địch: 2- 2 sz©sz+s+zxz+zs+zxezsez 19

CHUONG 3: PHAN TÍCH THIET KE HE THONG GAME - -:-©-cc:c5sc:+: 21

3.1 Sơ đồ Use Casc: 2 xt À À 21

3.2 010010022 - 21

3.3 PB 1i8~100860I).0u 5 21 3.4 Danh sach dac ta USe Case? n8 3-4 22

3.5 Phân tích và thiết kế vòng đời game?.ccccecsccccsessessessessessesssessesssssessecsussseesecsusesessecsseeseess 33

CHƯƠNG 4: XÂY DUNG VA THIET KE GAME - 2 + sS£EE+E+E£EE+EeEE+EeErkerxred 34

4.1 Xây dựng hệ thống màn chơi: - ¿22 2£ 5S£25£2SE‡EE2EE£EEEEEEEEEEEEEEvEkerkerrerrkerree 34 4.2 Thiết lập nhân Vật: 2 2+S22S£ £+EE+E2EE2EE2EEE21717171717171711111111111 1.0 yXee 34 4.3 Thiết lập kẻ địch: -. 2-52 55£9S29EE9EE22E152121121121121121171121111211 11111111111 cre, 34 4.4 Thiết lập súng cho nhân vật chính: ¿22 + E+E+EE+EE+EE+EE£EEEEE+EE+EE+EEEEErExzrerrxee 35

4.5 Thiết lập boom ném cho nhân vật chính: - + +32 33+ EE+veveeereeerreerres 36

4.6 Thiết lập vũ khí cho kẻ địch: - 2-2 5£ 5£ E£EE£ÊEE£EE£EEEEEEEEEEEEEEEEEEEEEEEEEEEEErrkrrkrrei 37 4.7 Thiết lập các chướng ngại vật ở Map Xanh lá, Vang? cecceccessesseessesseessessecseessessessseeseess 38 4.8 Thiết lập các chướng ngại vật ở Map Xanh biỂn: 2-2 2 5£ E£+££+£x+£Eezzxerxres 40 4.9 Thiết lập các chướng ngại vật ở Map DO: ccecscsssessesssessesseessessesssessecseessessesssessesseesseeseess 41 4.10 Xây dựng đồ họa cho game? cccescsssessesssessesssessessessecssecsesssessessesssessecsesssessecsusssecsessseesecses 43 4.11 Xây dung đồ hoa các nhân vật cho game? ceccscccssesssecsessessessesssessessesssessessssssecsessseeseeses 43

4.12 Xây dựng giao din ØANC:: - - (SG 3119211311891 891 3191 91111111 1 11 11 1 1 HH nàng rệt 44

4.12.1 Giao diện Main Menu: - - -G 5< 3112211131211 111 9111110111119 111199 vn vn rưy 44 4.12.2 Giao dién Option (Cai 01007 45

4.12.3 Giao diện MAN ChOL? eeeececesscceessccesesscceesseccesseeceeseceeesseecesseeceeseeeeesseecesseeeesseeeessseeens 46

4.12.4 Giao dién Pause Game? nỶŸỶno 47

Trang 4

5.1 Kết qua dat GU C? cccccescsssessesssessesssessessessssssessucssessessusssessessuessessessusssecsusssessessusesessesaseeseess 49 5.2 Hạn ChẾ: (65h91 1E k3 1E 1 11 1111111111111 111111111111 1111111111111111111 11117111 49 5.3 Hướng phat triỀn: - 22 %5 £9SE+EE£EEEEEEEEEEE19E17112112717112117121171111 2111111 cc0 49

Trang 5

DANH SÁCH BANG

Bang 3.1: Danh 0 i90 21 Bang W28ẲÊ ¡i0 ¡9(80/ i n ' 22 Bang 3.3: Use case Mở màn hình chínhh - - s11 E911 1 911 v.v ng rưưt 23 Bảng 3.4: Use case Mở màn hình tạm dừng - + + + +2 E+*vEESkEeeeksreerseeererree 24 Bang m0 ).v.:.00ìii8i 3030 25 Bang 3.6: Use case Cai dat 0n 26

Bang 3.7: Use case Bắt đầu màn chơi mOi cececscccssseseeseesessessessessssessesssssesscseesesssssessesseees 28Bảng 3.8: Use case Tiếp tục chơi cceccecescsscsssessessesscsesssessessessessessessucssessessessessesscsecseanesseens 30

Bảng 3.9: Use case Thoát game cccccccessccessscesssecesseecesseeesseecseecesseeeseaeeceeeesseeeneneeesaees 31

Bang 3.10: Use case Điều khiển nhân vật chiến đấu với kẻ địch ¿ s+s+szszszxzx+z 32

Bảng 4.1: Bảng mô tả giao diện MainMenu c5 311913 1 1 9 vn re 45 Bang 4.2: Bảng mô tả giao diện Enter Code - 6 + S21 1231311931 1 11 1 v.v ng rưưt 46 Bảng 4.4: Bảng mô tả giao diện Pause Game - -G Sc SE 1993112 11191119 1 1v ke 47

Trang 6

DANH SÁCH HÌNH ẢNH

Hinh 2.1: Unity oe 7 Hinh 2.2: Map 5505x120 8

I§0)i0510.ár cà 0y 0 9 Hình 2.4: Khởi tạo các gradient V€CẦOT - c2 3321112311311 11111118 11111 111 ng ng vrt 10

Hình 2.5: Tính toán V€CfOT - - c1 9H HH re 11

Hinh 2.6: Ham 0a: 001017 12 Hình 2.7: Hình anh môi trường 000 ee eeeecccescceseeeesecesceesnecescensceceaeceaeeseaecsaeeseeeeaeeeseeeeaeenas 13 Hình 2.8: Mô phỏng thuật toán BFS hoạt động - ¿5 2c 312 EEESEseerrrserrrrxre 14

Hình 2.9: Điểm bắt đầu và kết thúc -+-+2+++tttEkktrrtErkrrtttttirrrtirrrriirrriirrrie l5

Hình 2.10: Cách thuật toán A* hoạt động - - 52+ S191 9 1 1 ng ng ket 16 Hình 2.11: Mô phỏng thuật toán A* hoạt động - 5 + tk EsvEEiksrreeerrserrke 18

Hình 2.12: Hình ảnh đặt bẫy dựa trên đường đi - ¿5 ¿5552 £S+E££E£E£EeEzxererrersred 19

Hình 2.13: Hình ảnh các vùng tuần tra -¿- ¿2-52 ©t+SE9EEE2EE2EE£EEEEEEEEEEEEEEEEEEEEkrrkerkrred 20

Hình 3.1: Sơ đồ Use Case tổng quát - + 2©22+2ESt£EE£EE#EEE2EEEEEEEEEEEEEEEEEEErkrrrerrrred 21

Hinh 3.2: So dé hoat động Mở màn hình chính 52 2c 23223 *+*£++£EE+evEseeEseesreeersss 23

Hình 3.3: Sơ đồ hoạt động Mở màn hình tạm dừng - 2 ¿+ + £+££+££+E££E+£++zzzzzzxe2 24Hình 3.4: Sơ đồ hoạt Ong Luu man 09:1 A1217 25

Hình 3.5: Sơ đồ hoạt động Cài đặt ¿+22 s+2k‡Sx‡EEEE2112112112217121111111 21111 re 26Hình 3.6: Sơ đồ hoạt động Bat đầu màn chơi mớii - 2 2 2+ £+££E£+E£+E2+£++z++zx+zxd 28

Hình 3.7: Sơ đồ hoạt động Tiếp 1u; 07777 (1+1 30Hình 3.8: Sơ đồ hoạt động Thoát game -2- 2 ¿+ £+E+SE+S£+E£+E£EE£EE+EEEEE+EEEeEEerxrrrrrerree 31Hình 3.9: Điều khiển nhân vật chiến đấu với kẻ địch -¿-cccc+cerrverrrrrerrrrre 32

Hinh 3.10: Vong di game 0 “4 33

Hình 4.1: Thiết lập nhân vat c.ccccccccsesscssessessescsesscsscsscsecsessessesscsucsucsessessssucsecsessessesecsecaveaes 34Hình 4.2: Thiết lập kẻ địchh - 2-2 2 £+E£SE£EE£EE2EE+EEEEEEEEEEEE12121212111211211121 111 xe 35Hình 4.3: Thiết lập súng cho nhân vật chính - - 2 ¿5£ £+ E2 EE+EE£EE£EE+EEzE2EzExzrxrred 36Hình 4.4: Thiết lập boom cho nhân vật chính ¿22 2£ £+EE+EE££E£E+EzEzzzzrxered 37

Hình 4.5: Thiết lập vũ khí cho kẻ địch 2-5: x£2S£££E++EE£EEE+EEEEEtEEzExerkesrxrrrree 38

Hình 4.6: Thiết lập thuộc tính cho Bay hồ - 2:52 £2S££S££EE£EE£EEeEEEzEzEerrerrered 38Hình 4.7: Thiết lập thuộc tính cho Bay búa - 2-5: ©5£25£2S£2EE2EE£EEtEEtEEEzEzErreerxered 39Hình 4.8: Thiết lập thuộc tính cho Bay lầy - - ¿22 2©5££S£+EE£EE£EECEEEEEzErrrrrxered 40

Hình 4.9: Thiết lập thuộc tính cho Boom băng - 2-22 + ©5£++£2££+£E++E+tzx++rxezrzee 40

Hình 4.10: Thiết lập thuộc tính cho Tang băng đây + ¿2 s52 £+E£Ee£Ee£xzEzrerxee 41

Trang 7

Thiết lập thuộc tính cho Mưa băng rơi 2¿- 2© 2 +EE+EEeEEeEEeEEEzExzrxerxees 4I

Thiết lập thuộc tinh cho Boom lỬa - s1 * SE E*vkveEeekEseesekrskeerkre 42

Thiết lập thuộc tinh cho U súng phun lửa - 2 2 ©5225£££££2£+2x++zxzzzed 42

Thiết lập thuộc tính cho Thảm lửa - - 5-2 2 2+EEE£EE£EE2E£Ee£EeEEeEEzEerxeei 43

Hình ảnh trạng thái của nhân Vật - 2 322 3311131135131 eerrre 44 Giao diện MainMenu - 5 5 211111111111119295331 11111 1kg 925511 reo 44 Giao diện Option (Cai dat) G1 11g ng ng ng ng 46 Giao diện Màn CƠI c2 E2 32 22111E1 325318881 E538 E 119311 E1 9311 ng rrrey 47 Giao dién Pause Game 1 47

Trang 8

DANH TỪ VIẾT TẮT

BFS Breadth First Search Tim kiếm đối tượng theo

chiêu rộng

Trang 9

TOM TAT KHÓA LUẬN

Đề tài “TÌM HIÊU VÀ PHÁT TRIÊN CÁC GIẢI PHÁP SỬ DỤNG MAP

GENERATOR DE TỰ ĐỘNG TẠO RA MAN CHƠI CHO GAME?” là một game giải trí

ban súng tiêu diệt kẻ địch, với nhiều màn chơi hap dẫn va da dang trong các chướng ngại

vật đem lại những trải nghiệm thú vị cho người chơi.

Việc áp dụng Map Henerator giúp tăng tính đa dạng và hấp dẫn của các môi trườngchơi Điều này không chỉ giảm thiểu công sức và thời gian phát triển màn chơi mà còn mở

rộng khả năng mở rộng và cập nhật nội dung trong suốt vòng đời của trò chơi Qua đó,

mong rằng đề tài này sẽ đóng góp một phần nào đó vào lĩnh vực phát triển game trong việc

nâng cao trải nghiệm người chơi.

Cấu trúc báo cáo bao gồm:

- _ Chương 1: Giới thiệu đề tài

- _ Chương 2: Cơ sở lý thuyết và công nghệ

- _ Chương 3: Phân tích thiết kế hệ thống

- Chương 4: Xây dung giao diện game.

- Chương 5: Kết luận

Trang 10

Chương 1 GIỚI THIỆU ĐÈ TÀI

1.1 Tổng quan:

- Ngày này, nhu cầu giải trí bằng game trên thế giới nói chung và Việt Nam nói riêng

hiện này rất lớn Đối tượng sử dụng từ người trẻ đến người già Tại Việt Nam, có khoảng

hơn nửa dân số Việt Nam đã và đang tiếp cận với game và chiếm khoảng 65% từ độ tuổi

17 đến 30, nhất là thời kỳ covid thì lượng người chơi còn tăng đột biến hơn Hơn thế, thị

phần doanh thu của ngành công nghiệp game ở Việt Nam hiện nay vượt qua 500 triệuUSD Tắt cả điều cho thấy ngành công nghiệp game dang lớn mạnh lên từng ngày

- Người chơi càng tăng, sự cạnh tranh của các nhà phát triển càng lớn Song song, việc

tạo dựng một game tốn nhiều thời gian cho các khâu khác nhau, chúng ta cần phải tìm

cách giảm bớt, tự động hoá dan dé tiết kiệm được thời gian và công sức

- Việc tạo ra nhưng game có màn chơi phong phú, đa dạng giúp thu hút thêm những

tệp người chơi là những yếu tốt then chốt tạo nên sự thành công của game đó Tuy nhiên,

việc tạo thủ công ra nhiều màn chơi gây mat nhiều thời gian và công sức Do đó, việc sử

dụng những phương pháp, thuật toán giúp quá trình ấy tự động hoá, linh hoạt hơn rất cần

thiết

- Mục đích của đề tài này là nghiên cứu áp dụng các thuật toán, giải pháp từ MapGenerator để tạo ra những thử thách trong game trở nên đa dạng, giúp sự trải nghiệm của

người chơi phong phú, hấp dẫn hơn Thông qua việc tìm hiểu và áp dụng Map Generator

dé tự động tạo màn chơi cho game, nhóm chúng em hy vọng sẽ nâng cao chất lượng vahiệu quả trong quá trình phát triển game

1.2 Phạm vi thực hiện:

Phạm vi môi trường: Game được chạy trên hệ điều hành Windows hay macOS

Phạm vi chức năng

- Đối với game:

+ Game 3D, góc nhìn bao quát từ trên xuống

- Đối với gameplay:

Trang 11

+ Game ban súng map rộng, hạ được kẻ địch và né các chướng ngại vật sẽ hoàn

thành màn chơi va qua man mới.

+ Các màn chơi có độ khó tăng lên qua từng màn và từng dạng map.

+ Các chức năng chính trong game:

e Hệ thống người chơi: là nhân vật chính trong game, ta có thể chọn nhân vật

khác nhau với loại súng khác nhau.

o Di chuyên: người chơi có điêu khiên nhân vật di chuyên băng các phim

WASD hoặc các phím mũi tên.

o Tân công: người chơi có thê băn ra những viên đạn theo hướng bang

chuột.

e Hệ thống kẻ địch: các kẻ địch khác nhau sẽ gây ảnh hưởng sát thương khác

nhau đên người chơi.

Tân công: khi chạm vào được người chơi nó sẽ phát nô, gây sát

thương cho người chơi và nó cũng chết

Trang 12

o Kẻ địch cam súng lục có khiên:

= Di chuyền: nó sẽ tuần tra xung quanh nơi nó xuất hiện, khi gặp

người chơi nó sẽ đuổi theo người chơi và tan công

= Tấn công: khi vào tầm tan công, nó sẽ ban súng gây sát thương

cho người chơi.

= Khả năng riêng: có thé tạo khién chắn đạn của người chơi

o Kẻ địch cầm súng boom:

“Di chuyên: nó sẽ tuần tra xung quanh nơi nó xuất hiện, khi gặp

người chơi nó sẽ đuôi theo người chơi và tấn công

= Tấn công: khi vào tầm tan công, nó sẽ ban súng gây sát thương

cực lớn vao | vùng.

e Hệ thống chướng ngại vật: các chướng ngại vật sẽ gây khó khăn cho người

chơi, các map khác nhau sẽ có chướng ngại vật khác nhau.

o Map đỏ:

= Các u súng sẽ phun lửa vào một hướng và một thoi gian nhất

quán, khi người chơi đi qua sẽ bị mất máu

» Thảm lửa: Thảm lửa sẽ gây sát thương liên lục cho người chơi

khi đứng trên đó buộc người chơi phải đi hướng khác hoặc chịu

mat một lượng máu

= Boom lửa: sát thương n6 gây ra khi người chơi va chạm có hiệu

ứng thiêu rụi, gây mất máu liên tục trong một khoảng thời gian

ngắn sau đó

o Map xanh nước:

= Mưa băng rơi: Sau một thời gian nhất định các cột băng sẽ đồ

xuống theo góc nghiêng Nếu người chơi đi qua lỡ va chạm sẽ

gây sát thương, choáng và làm mât máu người chơi.

Trang 13

= Tang băng đây: xuất hiện tang băng đây qua lại khi người chơi

đi ngang sẽ bị cuốn đây theo chiều của nó mà không thể di

chuyên

" Boom băng: khi va chạm sẽ khiến người bị mat máu kèm hiệu

ứng bị làm chậm trong một thời gian ngăn

o Map xanh lá, vàng:

= Bay hó: Hồ sâu sẽ được làm mờ đi một tý, khi người chơi đi qua

bay sẽ nứt dần ra và khiến người rơi xuống vực va mat mạng

= Bay bua: Cây búa sẽ đập quanh qua qua lại 180 độ khiến người

chơi bị mất một lượng máu và đây ra xa khi va chạm, ở cuối

đoạn va chạm người chơi sẽ bị choáng một thời gian ngắn.

= Bay lay: Tạo những bãi lầy hình tròn khiến người chơi khi đứng

trên đó sẽ liên tục bị mất máu và làm chậm

e Hệ thống máu: Người chơi sé bi mat máu khi bị kẻ địch tan công hoặc va chạm

với chướng ngại vật Hon thé, khi người choi di chuyển ra khỏi phạm vi chophép (rơi xuống vực) người chơi sẽ hết máu ngay lập tức Nếu hết máu, người

chơi sẽ thua Người chơi có thé tìm giết các kẻ địch, đôi khi sẽ rơi ra viên hồi

phục mau.

e Hệ thống kết thúc màn chơi: khi người chơi chết có thé chơi lại, hoặc trở về

màn hình chính.

e Hệ thống màn chơi mới: khi người chơi tiêu diệt hết kẻ địch ở màn chơi hiện

tại sẽ xuất hiện một cánh công dịch chuyền cho phép người chơi khi chạm vào

sẽ tiến đến màn chơi mới

1.3 Đối tượng sử dụng:

- Tất cả người chơi muốn giải trí với game

1.4 Phương pháp thực hiện:

Phương pháp làm việc:

Trang 14

- Làm việc nhóm với 2 thành viên, dưới sự chỉ dẫn của giảng viên hướng dẫn.

Phương pháp công nghệ:

- Tìm hiểu cách làm việc với Unity

- Tìm hiểu các thực toán áp dụng cho Map Generator

- Sử dụng Trello dé quản lý tiến độ và công việc

- Sử dụng Github dé quan lý source code

Trang 15

CHƯƠNG 2: CƠ SỞ LÝ THUYÉT VÀ CÔNG NGHỆ

2.1 Unity:

Xã Unity

Hinh 2.1: Unity

- Unity là một công cu phat trién game da nền tang được phát triển bởi Unity Technologies

từ năm 2005 Unity hỗ trợ đồ họa 2D va 3D, ngôn ngữ lập trình được sử dung chủ yếu là

ngôn ngữ C#.

- Đa nền tang: Unity có thé duoc dung dé tao game cho máy tính, điện thoại, console

và web Unity cũng hỗ trợ các nền tảng thực tế ảo và thực tế tăng cường Unity cung

cap một môi trường làm việc trực quan va linh hoạt hơn so với đa sô các engine khác.

- Công cụ: Unity cũng cung cấp nhiều công cụ cần thiết trong quá trình phát triển game

Animator, Timeline, Cinemachine Unity cũng có một Asset Store lớn, người dùng

có thể mua hoặc tải về miễn phí các tài nguyên như mô hình 3D, âm thanh, vật lý,

AI,

Trang 16

- Cộng đồng: Một điểm mạnh khác là Unity cũng có một cộng đồng lập trình viên rất

đông dao và nhiệt tinh, nơi có thé học hỏi, trao đôi kinh nghiệm và giải quyết các van

đề khi phát triển game một cách đa dang và nhanh chong Unity cũng có tổ chứcnhững khóa học hay sự kiện và cuộc thi nâng cao kỹ năng cộng đồng và tạo môi

trường giao lưu với các nhà phát triển khác

- Bên cạnh đó Unity là một công cụ phát triển game rất mạnh mẽ và phổ biến, đã được

dùng dé tạo ra nhiều game nổi tiếng như Among Us, Fall Guys, Genshin Impact,

2.2 Map Generator:

Map generator trong lập trình game là tap hợp các giải pháp cho phép tạo va quan lý

các loại hình bản đồ, địa hình và đối tượng một cách tự động, giúp tiết kiệm thời gian

cho các nhà phát triển game

Hinh 2.2: Map generator

Dé tạo ra một man choi cho game bao gôm nhiêu bước thực hiện:

Trang 17

- Ap dụng giải pháp Perlin Noise được sử dụng dé tạo ra một ma trận chứa các giá trị

noise, từ đó dựa vào các giá tri noise xác định được địa hình như mặt dat và vực thăm phụ thuộc vào đặc tả game.

- Ap dụng giải thuật BFS dé tìm ra các mảng kiến tạo, đồng thời tìm ra các vùng rơi

trong mảng kiến tạo đó

- Ap dụng giải thuật A* đê tìm ra đường đi ngăn nhât giữa điêm xuât hiện nhân vật chơi và điêm qua màn mới Từ đó sinh ra các yêu tô chướng ngại vật cũng như quái vật trên đường đi của nhân vật chính.

- Đề xuất một giải pháp mới, từ đó, áp dụng vô đề tạo ra các vùng tuần tra cho kẻ địch

2.2.1 Giải pháp Perlin Noise:

- Đầu tiên khởi tạo một ma trận 2 chiều có kích thước là n x n

- Tạo các tọa độ ngẫu nhiên (x, y) tương ứng với mỗi ô vuông Ví dụ tại ô

vuông đầu tiên, giá trị x = 0 + offset (offset là giá trị ngẫu nhiên), tương tự

VỚI gia tri y và các tọa độ khác.

9

Trang 18

- Khởi tạo ma trận 2 chiều gồm các gradient vector tương ứng với mỗi điểm

trong ma trận Vì các vector này đêu ngau nhiên nên có thê dan tới địa hình của map sẽ không tự nhiên Vì vậy, làm cách nào chúng ta tạo ra địa hình

Hinh 2.4: Khoi tao cac gradient vector

- Xét từ một hình vuông chứa toa độ (x, y) bất kỳ, ta sẽ thu được tọa độ các

góc của nó gồm: (xạ, Vo) (Xt) Vạ) (Xt V1)» (Xo, yị) như trên Hình 2.3 Và

các gradient vector: Øo,o› Ø[t,o]› Ø1,+J› Jfo,1] tương ứng như Hình 2.5 Từ

đó sẽ tính toán các vector chỉ phương tương ứng:

f[o,o = (x,y) — (#o,o) Po,1| = (x,y) — (Xo,\) Ứ[11] = (x,y) — (XI,¡) PỊ1,oỊ = (x,y) — (%1, Yo)

10

Trang 19

Smoothing /Interpolation

- Từ từng góc của hình vuông sẽ tính toán được sự thay đổi về chiều cao, nó

sẽ đại điện cho chiều cao tại tọa độ (x, y) do tác động của gradient vector

Ví dụ tại góc (xạ, Vo) nếu [o,oị cùng chiều với Øịo,o¡ thì phía đó dang cao

lên Còn nếu ngược chiều thì phía đó đang thấp xuống Các phép tính toánliên quan tới vector mà chúng ta đã học, thì phép nhân hai vector giải quyết

chính xác việc này Từ đó ta tính được các giá trị vô hướng sau:

địo,o] = tịo,o| - Ø[o,o]

địo+] = to - Øịo,1]

địa] = t1] - ỞỊ1,1]

địt, = to] - 9[1,0]

11

Trang 20

- Từ đó xuất hiện van dé bat cập khác, nếu càng xa tọa độ (x, y) thì giá trị

càng lớn Nhưng chúng ta muốn hiệu ứng gradient này ít tác động khi nó xa

tọa độ (x, y) Dé thực hiện điều này, tác giả đã định nghĩa hàm Fade Đây làhàm có đầu vào là biến t, thì hàm này sẽ bằng 0 khi t = 0 và sẽ tiến tới 1 khi

t= 1 Ban đầu Perlin quyết định sử dụng hàm bậc ba để giải quyết vấn đề

này Fade(t) = 3t? — 2t3 (phương trình này có đạo ham bằng 0 tại t = 0

va t= 1, vì thé nội suy của nó sé trơn tru) Sau đó, Perlin nhận ra ham nay

có đạo ham bậc hai khác 0 tại t= 0 và t = 1, nên ông đã quyết định sử dụng

hàm Fade cải tiến sau:

Fade(t) = 6tŠ — 15t*+ 10t

il a

The fade function

w(t) = 6 — 15t* + 103

hàm Joint Fade kết hợp doc theo x và y:

JointFade(x,y) = Fade(x) Fade(y)

- Chúng ta phải áp dung ham Joint Fade cho từng góc tương ứng của toa độ

(x, y) đang xét Ví dụ chúng ta muốn fade cho địo,o| tại góc bên trái dưới

12

Trang 21

cùng của tọa độ Chúng ta muốn ảnh hưởng của góc này tăng lên khi x tiếntới 0 bằng cách sử dụng trọng số Fade(1 — x) Tương tự chúng ta muốn

ảnh hưởng của góc này tăng lên khi y tiến tới 0 băng cách sử dụng trọng sốFade(1 — y) Bang cách áp dụng kết quả trên cho các góc khác của tọa độ,

chúng ta thu được ham Noise như sau:

Noise(x,y) = JointFade(1 — x, 1 — y) địo,gị + JointFade(x, 1 — y) địi oị

+ JointFade(1 — x,y).dịo+ị + JointFade(x,y) địi,+

Từ ma trận chứa các giá tri noise trên, ta có thể tạo ra một môi trường cơ

bản bằng cách quy định như sau:

+ Nếu giá tri noise lớn hơn hoặc bằng 0.5 thì vùng đó là mặt đất

Hình 2.7: Hình ảnh môi trường.

13

Trang 22

2.2.2 Giải thuật Tìm kiếm theo chiều rộng (BFS):

- Tim kiếm theo chiều rộng (BFS) là một thuật toán dé duyệt đồ thị hoặc cây BFS

áp dụng cho cây và đồ thị gần như giống nhau Sự khác biệt duy nhất là đồ thị có thé chứa các chu trình, vì vậy chúng ta có thé duyệt lại cùng một nút.

- Để tránh xử lý lại cùng một nút, chúng ta sử dụng mang boolean đã truy cập,

mang này sẽ đánh dấu các đỉnh đã truy cập BFS sử dụng cấu trúc dữ liệu hàng đợi (queue) dé tìm đường đi ngắn nhất trong biểu đồ.

- Triển khai BFS tiêu chuẩn sẽ đặt mỗi đỉnh của đồ thị vào một trong hai loại:

visited, not visited Mục đích của thuật toán là đánh dấu mỗi đỉnh là đã thăm dé

tránh các chu trình.

- Cách thuật toán hoạt động như sau:

+ Lấy một đỉnh bất kỳ trong đồ thị thêm vào cuối hàng đợi.

+ Lấy phân tử đầu tiên của hàng đợi và thêm nó vào danh sách đã duyệt.

+ Tao một danh sách các đỉnh liền kề của đỉnh đang xét.

+ Thêm những đỉnh không có trong danh sách đã duyệt vào cuối hàng đợi.

+ Tiếp tục lặp lại bước 2 và 3 cho đến khi hàng đợi trống.

14

Trang 23

- Tw thuật toán này, chúng ta sẽ tim được các mảng kiến tạo cũng như những

vùng rơi trong các mảng kiến tạo đó đề thuận tiện cho việc tính toán sau

này.

- Trich xuất mảng kiến tạo lớn nhất dé đặt các đối tượng game vào Lay 10%

phần tử đầu tiên của mảng, sau đó chọn bất ky 1 điểm, từ đó ta có được

điểm bat đầu Tương tự, lay 10% phan tử cuối cùng của mảng, chon bat kỳ

1 điểm, từ đó ta có được điểm kết thúc

- A* (phát âm là "A star") là một thuật toán máy tinh được sử dụng rộng rai trong

việc tìm đường và duyệt đồ thị Thuật toán này vẽ một cách hiệu quả một đường

đi có thể đi được giữa nhiều nút hoặc điểm trên đồ thị.

15

Trang 24

- Cách thuật toán A* hoạt động: hãy tưởng tượng một lưới vuông có nhiều chướng

ngại vật, nằm rải rác ngẫu nhiên Ô đầu tiên và ô cuối cùng được cung cấp Mục

tiêu là đên ô cuôi cùng trong thời gian ngăn nhat.

+ Hàm đánh giá f(n): Đây là hàm đánh giá tong chi phí dé di từ điểm

xuất phát đến điểm đích qua một nút n Hàm này được tính bằng tổngcủa hai thành phần:

° g(n): Chi phí thực tế từ điểm xuất phát đến nút n

° h(n): Hàm heuristic, ước tính chi phí từ nút n đến điểm đích

° f(n) = g(n) + h(a).

+ Ham heuristic h(n): Day là một hàm ước tinh chi phi đi từ nut n đến

điểm dich Ham heuristic phải đáp ứng tính chat "admissible", nghĩa là

nó không được đánh giá quá cao so với chỉ phí thực tế Một hàm

16

Trang 25

heuristic phổ biến là khoảng cách Euclidean (đường chăng) giữa nút n

và điểm đích

- Thuật toán A* hoạt động như sau:

+ Khởi tạo một hàng đợi ưu tiên (priority queue) để lưu trữ các nút cần

z

xét.

+ Đưa điểm xuất phát vào hàng đợi ưu tiên với giá trị f(n) = h(n) (vì g(n)

= 0 tại điểm xuất phát)

+ Lap lại các bước sau:

° Lay nút có giá trị f(n) nhỏ nhất từ hàng đợi ưu tiên Đây là nút

ưu tiên cao nhât đê xét.

° Nêu nut này là điêm đích, két thúc thuật toán và trả vê đường di

tìm được.

° Nêu không, mở rộng nút này băng cách tạo ra các nút con (các

nút kề với nút hiện tai) và đưa vào hang đợi ưu tiên với giá tri

f(n) tương ứng.

+ Nếu hàng đợi ưu tiên trống và không tìm thấy đường đi, kết thúc thuật

toán và báo không có đường đi.

17

Trang 26

2) =‡= f(a)=1.5 + 4

: l t(d)=2 + 4.5

4

Hình 2.11: Mô phỏng thuật toán A* hoạt động

- Từ thuật toán này, ta sẽ tìm được đường đi ngắn nhất từ nơi bắt đầu và nơi

kết thúc Sau đó, chúng ta sẽ đặt các bẫy xung quanh đường đi này

18

Trang 27

2.2.4 Đề xuất giải pháp tạo ra vùng tuần tra cho kẻ địch:

- Tw các dữ liệu tinh toán bên trên, chúng ta lay ra mảng kiến tạo mà nơi đó

đặt điểm bắt đầu và kết thúc Từ đó, phân chia mảng kiến tạo này thành 5phan Ở mỗi phan ngoại trừ phan đầu tiên, ta lay 10 điểm không trùng nhau,

và khoảng cách giữa các điểm này phải lớn hơn 3 Từ đó, ta thu được 4

vùng tuần tra (các đường kẻ màu đỏ) lớn như hình bên dưới Kẻ dịch sẽđược trải đều trên các vùng này, và chúng sẽ tuần tra trên các vùng tương

ứng mà chúng được đặt.:

19

Trang 28

- Ưu điểm của giải pháp này là:

+ Làm cho hành vi của kẻ địch khó đoán, vì chúng tuần tra ngẫu

nhiêntrên khu vực mà chúng thuộc.

+ Tạo sự bất ngờ, mô phỏng hành vi di chuyển thực tế

- Nhược điểm của giải pháp này là đôi khi có thé dẫn đến việc tập trung quá

nhiêu ở một sô khu vực nhât định, bỏ sót các khu vực khác.

20

Trang 29

CHUONG 3: PHAN TÍCH THIET KE HE THONG GAME

3.1 Sơ đồ Use Case:

3.2 Danh sach Actor:

Bang 3.1: Danh sách Actor

STT Tén Actor Mô tả ngan/ ghi chú

1 Người chơi Người chơi trò chơi

2 Hệ thống Hệ thống của trò chơi

3.3 Danh sách Use case:

21

Ngày đăng: 06/12/2024, 15:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w