1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

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

Đ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 đề Phát triển Game Chiến Thuật Thủ Thành Online Multiplayer
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, Trường Đại học Công nghệ Thông tin, Khoa Công nghệ Phần mềm
Chuyên ngành Kỹ thuật Phần mềm
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 132
Dung lượng 5,85 MB

Cấu trúc

  • Chương 1. GIỚI THIỆU ĐỀ TÀI (18)
    • 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 (18)
    • 1.1.2. Vấn đề còn tồn tại (18)
    • 1.1.3. Vấn đề cần tập trung, nghiên cứu giải quyết (19)
  • Chương 2. CƠ SỞ LÍ THUYẾT (23)
    • 2.1.1. Godot là gì? (23)
    • 2.1.2. Tại sao nên sử dụng Godot (23)
    • 2.1.3. Nghiên cứu và áp dụng Godot trong đồ án (24)
    • 2.8.1. Battlefield (battlefield) (29)
    • 2.8.2. Power scale (power_scale) (29)
    • 2.8.3. Instant spawns (instant_spawns) (29)
    • 2.8.4. Spawn patterns (spawn_patterns) (29)
    • 2.8.5. Boss (bosses) (30)
    • 2.8.6. Phương pháp truy cập dữ liệu trận đấu (30)
    • 2.9.1. Các node màn chơi (31)
    • 2.9.2. Dãy các bảng tên (32)
    • 2.9.3. Các nút định hướng (32)
    • 2.9.4. Phương pháp liên kết dữ liệu giữa các thành phần (32)
    • 2.10.1. Ô nâng cấp (32)
    • 2.10.2. Thanh thông tin (33)
    • 2.10.3. Nút Mở khóa/Nâng cấp (33)
    • 2.10.4. Phương pháp truy cập dữ liệu sản phẩm (33)
    • 2.11.1. Mưa cầu lửa (33)
    • 2.11.2. Đường Sấm Chớp (34)
    • 2.11.3. Trống Trận Cẩu Sơn (34)
    • 2.11.4. Hồi Máu Thành (35)
    • 2.11.5. Tăng Sức Mạnh (35)
    • 2.12.1. Năng suất Lao động (35)
    • 2.12.2. Sức chứa Kho bạc (36)
    • 2.12.3. Sức chống cự Thành Chó (36)
    • 2.12.4. Nghiên cứu và phát triển (36)
    • 2.12.5. Phù thủy canh thành Gandolfg (37)
    • 2.13.1. Bom nguyên tử (38)
    • 2.13.2. Cầu lửa ngẫu nhiên (38)
    • 2.13.3. Chó Titan (38)
    • 2.13.4. Ví tiền max (39)
    • 2.14.1. Xây dựng AI cho nhân vật sử dụng Finite State Machine (40)
    • 2.14.2. Phương pháp xác định tầm ảnh hưởng đòn đánh (42)
    • 2.14.3. Xác định tầm ảnh hưởng đòn đánh bằng custom_attack_area (43)
    • 2.14.4. Nhân vật – Chó (44)
    • 2.14.5. Nhân vật – Mèo (44)
    • 2.14.6. Nhân vật – Mèo biết bay (44)
    • 2.14.7. Chi tiết các nhân vật Chó (45)
    • 2.14.8. Chi tiết các nhân vật Mèo (50)
  • Chương 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG GAME (59)
  • Chương 4. XÂY DỰNG GAME (108)
    • 4.1.1. Đồ họa nhân vật trong game (108)
    • 4.1.2. Đồ họa hình ảnh game (110)
    • 4.2.1. Giao diện start game (111)
    • 4.2.2. Giao diện hướng dẫn (113)
    • 4.2.3. Giao diện Căn cứ Chó (114)
    • 4.2.4. Giao diện nâng cấp (115)
    • 4.2.5. Giao diện cửa hàng (118)
    • 4.2.6. Giao diện bản đồ (119)
    • 4.2.7. Giao diện đội hình (120)
    • 4.2.8. Giao diện trận đấu (121)
    • 4.2.9. Giao diện dừng trận đấu (122)
    • 4.2.10. Giao diện sảnh chờ (123)
    • 4.2.11. Giao diện phòng chờ (125)
    • 4.2.12. Giao diện cài đặt (126)
    • 4.2.13. Giao diện điều khiển (128)
    • 4.2.14. Giao diện credits (129)
  • Chương 5. KẾT LUẬN (130)
    • 1. Kết quả đạt được (130)
      • 1.1. Lý thuyết (130)
      • 1.2. Công nghệ (130)
      • 1.3. Ứng dụng (130)
    • 2. Hạn chế (130)
    • 3. Hướng phát triển (131)
  • TÀI LIỆU THAM KHẢO (132)

Nội dung

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

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

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ế

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

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

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

- Xây dựng yếu tố gameplay và cơ chế xây dựng/phòng thủ đa dạng và sáng tạo, đồng thời đảm bảo sự cân bằng và khó khăn thích hợp

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

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

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

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

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

+ Sự phổ biến của thể loại trò chơi chiến thuật: Trò chơi chiến thuật đã thu hút một lượng lớn người chơi và có một cộng đồng game thủ đam mê Đề tài này cho phép nhóm em tham gia vào một lĩnh vực đang phát triển và có tiềm năng kinh doanh trong tương lai

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

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

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

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

- 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

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: 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 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ự thiết kế, 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í và mã nguồn mở được phát triển bởi một cộng đồng lập trình viên toàn cầu Nó cung cấp một môi trường phát triển tích hợp (IDE) và một bộ công cụ phát triển game mạnh mẽ hỗ trợ cho việc tạo ra các game chạy đa nền tảng.

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

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

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

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

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

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

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

- Hầu hết code được viết trong đồ án này sử dụng GDScript và một ít sử dụng Godot's shading language cho một số hiệu ứng đặc biệt trong game Code này được dùng chung với các loại node với những tính năng riêng biệt trong Godot

- Đồ án tận dụng các thành phần quan trọng trong godot như scene, node, script và các tính năng nâng cao hơn như physics engine, animation player, shaders

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

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

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

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

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

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

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

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

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

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

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

- 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 đơn người chơi (Battle System):

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

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

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

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

+ Đội hình: Trước khi trận đấu bắt đầu, người chơi chọn một đội hình gồm các nhân vật và kỹ năng phù hợp cho từng trận chiến Trong trận đấu, người chơi có thể triệu hồi nhân vật và kích hoạt kỹ năng để tấn công kẻ địch + Quân lính (quân lính phe ta và phe địch): Người chơi triệu hồi nhân vật đã có trong đội hình để tấn công các quân lính được triệu hồi bởi kẻ thù + Kỹ năng: Mỗi kỹ năng có một khả năng riêng biệt Người chơi có thể sử dụng kỹ năng để tạo lợi thế trong trận đấu

+ Ví tiền: Để triệu hồi quân lính, người chơi cần sử dụng tiền, tiền sẽ tăng theo thời gian trong trận đấu, sẽ có một lượng tiền tối đa mà Ví tiền có thể giữ, người chơi có thể tăng lượng tiền tối đa cũng như năng suất tạo tiền bằng cách nâng cấp Ví tiền

+ Nội tại: Nội tại là các thuộc tính liên quan đến trận đấu như số lượng tiền tối đa có thể giữ, năng suất tạo tiền, máu của Thành Chó, phần thưởng sau trận đấu, Nâng cấp nội tại sẽ tăng độ hiệu quả của các thuộc tính này + Boss: Boss là quân lính của kẻ địch nhưng có sức mạnh cao hơn rất nhiều so với các quân lính bình thường Ở một số màn đấu, khi máu của Thành Mèo giảm đến một mức nhất định, Boss phe địch sẽ được triệu hồi Boss sẽ xuất hiện duy nhất một lần trong suốt trận đấu

Battlefield (battlefield)

- Battlefield là tên của kiểu trận đấu dành cho trận đấu này, có các loại trận đấu như sau:

+ basic: Đây là kiểu trận đấu mặc định, bao gồm 1 Thành Mèo và 1 Thành Chó Người chơi sẽ thắng khi phá hủy Thành Mèo Đây là kiểu trận tương tự với game The Battle Cats mà nhóm chúng em lấy ý tưởng để làm game + shrine_maiden: Gồm 1 Thành Chó, 1 Thành Mèo và 1 Tori Người chơi phải phá hủy Tori thì mới có thể đánh Thành Mèo Thành Mèo ở kiểu trận đấu này là một ngôi đền lơ lửng trên không trung.

Power scale (power_scale)

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

Instant spawns (instant_spawns)

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

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

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

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

 value (float): Giá trị thay thế, giá trị này sẽ thay thế giá trị có sẵn

 scale (float): Tỉ lệ sức mạnh (tương tự như power_scale).

Spawn patterns (spawn_patterns)

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

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

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

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

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

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 Thành Mèo 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 + props (Dictionary): Thay đổi các giá trị mặc định của nhân vật Tương tự như buffs Các màn chơi mới được tạo cho phiên bản này của game sẽ sử dụng props thay cho buffs, các màn chơi cũ vẫn sử dụng buffs như bình thường.

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

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

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

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

Các node màn chơi

- 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

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

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

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

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

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

Thanh thông tin

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

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.

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 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: 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 Thành Chó và hồi máu Thành Chó

- Lượng máu hồi cho thành được tính theo công thức sau:

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

+ base_hh: Lượng máu hồi ban đầu, có giá trị là 250

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

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 thứ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 thứ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 Thành Chó

- Máu tối đa của Thành Chó công thức sau:

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

+ base_mh: Máu tối đa ban đầu, có giá trị là 500

+ level: Cấp của nội tại.

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.

Phù thủy canh thành Gandolfg

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

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

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

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

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

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

- Thời gian hồi đòn đánh của Gandolfg được tính theo công thức sau:

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

+ base_ac: Thời gian hồi đòn đánh ban đầu, có giá trị là 13 giây

+ level: Cấp của nội tại

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

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

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

Bom nguyên tử

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

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

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

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

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

+ base_damage: sát thương cơ bản của cầu lửa, có giá trị là 10

+ level: cấp hiện tại của kỹ năng mưa cầu lửa (nếu có).

Chó Titan

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

- Sát thương gây ra mỗi giây là 50

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

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

Ví tiền max

- Khi sử dụng vật phẩm này, ví tiền sẽ ở cấp tối đa ngay khi vừa vào trận

- 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, ngược lại thì nhân vật sẽ đánh đa mục tiêu

+ attack_cooldown (float): tốc độ đánh

+ health (Int): máu của nhân vật

+ damage (Int): sát thương của đòn đánh

+ knockbacks (Int): số lần ngã trước khi chết

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

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

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

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

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

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

+ MoveState: trạng thái di chuyển

+ AttackState: trạng thái tấn công

+ IdleState: trạng thái đứng yên

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

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

- 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 kẻ địch, 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 kẻ địch 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 bé hơn hoặc bằng một giá trị nhất định (giá trị này được gọi là lượng máu vấp ngã) Nhân vật sẽ tính toán lại lượng máu vấp ngã để dùng làm điều kiện cho lần vấp ngã sau

- Sau khi hành động ngã được hoàn thành, nhân vật 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ận đấu

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

28 Để 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.

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

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

- Để minh họ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 – 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

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

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

- Một số nhân vật Mèo có khả năng bay, chúng vẫn thừa hưởng các tính năng từ Nhân Vật nhưng có một số điểm khác biệt:

+ Mèo biết bay bắn đạn để gây sát thương lên mục tiêu thay vì đánh trực tiếp như những loài Mèo khác

+ Do các nhân vật Chó không thể với tới Mèo biết bay cho nên chúng chỉ có thể bị tiêu diệt bởi Gandolfg hoặc Chó Miko

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

- Nhân vật đầu tiên của game, người chơi phải sử dụng nhân vật này để thắng trận đấu, lấy Xương để có thể mở khóa nhân vật khác

- Có lượng máu thấp và tầm đánh ngắn, đánh đơn mục tiêu

- Nhân vật có thể mở khóa được ở màn hình Nâng cấp

- Có tầm đánh ngắn, đánh đơn mục tiêu và dễ bị ngã nhưng có thời gian hồi đòn đánh nhanh, có lượng máu trung bình và tốc độ di chuyển nhanh

- Nhân vật có thể mở khóa được ở màn hình Nâng cấp

- Có tầm đánh ngắn, sát thương thấp nhưng có lượng máu cao, đánh đa mục tiêu

- Nhân vật có thể mở khóa được ở màn hình Nâng cấp

- Có tầm đánh xa, đánh đa mục tiêu và sát thương cao nhưng có lượng máu thấp

- Nhân vật có thể mở khóa được ở màn hình Nâng cấp

- Có tầm đánh rất xa, đánh xuyên phá đa mục tiêu và sát thương rất cao nhưng thời gian hồi đòn đánh lâu, tốc độ di chuyển chậm

- Nhân vật có thể mở khóa nếu liên tục thua 4 lần ở phần hướng dẫn trận đấu

- Có tầm đánh xa, sát thương cao và máu nhiều Ngoài ra sau khi đánh thường, Chó Bóng Chày sẽ triệu hồi một loạt các vụ nổ đánh văng kẻ địch

- Khi được triệu hồi và khi chết, Chó Bóng Chày sẽ đẩy lùi kẻ địch

- Nhân vật có thể mở khóa sau khi thắng màn chơi đặc biệt

- Có tầm đánh xa, sát thương rất cao và tầm ảnh hưởng đòn đánh rộng nhưng lượng máu khá thấp

- Chó Miko tấn công bằng cách bay lên trời và ném các lá bùa vào kẻ địch đồng thời thả các quả cầu Yin Yang xuống kẻ địch

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

- Kẻ địch đầu tiên của game Có lượng máu thấp và tầm đánh ngắn, đánh đơn mục tiêu

- Có tầm đánh xa, sát thương trung bình và đánh đa mục tiêu nhưng thời gian hồi đòn đánh khá lâu

- Có tốc độ di chuyển cao, thời gian hồi đòn đánh nhanh nhưng sát thương thấp, tầm đánh rất ngắn, đánh đơn mục tiêu và dễ bị ngã

- Có lượng máu trung bình, đánh đa mục tiêu nhưng tầm đánh ngắn, dễ bị ngã

- Có lượng máu và sát thương rất cao, đánh đa mục tiêu và tầm ảnh hưởng đòn đánh trung bình nhưng tốc độ di chuyển chậm

- Có lượng máu rất cao, sát thương rất cao (hạ gục kẻ địch trong một đòn đánh), tầm ảnh hưởng đòn đánh rất rộng nhưng tốc độ di chuyển và thời gian hồi đòn đánh rất chậm

- Thuộc loại Mèo biết bay, có lượng máu trung bình, tầm đánh xa, tốc độ di chuyển cao nhưng dễ bị ngã, thời gian hồi đòn đánh trung bình

- Khi tấn công, Mèo Tiên sẽ thả các viên đạn hình bông hoa, các viên đạn này sẽ lơ lửng trên không trung một thời gian rồi sao đó sẽ bay vào một nhân vật Chó ngẫu nhiên

2.14.8.8 Mèo Tiên Hoa Hướng Dương:

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

- Thuộc loại Mèo biết bay, có lượng máu cao, tầm đánh rất xa nhưng thời gian hồi đòn đánh khá lâu

- Khi tấn công, Mèo Tiên Hoa Hướng Dương sẽ thả các viên đạn tròn tạo thành mô tiếp nhìn giống như một bông hoa

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

- Trận đấu online cho phép có hai người chơi trong một trận đấu Nó hoạt động tương tự như trận dấu một người chơi, nhưng thay vì người chơi chơi với máy (máy điều khiển Thành Mèo), thì ở đây hai người chơi sẽ đánh với nhau

- Hệ thống trận đấu online được xây dựng bằng cách kết hợp cả hai kiến trúc peer-to-peer (P2P) và kiến trúc client-server, trong đó người chơi sẽ trao đổi dữ liệu với nhau giống như kiến trúc P2P, nhưng thay vì cả hai tự tính toán dữ liệu game của mình rồi trao đổi với nhau, một bên sẽ đóng vai trò là server,

40 tính toán hết các dữ liệu trong game và gửi dữ liệu qua bên còn lại là client, client có nhiệm vụ là mô phỏng game theo dữ liệu đã cho, suy đoán trạng thái game và mô phỏng game theo suy đoán đó trong lúc đợi gói dữ liệu tiếp theo, gửi dữ liệu input của người chơi cho bên server

- Việc cho game đi theo lối kiến trúc P2P giúp giảm thiểu việc phải xây dựng và quản lý một server dành riêng cho trận đấu online Việc cho các máy tham gia trò chơi hoạt động theo kiến trúc client-server giúp cho dữ liệu tính toán được có tính quyết định hơn, trong đó những gì bên server tính toán ra được sẽ được xem là sự thật, thay vì cho phép hai máy tự tính toán dữ liệu và trao đổi với nhau, dẫn đến sai lệch trong tính toán do độ trễ trong việc truyền dữ liệu của hai bên Ngoài ra việc sử client-server giảm thiểu trường hợp gian lận xuống còn 50% do game chỉ có thể bị gian lận nếu người chơi gian lận là server

- Chúng em sử dụng Steamworks thông qua GodotSteam để thực hiện những chức năng đánh online Trong đó IsteamNetworkingSockets là interface được sử dụng cho game, nó hỗ trợ các tính năng như tạo kết nối, kết nối P2P, truyền dữ liệu, … Việc sử dụng Steamworks cho phép hai máy tính khác nhau có thể chơi với nhau mà không cần phải kết nối với nhau trực tiếp bằng mạng LAN hay phải sử dụng kỹ thuật kết nối hai người chơi bằng NAT hole punching Thay vào đó, hai người chơi sẽ được kết nối với nhau thông qua mạng lưới trung gian là Valve network [7]

- Khi ở trong trận đấu, người chơi là chủ phòng sẽ đóng vai trò là server với nhiệm vụ:

+ Nhận dữ liệu input của client (nâng cấp ví tiền, triệu hồi lính, …) và tiến hành kiểm tra, thực hiện hành động mà client yêu cầu nếu hành động đó khả thi

+ Tính toán dữ liệu trận đấu (vị trí, trạng thái nhân vật, tiền của hai người chơi, thời gian hồi kỹ năng, nhân vật, …)

+ Gửi dữ liệu trận đấu tại thời điểm hiện tại cho client mỗi 1/25 giây, hay có thể nói game có tick rate là 25, một số game FPS sẽ có tick rate cao hơn nhằm đảm bảo độ phản hồi của game cao (Overwatch 2 sử dụng tick rate

64, Fortnite sử dụng tick rate 30 [8]), nhưng do tính chất của game chúng em yêu cầu tính toán lượng dữ liệu lớn (dữ liệu vị trí và trạng thái của từng nhân vật, kỹ năng) cho nên để đảm bảo server không bị quá tải, tick rate này vẫn đảm bảo độ phản hồi cao và khiến server không bị quá tải khi truyền dữ liệu

- Người chơi còn lại sẽ đóng vai trò là client, với nhiệm vụ:

+ Nhận dữ liệu trận đấu từ server và mô phỏng lại game theo đúng như dữ liệu được cho

+ Suy đoán trạng thái tiếp theo của trận đấu và tiếp tục mô phỏng game theo suy đoán đó trong lúc đợi gói dữ liệu trận đấu tiếp theo từ server

+ Nhận input của người chơi client và gửi dữ liệu input đó cho server xử lý

- Hạn chế của phương pháp này là người đóng vai trò server mặc dù có trải nghiệm game mượt, không có độ trễ xử lý input, người chơi đóng vai trò là client sẽ phải chịu độ trễ trong việc xử lý input do phải gửi dữ liệu đó lên server xử lý cũng như độ trễ về trạng thái game do phải đợi dữ liệu trận đấu trả về tử server Trải nghiệm game của người chơi đóng vai trò là client sẽ phụ thuộc rất nhiều vào tốc độ truyền tải dữ liệu của cả máy client và server

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

- Một số nhân vật trong game và thành trì sẽ có khả năng bắn đạn, trong một số trường hợp để giúp game có tính đẹp mắt, đạn được bắn sẽ di chuyển theo một đường đi nhất định và kết hợp nhau để tạo thành một pattern (mô hình) đẹp mắt trước khi tấn kẻ địch, kiểu bắn đạn này được gọi là danmaku [9] Việc này đòi hỏi viên đạn cần phải có nhiều thuộc tính phức tạp nhằm giúp lập trình viên có thể điều khiển chúng theo ý muốn

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

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

- Vấn đề nảy sinh trong việc bắn đạn danmaku là việc kiểm soát độ mượt của game, do để có thể tạo dựng được những pattern đẹp mắt thì số lượng đạn bắn cần phải nhiều (hàng trăm, thậm chí hàng nghìn viên đạn) và di chuyển theo đường đi phức tạp Để giải quyết điều này chúng em đã sử dụng và sửa đổi plugin của Godot Native Bullets của amdze cho phù hợp với game Plugin này sử dụng C++ để lập trình hoạt động của đạn, đồng thời sử dụng design pattern object pool và một số điểm tối ưu hóa khác giúp cho việc tạo viên đạn và điều khiển đạn được nhanh chóng và không tốn nhiều tài nguyên

- Những viên đạn mặc định sẽ có những thuộc tính chính sau:

+ material (Material): dùng để cho biết đạn nên được render như thế nào, có thể thêm hiệu ứng lên viên đạn hoặc dùng để chạy hoạt ảnh lên viên đạn + collision_enabled (bool): kiểm tra xem đạn này có khả năng va chạm hay không

+ collision_layer (int): layer mà các đối tượng khác cần kiểm tra để có thể va phát hiện va chạm được với đạn

+ collision_shape (Shape): hình dạng khu vực va chạm của đạn

+ auto_rotate (bool): hình ảnh viên đạn sẽ tự động quay theo hướng di chuyển

+ data (Dictionary): dữ liệu tùy ý mà lập trình viên có thể thêm vào viên đạn + velocity (Vector2): vận tốc của viên đạn

+ transform (Transform2D): chứa vị trí, độ quay (của hình ảnh) và scale của viên đạn (không dùng đến)

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/ vật phẩm

Người chơi Xem đội hình, kỹ năng hoặc vật phẩm của người chơi

2 Sắp xếp đội hình/ kỹ năng/ vật phẩm

Người chơi Sắp xếp đội hình, kỹ năng hoặc vật phẩm của người chơi

3 Xem bản đồ Người chơi Xem bản đồ các level

4 Chọn chương Người chơi Chọn các chương (màn chơi)

5 Chọn level Người chơi Chọn level

6 Triệu hồi lính Người chơi Triệu hồi lính trong trận đấu

7 Kích hoạt kỹ năng Người chơi Kích hoạt kỹ năng trong trận đấu

8 Kích hoạt vật phẩm Người chơi Kích hoạt vật phẩm trong trận đấu

9 Điều khiển lính Người chơi Điều khiển lính của người chơi

10 Dừng trận đấu Người chơi Dừng trận đấu

11 Chỉnh sửa âm thanh trong trận đấu

Người chơi Chỉnh sửa âm thanh trong trận đấu

12 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

13 Nâng cấp nhân vật Người chơi Nâng cấp nhân vật

14 Mua nhân vật Người chơi Mua nhân vật

15 Nâng cấp kỹ năng Người chơi Nâng cấp kỹ năng

16 Mua kỹ năng Người chơi Mua kỹ năng

17 Nâng cấp nội tại Người chơi Nâng cấp nội tại

18 Mua nội tại Người chơi Mua nội tại

19 Xem vật phẩm Người chơi Xem danh sách vật phẩm trong cửa hàng

20 Mua vật phẩm Người chơi Mua vật phẩm trong cửa hàng

21 Cài đặt Người chơi Cài đặt

22 Điều khiển Người chơi Thay đổi nút bấm trong trận đấu

23 Tạo phòng chờ Người chơi Tạo phòng chơi cho trận đấu online

24 Tìm phòng Người chơi Tìm phòng chờ cho trận đấu online

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

Người chơi Thiết lập thông tin cho trận đấu online

26 Nhắn tin Người chơi Nhắn tin với người chơi khác trong trận đấu online

27 Đấu online Người chơi Bắt đầu trận đấu online

28 Đầu hàng Người chơi Đầu hàng trong trận đấu online

29 Hướng dẫn Người chơi Hướng dẫn người mới bắt đầu

Danh sách đặc tả Use case

Xem đội hình/ kỹ năng/ vật phẩm

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

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

Tên Use case Xem đội hình/ kỹ năng/ 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 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/ vật phẩm mà người chơi đ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í None

Sau xử lí (sau Use- case)

Dòng sự kiện chính - 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/ vật phẩm 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” hoặc “Vật phẩm” để xem danh sách đội hình tương ứng

Dòng sự kiện khác None

48 Sắp xếp đội hình/ kỹ năng/ vật phẩm

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

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

Tên Use case Sắp xếp đội hình/ kỹ năng/ 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 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/ vật phẩm mà người chơi đ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ể 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/ vật phẩm 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” hoặc “Vật phẩm” để 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 vẫn sẽ đượ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 chương Bảng 3.6: Use case chọn chương

Tên Use case Chọn chương

Mô tả Chức năng này cho phép người chơi có thể chọn chương khác để chơi

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 biểu tượng bên trái nút “Viễn chinh”

- Người chơi chọn chương muốn chơi và nhấn click đúp vào chương đó

Dòng sự kiện khác None

Hình 3.6: Sơ đồ hoạt động chọn level Bảng 3.7: 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í 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.7: Sơ đồ hoạt động triệu hồi lính Bảng 3.8: 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.8: Sơ đồ hoạt động kích hoạt vật phẩm

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

Tên Use case Kích hoạt vật phẩm

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

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 vật phẩm muốn kích hoạt ở trong trận đấu

- Một số vật phẩm có thể tự động kích hoạt ngay khi trận đấu bắt đầu mà không cần nhấn để kích hoạt

Hình 3.9: Sơ đồ hoạt động điều khiển lính Bảng 3.10: Use case điều khiển lính

Tên Use case Điều khiển lính

Mô tả Chức năng này cho phép người chơi thể chọn lính mà mình muốn trong trận đấu để điều khiển, các hành động điều khiển bao gồm di chuyển trái, phải và đánh

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 lính mà người chơi muốn điều khiển

- Nếu người chơi đã chọn nhân vật lính này, nhấn chọn lần nữa sẽ hủy điều khiển nhân vật

- Nếu người chơi đang điều khiển nhân vật lính khác, nhấn chọn nhân vật lính sẽ hủy điều khiển nhân vật đang điều khiển và chuyển quyền điều khiển sang nhân vật vừa nhấn chọn

Hình 3.10: Sơ đồ hoạt động kích hoạt kỹ năng Bảng 3.11: 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 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.11: Sơ đồ hoạt động dừng trận đấu Bảng 3.12: 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

Chỉnh sửa âm thanh trong trận đấu

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

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

Xem nhân vật/ kỹ năng/ nội tại

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

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

Tên Use case Xem nhân vật / kỹ năng/ nội tại

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, kỹ năng, hoặc nội tại mà người chơi đã sở hữu và có thể sở hữu

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

Dòng sự kiện khác None

Hình 3.14: Sơ đồ hoạt động nâng cấp nhân vật Bảng 3.15: 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.15: Sơ đồ hoạt động mua nhân vật Bảng 3.16: 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.16: Sơ đồ hoạt động nâng cấp kỹ năng Bảng 3.17: 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.17: Sơ đồ hoạt động mua kỹ năng Bảng 3.18: 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.18: Sơ đồ hoạt động nâng cấp nội tại Bảng 3.19: 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.19: Sơ đồ hoạt động mua nội tại Bảng 3.20: 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.20: Sơ đồ hoạt động xem vật phẩm Bảng 3.21: Use case xem 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.21: Sơ đồ hoạt động mua vật phẩm Bảng 3.22: 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”

Hình 3.22: Sơ đồ hoạt động Cài đặt Bảng 3.23: Use case Cài đặt

Tên Use case Cài đặt

Mô tả Chức năng này cho phép người chơi cài đặt thông số trò chơi trước khi bắt đầu trò chơi

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 “Cài đặt”

- Chỉnh sửa âm thanh hoặc ngôn ngữ theo ý thích của người chơi

Hình 3.23: Sơ đồ hoạt động Điều khiển Bảng 3.24: Use case Điều khiển

Tên Use case Điều khiển

Mô tả Chức năng này cho phép người chơi thay đổi nút bấm trong trận đấu của trò chơi

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 “Cài đặt”-> Nhấn “Điều khiển

- Nhấn nút bên phải của điều chỉnh muốn thay đổi -> Nhấn nút bàn phím muốn chuyển đổi thành

Hình 3.24: Sơ đồ hoạt động Tạo phòng chờ Bảng 3.25: Use case Tạo phòng chờ

Tên Use case Tạo phòng chờ

Mô tả Chức năng này cho phép người chơi tạo phòng chờ để đánh online

Người thực hiện Người chơi Điều kiện trước xử lí

Hiển thị màn hình “Phòng chờ”

- Người chơi ở trong màn hình bắt đầu -> Nhấn “Đánh online”

- Nhập tên phòng muốn tạo vào khung bên dưới dòng chữ

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

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

Tên Use case Tìm phòng

Mô tả Chức năng này cho phép người chơi tìm phòng đấu online

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 bắt đầu -> Nhấn “Đánh online”

- Nhập tên phòng muốn tham gia vào khung bên dưới dòng chữ "Code phòng" -> Nhấn “Vào”

Trong màn hình “Sảnh”, người chơi có thể nhấn nút “Tự động tìm phòng” để tự động tham gia vào phòng có thể tham gia bất kỳ

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

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

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

Tên Use case Thiết lập trận đấu online

Mô tả Chức năng này cho phép người cài đặt thông tin trận đấu online trước khi bắt đầu trò chơi

Người thực hiện Người chơi Điều kiện trước xử lí

Người thiết lập thông tin trận đấu là người tạo phòng

- Người chơi trong màn hình “Sảnh”, tạo phòng chờ

- Thiết lập thông tin cho trận đấu online

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

Bảng 3.28: Use case Nhắn tin

Tên Use case Nhắn tin

Mô tả Chức năng này cho phép người chơi nhắn tin với đối thủ trước 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 tham gia phòng chờ

- Người chơi ở trong màn hình “Phòng chờ”

- Nhập tin nhắn muốn gửi cho đối thủ vào khung tin nhắn ở góc trái bên dưới -> Nhấn “Gửi”

- Khung tin nhắn cập nhật tin nhắn đã gửi

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

Bảng 3.29: Use case Đấu online

Tên Use case Đấu online

Mô tả Chức năng này cho phép người nhắn tin với đối thủ trước trận đấu

Người thực hiện Người tạo phòng Điều kiện trước xử lí

Người chơi tham gia phòng chờ đã nhấn nút “Sẵn sàng”

- Người chơi ở trong màn hình “Phòng chờ” -> Nhấn “Vào game”

- Nếu người tham gia không nhấn vào nút “Sẵn sàng”, nút

“Vào game” của người tạo phòng sẽ bị khóa

Hình 3.30: Sơ đồ hoạt động Đầu hàng Bảng 3.30: Use case Đầu hàng

Tên Use case Đầu hàng

Mô tả Chức năng này cho phép chơi đầu hàng khi đang trong trận đấu online

Người thực hiện Người chơi Điều kiện trước xử lí

- Người chơi ở trong trận đấu online -> Nhấn biểu tượng cờ trắng ở góc trên bên phải màn hình

- Nhấn nút "Quay lại phòng"

Hình 3.31: Sơ đồ hoạt động Hướng dẫn Bảng 3.31: Use case Hướng dẫn

Tên Use case Hướng dẫn

Mô tả Chức năng hướng dẫn người chơi mới

Người thực hiện Người chơi Điều kiện trước xử lí Người chơi lần đầu tiếp cận các màn hình trong trò chơi

Sau xử lí (sau Use- case)

Dòng sự kiện chính - Mở màn hình bất kỳ trong game, ngoại trừ màn hình bắt đầu Nếu đây là lần đầu tiên người chơi tiếp cận màn hình này -> Hiển thị hướng dẫn của các use case có trong màn hình đã chọn

Dòng sự kiện khác None

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

- GameSave(user_name, bone, date, dogs, skills, passives, stores, selected_stage_id, selected_chapter_id, selected_story_id, selected_team, settings, teams, victory_count, fastest_time, online_score, chapters, selected_chapter_dir_path, story_selected_chapters, tutorial)

- settings(full_screen, language, music, sound_fx)

- teams(dog_ids, skill_ids, store_ids)

- chapterdata(shrine_maiden_of_paradise, the_battle_dogs_rising)

- statuschap(completed, passed_stage, sound_fx)

- tutorial(battlefield_basics, battlefield_rush, boss, dogbase, dogbase_after_battlefield, final_boss, map, store, upgrade, team_setup)

- StorySelect(eastern_boundaries, main_story)

- Dog(id, price, spawn_time, spawn_price)

- Skill(id, price, spawn_time)

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

STT Cột Kiểu dữ liệu Mặc định

18 selected_chapter_dir_path String

Mô tả dữ liệu upgradedata

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu upgradeitemdata

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu settings

STT Cột Kiểu dữ liệu Mặc định

2 language Enum(vi, en) vi

Mô tả dữ liệu sound

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu teams

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu chapterdata

STT Cột Kiểu dữ liệu Mặc định

1 shrine_maiden_of_paradise status_chap[]

2 the_battle_dogs_rising status_chap[]

Mô tả dữ liệu statuschap

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu tutorial

STT Cột Kiểu dữ liệu Mặc định

5 dogbase_after_battlefield Bool False

Mô tả dữ liệu StorySelect

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu Dog

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu Skill

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu Passive

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu Store

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu StageData

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu spawnpattern

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu bossspawn

STT Cột Kiểu dữ liệu Mặc định

Mô tả dữ liệu buff

STT Cột Kiểu dữ liệu Mặc định

XÂY DỰNG GAME

Đồ 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, chết, …

- Đầ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ó

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

- Đối với các đồ họa tĩnh trong game như GUI, bản đồ, v.v… Thì Clip Studio Paint và công cụ phù hợp để vẽ/thiết kế các đồ họa thuộc dạng này

- Đối với các đồ họa mà độ lớn ảnh khi sử dụng trong game không biết trước được như background của game, thảm cỏ, … Các đồ họa thuộc dạng này cần có tính seamless (liền mạch, lặp lại) để đảm bảo tính trung thực hình ảnh trong game Krita là phần mềm được phù hợp cho 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.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

Kích hoạt thành công Ngoại lệ

Khi người chơi bước vào màn hình game chưa được hướng dẫn

Hiển thị Chó Hướng Dẫn

Chú chó này sẽ hướng dẫn người chơi tùy vào thứ đang cần được hướng dẫn

Giao diện Căn cứ Chó

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

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à

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

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

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

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

“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 => Nhấn nút

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.10: Nâng cấp nhân vật

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

Hình 4.12: 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 Kích hoạt thành công

1 Hiển thị danh sách vật phẩm

Nhấn vào nút “Cửa hàng”

2 Mua vật phẩm Chọn vật phẩm muốn mua và Nhấn nút

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

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ệ

Nhấn vào nút “Tấn công”

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ó

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

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

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

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

Quay trở lại giao diện

Nhấn vào nút “Màn hình chính”

Quay trở lại giao diện

Nhấn vào nút “X” 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

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

Giao diện sảnh chờ

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

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

1 Làm mới danh sách phòng

Nhấn vào nút “Làm mới”

Danh sách phòng được làm mới

2 Tạo phòng Nhập tên phòng vào khung bên trên nút

Tới giao diện phòng chờ

Nhấn nút “Tự động tìm phòng”

Tới giao diện phòng chờ

Hiển thị thông báo “Không tìm thấy phòng”

Nhập mã phòng vào khung bên trên nút

Tới giao diện phòng chờ

Hiển thị thông báo “Không tìm thấy phòng”

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

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

Quay trở lại giao diện

Giao diện phòng chờ

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

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 “Đội hình”

2 Điều chỉnh chiều dài mặt trận

Kéo thả thanh bên cạnh dòng chữ

Chiều dài mặt trận được điều chỉnh

Kéo thả thanh bên cạnh dòng chữ “Máu thành”

Máu thành được điều chỉnh

4 Điều chỉnh năng suất tạo tiền

Kéo thả thanh bên cạnh dòng chữ

Năng suất tạo tiền được điều chỉnh

5 Điều chỉnh cấp sức mạnh

Kéo thả thanh bên cạnh dòng chữ “Cấp sức mạnh”

Cấp sức mạnh được điều chỉnh

Nhấn nút bên phải dòng chữ “Nhạc” ->

Chọn nhạc nền Âm thanh nhạc nền được điều chỉnh

7 Thay đổi nền Nhấn nút bên phải dòng chữ “Nền” ->

Nền được điều chỉnh Không

8 Nhắn tin Nhập dòng chữ vào khung thoại bên trái nút “Gửi” -> Nhấn nút “Gửi”

Tin nhắn được hiển thị lên khung tin nhắn

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

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

Quay trở lại giao diện

Giao diện cài đặt

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

STT 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

2 Tắt/bật âm nhạc nền

Nhấn vào nút có biểu tượng “loa” Âm thanh nhạc nền được điều chỉnh

Kéo thả thanh bên cạnh biểu tượng “âm nhạc” Âm lượng nhấn nút được điều chỉnh

4 Điều chỉnh âm lượng nhạc nền

Kéo thả thanh bên cạnh biểu tượng

“loa” Âm lượng nhạc nền được điều chỉnh

5 Tới màn hình điều khiển

Tới giao diện “Điều khiển”

Nhấn nút bên phải dòng chữ “Ngôn ngữ” -> Chọn ngôn ngữ

Ngôn ngữ trò chơi thay đổi

7 Mở/tắt chế độ toàn màn hình

Nhấn nút switch on/off

Chế độ toàn màn hình được điều chỉnh

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

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

Quay trở lại giao diện

Giao diện điều khiển

Bảng 4.13: Bảng mô tả giao diện điều khiể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ệ

Nhấn vào nút muốn thay đổi -> Nhấn nút muốn chuyển đổi thành trên bàn phím

Thay đổi nút bấm theo yêu cầu

“Khôi phục về mặc định”

Toàn bộ thay đổi nút khôi phục về mặc định

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

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

Quay trở lại giao diện

Giao diện credits

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

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 Quay lại căn cứ chó

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

Quay trở lại giao diện

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

HÌNH ẢNH LIÊN QUAN

Hình 2.24: Minh họa bắn đạn danmaku 1 - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 2.24 Minh họa bắn đạn danmaku 1 (Trang 57)
Hình 2.25: Minh họa bắn đạn danmaku 2 - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 2.25 Minh họa bắn đạn danmaku 2 (Trang 57)
Hình 3.1: Sơ đồ Use case tổng quát - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.1 Sơ đồ Use case tổng quát (Trang 59)
Hình 3.3: Sơ đồ hoạt động sắp xếp đội hình/ kỹ năng/ vật phẩm - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.3 Sơ đồ hoạt động sắp xếp đội hình/ kỹ năng/ vật phẩm (Trang 63)
Hình 3.5: Sơ đồ hoạt động chọn chương  Bảng 3.6: Use case chọn chương - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.5 Sơ đồ hoạt động chọn chương Bảng 3.6: Use case chọn chương (Trang 66)
Hình 3.6: Sơ đồ hoạt động chọn level  Bảng 3.7: Use case chọn level - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.6 Sơ đồ hoạt động chọn level Bảng 3.7: Use case chọn level (Trang 67)
Hình 3.14: Sơ đồ hoạt động nâng cấp nhân vật  Bảng 3.15: Use case nâng cấp nhân vật - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.14 Sơ đồ hoạt động nâng cấp nhân vật Bảng 3.15: Use case nâng cấp nhân vật (Trang 75)
Hình 3.15: Sơ đồ hoạt động mua nhân vật  Bảng 3.16: Use case mua nhân vật - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.15 Sơ đồ hoạt động mua nhân vật Bảng 3.16: Use case mua nhân vật (Trang 77)
Hình 3.16: Sơ đồ hoạt động nâng cấp kỹ năng  Bảng 3.17: Use case nâng cấp kỹ năng - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.16 Sơ đồ hoạt động nâng cấp kỹ năng Bảng 3.17: Use case nâng cấp kỹ năng (Trang 79)
Hình 3.18: Sơ đồ hoạt động nâng cấp nội tại  Bảng 3.19: Use case nâng cấp nội tại - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.18 Sơ đồ hoạt động nâng cấp nội tại Bảng 3.19: Use case nâng cấp nội tại (Trang 83)
Hình 3.20: Sơ đồ hoạt động xem vật phẩm  Bảng 3.21: Use case xem vật phẩm - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.20 Sơ đồ hoạt động xem vật phẩm Bảng 3.21: Use case xem vật phẩm (Trang 86)
Hình 3.22: Sơ đồ hoạt động Cài đặt  Bảng 3.23: Use case Cài đặt - phát triển game chiến thuật thủ thành online multiplayer khóa luận tốt nghiệp
Hình 3.22 Sơ đồ hoạt động Cài đặt Bảng 3.23: Use case Cài đặt (Trang 89)

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

TÀI LIỆU LIÊN QUAN

w