phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp

132 0 0
Tài liệu đã được kiểm tra trùng lặp
phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệ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

Trò chơi này yêu cầu người chơi phải xây dựng đội hình, nâng cấp các nhân vật và kỹ năng hợp lý cùng với khả năng điều binh khiển tướng để có thể đối phó với các đợt tướng của kẻ địch..

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM

TRẦN ANH KHOA THÁI CHÍ BẢO

KHÓA LUẬN TỐT NGHIỆP

PHÁT TRIỂN GAME CHIẾN THUẬT THỦ THÀNH ONLINE MULTIPLAYER

Developing an online multiplayer tower defense strategy game

KỸ SƯ/ CỬ NHÂN NGÀNH KỸ THUẬT PHẦN MỀM

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM

TRẦN ANH KHOA – 19521700 THÁI CHÍ BẢO – 19521256

KHÓA LUẬN TỐT NGHIỆP

PHÁT TRIỂN GAME CHIẾN THUẬT THỦ THÀNH

Developing an online multiplayer tower defense strategy game

KỸ SƯ/ CỬ NHÂN NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN TRẦN THỊ HỒNG YẾN

Trang 3

THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin

Trang 4

LỜI CẢM ƠN

Khóa luận tốt nghiệp với đề tài “PHÁT TRIỂN GAME ONLINE CHO 2 NGƯỜI CHƠI” 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, nhóm 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è

Nhóm 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 dắt tôi 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 bản thân sau này

Nhóm em xin được gửi lời cảm ơn sâu sắc đến ThS Trần Thị Hồng Yến, người đã trực tiếp hướng dẫn, chỉ bảo Những lời khuyên hữu ích của cô đã giúp nhóm 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 nhóm em trong từng chặng đường đời

TP.HCM, 30 tháng 12 năm 2023 Nhóm sinh viên thực hiện

TRẦN ANH KHOA – THÁI CHÍ BẢO

Trang 5

2.1.2 Tại sao nên sử dụng Godot: 8

2.1.3 Nghiên cứu và áp dụng Godot trong đồ án: 9

Trang 6

2.8.1 Battlefield (battlefield): 14

2.8.2 Power scale (power_scale): 14

2.8.3 Instant spawns (instant_spawns): 14

2.8.4 Spawn patterns (spawn_patterns): 14

Trang 7

2.12.2 Sức chứa Kho bạc: 21

2.12.3 Sức chống cự Thành Chó: 21

2.12.4 Nghiên cứu và phát triển: 21

2.12.5 Phù thủy canh thành Gandolfg: 22

2.14.6 Nhân vật – Mèo biết bay: 29

2.14.7 Chi tiết các nhân vật Chó: 30

2.14.8 Chi tiết các nhân vật Mèo: 35

Hệ thống trận đấu online: 39

Hệ thống bắn đạn danmaku: 41

Chương 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG GAME 44

Sơ đồ Use case 44

Danh sách Actor 45

Danh sách Use case 45

Trang 8

Danh sách đặc tả Use case 46

Phân tích và thiết kế cơ sở dữ liệu 85

Mô tả dữ liệu 86

Chi tiết dữ liệu 87

Chương 4 XÂY DỰNG GAME 93

Xây dựng đồ họa game: 93

4.1.1 Đồ họa nhân vật trong game: 93

4.1.2 Đồ họa hình ảnh game: 95

Xây dựng giao diện game: 96

4.2.1 Giao diện start game: 96

4.2.2 Giao diện hướng dẫn 98

4.2.3 Giao diện Căn cứ Chó 99

4.2.4 Giao diện nâng cấp 100

4.2.5 Giao diện cửa hàng 103

4.2.6 Giao diện bản đồ 104

4.2.7 Giao diện đội hình 105

4.2.8 Giao diện trận đấu 106

4.2.9 Giao diện dừng trận đấu 107

4.2.10 Giao diện sảnh chờ: 108

4.2.11 Giao diện phòng chờ: 110

4.2.12 Giao diện cài đặt: 111

4.2.13 Giao diện điều khiển: 113

4.2.14 Giao diện credits: 114

Chương 5 KẾT LUẬN 115

Trang 10

DANH MỤC HÌNH

Hình 2.1: Godot 8

Hình 2.2: Silent Wolf 9

Hình 2.3: Steamworks 10

Hình 2.4: Mẫu file json thiết lập trận đấu 16

Hình 2.5: Gandolfg và tầm đánh của Gandolfg (minh họa) 22

Hình 2.6: Sơ đồ finite state machine của nhân vật 25

Hình 2.7: Tầm đánh và tầm ảnh hưởng đòn đánh của Chó Thiên Thần 27

Hình 2.8: Tầm ảnh hưởng đòn đánh của Chó Bắn Tỉa 28

Hình 2.23: Mèo Tiên Hoa Hướng Dương 39

Hình 2.24: Minh họa bắn đạn danmaku 1 42

Hình 2.25: Minh họa bắn đạn danmaku 2 42

Hình 3.1: Sơ đồ Use case tổng quát 44

Hình 3.2: Sơ đồ hoạt động xem đội hình/ kỹ năng/ vật phẩm 46

Hình 3.3: Sơ đồ hoạt động sắp xếp đội hình/ kỹ năng/ vật phẩm 48

Trang 11

Hình 3.4: Sơ đồ hoạt động xem bản đồ 50

Hình 3.5: Sơ đồ hoạt động chọn chương 51

Hình 3.6: Sơ đồ hoạt động chọn level 52

Hình 3.7: Sơ đồ hoạt động triệu hồi lính 53

Hình 3.8: Sơ đồ hoạt động kích hoạt vật phẩm 54

Hình 3.9: Sơ đồ hoạt động điều khiển lính 55

Hình 3.10: Sơ đồ hoạt động kích hoạt kỹ năng 56

Hình 3.11: Sơ đồ hoạt động dừng trận đấu 57

Hình 3.12: Sơ đồ hoạt động chỉnh sửa âm thanh 58

Hình 3.13: Sơ đồ hoạt động xem nhân vật/ kỹ năng/ nội tại 59

Hình 3.14: Sơ đồ hoạt động nâng cấp nhân vật 60

Hình 3.15: Sơ đồ hoạt động mua nhân vật 62

Hình 3.16: Sơ đồ hoạt động nâng cấp kỹ năng 64

Hình 3.17: Sơ đồ hoạt động mua kỹ năng 66

Hình 3.18: Sơ đồ hoạt động nâng cấp nội tại 68

Hình 3.19: Sơ đồ hoạt động mua nội tại 70

Hình 3.20: Sơ đồ hoạt động xem vật phẩm 71

Hình 3.21: Sơ đồ hoạt động mua vật phẩm 73

Hình 3.22: Sơ đồ hoạt động Cài đặt 74

Hình 3.23: Sơ đồ hoạt động Điều khiển 75

Hình 3.24: Sơ đồ hoạt động Tạo phòng chờ 76

Hình 3.253.26: Sơ đồ hoạt động Tìm phòng 78

Hình 3.27: Sơ đồ hoạt động Thiết lập trận đấu online 79

Hình 3.28: Sơ đồ hoạt động Nhắn tin 80

Hình 3.29: Sơ đồ hoạt động Đấu online 81

Hình 3.30: Sơ đồ hoạt động Đầu hàng 83

Hình 3.31: Sơ đồ hoạt động Hướng dẫn 84

Hình 3.32: ERD 85

Hình 4.1: Xây dựng hoạt ảnh tấn công cho Chó 93

Trang 12

Hình 4.2: Sprite sheet cho nhân vật Chó 94

Hình 4.3: Hoạt ảnh cho Mèo Ramiel sử dụng 3 sprite sheet khác nhau là ramiel_cat.png, attack_effect.png và explosion.png 95

Hình 4.4: Xây dựng đồ họa cho bản đồ của game 96

Hình 4.5: Giới thiệu game 97

Trang 13

DANH MỤC BẢNG

Bảng 3.1: Danh sách Actor 45

Bảng 3.2: Danh sách Use case 45

Bảng 3.3: Use case xem đội hình/ kỹ năng/ vật phẩm 47

Bảng 3.4: Use case sắp xếp đội hình/ kỹ năng/ vật phẩm 49

Bảng 3.5: Use case xem bản đồ 50

Bảng 3.6: Use case chọn chương 51

Bảng 3.7: Use case chọn level 52

Bảng 3.8: Use case triệu hồi lính 53

Bảng 3.9: Use case kích hoạt vật phẩm 54

Bảng 3.10: Use case điều khiển lính 55

Bảng 3.11: Use case kích hoạt kỹ năng 56

Bảng 3.12: Use case dừng trận đấu 57

Bảng 3.13: Use case chỉnh sửa âm thanh 58

Bảng 3.14: Use case xem nhân vật / kỹ năng/ nội tại 59

Bảng 3.15: Use case nâng cấp nhân vật 60

Bảng 3.16: Use case mua nhân vật 62

Bảng 3.17: Use case nâng cấp kỹ năng 64

Bảng 3.18: Use case mua kỹ năng 66

Bảng 3.19: Use case nâng cấp nội tại 68

Bảng 3.20: Use case mua nội tại 70

Bảng 3.21: Use case xem vật phẩm 71

Bảng 3.22: Use case mua vật phẩm 73

Bảng 3.23: Use case Cài đặt 74

Bảng 3.24: Use case Điều khiển 75

Bảng 3.25: Use case Tạo phòng chờ 76

Bảng 3.26: Use case Tìm phòng 79

Bảng 3.27: Use case Thiết lập trận đấu online 80

Bảng 3.28: Use case Nhắn tin 81

Trang 14

Bảng 3.29: Use case Đấu online 82

Bảng 3.30: Use case Đầu hàng 83

Bảng 3.31: Use case Hướng dẫn 84

Bảng 4.1: Bảng mô tả giao diện start game 96

Bảng 4.2: Bảng mô tả giao diện hướng dẫn 98

Bảng 4.3: Bảng mô tả giao diện Dog base 99

Bảng 4.4: Bảng mô tả giao diện nâng cấp 100

Bảng 4.5: Bảng mô tả giao diện cửa hàng 103

Bảng 4.6: Bảng mô tả giao diện bản đồ 104

Bảng 4.7: Bảng mô tả giao diện đội hình 105

Bảng 4.8: Bảng mô tả giao diện trận đấu 106

Trang 15

Bảng 4.9: Bảng mô tả giao diện dừng trận đấu 107

Bảng 4.10: Bảng mô tả giao diện sảnh chờ 108

Bảng 4.11: Bảng mô tả giao diện phòng chờ 110

Bảng 4.12: Bảng mô tả giao diện cài đặt 111

Bảng 4.13: Bảng mô tả giao diện điều khiển 113

Bảng 4.14: Bảng mô tả giao diện credits 114

Trang 16

1/ Giới thiệu đề tài:

- Lập trình và thiết kế trò chơi chiến thuật mang phong cách trò chơi thủ thành với

tên gọi: The battle Dogs

2/ Tìm hiểu cơ sở lý thuyết:

- Vấn đề nghiên cứu trong đồ án là xây dựng một trò chơi chiến thuật thủ thành hấp dẫn và thú vị cho người chơi Trò chơi này yêu cầu người chơi phải xây dựng đội hình, nâng cấp các nhân vật và kỹ năng hợp lý cùng với khả năng điều binh khiển tướng để có thể đối phó với các đợt tướng của kẻ địch

5/ Kết luận:

- Nêu kết quả đạt được, hạn chế và hướng phát triển của game trong tương lai

Trang 17

Kế hoạch thực hiện:

11/09/2023 – 20/09/2023 Tìm hiểu đề tài, đánh giá thị trường, xác định các chức năng của hệ thống

21/09/2023 – 30/09/2023 Tìm hiểu, nghiên cứu công nghệ 1/10/2023 – 10/10/2023 Phân tích và thiết kế hệ thống 11/10/2023 – 01/11/2023 Thiết kế UI, xây dựng giao diện02/11/2023 – 14/11/2023 Thiết kế database, xử lý hệ thống

15/11/2023 – 1/12/2023 Kiểm thử hệ thống, sửa đổi và viết báo cáo 02/12/2023 – 30/12/2023 Kiểm thử hệ thống và hoàn thiện báo cáo

Xác nhận của CBHD

(Ký tên và ghi rõ họ tên)

TP HCM, ngày….tháng … năm… Sinh viên

(Ký tên và ghi rõ họ tên)

Nguyễn Văn Thái Chí Bảo Trần Anh Khoa

Trang 18

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

- Các nghiên cứu cũng đã chú trọng vào thiết kế yếu tố gameplay và hệ thống quản lý tài nguyên trong trò chơi Các phương pháp như việc tạo ra cơ chế xây dựng/phòng thủ đa dạng, cân bằng khó khăn và thúc đẩy sự sáng tạo của người chơi đã được khám phá để cung cấp trải nghiệm tốt hơn

- Một số nghiên cứu đã nghiên cứu về trải nghiệm người chơi, bao gồm thiết kế giao diện người chơi hấp dẫn, cung cấp phản hồi tương tác và tạo ra môi trường sống động Các phương pháp như thiết kế âm thanh, đồ họa, hiệu ứng hình ảnh và giao diện người dùng đáp ứng đã được sử dụng để tăng cường trải nghiệm người chơi

1.1.2 Vấn đề còn tồn tại:

- Mặc dù đã có nhiều nghiên cứu về trò chơi chiến thuật thủ thành, tuy nhiên, vẫn còn một số vấn đề chưa được giải quyết đầy đủ Ví dụ, khả năng thích nghi của đối thủ với hành động của người chơi có thể chưa được đảm bảo một cách tối ưu Cần có sự nghiên cứu để tạo ra hệ thống trí tuệ nhân tạo thông minh và linh hoạt, có khả năng thích nghi với chiến thuật và tương tác của người chơi

- Một vấn đề khác là việc tạo ra trải nghiệm người chơi sâu sắc và đa dạng Cần nghiên cứu và phát triển các phương pháp để tạo ra yếu tố gameplay và cơ chế

Trang 19

xây dựng/phòng thủ đa dạng, cung cấp sự sáng tạo và lựa chọn cho người chơi, từ đó tăng cường sự hấp dẫn và tái chơi của trò chơi

- Một khía cạnh khác cần được nghiên cứu là tương tác giữa người chơi và trò chơi Cần xem xét các phương pháp để tạo ra giao diện người chơi thân thiện, tương tác tự nhiên và phản hồi đáp ứng, để tăng cường sự tham gia và hứng thú của người chơi

1.1.3 Vấn đề cần tập trung, nghiên cứu giải quyết :

- Cải thiện trí tuệ nhân tạo của đối thủ, bằng cách phát triển các thuật toán thông minh và linh hoạt, có khả năng thích nghi với hành động của người chơi - Xây dựng yếu tố gameplay và cơ chế xây dựng/phòng thủ đa dạng và sáng tạo,

đồng thời đảm bảo sự cân bằng và khó khăn thích hợp

- Tạo ra trải nghiệm người chơi sâu sắc và đa dạng, thông qua thiết kế giao diện người chơi hấp dẫn và cung cấp phản hồi tương tác

- Nghiên cứu và phân tích hành vi người chơi và tương tác, để hiểu rõ hơn về mong đợi, sở thích và phản hồi của người chơi, từ đó tạo ra trải nghiệm tốt hơn và tùy chỉnh trò chơi cho từng người chơi

Lý do chọn đề tài:

- Trong thời đại hiện nay, những trò chơi mới xuất hiện mỗi ngày nhằm đáp ứng được các nhu cầu giải trí của con người, đặc biệt là đối với giới trẻ Trong đó, những trò chơi mang tính chiến thuật dù không mới, nhưng cũng không dễ dàng bị phai mờ trong lòng các game thủ, điển hình như Dota, Liên minh huyền thoại, Clash of Clans, …

- Nhận thấy tiềm năng đó, nhóm em đã lựa chọn đề tài : “Xây dựng game chiến thuật thủ thành” làm đề tài cho Đồ án 2, với những lý do chính sau:

+ Sự phổ biến của thể loại trò chơi chiến thuật: Trò chơi chiến thuật đã

thu hút một lượng lớn người chơi và có một cộng đồng game thủ đam mê Đề tài này cho phép nhóm em tham gia vào một lĩnh vực đang phát triển và có tiềm năng kinh doanh trong tương lai

Trang 20

+ Thách thức và sáng tạo: Trò chơi chiến thuật thủ thành yêu cầu người

chơi phải xây dựng chiến lược và quản lý tài nguyên để bảo vệ thành trì Điều này tạo ra một thách thức đối với người chơi và đòi hỏi sự sáng tạo trong việc tìm kiếm giải pháp tốt nhất

+ Khả năng phát triển kỹ năng lập trình: Xây dựng một trò chơi chiến

thuật thủ thành yêu cầu các kỹ năng lập trình và xử lý logic phức tạp Đề tài này sẽ giúp nhóm em rèn kỹ năng lập trình của mình và khám phá các khía cạnh kỹ thuật khác nhau trong phát triển trò chơi

+ Tiềm năng thương mại: Trò chơi chiến thuật thủ thành có tiềm năng

thương mại lớn Nếu phát triển thành công một trò chơi hấp dẫn và chất lượng, nhóm em khả năng sẽ phát hành nó trên các nền tảng khác nhau và thu hút một lượng người chơi đáng kể, từ đó tạo ra thu nhập riêng

+ Sự hài lòng của người chơi: Trò chơi chiến thuật thủ thành thường mang

lại sự hài lòng và thỏa mãn cho người chơi nhờ việc chinh phục và mở khóa những màn chơi mới, từ đó tạo ra một trải nghiệm chơi game độc đáo và thú vị, và đó là một điểm mạnh trong việc thu hút và giữ chân người chơi

+ Khám phá và áp dụng các kỹ thuật lập trình: Mục đích là rèn kỹ năng lập trình và khám phá các kỹ thuật phát triển trò chơi như xử lý đồ họa, trí tuệ nhân tạo, quản lý tài nguyên

+ Đưa ra một giải pháp thách thức và cân bằng: Mục đích là tạo ra một hệ thống trò chơi có trí độ khó cao, đồng thời đảm bảo sự cân bằng và thách

Trang 21

thức cho người chơi Điều này tạo ra một trải nghiệm chơi game thú vị và độc đáo

+ Khai thác tiềm năng thương mại: Mục đích là phát triển một trò chơi có tiềm năng thương mại và khả năng thu hút người chơi Điều này có thể tạo ra cơ hội kinh doanh và trở thành một nguồn thu nhập từ việc phát hành và bán trò chơi trên các nền tảng khác nhau

Đối Tượng:

- Đối tượng nhắm đến của trò chơi chiến thuật thủ thành có thể là:

+ Game thủ yêu thích thể loại chiến thuật: Trò chơi này hướng đến những người chơi có niềm đam mê với trò chơi chiến thuật, yêu thích việc xây dựng đội hình và quản lý các chiến lược trong môi trường thủ thành + Người chơi muốn thử thách trí tuệ và tư duy chiến thuật: Trò chơi chiến

thuật thủ thành thường đòi hỏi người chơi phải suy nghĩ logic, đưa ra quyết định chiến lược và xử lý tình huống khó khăn Những người chơi muốn thử thách trí tuệ và tư duy chiến thuật sẽ là đối tượng hướng đến

+ Đồ họa: Trò chơi sử dụng đồ họa dễ nhìn, do nhóm tự thiết kế, vẽ và phát triển

+ Trí tuệ nhân tạo và hành vi đối thủ: Nghiên cứu có thể tập trung vào phát triển hệ thống trí tuệ nhân tạo cho kẻ thù trong từng màn chơi Điều này bao gồm việc nghiên cứu và áp dụng các thuật toán và kỹ thuật để tạo ra hành vi thông minh và thách thức của đối thủ, như chiến thuật tấn công,

Trang 22

quyết định xây dựng và tấn công, và khả năng phát triển theo thời gian và trận đấu

- Công nghệ sử dụng:

+ Godot: Game engine dùng để phát triển game

+ GodotSteam: Tích hợp tính năng của Steamworks, bộ công cụ hỗ trợ game phát hành qua Steam, vào godot

+ SilentWolf: Dịch vụ lưu trữ dữ liệu/quản lý tài khoản miễn phí cho Godot + Json: Format dùng để lưu trữ dữ liệu

+ Blender Grease Pencil: Phần mềm thiết kế đồ họa 2D + TexturePacker: Phần mềm tổng hợp ảnh thành spritesheet + Clip Studio Paint: Phần mềm vẽ tranh

+ Krita: Phần mềm vẽ tranh

Trang 23

Chương 2 CƠ SỞ LÍ THUYẾT:

Công nghệ Godot: 2.1.1 Godot là gì?

Hình 2.1: Godot

- Godot là một công cụ phát triển trò chơi miễn phí và mã nguồn mở được phát triển bởi một cộng đồng lập trình viên toàn cầu Nó cung cấp một môi trường phát triển tích hợp (IDE) và một bộ công cụ phát triển game mạnh mẽ hỗ trợ cho việc tạo ra các game chạy đa nền tảng

2.1.2 Tại sao nên sử dụng Godot:

- Godot có nhiều điểm mạnh Đầu tiên, nó hỗ trợ phát triển trò chơi đa nền tảng Bạn có thể phát triển trò chơi cho nhiều hệ điều hành và nền tảng như Windows, macOS, Linux, iOS, Android và cả các nền tảng web thông qua HTML5 [1]

- Thứ hai, Godot cung cấp một ngôn ngữ lập trình chủ đạo là GDScript, một ngôn ngữ tương tự Python, dễ học và dễ sử dụng Ngoài ra, Godot cũng hỗ trợ

Trang 24

các ngôn ngữ khác như C#, C++ Điều này cho phép bạn lựa chọn ngôn ngữ phù hợp với kỹ năng và sở thích của mình

- Thứ ba, Godot có một bộ công cụ mạnh mẽ cho việc phát triển trò chơi Nó bao gồm một trình chỉnh sửa hình ảnh và âm thanh tích hợp, cùng với các trình chỉnh sửa văn bản và trình tạo animation Nó cũng có một bộ khung đồ họa 2D và 3D mạnh mẽ, với khả năng xử lý vật lý, xử lý hình ảnh và âm thanh - Cuối cùng, Godot được cộng đồng hỗ trợ rất nhiệt tình Có rất nhiều tài liệu,

ví dụ, mã nguồn mở và các nguồn tài nguyên khác có sẵn để bạn tham khảo và sử dụng Ngoài ra, cộng đồng Godot rất năng động và thân thiện, với diễn đàn và nhóm trò chuyện trực tuyến để trao đổi ý tưởng, hỏi đáp và chia sẻ kinh nghiệm

2.1.3 Nghiên cứu và áp dụng Godot trong đồ án:

- Hầu hết code được viết trong đồ án này sử dụng GDScript và một ít sử dụng Godot's shading language cho một số hiệu ứng đặc biệt trong game Code này được dùng chung với các loại node với những tính năng riêng biệt trong Godot - Đồ án tận dụng các thành phần quan trọng trong godot như scene, node, script và các tính năng nâng cao hơn như physics engine, animation player, shaders

SilentWolf:

Hình 2.2: Silent Wolf

Trang 25

- SilentWolf là một chương trình dành cho Godot miễn phí dùng như một server để lưu trữ dữ liệu trên Internet SilentWolf được chia làm 3 phần dữ liệu chính: + Điểm và bảng xếp hạng (Scores and leaderboards): Nó gồm bảng xếp hạng trực tuyến nâng cao dành cho nhiều trường hợp Bạn có thể thiết lập bảng xếp hạng trò chơi của bạn trong vài phút và tùy chỉnh bảng xếp hạng theo nhu cầu của bạn: Chỉ lưu điểm số cao nhất cho mỗi người chơi, đặt lại bảng xếp hạng của bạn vào các khoảng thời gian cụ thể, thêm dữ liệu điểm số, …

+ Tài khoản người chơi (Player accounts): Giúp người chơi có thể đăng ký, đăng nhập và đăng xuất khỏi trò chơi Bạn có thể tùy chọn thêm xác minh email, đặt lại mật khẩu, …

+ Dữ liệu người chơi và trạng thái trò chơi (Player data and game state): Lưu trữ mọi dữ liệu về người chơi hoặc trạng thái trò chơi của bạn

+ Sử dụng SilentWolf để liên tục lưu trữ, cập nhật và xóa bất kỳ loại dữ liệu nào (như kho đồ, số liệu thống kê, thành tích, ) về người chơi hoặc trạng thái chung của trò chơi của bạn trong vài phút Truy xuất nó trong trò chơi một cách dễ dàng [2]

Steamworks:

Hình 2.3: Steamworks

Trang 26

- Steamworks là bộ công cụ hỗ trợ phát triển game khi phát hành game qua Steam [3] Steamworks cung cấp nhiều chức năng khác nhau như cập nhật phiên bản của game trên Steam, tra cứu tài khoản Steam, hỗ trợ kết nối người chơi kiểu P2P hoặc client-server, hệ thống phòng chờ, chat, tìm trận đấu, … - Steamworks cần một Steam id để có thể sử dụng dịch vụ Steam id này cần

phải được mua để có thể sử dụng cho game mà mình phát hành trên Steam, nhưng Steamworks có một Steam id công khai dùng cho với việc kiểm thử game chưa được phát hành Nhóm em sử dụng Steam id này để phát triển game

GodotSteam:

- GodotSteam là một module dùng để tích hợp tính năng của Steamworks vào trong Godot, việc này giúp cải thiện trải nghiệm của lập trình viên trong việc phát triển game của mình trên Godot sử dụng Steamworks [4]

- Các cú pháp để sử dụng Steamworks SDK (bằng ngôn ngữ C++) được chuyển hóa thành cú pháp quen thuộc của ngôn ngữ GDScript, vì vậy lập trình viên không cần phải chuyển đổi giữa hai ngôn ngữ để sử dụng Steamworks

- Nhóm em sử dụng GodotSteam để sử dụng các tính năng như tra cứu tài khoản Steam, phòng chờ, chat, P2P để phát triển game

Godot Native Bullets:

- Godot Native Bullets là một plugin dùng cho việc bắn đạn một cách tối ưu ít tốn tài nguyên Đây là plugin thích hợp cho game cần bắn đạn với số lượng lớn (hàng trăm hay đến hàng nghìn viên đạn cùng xuất hiện trong cùng một lúc trên màn hình) [5]

- Chúng em sử dụng plugin này cho việc xử lý tạo và bắn và tiêu diệt đạn và ngoài ra còn sửa đổi plugin nhằm làm cho đạn hoạt động phù hợp với môi trường của game

Tiền tệ:

- Game có ba loại tiền tệ chính:

Trang 27

- Tiền trong trận (₵): Tiền dùng trong trận đấu để triệu hồi nhân vật Tiền này

không có tác dụng bên ngoài trận đấu

- Xương: Phần thưởng sau khi thắng trận, có thể dùng để nâng cấp hoặc mở

khóa nhân vật, kỹ năng hay nội tại

- Thức ăn cho chó: tiền tệ đặc biệt Được dùng để mở khóa các loại nhân vật

đặc biệt

Hệ thống Trận đấu đơn người chơi (Battle System):

- Đây là hệ thống trận đấu dành cho phiên bản offline của game, trong đó người chơi đánh với máy

- Hệ thống trận đấu đơn người chơi được lấy cảm hứng từ game mobile The Battle Cats, một tựa game trong đó người chơi triệu hồi mèo để đánh nhau với các sinh vật khác, nhưng được thay đổi để có tính đa dạng hơn, một trận đấu gồm có 7 yếu tố sau:

+ Thành trì (Thành Chó, Thành Mèo): Mỗi thành trì đều có một cột máu

(với số lượng máu nhất định) Nhiệm vụ của người chơi là giảm cột máu của phe địch (Thành Mèo) và bảo vệ thành của mình (Thành Chó) Trận đấu kết thúc khi cột máu của một trong hai thành trì giảm về 0

+ Đội hình: Trước khi trận đấu bắt đầu, người chơi chọn một đội hình gồm

các nhân vật và kỹ năng phù hợp cho từng trận chiến Trong trận đấu, người chơi có thể triệu hồi nhân vật và kích hoạt kỹ năng để tấn công kẻ địch

+ Quân lính (quân lính phe ta và phe địch): Người chơi triệu hồi nhân vật

đã có trong đội hình để tấn công các quân lính được triệu hồi bởi kẻ thù

+ Kỹ năng: Mỗi kỹ năng có một khả năng riêng biệt Người chơi có thể sử

dụng kỹ năng để tạo lợi thế trong trận đấu

+ Ví tiền: Để triệu hồi quân lính, người chơi cần sử dụng tiền, tiền sẽ tăng

theo thời gian trong trận đấu, sẽ có một lượng tiền tối đa mà Ví tiền có thể giữ, người chơi có thể tăng lượng tiền tối đa cũng như năng suất tạo tiền bằng cách nâng cấp Ví tiền

Trang 28

+ Nội tại: Nội tại là các thuộc tính liên quan đến trận đấu như số lượng tiền

tối đa có thể giữ, năng suất tạo tiền, máu của Thành Chó, phần thưởng sau trận đấu, Nâng cấp nội tại sẽ tăng độ hiệu quả của các thuộc tính này

+ Boss: Boss là quân lính của kẻ địch nhưng có sức mạnh cao hơn rất nhiều

so với các quân lính bình thường Ở một số màn đấu, khi máu của Thành Mèo giảm đến một mức nhất định, Boss phe địch sẽ được triệu hồi Boss sẽ xuất hiện duy nhất một lần trong suốt trận đấu

+ music (String): Tên bài nhạc chơi trong trận đấu

+ boss_music (String): Tên bài nhạc chơi khi boss xuất hiện

+ stage_width (Int): Chiều dài trận đấu (khoảng cách giữa 2 thành trì) + cat_tower_health (Int): Máu của thành trì kẻ địch (Thành Mèo) + reward_bone (Int): Tiền thưởng của trận đấu sau khi hạ thành kẻ địch + power_scale (float): Tỷ lệ sức mạnh của kẻ địch

+ instant_spawns (Array[Dictionary]): Mô hình triệu hồi quân lính kẻ địch ngay trên trận đấu

+ spawn_patterns (Array[Dictionary]): Mô hình triệu hồi quân lính kẻ địch của Thành Mèo

+ bosses (Array[Dictionary]): Thông tin của các boss có trong trận đấu - Đổi với một số màn chơi đặc biệt, sẽ có thêm yếu tố khác như:

+ battlefield (String): Kiểu trận đấu Kiểu trận đấu cho phép game nhảy ra khỏi kiểu trận đấu mặc định (gồm 1 Thành Chó và 1 Thành Mèo) và vào kiểu trận đấu khác

+ Tùy thuộc vào kiểu trận đấu mà có các yếu tố đặc thù khác dành riêng cho kiểu trận đấu đã chọn

Trang 29

2.8.2 Power scale (power_scale):

- Power scale là một con số dùng để tăng hoặc giảm sức mạnh của toàn bộ kẻ địch, con số này sẽ được dùng để nhân cho sức tấn công và máu cơ bản của kẻ địch

2.8.3 Instant spawns (instant_spawns):

- Instant spawns cho phép triệu hồi kẻ địch ngay trên trận đấu thay vì được triệu hồi từ Thành Mèo Gồm yếu tố sau:

+ id (String): Tên nhân vật kể địch (được sử dụng làm id để nhận biết các nhân vật)

+ position (float hoặc Array[float]): Vị trí của nhân vật trên trận đấu Nếu giá trị là float thì chỉ cập nhật tọa độ x của nhân vật

+ props (Dictionary): Thay đổi các giá trị mặc định của nhân vật như máu, tầm đánh, tốc độ di chuyển, … Mỗi key của Dictionary đại diện cho một thuộc tính của nhân vật, value của key bao gồm:

 value (float): Giá trị thay thế, giá trị này sẽ thay thế giá trị có sẵn  scale (float): Tỉ lệ sức mạnh (tương tự như power_scale)

2.8.4 Spawn patterns (spawn_patterns):

- Spawn patterns gồm thông tin về những kẻ địch sẽ được triệu hồi trong trận đấu, mỗi kẻ địch đều sẽ có một dạng thông tin riêng, gồm những yếu tố sau:

Trang 30

+ id (String): Tên của nhân vật kẻ địch

+ duration (float): Thời gian chờ trước mỗi lần triệu hồi

+ delay (float): Thời gian chờ trước khi bắt đầu thực hiện việc triệu hồi đầu tiên

+ props (Dictionary): Thay đổi các giá trị mặc định của nhân vật

+ name (String): Tên của nhân vật kẻ địch được sử dụng làm boss

+ buffs (Array[Dictionary]): Những thuộc tính mà boss sẽ được tăng sức mạnh như máu, tốc độ đánh, sát thương, … Mỗi phần tử gồm:

 name (String): Tên thuộc tính muốn tăng sức mạnh  scale (float): Tỉ lệ sức mạnh (tương tự như power_scale)

 value (float): Giá trị thay thế, giá trị này sẽ thay thế giá trị có sẵn + props (Dictionary): Thay đổi các giá trị mặc định của nhân vật Tương tự

như buffs Các màn chơi mới được tạo cho phiên bản này của game sẽ sử dụng props thay cho buffs, các màn chơi cũ vẫn sử dụng buffs như bình thường

2.8.6 Phương pháp truy cập dữ liệu trận đấu:

- Để áp dụng các yếu tố này vào game, khi tạo một màn chơi mới, một file json sẽ được tạo đại diện cho trận đấu của màn chơi đó trong game, file json này sẽ chứa các thông tin nêu trên Trận đấu sẽ lấy thông tin trong file json đó để mà thiết lập trận đấu

Trang 31

Hình 2.4: Mẫu file json thiết lập trận đấu

- Mỗi node có thể liên kết với một node khác là màn chơi trước và cũng có thể liên một node khác nữa là màn chơi tiếp theo Sự liên kết này sẽ được hiển thị bằng một được gạch nét đứt giữa hai node

Trang 32

2.9.2 Dãy các bảng tên:

- Bản đồ ngoài ra còn chứa một loạt các bảng tên nằm ở góc trên của màn hình, các bảng tên này chứa tên của các màn chơi Khi người chơi chọn một màn chơi nào thì bảng tên cho màn chơi đó sẽ được di chuyển ra giữa màn hình nhằm cho người chơi biết tên màn chơi mà họ đã chọn

2.9.3 Các nút định hướng:

- Bản đồ chứa một số nút dẫn đến các màn hình khác trong game:

+ Nút tấn công: Nút này sẽ dẫn người chơi đến màn hình trận dấu đã chọn + Nút đội hình: Nút này sẽ dẫn người chơi đến màn hình thiết lập trận đấu + Nút quay lại: Nút này sẽ dẫn người chơi đến màn hình căn cứ chó

2.9.4 Phương pháp liên kết dữ liệu giữa các thành phần:

- Để có thể liên kết trận đấu với các node màn chơi, mỗi node màn chơi sẽ có chứa tên file json trận đấu Hệ thống sẽ dùng tên file json này để truy cập dữ liệu trận đấu khi bắt đầu vào trận

- Để có thể liên kết giữa các bảng tên và các node màn chơi, mỗi node màn chơi sẽ chứa tên trận đấu Hệ thống sẽ sử dụng các tên có trong các node để tạo các bảng tên tương ứng

Nâng cấp:

- Nâng cấp là một trong những tính năng thiết yếu của game, nó giúp tăng tính tương tác cho người chơi và cho người chơi lựa chọn, tùy chỉnh những yếu tố trong game sao cho phù hợp với lối chơi của họ

- Có 3 loại sản phẩm có thể nâng cấp: nhân vật, kỹ năng và nội tại

2.10.1 Ô nâng cấp:

- Ô nâng cấp chứa thông tin của sản phẩm như tên sản phẩm, mô tả, giá tiền Cùng với đó là các giao diện hiển thị ảnh của sản phẩm cũng như giá tiền cần để nâng cấp sản phẩm, cấp (level) hiện tại của sản phẩm

Trang 33

2.10.2 Thanh thông tin:

- Đây là nơi hiển thị cho người dùng biết tên sản phẩm và mô tả sản phẩm đã chọn Tùy vào ô nâng cấp mà người dùng chọn mà thanh thông tin sẽ hiện thông tin tương ứng

2.10.3 Nút Mở khóa/Nâng cấp:

- Nút này có tính năng mở khóa sản phẩm nếu đây là lần đầu người dùng bỏ tiền (xương) vào vật phẩm này hoặc nâng cấp cho các sản phẩm đã mở khóa - Nếu số lượng xương không đủ để mở khóa/nâng cấp, nút này sẽ không có hiệu

lực

2.10.4 Phương pháp truy cập dữ liệu sản phẩm:

- Đối với từng loại sản phẩm sẽ có các file json tương ứng chứa dữ liệu cho các sản phẩm đó

- Thông tin sản phẩm thuộc loại nhân vật nằm trong file character.json - Thông tin sản phẩm thuộc loại kỹ năng nằm trong file skill.json - Thông tin sản phẩm thuộc loại nội tại nằm trong file passives.json

- Hệ thống sẽ lấy các dữ liệu này và tạo các ô nâng cấp tương ứng cho từng sản phẩm

+ Thời gian hồi: Thời gian hồi chiêu của kỹ năng

2.11.1 Mưa cầu lửa:

- Kỹ năng này tạo ngẫu nhiên các quả cầu lửa bay xuống và gây xác thương cho kẻ địch Mỗi quả cầu lửa sẽ gây sát thương cho mục tiêu đầu tiên mà nó chạm phải và sau đó tự động biến mất

- Sát thương gây ra của mỗi quả cầu lửa được tính theo công thức sau:

Trang 34

𝑑𝑎𝑚𝑎𝑔𝑒 = 𝑏𝑎𝑠𝑒_𝑑𝑎𝑚𝑎𝑔𝑒 + (0.5 ∗ 𝑏𝑎𝑠𝑒_𝑑𝑎𝑚𝑎𝑔𝑒 ∗ (𝑙𝑒𝑣𝑒𝑙 − 1)) - Trong đó:

+ damage: Sát thương gây ra bởi cầu lửa

+ base_damage: Sát thương cơ bản của cầu lửa, có giá trị là 10 + level: Cấp hiện tại của kỹ năng

+ damage: Sát thương gây ra bởi cầu lửa

+ base_damage: Sát thương cơ bản của cầu lửa, có giá trị là 10 + level: Cấp hiện tại của kỹ năng

- Tỉ lệ làm chậm kẻ địch được tính theo công thức sau:

𝑠𝑙𝑜𝑤_𝑠𝑐𝑎𝑙𝑒 = 𝑏𝑎𝑠𝑒_𝑠𝑙𝑜𝑤_𝑠𝑐𝑎𝑙𝑒 − (𝑙𝑒𝑣𝑒𝑙_𝑠𝑙𝑜𝑤_𝑠𝑐𝑎𝑙𝑒 ∗ (𝑙𝑒𝑣𝑒𝑙 − 1)) - Trong đó:

+ slow_scale: Tỉ lệ làm chậm, số càng nhỏ thì hiệu quả làm chậm càng lớn + base_slow_scale: Tỉ lệ làm chậm ban đầu, có giá trị là 0.75

+ level_slow_scale: Tỉ lệ làm chậm cho mỗi cấp, có giá trị là 0.05 + level: Cấp hiện tại của kỹ năng

2.11.3 Trống Trận Cẩu Sơn:

- Kỹ năng này tạo gây ra một tiếng trống có khả năng đẩy lùi kẻ địch - Độ hiệu quả đẩy lùi được tính theo công thức sau:

𝑘𝑏_𝑠𝑐𝑎𝑙𝑒 = 𝑏𝑎𝑠𝑒_𝑘𝑏_𝑠𝑐𝑎𝑙𝑒 + (𝑙𝑒𝑣𝑒𝑙_𝑘𝑏_𝑠𝑐𝑎𝑙𝑒 ∗ (𝑙𝑒𝑣𝑒𝑙 − 1)) - Trong đó:

+ kb_scale: Tỉ lệ đẩy lùi, giá trị càng lớn thì hiệu quả đẩy lùi càng cao + base_kb_scale: Tỉ lệ đẩy lùi ban đầu, có giá trị là 0.6

+ level_kb_scale: Tỉ lệ đẩy lùi cho mỗi cấp, có giá trị là 0.1

Trang 35

+ level: Cấp hiện tại của kỹ năng

+ healing_health: Máu hồi cho thành

+ base_hh: Lượng máu hồi ban đầu, có giá trị là 250 + level: Cấp hiện tại của kỹ năng

2.11.5 Tăng Sức Mạnh:

- Kỹ năng này tăng sức mạnh cho các nhân vật chó hiện tại trên trận đấu - Tỉ lệ tăng sức mạnh được tính theo công thức sau:

𝑝𝑜𝑤𝑒𝑟_𝑢𝑝_𝑠𝑐𝑎𝑙𝑒 = 𝑏𝑎𝑠𝑒_𝑝𝑢𝑠 + (𝑙𝑒𝑣𝑒𝑙_𝑝𝑢𝑠 ∗ (𝑙𝑒𝑣𝑒𝑙 − 1)) - Trong đó:

+ power_up_scale: Tỉ lệ tăng sức mạnh, giá trị càng lớn thì hiệu quả tăng sức mạnh càng cao

+ base_pus: Tỉ lệ tăng sức mạnh ban đầu, có giá trị là 1.1 + level_pus: Tỉ lệ tăng sức mạnh cho mỗi cấp, có giá trị là 0.1 + level: Cấp hiện tại của kỹ năng

Nội tại:

- Nội tại là các thuộc tính đặc biệt liên quan đến trận đấu

2.12.1 Năng suất Lao động:

- Là thuộc tính ảnh hưởng đến độ hiệu quả của thu nhập thụ động trong trận đấu (số tiền được tạo ra tự động theo thời gian)

- Thu nhập thụ động được tính theo công thức sau:

𝑚𝑜𝑛𝑒𝑦_𝑟𝑎𝑡𝑒 = 𝑏𝑎𝑠𝑒_𝑚𝑜𝑛𝑒𝑦_𝑟𝑎𝑡𝑒 ∗ (1 + 𝑙𝑒𝑣𝑒𝑙_𝑚𝑜𝑛𝑒𝑦_𝑟𝑎𝑡𝑒 ∗ 𝑙𝑒𝑣𝑒𝑙) - Trong đó:

Trang 36

+ money_rate: Thu nhập thụ động

+ base_money_rate: Thu nhập thụ động ban đầu, có giá trị là 15 + level_money_rate: Thu nhập thụ động cho mỗi cấp, có giá trị là 0.1 + level: Cấp của nội tại

2.12.2 Sức chứa Kho bạc:

- Là thuộc tính ảnh hưởng đến số tiền tối đa có thể chứa được trong trận đấu - Số tiền tối đa chứa được được tính theo công thức sau:

𝑤𝑎𝑙𝑙𝑒𝑡_𝑐𝑎𝑝𝑎𝑐𝑖𝑡𝑦 = 𝑏𝑎𝑠𝑒_𝑤𝑐 ∗ (1 + 𝑙𝑒𝑣𝑒𝑙_𝑤𝑐 ∗ 𝑙𝑒𝑣𝑒𝑙) - Trong đó:

+ wallet_capacity: Số tiền tối đa chứa được trong trận đấu + base_wc: Số tiền tối đa chứa dược ban đầu, có giá trị là 100 + level_wc: Số tiền tối đa chứa được cho mỗi cấp, có giá trị là 0.5 + level: Cấp của nội tại

2.12.3 Sức chống cự Thành Chó:

- Là thuộc tính ảnh hưởng đến lượng máu tối đa của Thành Chó - Máu tối đa của Thành Chó công thức sau:

𝑚𝑎𝑥_ℎ𝑒𝑎𝑙𝑡ℎ = 𝑏𝑎𝑠𝑒_𝑚ℎ ∗ 1.5^𝑙𝑒𝑣𝑒𝑙 - Trong đó:

+ max_health: Máu tối đa của Thành Chó

+ base_mh: Máu tối đa ban đầu, có giá trị là 500 + level: Cấp của nội tại

2.12.4 Nghiên cứu và phát triển:

- Là thuộc tính ảnh hưởng đến số Xương nhận được sau trận đấu

- Số lượng Xương nhận được sau trận đấu được tính theo công thức sau: 𝑟𝑒𝑤𝑎𝑟𝑑_𝑏𝑜𝑛𝑒 = 𝑏𝑎𝑡𝑡𝑙𝑒_𝑟𝑏 + (𝑏𝑎𝑡𝑡𝑙𝑒_𝑟𝑏 ∗ 𝑙𝑒𝑣𝑒𝑙_𝑟𝑏 ∗ 𝑙𝑒𝑣𝑒𝑙) - Trong đó:

+ reward_bone: Xương nhận được sau trận đấu

+ battle_rb: Xương nhận được sau trận đấu, giá trị tùy thuộc vào màn chơi

Trang 37

+ level_rb: Tỉ lệ xương nhận thêm cho mỗi cấp, có giá trị là 0.1 + level: Cấp của nội tại

2.12.5 Phù thủy canh thành Gandolfg:

- Là thuộc tính bảo vệ thành Thuộc tính này khi được mở khóa sẽ triệu hồi một nhân vật ngồi trên Thành Chó và tấn công kẻ địch nào đến gần thành

Hình 2.5: Gandolfg và tầm đánh của Gandolfg (minh họa)

- Tầm đánh của Gandolfg là một hình tròn, bán kính của tầm đánh được tính theo công thức sau:

𝑟𝑎𝑑𝑖𝑢𝑠 = 𝑏𝑎𝑠𝑒_𝑟𝑎𝑑𝑖𝑢𝑠 + (𝑙𝑒𝑣𝑒𝑙_𝑟𝑎𝑑𝑖𝑢𝑠 ∗ 𝑙𝑒𝑣𝑒𝑙) - Trong đó:

+ radius: Bán kính tầm đánh của Gandolfg

+ battle_radius: Bán kính tầm đánh ban đầu, có giá trị là 1500

+ level_radius: Giá trị bán kính tầm đánh cho mỗi cấp, có giá trị là 150 + level: cấp của nội tại

- Thời gian hồi đòn đánh của Gandolfg được tính theo công thức sau: 𝑎𝑡𝑡𝑎𝑐𝑘_𝑐𝑜𝑜𝑙𝑑𝑜𝑤𝑛 = 𝑏𝑎𝑠𝑒_𝑎𝑐 − 𝑙𝑒𝑣𝑒𝑙

- Trong đó:

+ attack_speed: Tốc độ đánh của Gandolfg

Trang 38

+ base_ac: Thời gian hồi đòn đánh ban đầu, có giá trị là 13 giây + level: Cấp của nội tại

Vật phẩm:

- Tương tự như kỹ năng, vật phẩm là một tính năng đặc biệt có thể được dùng trong trận đấu Tuy nhiên, vật phẩm là vật tiêu hao, bạn chỉ có thể kích hoạt một vật phẩm một lần trong mỗi trận đấu Vật phẩm có hai loại:

+ Vật phẩm nội tại: vật phẩm này sẽ được kích hoạt ngay từ khi bắt đầu trận đấu và sẽ được áp dụng trong suốt thời gian trận đấu

+ Vật phẩm kích hoạt: vật phẩm này cần được người chơi kích hoạt để thực hiện chức năng của nó

2.13.1 Bom nguyên tử:

- Là Vật phẩm kích hoạt Phóng một quả bom nguyên tử vào giữa bản đồ, tiêu diệt tất cả nhân vật trên mặt trận, bao gồm cả loài Mèo và loài Chó

2.13.2 Cầu lửa ngẫu nhiên:

- Là vật phẩm nội tại Tạo ngẫu nhiên các quả cầu lửa bay xuống và gây xác thương cho kẻ địch trong suốt trận đấu Mỗi quả cầu lửa sẽ gây sát thương cho mục tiêu đầu tiên mà nó chạm phải và sau đó tự động biến mất

- Sát thương gây ra của mỗi quả cầu lửa được tính theo công thức sau: 𝑑𝑎𝑚𝑎𝑔𝑒 = 𝑏𝑎𝑠𝑒_𝑑𝑎𝑚𝑎𝑔𝑒 + (0.5 ∗ 𝑏𝑎𝑠𝑒_𝑑𝑎𝑚𝑎𝑔𝑒 ∗ (𝑙𝑒𝑣𝑒𝑙 + 1)) - Trong đó:

+ damage: sát thương gây ra bởi cầu lửa

+ base_damage: sát thương cơ bản của cầu lửa, có giá trị là 10 + level: cấp hiện tại của kỹ năng mưa cầu lửa (nếu có)

2.13.3 Chó Titan:

- Là vật phẩm nội tại Triệu hồi một con chó khi bắt đầu trận đấu với lượng máu khổng lồ Khi Chó Titan vẫn còn tồn tại, gây sát thương theo thời gian cho toàn bộ loài Mèo trên mặt trận khi Bù lại, chó titan sẽ không thể tấn công - Sát thương gây ra mỗi giây là 50

Trang 39

- Máu của chó titan được tính theo công thức sau:

ℎ𝑒𝑎𝑙𝑡ℎ = 10000 + 10000 ∗ 𝑙𝑒𝑣𝑒𝑙 - Trong đó:

+ health: máu của chó

+ level: cấp độ của màn mà bạn đang chơi

- Nhân vật gồm các yếu tố sau:

+ character_type (Int / enum): loại nhân vật, có hai loại là Chó và Mèo + speed (Int): tốc dộ di chuyển của nhân vật

+ attack_range (Int): tầm đánh của nhân vật Khi nhân vật gặp mặt kẻ địch ở khoảng cách này, nhân vật sẽ dừng lại và bắt đầu tấn công

+ attack_area_range (Int): tầm ảnh hưởng (độ lớn) của đòn đánh Nếu giá trị là 0 thì nhân vật sẽ đánh đơn mục tiêu, ngược lại thì nhân vật sẽ đánh đa mục tiêu

+ attack_cooldown (float): tốc độ đánh + health (Int): máu của nhân vật

+ damage (Int): sát thương của đòn đánh + knockbacks (Int): số lần ngã trước khi chết

+ custom_attack_area (Area2D): tầm ảnh hưởng tự chọn

+ attack_sprite (Sprite2D): sprite dùng để kiểm tra nếu nhân vật đang trong trạng thái đánh

+ attack_frame (Int): frame của attack_sprite được xem là trạng thái đánh của nhân vật

Trang 40

2.14.1 Xây dựng AI cho nhân vật sử dụng Finite State Machine:

- Nhân vật là đối tượng khá phức tạp với nhiều trạng thái tương tác khác nhau, do đó việc sử dụng Finite State Machine design pattern sẽ giúp việc viết code cho từng trạng thái trở nên dễ dàng hơn [6]

- Nhân vật có 5 trạng thái:

+ MoveState: trạng thái di chuyển + AttackState: trạng thái tấn công + IdleState: trạng thái đứng yên + KnockbackState: trạng thái ngã + DieState: trạng thái chết

- Nhân vật chỉ chỉ có thể ở một trạng thái duy nhất tại một thời điểm Một trạng thái có thể chuyển sang trạng thái khác nếu đạt được điều kiện được lập trình trong trạng thái hiện tại

Hình 2.6: Sơ đồ finite state machine của nhân vật

Ngày đăng: 15/05/2024, 09:23

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan