GIỚI THIỆU ĐỀ TÀI
Phân tích đánh giá các hướng nghiên cứu đã có của các tác giả trong và ngoài nước
Trong nghiên cứu trò chơi chiến thuật thủ thành, nhiều tác giả đã chú trọng phát triển hệ thống trí tuệ nhân tạo cho đối thủ để tạo ra hành vi thông minh và thách thức Các phương pháp như thuật toán tìm kiếm thông minh, học máy và học sâu được áp dụng nhằm nâng cao khả năng quyết định và tương tác của đối thủ.
Nghiên cứu đã tập trung vào thiết kế gameplay và hệ thống quản lý tài nguyên trong trò chơi, khám phá các phương pháp như cơ chế xây dựng và phòng thủ đa dạng, cân bằng độ khó, cũng như khuyến khích sự sáng tạo của người chơi nhằm mang lại trải nghiệm tốt hơn.
Nghiên cứu về trải nghiệm người chơi đã chỉ ra rằng thiết kế giao diện hấp dẫn, phản hồi tương tác và môi trường sống động là những yếu tố quan trọng Các phương pháp như âm thanh, đồ họa, hiệu ứng hình ảnh và giao diện người dùng đáp ứng được áp dụng để nâng cao trải nghiệm của người chơi.
Vấn đề còn tồn tại
Mặc dù nghiên cứu về trò chơi chiến thuật thủ thành đã phát triển, vẫn còn nhiều vấn đề chưa được giải quyết, đặc biệt là khả năng thích nghi của đối thủ với hành động của người chơi Cần thiết phải tiến hành nghiên cứu để phát triển hệ thống trí tuệ nhân tạo thông minh và linh hoạt, có khả năng điều chỉnh theo chiến thuật và tương tác của người chơi.
Việc tạo ra trải nghiệm người chơi sâu sắc và đa dạng là một thách thức quan trọng Cần nghiên cứu và phát triển các phương pháp mới nhằm nâng cao yếu tố gameplay và cơ chế trong trò chơi.
Việc xây dựng và phòng thủ đa dạng không chỉ mang lại sự sáng tạo cho người chơi mà còn tạo ra nhiều lựa chọn hấp dẫn, từ đó nâng cao mức độ hấp dẫn và khả năng tái chơi của trò chơi.
Một yếu tố quan trọng cần nghiên cứu là sự tương tác giữa người chơi và trò chơi Cần phát triển các phương pháp nhằm tạo ra giao diện thân thiện, tương tác tự nhiên và phản hồi nhanh chóng, từ đó nâng cao sự tham gia và hứng thú của người chơi.
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, giúp chúng 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 giúp hiểu rõ mong đợi, sở thích và phản hồi của họ, từ đó tạo ra trải nghiệm tốt hơn và tùy chỉnh trò chơi cho từng cá nhân.
Lý do chọn đề tài:
Trong thời đại hiện nay, hàng ngày có nhiều trò chơi mới ra đời để đáp ứng nhu cầu giải trí, đặc biệt là giới trẻ Các trò chơi chiến thuật, mặc dù không mới, vẫn giữ được sức hút lớn với game thủ, điển hình như Dota, Liên minh huyền thoại và Clash of Clans.
Nhận thấy tiềm năng to lớn trong lĩnh vực game, nhóm chúng tôi đã quyết định chọn đề tài “Xây dựng game chiến thuật thủ thành” cho Đồ án 2, với những lý do chính là sự hấp dẫn của thể loại game này và khả năng phát triển kỹ năng tư duy chiến lược cho người chơi.
Thể loại trò chơi chiến thuật đang ngày càng trở nên phổ biến, thu hút một lượng lớn người chơi và hình thành một cộng đồng game thủ đam mê Đề tài này không chỉ cho phép chúng ta tham gia vào một lĩnh vực đang phát triển mà còn mở ra tiềm năng kinh doanh lớn trong tương lai.
Trò chơi chiến thuật thủ thành mang đến thách thức lớn cho người chơi khi yêu cầu xây dựng chiến lược và quản lý tài nguyên hiệu quả để bảo vệ thành trì Sự sáng tạo trong việc tìm kiếm giải pháp tối ưu là điều cần thiết để vượt qua các thử thách này.
Xây dựng một trò chơi chiến thuật thủ thành không chỉ giúp phát triển kỹ năng lập trình mà còn rèn luyện khả năng xử lý logic phức tạp Đề tài này sẽ mở ra cơ hội cho chúng em khám phá nhiều khía cạnh kỹ thuật khác nhau trong quá trình phát triển trò chơi.
Trò chơi chiến thuật thủ thành sở hữu tiềm năng thương mại lớn, đặc biệt nếu được phát triển thành công với nội dung hấp dẫn và chất lượng cao Việc phát hành trên nhiều nền tảng khác nhau sẽ giúp thu hút một lượng người chơi đáng kể, từ đó tạo ra nguồn thu nhập ổn định cho nhà phát triển.
Trò chơi chiến thuật thủ thành mang lại sự hài lòng cho người chơi thông qua việc chinh phục và mở khóa các màn chơi mới, tạo nên trải nghiệm độc đáo và thú vị, từ đó thu hút và giữ chân người chơi hiệu quả.
- Mục đích của đề tài trò chơi chiến thuật thủ thành có thể bao gồm những điểm sau:
Mục tiêu chính là phát triển một trò chơi chiến thuật thủ thành hấp dẫn với giao diện bắt mắt, mang đến trải nghiệm chơi game thú vị và đáp ứng nhu cầu giải trí của người chơi.
Khám phá và áp dụng các kỹ thuật lập trình là cách hiệu quả để rèn luyện kỹ năng lập trình, đồng thời tìm hiểu các phương pháp phát triển trò chơi, bao gồm xử lý đồ họa, trí tuệ nhân tạo và quản lý tài nguyên.
Đưa ra một giải pháp thách thức và cân bằng nhằm tạo ra một hệ thống trò chơi với độ khó cao, đồng thời đảm bảo sự cân bằng và thách thức cho người chơi.
6 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 là mục tiêu quan trọng trong việc phát triển trò chơi, nhằm thu hút người chơi và tạo ra cơ hội kinh doanh Việc này không chỉ giúp phát hành và bán trò chơi trên nhiều nền tảng khác nhau mà còn mang lại nguồn thu nhập đáng kể.
- Đối tượng nhắm đến của trò chơi chiến thuật thủ thành có thể là:
Trò chơi chiến thuật thủ thành dành cho những game thủ đam mê xây dựng đội hình và quản lý chiến lược Người chơi sẽ được thử thách trí tuệ và tư duy chiến thuật khi phải suy nghĩ logic, đưa ra quyết định chiến lược và xử lý các tình huống khó khăn Đây là môi trường lý tưởng cho những ai muốn nâng cao kỹ năng tư duy và đối mặt với các thử thách trong trò chơi.
- Phạm vi nghiên cứu của đồ án trò chơi chiến thuật thủ thành có thể bao gồm những khía cạnh sau:
Nghiên cứu về thiết kế và phát triển trò chơi tập trung vào việc xác định các yếu tố gameplay, hệ thống quản lý tài nguyên, cơ chế xây dựng và phòng thủ, giao diện người chơi, cùng với hệ thống trí tuệ nhân tạo cho đối thủ và các yếu tố liên quan khác.
- Đồ họa: Trò chơi sử dụng đồ họa dễ nhìn, do nhóm tự vẽ và phát triển
CƠ SỞ LÍ THUYẾT
Godot là gì?
Godot là một công cụ phát triển trò chơi miễn phí, mã nguồn mở, được phát triển bởi 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à công cụ chơi trò chơi mạnh mẽ, giúp người dùng tạo ra các trò chơi đa nền tảng một cách dễ dàng.
Tại sao nên sử dụng Godot
Godot nổi bật với khả năng phát triển trò chơi đa nền tảng, cho phép người dùng tạo ra sản phẩm cho nhiều hệ điều hành và nền tảng khác nhau như Windows, macOS, Linux, iOS, Android và cả nền tảng web thông qua HTML5.
Godot là một công cụ phát triển game nổi bật với ngôn ngữ lập trình chính là GDScript, tương tự như Python, giúp người dùng dễ dàng học hỏi và sử dụng Bên cạnh đó, Godot còn hỗ trợ nhiều ngôn ngữ lập trình khác, mở rộng khả năng phát triển cho các lập trình viên.
9 các ngôn ngữ khác như C#, C++ và VisualScript Đ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
Godot là một công cụ phát triển trò chơi mạnh mẽ, cung cấp trình chỉnh sửa hình ảnh và âm thanh tích hợp, cùng với các công cụ chỉnh sửa văn bản và tạo animation Nó sở hữu bộ khung đồ họa 2D và 3D ưu việt, hỗ trợ xử lý vật lý, hình ảnh và âm thanh hiệu quả.
Cộng đồng Godot hỗ trợ rất nhiệt tình, cung cấp nhiều tài liệu, ví dụ, mã nguồn mở và các nguồn tài nguyên hữu ích Ngoài ra, cộng đồng này còn 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, giải đáp thắc mắc và chia sẻ kinh nghiệm.
Nghiên cứu và áp dụng Godot trong đồ án
Trong đồ án này, phần lớn mã nguồn được viết bằng GDScript, với một số đoạn sử dụng ngôn ngữ shading của Godot để tạo ra các hiệu ứng đặc biệt cho trò chơi Mã này được áp dụng cho các loại node khác nhau, mỗi loại có 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
- Game có ba loại tiền tệ chính:
- 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 (Battle System):
- Một trận đấu gồm có 7 yếu tố:
Thành trì (Tháp Chó, Tháp Mèo) có cột máu với số lượng nhất định Người chơi phải giảm cột máu của phe đối thủ (Tháp Mèo) trong khi bảo vệ thành trì của mình (Tháp Chó) Trận đấu kết thúc khi cột máu của một trong hai thành trì giảm xuống 0.
Trước khi bắt đầu trận đấu, người chơi cần lựa chọn đội hình phù hợp với các nhân vật và kỹ năng cho từng trận chiến Trong quá trình thi đấu, người chơi có khả năng triệu hồi nhân vật và kích hoạt kỹ năng để tấn công đối thủ.
Người chơi có thể triệu hồi các nhân vật trong đội hình của mình để tấn công quân lính do kẻ thù triệu hồi, bao gồm cả quân lính của phe ta và phe địch.
- 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 là yếu tố quan trọng để triệu hồi quân lính trong trò chơi Số tiền sẽ tăng dần theo thời gian trong trận đấu, tuy nhiên, Ví tiền có giới hạn về lượng tiền tối đa có thể giữ Người chơi có thể nâng cấp Ví tiền để gia tăng khả năng chứa đựng số tiền tối đa này.
Nội tại trong trò chơi bao gồm các thuộc tính quan trọng như số tiền tối đa có thể giữ, năng suất tạo tiền, sức khỏe của Dog Tower và phần thưởng sau trận đấu Việc nâng cấp nội tại sẽ giúp tăng cường hiệu quả của những thuộc tính này, góp phần nâng cao trải nghiệm chơi game.
Boss là quân lính mạnh mẽ hơn hẳn so với các quân lính thông thường, xuất hiện trong các màn đấu khi máu của Cat Tower giảm xuống một mức nhất định Mỗi trận đấu chỉ có một Boss phe địch được triệu hồi, tạo ra thách thức lớn cho người chơi.
Battle Dogs sử dụng các yếu tố như sau để thiết lập trận đấu, bao gồm các kiểu dữ liệu có trong Godot.
- theme (String): Tên theme trận đấu (dùng để xác định hình ảnh của trận đấu như màu trời, cỏ, thành)
- 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 (Cat Tower)
- 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
- spawn_patterns (Array[Dictionary]): Mô hình triệu hồi quân lính kẻ địch
- bosses (Array[Dictionary]): Thông tin của các boss có trong trận đấu.
Power scale (power_scale)
Power scale là chỉ số quan trọng giúp điều chỉnh sức mạnh của kẻ địch, được tính bằng cách nhân sức mạnh cơ bản và máu của kẻ địch với power scale Công thức tính toán được thể hiện như sau: Sức mạnh x power_scale.
Spawn patterns (spawn_patterns)
Spawn patterns chứa thông tin chi tiết về các kẻ thù sẽ được triệu hồi trong trận đấu Mỗi kẻ thù có những thông tin riêng biệt, bao gồm các yếu tố quan trọng.
- name (String): Tên của nhân vật kẻ địch (được sử dụng làm id để nhận biết các nhân vật)
- duration (float): Thời gian chờ trước mỗi lần triệu hồi
Thời gian chờ trước khi bắt đầu triệu hồi đầu tiên được gọi là delay (float) Khi lượng máu của Cat Tower giảm xuống mức cho phép, trùm cuối sẽ được triệu hồi, và lượng máu cần thiết để thực hiện điều này được xác định bởi health_at (int).
+ name (string): Tên của trùm cuối
Trong trò chơi, các buffs (sức mạnh) của trùm cuối sẽ được nâng cấp tùy thuộc vào mức độ trận đấu, bao gồm các yếu tố như máu, tốc độ đánh và sát thương Để áp dụng các yếu tố này, một file JSON sẽ được tạo ra để đại diện cho một màn đấu, chứa tất cả thông tin cần thiết.
Boss (bosses)
- Bosses là một mảng chứa các thông tin về các boss trong trận đấu, mỗi phần tử trong mảng có chứa những thông tin như sau:
- health_at (int): Khi máu của Cat Tower giảm tới mức độ cho phép, trùm cuối sẽ được triệu hồi
- 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.
Phương pháp truy cập dữ liệu trận đấu
Khi tạo một màn chơi mới trong game, một file JSON sẽ được tạo ra để đại diện cho trận đấu, chứa tất cả các thông tin quan trọng liên quan đến màn chơi đó.
Hình 2.2: Mẫu file json thiết lập trận đấu
Bản đồ trong game đóng vai trò quan trọng, cho phép người chơi lựa chọn màn chơi ưa thích và thiết lập đội hình của mình.
Các node màn chơi
Bản đồ sẽ bao gồm các node mà người chơi có thể tương tác, mỗi node đại diện cho một màn chơi và hiển thị tên màn chơi cùng với tên file JSON của trận đấu.
Mỗi node có khả năng kết nối với một node khác, đại diện cho màn chơi trước, cũng như một node nữa, biểu thị cho màn chơi tiếp theo Sự kết nối này được thể hiện bằng đường gạch nét đứt giữa hai node.
Dãy các bảng tên
Bản đồ có các bảng tên ở góc trên màn hình, hiển thị tên các màn chơi Khi người chơi chọn một màn chơi, bảng tên tương ứng sẽ di chuyển ra giữa màn hình, giúp họ nhận biết tên màn chơi đã chọn.
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ó.
Phương pháp liên kết dữ liệu giữa các thành phần
Để liên kết trận đấu với các node màn chơi, mỗi node sẽ chứa tên file JSON của trận đấu Hệ thống sử dụng tên file này để truy cập dữ liệu trận đấu khi bắt đầu.
Để liên kết các bảng tên với các node màn chơi, mỗi node sẽ chứa tên trận đấu Hệ thống sẽ sử dụng những tên này để tạo ra các bảng tên tương ứng.
Nâng cấp là tính năng quan trọng trong game, giúp tăng cường sự tương tác và cho phép người chơi tùy chỉnh các yếu tố trong trò chơi để phù hợp với phong cách chơi của mình.
- 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.
Ô nâng cấp
Nâng cấp sản phẩm bao gồm thông tin quan trọng như tên, mô tả và giá tiền Bên cạnh đó, giao diện hiển thị hình ảnh sản phẩm cùng mức giá cần thiết để thực hiện nâng cấp và cấp độ hiện tại của sản phẩm cũng được trình bày rõ ràng.
Thanh thông tin
Đây là khu vực hiển thị tên và mô tả sản phẩm mà người dùng đã chọn Thông tin trên thanh sẽ thay đổi dựa vào tùy chọn nâng cấp mà người dùng lựa chọn.
Nút Mở khóa/Nâng cấp
Nút này cho phép người dùng mở khóa sản phẩm khi lần đầu tiên họ đầu tư (xương) vào vật phẩm, hoặc thực hiện nâng cấp cho các sản phẩm đã được mở khóa trước đó.
- 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.
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
- Kỹ năng là một tính năng đặc biệt có thể được dùng trong trận đấu, gồm các yếu tố sau:
- Hành động: khi gọi kỹ năng, kỹ năng sẽ thực hiện một hành động nào đó lên trận đấu (đẩy lùi kẻ địch, tăng sức mạnh cho quân lính, …)
- Thời gian hồi: thời gian hồi chiêu của kỹ năng.
Mưa cầu lửa
Kỹ năng này tạo ra các quả cầu lửa ngẫu nhiên, bay xuống và gây sát thương cho kẻ địch Mỗi quả cầu lửa sẽ gây thiệt hại cho mục tiêu đầu tiên mà nó chạm phải trước khi 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:
- 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.
Đường Sấm Chớp
- Kỹ năng này tạo một đường sấm chớp gây sát thương và làm chậm kẻ địch Mỗi sấm chớp có thể tác động lên đa mục tiêu
- Sát thương gây ra của sấm chớp được tính theo công thức sau:
- 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:
- 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.
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:
- 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
- level: cấp hiện tại của kỹ năng.
Hồi Máu Thành
- Kỹ năng này tạo một đường năng lượng lên Dog Tower và hồi máu Dog Tower
- Lượng máu hồi cho thành được tính theo công thức sau:
- healing_health:l 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.
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:
- 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 là các thuộc tính đặc biệt liên quan đến trận đấu.
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 sức sau:
- 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.
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 sức sau:
- 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.
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 Dog Tower
- Máu tối đa của Dog Tower công sức sau:
- max_health: Máu tối đa của Dog Tower
- base_mh: Máu tối đa ban đầu, có giá trị là 500
- level: cấp của nội tại.
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:
- 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
- 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
Nhân vật đóng vai trò quan trọng trong trận đấu, có khả năng được triệu hồi để di chuyển, chiến đấu và tấn công thành Quyết định triệu hồi nhân vật là yếu tố quyết định thắng thua trong mỗi trận đấu.
- 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
- 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.
Xây dựng AI cho nhân vật sử dụng Finite State Machine
Nhân vật có tính chất phức tạp với nhiều trạng thái tương tác khác nhau, vì vậy việc áp dụng mẫu thiết kế Finite State Machine sẽ giúp đơn giản hóa quá trình lập trình cho từng trạng thái.
- 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
Trạng thái này cho phép nhân vật di chuyển và xác định xem các đối tượng khác, như kẻ địch hoặc thành trì, có nằm trong tầm đánh của mình hay không.
- Nếu phát hiện đối tượng khác, chuyển sang một trong hai trạng thái đó là:
- AttackState: nếu đã xong thời gian chờ đòn đánh (thời gian hồi đòn đánh dựa trên giá trị của attack_cooldown)
- IdleState: nếu thời gian chờ đòn đánh vẫn còn đang đếm ngược
Trạng thái này điều khiển đòn đánh của nhân vật, cho phép thực hiện hoạt ảnh tấn công Khi hoạt ảnh của attack_sprite đạt đến frame bằng hoặc lớn hơn attack_frame, logic tấn công sẽ được kích hoạt, gây sát thương cho kẻ địch trong tầm ảnh hưởng.
- Sau khi đã hoàn thành hoạt ảnh tấn công, tự động chuyển sang trạng thái IdleState
Trạng thái này khiến nhân vật đứng yên, và nếu đối tượng không còn nằm trong tầm đánh, nhân vật sẽ chuyển sang trạng thái MoveState Ngược lại, nếu đối tượng vẫn trong tầm đánh, nhân vật sẽ chờ cho đến khi thời gian chờ đòn đánh kết thúc trước khi chuyển sang trạng thái AttackState.
Trạng thái này điều chỉnh hành động ngã của nhân vật, chỉ được kích hoạt khi nhân vật bị tấn công và lượng máu giảm xuống một mức nhất định.
- Nhân vật sau khi hành động ngã được hoàn thành, chuyển sang một trong hai trạng thái đó là:
- MoveState: nếu lượng máu của nhân vật lớn hơn 0
- DieState: nếu lượng máu của nhân vật nhỏ hơn hoặc bằng 0
- Trạng thái này kiểm soát hành động chết của nhân vật
- Sau khi hoạt ảnh chết được hoàn thành Nhân vật sẽ được xóa khỏi trò chơi.
Phương pháp xác định tầm ảnh hưởng đòn đánh
Tầm ảnh hưởng đòn đánh được xác định bởi ba yếu tố chính: vị trí của nhân vật đối với mục tiêu, giá trị tầm đánh (attack_range) và giá trị trong tầm ảnh hưởng (attack_area_range).
Tầm ảnh hưởng đòn đánh là một đường ngang nằm trên mặt đất với giá trị xác định Khi giá trị attack_area_range tăng, kích thước của đường ngang này cũng mở rộng Vị trí trung tâm của đường ngang có giá trị theo trục x được tính bằng công thức cụ thể.
- x là giá trị theo trục x của điểm chính giữa của đường ngang đại diện cho tầm ảnh hưởng của đòn đánh
- hitbox_facing_side_x là giá trị theo trục x của phần cuối của hitbox nhân vật theo hướng nhân vật đang đi đến
Hình 2.3 minh họa tầm đánh và tầm ảnh hưởng của đòn đánh của Chó Thiên Thần Trong hình, đường nét đứt màu vàng biểu thị tầm đánh, đường ngang màu xanh thể hiện tầm ảnh hưởng của đòn đánh, và ô màu xanh nước đại diện cho hitbox của nhân vật.
Xác định tầm ảnh hưởng đòn đánh bằng custom_attack_area
Để thiết kế nhân vật với tầm đánh đặc biệt mà phương pháp attack_area_range không đáp ứng, chúng ta có thể sử dụng custom_attack_area để xác định tầm ảnh hưởng của đòn đánh.
Custom_attack_area là một biến kiểu Node thuộc Area2D, được sử dụng để xác định vùng va chạm Node này cho phép người dùng điều chỉnh tầm ảnh hưởng của đòn đánh theo ý muốn.
Hình 2.4: Tầm ảnh hưởng đòn đánh của Chó Bắn Tỉa
Trong trường hợp nhân vật Chó Bắn tỉa, chúng ta không sử dụng giá trị trong attack_area_range để xác định tầm ảnh hưởng đòn đánh, mà thay vào đó, áp dụng một node Area2D có hình dạng tương tự như đường thẳng màu xanh nước Cách tiếp cận này giúp xác định tầm đánh một cách hợp lý hơn, phản ánh chính xác đường đi của viên đạn thay vì chỉ dựa vào một ô nằm dưới mặt đất.
Nhân vật – Chó
- Nhân vật thuộc loại Chó thừa hưởng các tính năng từ Nhân vật nhưng có một số điểm được mở rộng:
- Thuộc tính name_id (String): id của nhân vật, được dùng để truy xuất các thông tin của nhân vật từ file save.json
- Nhân vật sẽ được tăng sát thương và máu dựa trên level mà nhân vật được người chơi nâng cấp.
Nhân vật – Mèo
- Nhân vật thuộc loại Mèo thừa hưởng các tính năng từ Nhân vật nhưng có một số điểm được mở rộng:
- Thuộc tính reward_money (int): tiền nhận được sau khi hạ gục nhân vật
- Thuộc tính is_boss (bool): kiểm tra xem mèo có phải là boss hay không
- Thuộc tính allow_boss_effect (bool): kiểm tra xem nên thêm hiệu ứng của boss lên nhân vật hay không
- Nhân vật sẽ được tăng sát thương và máu dựa trên giá trị của power_scale trong file json trận đấu
PHÂN TÍCH THIẾT KẾ HỆ THỐNG GAME
Hình 3.1: Sơ đồ Use case tổng quát
STT Tên Actor Mô tả ngắn/ ghi chú
1 Người chơi Người chơi trò chơi
2 System Hệ thống của trò chơi
Bảng 3.2: Danh sách Use case
STT Tên Use case Actor Mô tả ngắn/ ghi chú
1 Xem đội hình/ kỹ năng
Người chơi Xem đội hình, kỹ năng hoặc nội tại của người chơi
2 Sắp xếp đội hình/ kỹ năng
Người chơi Sắp xếp đội hình hoặc kỹ năng của người chơi
3 Xem bản đồ Người chơi Xem bản đồ các level
4 Chọn level Người chơi Chọn level
5 Triệu hồi lính Người chơi Triệu hồi lính trong trận đấu
6 Kích hoạt kỹ năng Người chơi Kích hoạt kỹ năng trong trận đấu
7 Dừng trận đấu Người chơi Dừng trận đấu
8 Chỉnh sửa âm thanh Người chơi Chỉnh sửa âm thanh trong trận đấu
9 Xem hướng dẫn Người chơi Xem hướng dẫn cách chơi
10 Xem nhân vật/ kỹ năng/ nội tại
Người chơi Xem danh sách nhân vật/ kỹ năng/ nội tại
11 Nâng cấp nhân vật Người chơi Nâng cấp nhân vật
12 Mua nhân vật Người chơi Mua nhân vật
13 Nâng cấp kỹ năng Người chơi Nâng cấp kỹ năng
14 Mua kỹ năng Người chơi Mua kỹ năng
15 Nâng cấp nội tại Người chơi Nâng cấp nội tại
16 Mua nội tại Người chơi Mua nội tại
17 Xem vật phẩm Người chơi Xem danh sách vật phẩm trong cửa hàng
18 Mua vật phẩm Người chơi Mua vật phẩm trong cửa hàng
Danh sách đặc tả Use case
Xem đội hình/ kỹ năng
Hình 3.2: Sơ đồ hoạt động xem đội hình/ kỹ năng
Bảng 3.3: Use case xem đội hình/ kỹ năng
Tên Use case Xem đội hình/ kỹ năng
Chức năng này cho phép người chơi xem danh sách các nhân vật và kỹ năng đã sở hữu, cũng như đội hình hiện tại mà họ đang sử dụng để xuất kích.
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Map” -> Nhấn “Đội hình”
Người chơi có thể dễ dàng kiểm tra danh sách nhân vật và kỹ năng mà mình sở hữu, cũng như đội hình hiện tại đang sử dụng để chiến đấu Để xem thông tin chi tiết, người chơi chỉ cần nhấn vào các tab “Nhân vật” và “Kỹ năng” để truy cập vào danh sách đội hình tương ứng.
28 Sắp xếp đội hình/ kỹ năng
Hình 3.3: Sơ đồ hoạt động sắp xếp đội hình/ kỹ năng
Bảng 3.4: Use case sắp xếp đội hình/ kỹ năng
Tên Use case Sắp xếp đội hình/ kỹ năng
Chức năng này cho phép người chơi xem danh sách nhân vật và kỹ năng đã sở hữu, đồng thời thiết lập đội hình nhân vật và kỹ năng để chuẩn bị cho các trận chiến.
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Map” -> Nhấn “Đội hình”
Người chơi có thể kiểm tra danh sách nhân vật và kỹ năng mà mình đã sở hữu, cũng như đội hình hiện tại để xuất kích Để chọn đội hình tương ứng, người chơi chỉ cần nhấn vào các tab “Nhân vật” hoặc “Kỹ năng”.
- Người chơi tiến hành thiết lập đội hình mong muốn -> Nhấn Lưu
- Nếu người chơi nhấn nút “Quay lại” màn hình hiển thị màn hình “Map” Đội hình đã sắp xếp sẽ không được lưu
Hình 3.4: Sơ đồ hoạt động xem bản đồ
Bảng 3.5: Use case xem bản đồ
Tên Use case Xem bản đồ
Mô tả Chức năng này cho phép người chơi có thể xem bản đồ các level mà người chơi đã hoặc chưa qua màn
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Viễn chinh”
- Người chơi có thể xem danh sách các level mà người chơi có thể chơi và chọn
Hình 3.5: Sơ đồ hoạt động chọn level
Bảng 3.6: Use case chọn level
Tên Use case Chọn level
Chức năng này cho phép người chơi lựa chọn các cấp độ đã hoàn thành hoặc những cấp độ cần hoàn thành để tiến tới các cấp độ cao hơn.
Người thực hiện Người chơi Điều kiện trước xử lí None
Sau xử lí (sau Use- case)
Dòng sự kiện chính - Người chơi ở trong màn hình “Dog base” -> Nhấn
- Người chơi chọn level muốn chơi và nhấn “Bắt đầu”
Dòng sự kiện khác - Nếu người chơi chọn level cao hơn level mà người chơi có thể chơi, người chơi sẽ không thể chọn được level đó
- Nếu người chơi nhấn nút “Quay lại” màn hình hiển thị màn hình “Dog base”
Hình 3.6: Sơ đồ hoạt động triệu hồi lính Bảng 3.7: Use case triệu hồi lính
Tên Use case Triệu hồi lính
Mô tả Chức năng này cho phép người chơi có thể triệu gọi nhân vật (lính) trong đội hình vào trận đấu để tấn công đối thủ
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Trận đấu” -> Nhấn chọn nhân vật mà người chơi muốn triệu hồi ở góc trên màn hình
- Thay vì nhấn chọn vào nhân vật, người chơi có thể bấm các phím 1,2,3,4,5 để triệu hồi nhân vật tương ứng theo thứ tự
- Người chơi có thể sử dụng phím “Tab” để chuyển sang dàn nhân vật thứ 2
Hình 3.7: Sơ đồ hoạt động kích hoạt kỹ năng
Bảng 3.8: Use case kích hoạt kỹ năng
Tên Use case Kích hoạt kỹ năng
Chức năng này cho phép người chơi kích hoạt kỹ năng trong trận đấu, mang lại lợi thế chiến thuật Mỗi kỹ năng sở hữu khả năng độc đáo, góp phần nâng cao hiệu suất thi đấu.
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Trận đấu” -> Nhấn chọn biểu tượng kỹ năng muốn kích hoạt ở bên trái màn hình
- Thay vì nhấn chọn vào kỹ năng, người chơi có thể bấm các phím a,s,d để kích hoạt kỹ năng tương ứng theo thứ tự
Hình 3.8: Sơ đồ hoạt động dừng trận đấu Bảng 3.9: Use case dừng trận đấu
Tên Use case Dừng trận đấu
Mô tả Chức năng này cho phép người chơi dừng lại khi đang trong trận đấu
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Trận đấu” -> Nhấn chọn biểu tượng “dừng” ở góc trên bên phải để dừng trận đấu
- Thay vì nhấn chọn biểu tượng “dừng”, người chơi có thể nhấn phím “P” để dừng trận đấu
Hình 3.9: Sơ đồ hoạt động chỉnh sửa âm thanh
Bảng 3.10: Use case chỉnh sửa âm thanh
Tên Use case Chỉnh sửa âm thanh
Mô tả Chức năng này cho phép người chơi chỉnh sửa âm thanh, gồm âm nhạc trận đấu và âm thanh nhấn nút
Người thực hiện Người chơi Điều kiện trước xử lí None
Sau xử lí (sau Use- case)
Dòng sự kiện chính - Người chơi ở trong màn hình “Trận đấu” -> Nhấn chọn biểu tượng “dừng” ở góc trên bên phải để hiển thị thanh dừng trận đấu
- Người chơi chỉnh sửa âm thanh theo sở thích
Dòng sự kiện khác None
Hình 3.10: Sơ đồ hoạt động xem hướng dẫn
Bảng 3.11: Use case xem hướng dẫn
Tên Use case Xem hướng dẫn
Mô tả Chức năng này cho phép người chơi xem hướng dẫn về cách chơi trận đấu, cách chọn level
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình chính -> Nhấn nút “Hướng dẫn”
- Người chơi xem hướng dẫn, nhấn các nút “>” và “ Nhấn
Người chơi có thể xem danh sách đầy đủ các nhân vật, kỹ năng và nội tại mà mình hiện có và có khả năng sở hữu Để khám phá, người chơi chỉ cần nhấn vào các tab “Nhân vật” và “Kỹ năng”.
”Nội tại” để xem danh sách tương ứng
Dòng sự kiện khác None
Hình 3.12: Sơ đồ hoạt động nâng cấp nhân vật
Bảng 3.13: Use case nâng cấp nhân vật
Tên Use case Nâng cấp nhân vật
Mô tả Chức năng này cho phép người chơi nâng cấp nhân vật nhằm giúp nhân vật mạnh hơn
Người thực hiện Người chơi Điều kiện trước xử lí
Nhân vật đã được mở khóa
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Chọn nhân vật muốn nâng cấp
- Số Xương đủ để nâng cấp
- Nhân vật được nâng cấp
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Chọn nhân vật muốn nâng cấp
- Số Xương không đủ để nâng cấp
- Tắt tính năng nâng cấp của nút “Nâng cấp”
Hình 3.13: Sơ đồ hoạt động mua nhân vật
Bảng 3.14: Use case mua nhân vật
Tên Use case Mua nhân vật
Mô tả Chức năng này cho phép người chơi mua nhân vật nhằm giúp mở khóa nhân vật để có thể bắt đầu nâng cấp
Người thực hiện Người chơi Điều kiện trước xử lí
Nhân vật chưa được mở khóa
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Chọn nhân vật muốn mua
- Số Xương đủ để mở mua
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Chọn nhân vật muốn mua
- Số Xương không đủ để mua
- Tắt tính năng mua của nút “Mua”
Hình 3.14: Sơ đồ hoạt động nâng cấp kỹ năng
Bảng 3.15: Use case nâng cấp kỹ năng
Tên Use case Nâng cấp kỹ năng
Mô tả Chức năng này cho phép người chơi nâng cấp kỹ năng nhằm giúp kỹ năng mạnh hơn
Người thực hiện Người chơi Điều kiện trước xử lí
Kỹ năng đã được mở khóa
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Bấm vào thanh kỹ năng
- Chọn kỹ năng muốn nâng cấp
- Số Xương đủ để nâng cấp
- Kỹ năng được nâng cấp
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Bấm vào thanh kỹ năng
- Chọn kỹ năng muốn nâng cấp
- Số Xương không đủ để nâng cấp
- Tắt tính năng nâng cấp của nút “Nâng cấp”
Hình 3.15: Sơ đồ hoạt động mua kỹ năng
Bảng 3.16: Use case mua kỹ năng
Tên Use case Mua kỹ năng
Mô tả Chức năng này cho phép người chơi mua kỹ năng nhằm giúp mở khóa kỹ năng để có thể bắt đầu nâng cấp
Người thực hiện Người chơi Điều kiện trước xử lí
Kỹ năng chưa được mở khóa
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Bấm vào thanh kỹ năng
- Chọn kỹ năng muốn mua
- Số Xương đủ để mở mua
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Chọn kỹ năng muốn mua
- Số Xương không đủ để mua
- Tắt tính năng mua của nút “Mua”
Hình 3.16: Sơ đồ hoạt động nâng cấp nội tại
Bảng 3.17: Use case nâng cấp nội tại
Tên Use case Nâng cấp nội tại
Mô tả Chức năng này cho phép người chơi nâng cấp nội tại nhằm giúp nội tại mạnh hơn
Người thực hiện Người chơi Điều kiện trước xử lí
Nội tại đã được mở khóa
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Bấm vào thanh nội tại
- Chọn nội tại muốn nâng cấp
- Số Xương đủ để nâng cấp
- Nội tại được nâng cấp
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Bấm vào thanh nội tại
- Chọn nội tại muốn nâng cấp
- Số Xương không đủ để nâng cấp
- Tắt tính năng nâng cấp của nút “Nâng cấp”
Hình 3.17: Sơ đồ hoạt động mua nội tại
Bảng 3.18: Use case mua nội tại
Tên Use case Mua nội tại
Mô tả Chức năng này cho phép người chơi mua nội tại nhằm giúp mở khóa nội tại để có thể bắt đầu nâng cấp
Người thực hiện Người chơi Điều kiện trước xử lí
Nội tại chưa được mở khóa
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Bấm vào thanh nội tại
- Chọn nội tại muốn mua
- Số Xương đủ để mở mua
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Chọn nội tại muốn mua
- Số Xương không đủ để mua
- Tắt tính năng mua của nút “Mua”
Hình 3.18: Sơ đồ hoạt động nâng cấp vật phẩm Bảng 3.19: Use case nâng cấp vật phẩm
Tên Use case Xem vật phẩm
Mô tả Chức năng này cho phép người chơi có thể xem danh sách vật phẩm
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Nâng cấp”
- Danh sách vật phẩm được hiển thị
Hình 3.19: Sơ đồ hoạt động mua vật phẩm
Bảng 3.20: Use case mua vật phẩm
Tên Use case Mua vật phẩm
Mô tả Chức năng này cho phép người chơi mua vật phẩm
Người thực hiện Người chơi Điều kiện trước xử lí
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Cửa hàng”
- Chọn vật phẩm muốn mua
- Số Xương đủ để mua
- Người chơi ở trong màn hình “Dog base” -> Nhấn “Cửa hàng”
- Chọn vật phẩm muốn mua
- Số Xương không đủ để mua
- Tắt tính năng mua của nút “Mua”
Phân tích và thiết kế cơ sở dữ liệu
- GameSave(id, bone, dog_food, dogs, skills, passives, items, passed_level, selected_battlefield_id, selected_level, selected_team, settings, teams)
- teams(dog_ids, skill_ids)
- Dog(id, name, description, price, spawn_time, spawn_price)
- Skill(id, name, description, price, spawn_time)
- Passive(id, name, description, price)
- Item(id, name, description, price)
- BattlefieldData(id, theme, music, stage_width, cat_tower_health, reward_bone, power_scale, spawn_patterns, bosses)
- bossspawn(health_at, name, buff)
Mô tả dữ liệu GameSave
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Bone int 0 dog_food int 0
Items upgradeitemdata[] passed_level int 1 selected_battlefield_id String Level 1 selected_level int 1 selected_team int 1
Mô tả dữ liệu upgradedata
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu upgradeitemdata
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu settings
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu teams
Cột Kiểu dữ liệu Mặc định Khóa ngoại dog_ids String[] skill_ids String[]
Mô tả dữ liệu Dog
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Price int spawn_time int spawn_price int
Mô tả dữ liệu Dogs
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu Skill
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Price int spawn_time int
Mô tả dữ liệu Skills
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu Passive
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu Passives
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu Item
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu Items
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu SpeakerDogDialogue
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu BattlefieldData
Cột Kiểu dữ liệu Mặc định Khóa ngoại id String
Music String stage_width int cat_tower_health int reward_bone int power_scale float spawn_patterns spawnpattern
Mô tả dữ liệu spawnpattern
Cột Kiểu dữ liệu Mặc định Khóa ngoại
Mô tả dữ liệu bossspawn
Cột Kiểu dữ liệu Mặc định Khóa ngoại health_at int
Mô tả dữ liệu buff
Cột Kiểu dữ liệu Mặc định Khóa ngoại
XÂY DỰNG GAME
Đồ họa nhân vật trong game
Nhân vật trong game được thiết kế với phong cách thân thiện và dễ thương, mỗi nhân vật đều sở hữu hoạt ảnh độc đáo cho các hành động như tấn công, di chuyển, ngã và đứng yên.
- Đầu tiền nhân vật sẽ được thiết kế, sau đó bắt đầu tiến hành xây dựng các hoạt ảnh
Hình 4.1: Xây dựng hoạt ảnh tấn công cho Chó
After completing the animations, export each frame as individual image files and compile them into a sprite sheet using TexturePacker.
Hình 4.2: Sprite sheet cho nhân vật Chó
- Sau khi tạo ra được spritesheet cho nhân vật, ta có thể dùng nó để tạo nhân vật chơi được trong game sử dụng Godot
Một số nhân vật phức tạp trong game, như Chó Bắn Tỉa và boss cuối Mèo Ramiel, được tạo thành từ nhiều spritesheet khác nhau.
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
- Phương pháp xây dựng hoạt ảnh cho các đối tượng khác ngoài nhân vật cũng được thực hiện tương tự như trên.
Đồ họa hình ảnh game
Krita là phần mềm lý tưởng để tạo ra các đồ họa tĩnh trong game như GUI, bản đồ và background, nhờ vào các tính năng tiện dụng giúp vẽ hình ảnh seamless một cách hiệu quả.
- Hình ảnh được xây dựng xong sẽ được đưa vào dùng ngay trong Godot mà không cần thông qua phần mềm tổng hộp ảnh nào
Hình 4.4: Xây dựng đồ họa cho bản đồ của game
Xây dựng giao diện game:
Giao diện start game
Bảng 4.1: Bảng mô tả giao diện start game
STT Chức năng Điều kiện kích hoạt Kích hoạt thành công
Khi mở ứng dụng Hiển thị đoạn hình ảnh giới thiệu về cốt truyện của trò chơi
“Bỏ qua” => Hiển thị trang
Nhấn nút “Bỏ qua” hoặc chờ cho đến khi giới thiệu game kết thúc
Giao diện hướng dẫn
Bảng 4.2: Bảng mô tả giao diện hướng dẫn
STT Chức năng Điều kiện kích hoạt
- Nếu nhấn các nút “” bên phải hoặc trái giao diện => Chuyển sang giao diện hướng dẫn khác
2 Quay lại Nếu nhấn nút
Quay trở lại giao diện “Start game”
Giao diện Dog base
Bảng 4.3: Bảng mô tả giao diện Dog base
STT Chức năng Điều kiện kích hoạt
Kích hoạt thành công Ngoại lệ
1 Hiển thị các yêu cầu chính của trò chơi, gồm:
Viễn chinh, nâng cấp và cửa hàng
Hiển thị giao diện “Căn cứ chó”
2 Quay lại Nếu nhấn nút
Quay trở lại giao diện
Giao diện nâng cấp
Bảng 4.4: Bảng mô tả giao diện nâng cấp
STT Chức năng Điều kiện kích hoạt
1 Hiển thị danh sách nhân vật, kỹ năng và nội tại trong game
“Nhân vật”/ “Kỹ năng”/ “Nội tại” để chuyển sang các danh sách tương ứng
2 Mua/ nâng cấp nhân vật trong game
Chọn nhân vật muốn mua/nâng cấp => Nhấn nút
Mua/nâng cấp nhân vật
3 Mua/ nâng cấp kỹ năng trong game
Chọn kỹ năng muốn mua/nâng cấp => Nhấn nút
Mua/nâng cấp kỹ năng
4 Mua/ nâng cấp nội tại trong game
Chọn nội tại muốn mua/nâng cấp =>
Mua/nâng cấp nội tại
5 Quay lại căn cứ chó
Quay trở lại giao diện “Dog base”
Hình 4.9: Nâng cấp nhân vật
Hình 4.10: Nâng cấp kỹ năng
Hình 4.11: Nâng cấp nội tại
Giao diện cửa hàng
Bảng 4.5: Bảng mô tả giao diện cửa hàng
STT Chức năng Điều kiện kích hoạt
1 Hiển thị danh sách vật phẩm
Nhấn vào nút “Cửa hàng”
Chọn vật phẩm muốn mua => Nhấn nút “Mua”
3 Quay lại căn cứ chó
Quay trở lại giao diện “Dog base”
Giao diện bản đồ
Bảng 4.6: Bảng mô tả giao diện bản đồ
STT Chức năng Điều kiện kích hoạt
Kích hoạt thành công Ngoại lệ
Hiển thị giao diện “Trận đấu”
Hiển thị giao diện “Đội hình”
3 Chọn level Nhấn vào các nút tròn trên bản đồ hoặc bấm phím trái, phải để chọn
Dog di chuyển đến các nút level
4 Quay lại căn cứ chó
Quay trở lại giao diện
Giao diện đội hình
Bảng 4.7: Bảng mô tả giao diện đội hình
STT Chức năng Điều kiện kích hoạt Kích hoạt thành công
- Nhấn vào các nhân vật/ kỹ năng trong danh sách để đưa vào đội hình
- Nhấn vào các nhân vật/ kỹ năng trong đội hình để loại bỏ nhân vật khỏi đội hình Đội hình nhân vật/ kỹ năng được sắp xếp
“Skill” để chuyển sang đội hình nhân vật hoặc kỹ năng
Nhấn nút “Lưu” Di chuyển đến giao diện “Bản đồ”
Nếu nhấn nút “Quay lại”
Quay trở lại giao diện Bản đồ”
Giao diện trận đấu
Bảng 4.8: Bảng mô tả giao diện trận đấu
STT Chức năng Điều kiện kích hoạt
Nhấn vào các nhân vật
Các nhân vật tương ứng được triệu hồi
- Có thể bấm các phím 1,2,3,4,5 thay vì click vào các nút
- Nếu lượng tiền không đủ hoặc nhân vật đang trong thời gian chờ, sẽ không thể triệu hồi nhân vật
2 Chuyển danh sách nhân vật triệu hồi
“thay đổi” bên phải danh sách nhân vật triệu hồi
Chuyển sang danh sách triệu hồi khác
- Có thể bấm phím Tab thay vì click vào biểu tượng
Nhấn vào các kỹ năng
Các kỹ năng tương ứng được kích hoạt
- Có thể bấm các phím A,S,D thay vì click vào các nút
- Nếu kỹ năng đang trong thời gian chờ, kỹ năng sẽ không được kích hoạt
Nhấn vào biểu tượng ở góc trên bên trái
Lượng tiền có thể chứa trong ví tăng
- Nếu lượng tiền không đủ, ví sẽ không được nâng cấp
5 Tạm dừng Nhấn vào biểu tượng
“dừng” ở góc trên bên phải
Dừng vaHiển thị màn hình “Dừng trận đấu”
- Có thể bấm phím P thay vì click vào biểu tượng
Giao diện dừng trận đấu
Bảng 4.9: Bảng mô tả giao diện dừng trận đấu
STT Chức năng Điều kiện kích hoạt
Nhấn vào nút có biểu tượng “âm nhạc” Âm thanh nhấn nút được bật/tắt
2 Tắt/bật âm nhạc nền
Nhấn vào nút có biểu tượng “loa” Âm nhạc nền được bật/tắt
Quay trở lại giao diện “Dog base”
Quay trở lại giao diện “Start game”
Xóa màn hình “Dừng trận đấu” => Quay trở lại giao diện trận đấu => Tiếp tục trận đấu
P thay vì click vào nút “X”