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

Xây dựng game chiến thuật thủ thành

94 3 0

Đ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 đề Xây Dựng Game Chiến Thuật Thủ Thành
Tác giả Trần Anh Khoa, Thái Chí Bảo
Người hướng dẫn ThS. Trần Thị Hồng Yến
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Công nghệ phần mềm
Thể loại Đồ án
Năm xuất bản 2013
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 94
Dung lượng 9,02 MB

Cấu trúc

  • Chương 1. GIỚI THIỆU ĐỀ TÀI (13)
    • 1.1. Tổng quan (13)
      • 1.1.1. 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 (13)
      • 1.1.2. Vấn đề còn tồn tại (13)
      • 1.1.3. Vấn đề cần tập trung, nghiên cứu giải quyết (14)
    • 1.2. Lý do chọn đề tài (15)
    • 1.3. Mục đích (16)
    • 1.4. Đối Tượng (17)
    • 1.5. Phạm vi nghiên cứu (17)
  • Chương 2. CƠ SỞ LÍ THUYẾT (19)
    • 2.1. Công nghệ Godot (19)
      • 2.1.1. Godot là gì? (19)
      • 2.1.2. Tại sao nên sử dụng Godot (19)
      • 2.1.3. Nghiên cứu và áp dụng Godot trong đồ án (20)
    • 2.2. Tiền tệ (20)
    • 2.3. Hệ thống Trận đấu (Battle System) (21)
    • 2.4. Thiết lập trận đấu (22)
      • 2.4.1. Power scale (power_scale) (23)
      • 2.4.2. Spawn patterns (spawn_patterns) (23)
      • 2.4.3. Boss (bosses) (23)
      • 2.4.4. Phương pháp truy cập dữ liệu trận đấu (24)
    • 2.5. Bản đồ (Map) (25)
      • 2.5.1. Các node màn chơi (25)
      • 2.5.2. Dãy các bảng tên (26)
      • 2.5.3. Các nút định hướng (26)
      • 2.5.4. Phương pháp liên kết dữ liệu giữa các thành phần (26)
    • 2.6. Nâng cấp (26)
      • 2.6.1. Ô nâng cấp (27)
      • 2.6.2. Thanh thông tin (27)
      • 2.6.3. Nút Mở khóa/Nâng cấp (27)
      • 2.6.4. Phương pháp truy cập dữ liệu sản phẩm (27)
    • 2.7. Kỹ năng (28)
      • 2.7.1. Mưa cầu lửa (28)
      • 2.7.2. Đường Sấm Chớp (28)
      • 2.7.3. Trống Trận Cẩu Sơn (29)
      • 2.7.4. Hồi Máu Thành (29)
      • 2.7.5. Tăng Sức Mạnh (30)
    • 2.8. Nội tại (30)
      • 2.8.1. Năng suất Lao động (30)
      • 2.8.2. Sức chứa Kho bạc (31)
      • 2.8.3. Sức chống cự Thành Chó (31)
      • 2.8.4. Nghiên cứu và phát triển (31)
    • 2.9. Nhân vật (32)
      • 2.9.1. Xây dựng AI cho nhân vật sử dụng Finite State Machine (33)
      • 2.9.2. Phương pháp xác định tầm ảnh hưởng đòn đánh (34)
      • 2.9.3. Xác định tầm ảnh hưởng đòn đánh bằng custom_attack_area (36)
      • 2.9.4. Nhân vật – Chó (37)
      • 2.9.5. Nhân vật – Mèo (37)
  • Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG GAME (38)
    • 3.1. Sơ đồ Use case (38)
    • 3.2. Danh sách Actor (38)
    • 3.3. Danh sách Use case (39)
    • 3.4. Danh sách đặc tả Use case (41)
    • 3.5. Phân tích và thiết kế cơ sở dữ liệu (69)
    • 3.6. Mô tả dữ liệu (70)
    • 3.7. Chi tiết dữ liệu (71)
  • Chương 4. XÂY DỰNG GAME (77)
    • 4.1. Xây dựng đồ họa game (77)
      • 4.1.1. Đồ họa nhân vật trong game (77)
      • 4.1.2. Đồ họa hình ảnh game (79)
    • 4.2. Xây dựng giao diện game (80)
      • 4.2.1. Giao diện start game (80)
      • 4.2.2. Giao diện hướng dẫn (82)
      • 4.2.3. Giao diện Dog base (83)
      • 4.2.4. Giao diện nâng cấp (84)
      • 4.2.5. Giao diện cửa hàng (86)
      • 4.2.6. Giao diện bản đồ (87)
      • 4.2.7. Giao diện đội hình (88)
      • 4.2.8. Giao diện trận đấu (88)
      • 4.2.9. Giao diện dừng trận đấu (91)
  • KẾT LUẬN.............................................................................................................77 (92)
    • 1. Kết quả đạt được (92)
      • 1.1. Lý thuyết (92)
      • 1.2. Công nghệ (92)
      • 1.3. Ứng dụng (92)
    • 2. Hạn chế (92)
    • 3. Hướng phát triển (80)
  • TÀI LIỆU THAM KHẢO.......................................................................................79 (94)

Nội dung

GIỚI THIỆU ĐỀ TÀI

Tổng quan

1.1.1 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 về trò chơi chiến thuật thủ thành, nhiều tác giả đã tập trung vào việc phát triển hệ thống trí tuệ nhân tạo cho đối thủ, nhằm tạo ra hành vi thông minh và thách thức. Các phương pháp như các thuật toán tìm kiếm thông minh, học máy và học sâu đã được áp dụng để cải thiện khả năng quyết định và tương tác của đối thủ.

- 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ế 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 chúng 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.

+ 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 chúng 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, chúng 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.

Mục đích

- 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:

+ Tạo ra một trò chơi hấp dẫn và thú vị: Mục đích chính là phát triển một trò chơi chiến thuật thủ thành có giao diện hấp dẫn, cung cấp 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: 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 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.

Phạm vi nghiên cứu

- 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:

- Thiết kế và phát triển trò chơi: Nghiên cứu có thể tập trung vào quá trình thiết kế và phát triển trò chơi, bao gồm 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, hệ thống trí tuệ nhân tạo cho đối thủ, và các yếu tố khác liên quan đến trò chơi.

- Đồ họa: Trò chơi sử dụng đồ họa dễ nhìn, do nhóm tự 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, 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.

- Json: lưu trữ dữ liệu.

- Blender Grease Pencil: Thiết kế đồ họa.

CƠ SỞ LÍ THUYẾT

Công nghệ 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 công cụ chơi trò chơi mạnh mẽ cho việc tạo ra các trò chơi đ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.

- 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ợ 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.

- 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, giải đáp câu hỏi 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.

Tiền tệ

- 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ì (Dog Tower, Cat Tower): 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 (Cat Tower) và bảo vệ thành của mình (Dog Tower) 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 bằng cách nâng cấp Ví tiền.

- 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

Dog Tower, 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 Cat Tower 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.

Thiết lập trận đấu

- The Battle Dogs sử dụng các yếu tố như sau để thiết lập trận đấu (các kiểu dữ liệu được trình bày dưới đây là 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 là một con số dùng để tăng hoặc giảm sức mạnh 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, với công thức:

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:

- 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.

- 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.

+ health_at (int): Lượng máu mà Cat Tower cần ở 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 trùm cuối.

+ buffs (string): Những sức mạnh mà trùm cuối sẽ được nâng cấp (tùy vào mức độ trận đấu mà có thể nâng cấp nhiều loại sức mạnh), như máu, tốc độ đánh, sát thương,… Để áp dụng các yếu tố này vào game, một file json được tạo đại diện cho một màn đấu trong game, file json này sẽ chứa các thông tin trên.

- 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.

2.4.4 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ói trên.

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

Bản đồ (Map)

- Bản đồ là thành phần quan trọng trong game, đây là nơi mà người chơi có thể chọn màn chơi mà họ muốn để chơi và thiết lập đội hình.

- Bản đồ sẽ chứa các node mà người chơi có thể bấm vào, mỗi node tượng trương cho một màn chơi và sẽ chứa tên của màn chơi đó cùng với tên file json 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.

- 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.

- 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.5.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.

- Ô 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.

- Đâ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.6.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.6.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.

Kỹ năng

- 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.

- 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: damage=base damage +(0.5∗base damage ∗(level−1))

- 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.

- 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=base damage +(0.5∗base damage ∗(level−1))

- 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 =base ¿ −(level ¿ ∗(level−1))

- 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.

- 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 =base ¿+(level ¿∗(level−1))

- 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.

- 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 =base hh +(2∗base hh ∗(level−1))

- 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.

- 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 ¿ =base pus +(level pus ∗(level−1))

- 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.

- 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 =base ¿ ∗(1+level ¿ ∗level)

- 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.

- 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 =base wc ∗(1+level wc ∗level)

- 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.8.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 Dog Tower.

- Máu tối đa của Dog Tower công sức sau: max health =base mh ∗1.5 level

- 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.

2.8.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: reward bone =battle rb +(battle rb ∗level rb ∗level)

- 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

- Nhân vật là thành phần chủ chốt trong trận đấu, nhân vật có thể được triệu hồi để di chuyển và đánh nhau, đánh thành. Việc triệu hồi nhân vật quyết định thắng thua của một 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.

2.9.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.

- 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 điều khiển nhân vật di chuyển và kiểm tra xem đối tượng khác (kẻ địch, thành trì địch) có nằm trong tầm đánh của nhân vật 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 Nhân vật thực hiện hoạt ảnh của đòn đánh, khi hoạt ảnh của attack_sprite đạt tới frame có giá trị lớn hơn hoặc bằng attack_frame thì sẽ thực hiện logic tấn công gây sát thương cho kẻ địch nằm trong tầm ảnh hưởng đòn đánh.

- 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 cho nhân vật đứng yên Nếu đối tượng không còn nằm trong tầm đánh thì chuyển sang trạng thái MoveState, nếu đối tượng vẫn còn trong tầm đánh thì chờ cho đến khi thời gian chờ đòn đánh chạy xong rồi chuyển sang trạng thái AttackState.

- Trạng thái này kiểm soát hành động ngã của nhân vật Trạng thái này chỉ được kích hoạt khi nhân vật bị tấn công và lượng máu rơi xuống một giá trị 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.

2.9.2 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 thông qua 3 yếu tố: vị trí của nhân vật ở phần nhân vật đang hướng đến, giá trị của tầm đánh (attack_range), và giá trị được cho trong tầm ảnh attack_area_range.

- Tầm ảnh hưởng đòn đánh là một đường ngang nằm dưới đất có giá trị nhất định Giá trị nhất định attack_area_range càng lớn thì đường ngang này càng lớn Vị trí chính giữa của đường ngang này có giá trị theo trục x được tính theo theo công thức sau: x=hitbox ¿ +attack range

- 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: Tầm đánh và tầm ảnh hưởng đòn đánh của Chó Thiên

Thần Để dễ hình dung, ở đây ta có nhân vật là Chó Thiên thần, với diểm đường nét đứt màu vàng đại diện cho tầm đánh, đường ngang màu xanh đại diện cho tầm ảnh hưởng của đòn đánh và ô màu xanh nước là hitbox của nhân vật.

2.9.3 Xác định tầm ảnh hưởng đòn đánh bằng custom_attack_area:

- Trong một số trường ta muốn thiết kế nhân vật có tầm đánh đặc biệt mà phương pháp sử dụng attack_area_range không thể đáp ứng, ta có thể sử dụng custom_attack_area để xác định tầm ảnh hưởng đòn đánh.

- custom_attack_area là một biến nhận giá trị là một Node thuộc kiểu Area2D Đây là node có tác dụng xác định vùng va chạm Ta có thể dùng node này để xác định tầm ảnh hưởng đòn đánh theo ý muốn của bản thâ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 Thay vì sử dụng giá trị trong attack_area_range để xác định tầm ảnh hưởng đòn đánh, ta sử dụng một node Area2D có hình dạng giống như trên (đường thẳng màu xanh nước) để xác định tầm đánh.Điều này giúp cho nhân vật có tầm ảnh hưởng đòn đánh hợp lí hơn (là đường đi của viên đạn thay vì một ô nằm dưới mặt đất).

- 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 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

Sơ đồ Use case

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

Danh sách Actor

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

Danh sách Use case

Bảng 3.2: Danh sách Use case

T 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.6: 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

Mô tả Chức năng này cho phép người chơi có thể xem danh sách nhân vật và kỹ năng mà người chơi đã sở hữu và đội hình nhân vật/ kỹ năng mà người chơi đang sử dụng để xuất kích.

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ể xem xem danh sách nhân vật và kỹ năng mà người chơi đã sở hữu và đội hình nhân vật/ kỹ năng mà người chơi đang sử dụng để xuất kích. Người chơi nhấn vào các tab “Nhân vật”,

“Kỹ năng” để xem danh sách đội hình tương ứng.

Sắp xếp đội hình/ kỹ năng

Hình 3.7: 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

Mô tả Chức năng này cho phép người chơi có thể xem danh sách nhân vật và kỹ năng mà người chơi đã sở hữu và thiết lập đội hình nhân vật/ kỹ năng mà người chơi đang sử dụng để xuất kích.

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ể xem xem danh sách nhân vật và kỹ năng mà người chơi đã sở hữu và đội hình nhân vật/ kỹ năng mà người chơi đang sử dụng để xuất kích. Người chơi nhấn vào các tab “Nhân vật”,

“Kỹ năng” để chọn danh sách đội hình tương ứ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.8: 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 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.9: Sơ đồ hoạt động chọn level

Bảng 3.6: Use case chọn level

Tên Use case Chọn level

Mô tả Chức năng này cho phép người chơi có thể chọn các level mà người chơi đã hoàn thành hoặc level mà người chơi cần hoàn thành để tiếp tục level cao hơ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 chọn level muốn chơi và nhấn “Bắt đầu”.

- 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.10: 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 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.11: 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

Mô tả Chức năng này cho phép người chơi có kích hoạt kỹ năng trong trận đấu nhằm tạo lợi thế trong trận đấu, mỗi kỹ năng có một khả năng riêng.

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.12: 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 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.13: 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í

- 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.

Hình 3.14: 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 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 “Nâng cấp”.

- Người chơi có thể xem danh sách tất cả các nhân vật, kỹ năng và nội tại mà người chơi đang và có thể sở hữu. Người chơi nhấn vào các tab “Nhân vật”, “Kỹ năng”, ”Nội tại” để xem danh sách tương ứng.

Hình 3.16: 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 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.17: 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 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.18: 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 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.19: 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 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.20: 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 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.21: 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 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.22: 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 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.23: 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 chơi Điều kiện trước xử lí

Dòng sự kiện - Người chơi ở trong màn hình “Dog base” chính -> 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

Mô tả 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)

Chi tiết dữ liệu

Mô tả dữ liệu GameSave

GameSave Cột Kiểu dữ liệu Mặc định Khóa ngoại

Bone int 0 dog_food int 0

Items upgradeitemd ata[] passed_level int 1 selected_battlefie ld_id String Level 1 selected_level int 1 selected_team int 1

Mô tả dữ liệu upgradedata

Bảng 3.22: Bảng upgradedata upgradedata Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu upgradeitemdata

Bảng 3.23: Bảng upgradeitemdata upgradeitemdata Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu settings

Bảng 3.24: Bảng settings settings Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu teams

Bảng 3.25: Bảng teams 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

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

Dogs Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu Skill

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

Skills Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu Passive

Passive Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu Passives

Passives Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu Item

Item Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu Items

Items Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu SpeakerDogDialogue

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

Bảng 3.36: Bảng spawnpattern spawnpattern Cột Kiểu dữ liệu Mặc định Khóa ngoại

Mô tả dữ liệu bossspawn

Bảng 3.37: Bảng bossspawn bossspawn Cột Kiểu dữ liệu Mặc định Khóa ngoại health_at int

Mô tả dữ liệu buff

Bảng 3.38: Bảng buff buff Cột Kiểu dữ liệu Mặc định Khóa ngoại

XÂY DỰNG GAME

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

- Đồ họa của game được tạo nên sử dụng Blender Grease Pencil và Krita Trong đó Blender Grease Pencil được dùng để tạo đồ họa cho tài nguyên có hoạt ảnh (animation), còn Krita dùng để tạo đồ họa cho các phần còn lại như background trong trận đấu, GUI của game, bản đồ, …

- Ngoài ra còn có TexturePacker được dùng để đóng gói các hình ảnh lại thành một sprite sheet dùng để tiện sử dụng cho việc lập trình hoạt ảnh trong Godot.

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

- Nhân vật trong game được vẽ với style thân thiện, dễ thương, các nhân vật trong game đều có hoạt ảnh riêng cho từng hành động như đánh, di chuyển, ngã, đứng im.

- Đầ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.25: Xây dựng hoạt ảnh tấn công cho Chó

- Sau khi xây dựng xong các hoạt ảnh, xuất các frame của từng hoạt ảnh đó ra thành các file ảnh riêng và gộp lại thành một sprite sheet sử dụng TexturePacker.

Hình 4.26: 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 hơn sẽ được cấu thành từ nhiều spritesheet khác nhau, chẳng hạn như nhân vật Chó Bắn Tỉa hay boss cuối game Mèo Ramiel.

Hình 4.27: 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.

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

- Đối với các đồ họa tĩnh trong game như GUI, bản đồ,background game, v.v… Krita là phần mềm được dùng để xây dựng các đồ họa này do có một số tính năng tiện dụng cho việc vẽ các hình ảnh có tính seamless.

- 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.28: Xây dựng đồ họa cho bản đồ của game

Xây dựng giao diện game

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

T Chức năng Điều kiện kích hoạt Kích hoạt thành công Ngoại lệ

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.

Nếu nhấn nút “Bỏ qua”

=> Hiển thị trang “Start game”

2 Bắt đầu trò chơi Nhấn nút “Bỏ qua” hoặc chờ cho đến khi giới thiệu game kết thúc

Hiển thị giao diện “Start game”.

“Hướng dẫn” Hiển thị giao diện “Hướng dẫn”.

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

T 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 “Hướng dẫn”.

- 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 lại”

Quay trở lại giao diện “Start game”.

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

T 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

Nhấn vào nút “Bắt đầu”

2 Quay lại Nếu nhấn nút “Quay lại”

Quay trở lại giao diện “Start game” Không.

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

T 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ị danh sách nhân vật, kỹ năng và nội tại trong game.

“Nâng cấp” Hiển thị giao diện “Nâng cấp”.

- Nhấn các tab “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

Mua/nâng cấp nhân vật Không

3 Mua/ nâng cấp kỹ năng trong game

Chọn kỹ năng muốnmua/nâng cấp

Mua/nâng cấp kỹ năng Không

4 Mua/ nâng cấp nội tại trong game

Chọn nội tại muốnmua/nâng cấp

Mua/nâng cấp nội tại Không

5 Quay lại căn cứ chó

“Quay lại” Quay trở lại giao diện “Dog base”.

Hình 4.33: Nâng cấp nhân vật

Hình 4.34: Nâng cấp kỹ năng

Hình 4.35: Nâng cấp nội tại

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

T 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ị danh sách vật phẩm.

“Cửa hàng” Hiển thị giao diện “Cửa hàng”.

2 Mua vật phẩm Chọn vật phẩm muốn mua =>

3 Quay lại căn cứ chó

“Quay lại” Quay trở lại giao diện “Dog base”.

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

T Chức năng Điều kiện kích hoạt Kích hoạt thành công Ngoại lệ

1 Bắt đầu trò chơi Nhấn vào nút “Tấn công”

2 Sắp xếp đội hình Nhấn vào nút

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 Không.

4 Quay lại căn cứ chó

Nếu nhấn nút “Quay lại”

Quay trở lại giao diện “Dog base” Không.

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

T Chức năng Điều kiện kích hoạt Kích hoạt thành công Ngoại lệ

1 Sắp xếp đội hình - 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.

- Nhấn vào tab “Đội hình” hoặc

“Skill” để chuyển sang đội hình nhân vật hoặc kỹ năng.

2 Lưu đội hình Nhấn nút “Lưu” Di chuyển đến giao diện

3 Quay lại bản đồ Nếu nhấn nút

“Quay lại” Quay trở lại giao diện Bản đồ”

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

T Chức năng Điều kiện kích hoạt Kích hoạt thành công Ngoại lệ

1 Triệu hồi nhân vậ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 danhsá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

P thay vì click vào biểu tượng “dừng”.

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

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

T Chức năng Điều kiện kích hoạt Kích hoạt thành công Ngoại lệ

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 Không.

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 Không.

3 Thoát trận đấu Nhấn vào nút

Quay trở lại giao diện “Dog base” Không.

Quay trở lại giao diện “Start game”

5 Tiếp tục trận đấu Nhấn vào nút

=> Quay trở lại giao diện trận đấu => Tiếp tục trận đấu

- Có thể bấm phím P thay vì click vào nút

Ngày đăng: 04/09/2023, 20:52

HÌNH ẢNH LIÊN QUAN

Hình 2.2: Mẫu file json thiết lập trận đấu - Xây dựng game chiến thuật thủ thành
Hình 2.2 Mẫu file json thiết lập trận đấu (Trang 25)
3.1. Sơ đồ Use case - Xây dựng game chiến thuật thủ thành
3.1. Sơ đồ Use case (Trang 38)
Hình 3.6: Sơ đồ hoạt động xem đội hình/ kỹ năng - Xây dựng game chiến thuật thủ thành
Hình 3.6 Sơ đồ hoạt động xem đội hình/ kỹ năng (Trang 41)
Hình 3.7: Sơ đồ hoạt động sắp xếp đội hình/ kỹ năng - Xây dựng game chiến thuật thủ thành
Hình 3.7 Sơ đồ hoạt động sắp xếp đội hình/ kỹ năng (Trang 43)
Hình 3.9: Sơ đồ hoạt động chọn level - Xây dựng game chiến thuật thủ thành
Hình 3.9 Sơ đồ hoạt động chọn level (Trang 46)
Hình 3.15: Sơ đồ hoạt động xem nhân vật/ kỹ năng/ nội tại - Xây dựng game chiến thuật thủ thành
Hình 3.15 Sơ đồ hoạt động xem nhân vật/ kỹ năng/ nội tại (Trang 53)
Hình 3.16: Sơ đồ hoạt động nâng cấp nhân vật - Xây dựng game chiến thuật thủ thành
Hình 3.16 Sơ đồ hoạt động nâng cấp nhân vật (Trang 54)
Hình 3.17: Sơ đồ hoạt động mua nhân vật - Xây dựng game chiến thuật thủ thành
Hình 3.17 Sơ đồ hoạt động mua nhân vật (Trang 56)
Bảng 3.14: Use case mua nhân vật - Xây dựng game chiến thuật thủ thành
Bảng 3.14 Use case mua nhân vật (Trang 57)
Bảng 3.15: Use case nâng cấp kỹ năng - Xây dựng game chiến thuật thủ thành
Bảng 3.15 Use case nâng cấp kỹ năng (Trang 59)
Hình 3.20: Sơ đồ hoạt động nâng cấp nội tại - Xây dựng game chiến thuật thủ thành
Hình 3.20 Sơ đồ hoạt động nâng cấp nội tại (Trang 62)
Bảng 3.18: Use case mua nội tại - Xây dựng game chiến thuật thủ thành
Bảng 3.18 Use case mua nội tại (Trang 65)
Hình 3.24: ERD - Xây dựng game chiến thuật thủ thành
Hình 3.24 ERD (Trang 69)
Hình 4.25: Xây dựng hoạt ảnh tấn công cho Chó - Xây dựng game chiến thuật thủ thành
Hình 4.25 Xây dựng hoạt ảnh tấn công cho Chó (Trang 78)
Hình 4.28: Xây dựng đồ họa cho bản đồ của game - Xây dựng game chiến thuật thủ thành
Hình 4.28 Xây dựng đồ họa cho bản đồ của game (Trang 80)
Hình 4.29: Giới thiệu game - Xây dựng game chiến thuật thủ thành
Hình 4.29 Giới thiệu game (Trang 81)
Hình 4.30: Start game - Xây dựng game chiến thuật thủ thành
Hình 4.30 Start game (Trang 81)
Bảng 4.40: Bảng mô tả giao diện hướng dẫn - Xây dựng game chiến thuật thủ thành
Bảng 4.40 Bảng mô tả giao diện hướng dẫn (Trang 82)
Bảng 4.41: Bảng mô tả giao diện Dog base - Xây dựng game chiến thuật thủ thành
Bảng 4.41 Bảng mô tả giao diện Dog base (Trang 83)
Bảng 4.43: Bảng mô tả giao diện cửa hàng - Xây dựng game chiến thuật thủ thành
Bảng 4.43 Bảng mô tả giao diện cửa hàng (Trang 86)
Bảng 4.44: Bảng mô tả giao diện bản đồ - Xây dựng game chiến thuật thủ thành
Bảng 4.44 Bảng mô tả giao diện bản đồ (Trang 87)
Bảng 4.45: Bảng mô tả giao diện đội hình - Xây dựng game chiến thuật thủ thành
Bảng 4.45 Bảng mô tả giao diện đội hình (Trang 88)
Hình 4.39: Trận đấu - Xây dựng game chiến thuật thủ thành
Hình 4.39 Trận đấu (Trang 90)
Hình cính - Xây dựng game chiến thuật thủ thành
Hình c ính (Trang 91)

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

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

TÀI LIỆU LIÊN QUAN

w