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

đồ án 2 xây dựng game 3d top down với unity

82 1 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 đề Xây dựng game 3D top-down với Unity
Tác giả Nguyễn Hữu Việt, Trần Trung Thành
Người hướng dẫn ThS. Đinh Nguyễn Anh Dũng
Trường học Trường Đại học Công nghệ Thông tin, Đạ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 2
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 82
Dung lượng 7,26 MB

Cấu trúc

  • Chương 1 GIỚI THIỆU CHUNG (16)
    • 1.1. Tổng quan đề tài (16)
    • 1.2. Lý do chọn đề tài (16)
    • 1.3. Đối tượng sử dụng (16)
    • 1.4. Phạm vi nghiên cứu (16)
  • Chương 2 CƠ SỞ LÝ THUYẾT (18)
    • 2.1. Unity Engine (18)
    • 2.2. C# (19)
    • 2.3. Microsoft Visual Studio (20)
    • 2.4. GitHub (21)
  • Chương 3 GIỚI THIỆU VỀ TOP-DOWN GAME (22)
    • 3.1. Khái niệm top-down game (22)
      • 3.2.1. Hotline Miami Series (22)
      • 3.2.2. Nuclear Throne (23)
      • 3.2.3. Helldivers (24)
    • 3.3. Một số thể loại game trong dòng game Top-down (25)
      • 3.3.1. Shooter (25)
      • 3.3.2. Action-Adventure (26)
      • 3.3.3. Strategy Games (26)
      • 3.3.4. Roguelike và Dungeon Crawlers (26)
      • 3.3.5. Simulation và Management Games (26)
      • 3.3.6. Puzzle Games (26)
  • Chương 4 TỔNG QUAN VỀ GAME (27)
    • 4.1. Ý tưởng game (27)
    • 4.2. Tính năng (27)
    • 4.3. Giới thiệu về các gameObject (27)
      • 4.3.1. Trong GamePlayScene (27)
      • 4.3.2. TrongMenuScene (29)
  • Chương 5 ĐẶC TẢ USE CASE (30)
    • 5.1. Sơ đồ use case (30)
      • 5.1.1. Player (30)
      • 5.1.2. Destroyar (30)
      • 5.1.3. DroneRobot (31)
      • 5.1.4. Engineer (32)
      • 5.1.5. SecurityCyborg1 (33)
      • 5.1.6. SecurityCyborg2 (34)
      • 5.1.7. Turret (35)
    • 5.2. Danh sách Actor (36)
    • 5.3. Danh sách use case (37)
    • 5.4. Mô tả chi tiết use case (38)
      • 5.4.1. Play Game (38)
      • 5.4.2. Exit game (39)
      • 5.4.3. Pause Game (39)
      • 5.4.4. Save Game (40)
      • 5.4.5. Restart Game (40)
      • 5.4.6. Exit to Menu (40)
      • 5.4.7. Move (41)
      • 5.4.8. Dash (41)
      • 5.4.9. Attack (42)
      • 5.4.10. UpdateHp (42)
      • 5.4.11. Take Damage (43)
      • 5.4.12. CheckHP (43)
      • 5.4.13. Dead (44)
      • 5.4.14. Buff (44)
      • 5.4.15. Interact with item (45)
      • 5.4.16. Teleport (46)
      • 5.4.17. Explosive (46)
      • 5.4.18. IDLE (46)
      • 5.4.19. Run (47)
      • 5.4.20. Walk (47)
      • 5.4.21. Shoot (48)
  • Chương 6 PHÂN TÍCH THIẾT KẾ (50)
    • 6.1. Phân tích thiết kế (50)
      • 6.1.1. Class diagram (50)
      • 6.1.2. Danh sách các class (50)
      • 6.1.3. Chi tiết các class (51)
    • 6.2. State diagram (58)
      • 6.2.1. Player state (59)
      • 6.2.2. DroneRobot (60)
      • 6.2.3. Destroyar (61)
      • 6.2.4. Engineer (62)
      • 6.2.5. SecurityCyborg1 (63)
      • 6.2.6. SecurityCyborg2 (64)
      • 6.2.7. Turret (65)
    • 6.3. Thiết kế UI (66)
      • 6.3.1. Yêu cầu (66)
      • 6.3.2. Danh sách UI (66)
      • 6.3.3. Mô tả chi tiết (66)
  • Chương 7 CÀI ĐẶT VÀ KIỂM THỬ (80)
    • 7.1. Môi trường cài đặt và kiểm thử (80)
    • 7.2. Kết quả kiểm thử (80)
  • Chương 8 KẾT LUẬN (81)
    • 8.1. Tổng kết (81)
    • 8.2. Kết quả đạt được (81)
    • 8.3. Khó khăn và hạn chế (81)

Nội dung

GIỚI THIỆU CHUNG

Tổng quan đề tài

Tên đề tài: Xây dựng game 3D top-down với unity

Nền tảng công nghệ: Unity Engine

Môi trường phát triển: Desktop - Windows 10

Lý do chọn đề tài

Hiện nay video game là một trong những hình thức giải trí phổ biến nhất của giới trẻ trong thời gian rảnh Do ngày nay gần như ai cũng sở hữu máy tính cá nhân và các hệ thống phân phối game rất phổ biến nên các game do những nhóm phát triển nhỏ dễ đến được tay người chơi hơn Dựa theo nhu cầu giải trí của mọi người, nhóm quyết định chọn đề tài phát triển một game 3D nhỏ.

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

Tất cả người chơi có độ tuổi từ 7 tuổi trở lên.

Phạm vi nghiên cứu

Phạm vi môi trường: Ứng dụng máy tính

Phạm vi thiết kế game: thể loại game top down.

 Game 3D gồm nhiều màn chơi

 Một nhân vật do người chơi điều khiển với hệ thống di chuyển cơ bản - đi lên xuống trái phải; khả năng chiến đấu cơ bản – nhấn chuột để bắn súng; các kỹ năng đặc biệt khác như ném boom, lướt, …

 Nhiều enemy NPC (quái vật) tự di chuyển và hành động theo AI được cài đặt sẵn, phản ứng theo hành vi của người chơi

 Màn chơi được thiết kế thủ công, sử dụng asset có sẵn, với độ rộng thấp

 Một menu chính khi mở ứng dụng game lên và kết thúc game với các nút cơ bản

CƠ SỞ LÝ THUYẾT

Unity Engine

Unity là một game engine đa nền tảng được phát triển bởi Unity Technologies, lần đầu tiên được công bố và phát hành vào tháng 6 năm 2005 tại Apple Worldwide Developers Conference dưới dạng game engine cho Mac OSX

Unity Engine đã dần dần được mở rộng để hỗ trợ các loại nền tảng desktop, mobile, console và Virtual Reality Nó đặc biệt phổ biến trên IOS, Android và được coi là dễ sử dụng cho người mới bắt đầu phát triển game và các nhà phát triển indie Công cụ có thể được sử dụng để tạo ra game 3D và 2D, cũng như mô phỏng tương tác và các trải nghiệm khác Engine đã được được chấp nhận bởi các ngành bên ngoài trò chơi điện tử, chẳng hạn như phim, ô tô, kiến trúc, kỹ thuật và xây dựng

Unity cung cấp cho người dùng khả năng tạo ra game và trải nghiệm ở cả 2D và3D, đồng thời engine cung cấp một scripting API chính trong C# bằng cách sử dụngMono, cho cả trình soạn thảo Unity editor ở dạng plugin và bản thân các game, cũng như chức năng kéo và thả Trước khi C# trở thành ngôn ngữ lập trình chính được sử dụng trong engine, trước đây engine hỗ trợ Boo, nhưng đã bị xóa khi phát hành Unity 5 và triển khai dựa trên Boo của JavaScript được gọi là UnityScript, và không được dùng nữa vào tháng 8 năm 2017, sau khi phát hành Unity 2017.1, để sử dụng C#

Trong các game 2D, Unity cho phép import các sprite và 2D world renderer tiên tiến Đối với game 3D, Unity cho phép đặc tả kỹ thuật texture compression, mipmap và cài đặt độ phân giải cho mỗi nền tảng mà engine hỗ trợ và cung cấp hỗ trợ cho bump mapping, reflection mapping, parallax mapping, screen space ambient occlusion (SSAO),dynamic shadows using shadow maps, render-to-texture và full-screen post-processing effects.

C#

C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sư của Microsoft vào năm 2000 C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java.

Trong các ứng dụng Windows truyền thống, mã nguồn chương trình được biên dịch trực tiếp thành mã thực thi của hệ điều hành.Trong các ứng dụng sử dụng NETFramework, mã nguồn chương trình (C#, VB.NET) được biên dịch thành mã ngôn ngữ trung gian MSIL (Microsoft intermediate language) Sau đó mã này được biên dịch bởiCommon Language Runtime (CLR) để trở thành mã thực thi của hệ điều hành.

C# với sự hỗ trợ mạnh mẽ của NET Framework giúp cho việc tạo một ứng dụngWindows Forms hay WPF (Windows Presentation Foundation), phát triển game, ứng dụng Web, ứng dụng Mobile trở nên rất dễ dàng.

Microsoft Visual Studio

Visual Studio Logo Microsoft Visual Studio là một môi trường phát triển tích hợp (IDE) từ Microsoft Microsoft Visual Studio còn được gọi là "Trình soạn thảo mã nhiều người sử dụng nhất thế giới ", được dùng để lập trình C++ và C# là chính Nó được sử dụng để phát triển chương trình máy tính cho Microsoft Windows, cũng như các trang web, các ứng dụng web và các dịch vụ web Visual Studio sử dụng nền tảng phát triển phần mềm của Microsoft như Windows API, Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft Silverlight Nó có thể sản xuất cả hai ngôn ngữ máy và mã số quản lý.

Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lập trình Các ngôn ngữ tích hợp gồm có C,[4] C++ và C++/CLI (thông qua Visual C++), VB.NET (thông qua Visual Basic.NET), C# (thông qua Visual C#) và F# (như của Visual Studio

2010[5]) Hỗ trợ cho các ngôn ngữ khác như J++/J#, Python và Ruby thông qua dịch vụ cài đặt riêng rẽ Nó cũng hỗ trợ XML/XSLT, HTML/XHTML, JavaScript và CSS.

Microsoft cung cấp phiên bản "Express" (đối với phiên bản Visual Studio 2013 trở về trước) và "Community" (đối với bản Visual Studio 2015 trở về sau) là phiên bản miễn phí của Visual Studio

GitHub

GitHub là một hệ thống quản lý dự án và phiên bản code, hoạt động giống như một mạng xã hội cho lập trình viên Các lập trình viên có thể clone lại mã nguồn từ một repository và Github chính là một dịch vụ máy chủ repository công cộng, mỗi người có thể tạo tài khoản trên đó để tạo ra các kho chứa của riêng mình để có thể làm việc.

Github có đầy đủ những tính năng của Git, ngoài ra nó còn bổ sung những tính năng về social để các developer tương tác với nhau Github cung cấp các tính năng social networking như feeds, followers, và network graph để các developer học hỏi kinh nghiệm của nhau thông qua lịch sử commit.

GIỚI THIỆU VỀ TOP-DOWN GAME

Khái niệm top-down game

Từ lâu, khái niệm game nhập vai hay Role-Playing Game (RPG) đã không còn xa lạ đối với nhiều người RPG đồng thời cũng đại diện cho rất nhiều dòng game nhỏ bên trong nó, chính vì thế RPG đóng vai trò là một yếu tố trong một game hơn là một thể loại cụ thể Dòng game top-down cũng là một phần không thể thiếu trong thế giới đa dạng của game nhập vai (RPG) Điểm đặc trưng của top-down game bao gồm:

- Góc nhìn và phong cách thiết kế: Người chơi quan sát môi trường chơi game từ trên cao, thường là góc nhìn vuông góc Điều này tạo ra một cái nhìn toàn cảnh, giúp người chơi dễ dàng điều khiển nhân vật và xác định vị trí của các đối tượng xung quanh.

- Trọng tâm vào chiến đấu và trí tuệ: Trong top-down game, người chơi thường phải đối mặt với các thách thức từ đối thủ và bản đồ phức tạp Thậm chí, đôi khi cần sử dụng trí tuệ và chiến lược để vượt qua các câu đố hoặc tình huống.

- Thế giới đa dạng: Top-down game có thể đặt trong các bối cảnh đa dạng, từ thế giới mở rộng rãi đến các mê cung hẹp Điều này tạo ra cơ hội cho việc khám phá, thu thập vật phẩm và gặp gỡ các nhân vật khác nhau.

3.2 Một số game tiêu biểu

Dòng game shooter top-down đã tạo ra một số tựa game đình đám với gameplay thú vị và cách tiếp cận độc đáo Dưới đây là một số tựa game tiêu biểu:

3.2.1 Hotline Miami Series Được biết đến với hình ảnh pixel art và tốc độ nhanh chóng, series game Hotline Miami đưa người chơi vào một thế giới bạo lực với phong cách top-down Người chơi sẽ trải qua các cấp độ đầy khó khăn, sử dụng sự linh hoạt và chiến lược để hoàn thành các nhiệm vụ ám sát

Hình 3.5 Game Hotline Miami Series

Game diễn ra trong bối cảnh Miami của thập niên 80, người chơi nhập vai vào một kẻ sát nhân thuê Anh ta nhận nhiệm vụ từ điện thoại di động để thực hiện các vụ ám sát và loại bỏ các mục tiêu khác nhau ameplay tập trung vào tốc độ nhanh chóng và phản xạ. Người chơi cần di chuyển nhanh, đánh bại kẻ thù và hoàn thành mục tiêu một cách nhanh nhất có thể.Tựa game yêu cầu người chơi thử nghiệm và lặp lại nhiều lần các cấp độ để hiểu rõ định hình và tìm ra cách tiếp cận tốt nhất Hơn nữa người chơi có thể chọn từ một loạt vũ khí khác nhau, mỗi loại vũ khí đều có ưu điểm và nhược điểm riêng.

"Nuclear Throne" là một trò chơi hành động roguelike top-down được phát triển bởi Vlambeer Trong thế giới của "Nuclear Throne," bạn sẽ chiến đấu qua các màn chơi ngẫu nhiên, thu thập vũ khí và tiến lên hạ ngai vàng

Trò chơi đặt bạn vào một thế giới hậu hậu tận thế, nơi đầy rẫy với quái vật, vũ khí và môi trường đầy nguy hiểm "Nuclear Throne" nổi bật với sự đa dạng của các loại vũ khí Từ súng cơ bản đến các loại vũ khí siêu năng lượng và biến thể của chúng, người chơi có thể chọn lựa và tận dụng để thích nghi với môi trường chiến đấu Bạn có thể chọn từ một loạt nhân vật với các kỹ năng riêng biệt Mỗi nhân vật có khả năng và mục tiêu riêng, tạo ra sự đa dạng trong cách tiếp cận và chiến đấu.

"Helldivers" là một game hành động top-down co-op được phát triển bởiArrowhead Game Studios Trò chơi này đưa người chơi vào tương lai khi loài người chiến đấu với các loài ngoài hành tinh.

Helldivers được thiết kế để chơi cùng bạn bè hoặc người chơi khác thông qua chế độ hợp tác đa người chơi Điều này tạo ra trải nghiệm chơi game cộng đồng, nơi mà bạn và đồng đội của mình phải hợp tác chặt chẽ để vượt qua các thách thức Trong khi game có yếu tố hành động cao, nó cũng yêu cầu sự chiến lược và hợp tác elldivers cho phép người chơi tùy chỉnh nhân vật và chọn từ một loạt vũ khí, thiết bị để thích nghi với các tình huống chiến đấu khác nhau.

Một số thể loại game trong dòng game Top-down

Trong dòng game top-down, có một loạt các thể loại đa dạng mà người chơi có thể tận hưởng Dưới đây là một số thể loại phổ biến:

- Top-Down Shooters (STG): Đây là các game tập trung vào việc người chơi điều khiển nhân vật hoặc phương tiện từ góc nhìn từ trên xuống để bắn hạ kẻ địch hoặc tránh né đạn đạo.

- Twin-Stick Shooters: Người chơi điều khiển vũ khí với một cần điều khiển hoặc chuột và bàn phím, thường điều khiển hướng và bắn độc lập.

- RPG Top-Down: Kết hợp yếu tố nhập vai với hành động, người chơi thường có cơ hội nâng cấp nhân vật và vũ khí.

- Exploration Games: Thường là những game mà người chơi khám phá và tìm hiểu một thế giới rộng lớn từ góc nhìn từ trên xuống.

- Real-Time Strategy (RTS): Mô phỏng các cuộc chiến đấu chiến lược theo thời gian thực từ góc nhìn từ trên cao.

- Tower Defense Games: Người chơi xây dựng và quản lý các tháp phòng thủ để chống lại lượng lớn kẻ địch tiến tới.

- Roguelike Games: Thường có yếu tố chết chỉ sống một lần, với việc ngẫu nhiên hóa các màn chơi mỗi lần chơi lại.

- Dungeon Crawlers: Người chơi khám phá và chiến đấu qua các hang động, hầm ngầm, thường từ góc nhìn từ trên xuống.

- Farming Simulations: Người chơi quản lý và phát triển nông trại từ góc nhìn từ trên xuống.

- City or Base Building Games: Xây dựng và quản lý thành phố hoặc cơ sở từ góc nhìn từ trên xuống.

- Tile-Based Puzzles: Các trò chơi logic hoặc câu đố trên lưới, thường từ góc nhìn từ trên xuống.

TỔNG QUAN VỀ GAME

Ý tưởng game

Game xây dựng một thế giới nơi con người đã phát triển công nghệ AI đến mức độ tiên tiến Trong tình hình chiến tranh toàn cầu và hậu quả của việc sử dụng AI, con người đang đối mặt với việc các android đã bị mất kiểm soát và các thế lực không ngừng sử dụng android cho việc chiến tranh Và người chơi sẽ nhập vai vào các android chiến đấu tiêu diệt các android đã mất kiếm soát và chống lại các thế lực khủng bố nguy hiểm.

Mục tiêu của người chơi là chiến đấu qua các màn chơi ngẫu nhiên, vượt qua các mức độ khó khăn và đối mặt với nhiều loại kẻ thù khác nhau từ máy móc đến những sinh vật quái dị Người chơi sẽ thu thập vũ khí, nâng cấp và tùy chỉnh android của mình để thích nghi với các tình huống chiến đấu ngày càng khắc nghiệt.

Tính năng

- Player có thể tấn công enemy và ngược lại.

- Player được xây dựng có khả năng di chuyển, tấn công bằng súng và một số các kỹ năng: ném bom; lướt; …

- Enemy được áp dụng các thuật toán để thông minh hơn, có thể rớt vật phẩm khi bị tiêu diệt.

- Game có sự đa dạng vũ khí và item Người chơi có thể thay đổi vũ khí và item hỗ trợ để chiến đấu.

- Bản đồ được thiết kế để tạo một môi trường khắc nghiệt và thử thách đòi hỏi player phải có kỹ năng và phản xạ nhanh.

- Player có thể tương tác với npc trong game để nói chuyện và nhận item.

- Tính năng Pause game, Save game, Save settings.

Giới thiệu về các gameObject

Camera object do Unity Engine cung cấp với tác dụng kiểm soát màn hình người chơi (những gì người chơi thực sự thấy khi chơi game) MainCamera object trong game có nhiệm vụ theo dõi Player object, nhờ đó màn hình game luôn luôn quan sát hành động của nhân vật chính và môi trường xung quanh.

Nhân vật chính của game, là đối tượng mà người chơi có thể điều khiển và thực hiện các hành động dựa trên quy tắc của game Player có thể thực hiện tất cả mọi thứ được đề cập ở trên phần tính năng Hệ thống logic game xoay quanh object Player và cập nhật trạng thái game dựa trên object này Player object tương tác với thế giới game thông qua những script file PlayerController.cs.

Là một robot di chuyển xung quanh bản đồ, tấn công mục tiêu mà nó cho là kẻ thù, những viên đạn của nó bắn ra có khả năng truy đuổi mục tiêu.

Là một robot di chuyển xung quanh bản đồ, tấn công mục tiêu mà nó cho là kẻ thù, khi đến một ngưỡng máu nhất định nó sẽ chuyển sang chế độ tự sát, di chuyển đến mục tiêu và phát nổ

Là một lính canh gác, di chuyển xung quanh khu vực của mình và tấn công kẻ xâm phạm, có khả năng sử dụng nhiều loại súng khác nhau.

Là một người máy sinh hóa, có nhiệm vụ canh gác, di chuyển xung quanh khu vực của mình và tấn công kẻ xâm phạm, có khả năng sử dụng nhiều loại súng khác nhau.

Là một phiên bản nâng cấp của SecurityCyborg1 , có nhiệm vụ canh gác, di chuyển xung quanh khu vực của mình và tấn công kẻ xâm phạm, được thêm vào khả năng di chuyển thông minh hơn.

Là trụ canh phòng, liên túc quét môi trường xung quanh để tìm kiếm xem có kẻ xâm phạm không, và tấn công kẻ đó khi ở trong tầm.

Là đạn của player hoặc enemy bắn ra, gây sát thương cho mà nó đụng phải.

Hệ thống xử lí các sự kiện của GameScene.

Camera object do Unity Engine cung cấp, dùng để quan sát màn hình chính

Nơi vẽ Menu chính, chứa các object con là:

 BackGround: vẽ hình nền cho màn hình Menu chính.

 Title: vẽ tựa đề cho màn hình Menu chính

 Play_Button: bắt đầu trò chơi khi người chơi nhấp vào.

 Setting_Button: chỉnh sửa các cài đặt của trò chơi.

 Back_Button: Thoát trò chơi.

Hệ thống xử lí các sự kiện của MenuScene

ĐẶC TẢ USE CASE

Sơ đồ use case

Hình 5.8 Sơ đồ use case Player

Hình 5.9 Sơ đồ use case Destroyar

Hình 5.10 Sơ đồ use case DroneRobot

Hình 5.11 Sơ đồ use case Engineer

Hình 5.12 Sơ đồ use case SecuritiyCyborg1

Hình 5.13 Sơ đồ use case SecurityCyborg2

Hình 5.7 Sơ đồ use case Turret

Danh sách Actor

1 Player Nhân vật chính do người chơi điều khiển Được xem như người chơi trong các use case, do hành động của người chơi tác động vào game tương tự như nhân vật.

2 Destroyer Là 1 robot canh phòng, di chuyển xung quanh khu vực của mình và tấn công những kẻ xâm phạm.

3 DroneRobot Là 1 robot canh phòng, di chuyển xung quanh khu vực của mình và tấn công kẻ xâm phạm, có khả năng phát nổ khi sắp chết.

4 Engineer Là lính canh phòng, di chuyển xung quanh khu vực của mình và tấn công kẻ thù xâm phạm, có khả năng sử dụng nhiều loại súng.

5 SecurtityCyborg1 Là lính cyborg canh phòng, di chuyển xung quanh khu vực của mình và tấn công kẻ thù xâm phạm, có khả năng sử dụng nhiều loại súng.

6 SecurtityCyborg2 Là lính cyborg canh phòng, di chuyển xung quanh khu vực của mình và tấn công kẻ thù xâm phạm, có khả năng sử dụng nhiều loại súng.

7 Turret Là trụ súng canh gác, quét sung quanh và tấn công kẻ xâm phạm.

Danh sách use case

STT Use case Mô tả

1 Play Game Use case bắt đầu khi người chơi nhấn vào nút “Play” ở màn hình Main Menu và tải file save game

2 Exit Game Use case bắt đầu khi người chơi nhấn vào nút “Play” ở màn hình Main Menu

3 Pause Game Use case bắt đầu khi người chơi nhấn vào nút “Esc” trên bàn phím

4 Save Game Use case bắt đầu khi người chơi nhấn nút “Save” hoặc thoát game

5 Restart Game Use case bắt đầu khi Player chết

6 Exit to Menu Use case bắt đầu khi người chơi nhấn vào nút “Exit to Menu” trên Pause Menu

7 Move Use case bắt đầu khi người chơi nhấn một hoặc nhiều nút di chuyển “A, S, W, D” trong

8 Dash Use case bắt đầu khi người chơi nhấn “Ctrl” trong

9 Attack Use case bắt đầu khi người chơi nhấn “left mouse” trong GamePlayScene

10 UpdateHp Use case bắt đầu khi player hoặc enemy bị tấn công và nhận sát thương

11 Take Damaged Use case bắt đầu khi player hoặc enemy nhận sát thương từ các cuộc tấn công như va chạm hay bị bắn trúng,…

12 Check Hp Use case bắt đầu khi player hoặc enemy bị tấn công và nhận sát thương để kiểm tra xem use case Dead có thể chạy hay không?

13 Dead Use case bắt đầu khi player hoặc enemy nhận sát thương và lượng máu về 0

14 Buff Use case bắt đầu khi player nhặt các item rơi ra khi đánh bại enemy

15 Interact with item Use case bắt đầu khi player chạm vào các item rơi ra khi đánh bại enemy

16 Teleport Use case bắt đầu khi người chơi nhấn vào các điểm dịch chuyển trên map

17 Explosive Use case bắt đầu khi enemy sắp hết máu và tự sát

18 IDLE Use case bắt đầu khi player hoặc enemy cần chuyển đổi trạng thái hoặc bắt đầu một cuộc tấn công Tất cả các hành động khác bị dừng lại

19 Run Use case bắt đầu trong quá trình cho điểm đến cho enemy để dẫn đến bị trí hiện tại của player Use case hoạt động trong suốt quá trình tồn tại của enemy

20 Walk Use case bắt đầu khi AI chọn điểm đến cho enemy di chuyển đến, giúp enemy đến gần người chơi và tiến hành tấn công.

21 Shoot Use case bắt đầu khi enemy bắn đầu tấn công người chơi

Bảng 5.2 Danh sách use case

Mô tả chi tiết use case

Mô tả Bắt đầu game và Tải dữ liệu từ file save game

Luồng sự kiện Luồng chính 1 Người chơi nhấn vào nút “Play” ở

2 Hệ thống load dữ liệu từ file save game

3 Chuyển sang GamePlayScene đã lưu từ trước, người chơi bắt đầu chơi game

Yêu cầu đặc biệt Không Điều kiện trước - Game đang mở

- Người chơi đang ở màn hình Main

Menu Điều kiện sau - Người chơi chơi game

Bảng 5.3 Đặc tả use case Play game

Luồng sự kiện Luồng chính 1 Người chơi nhấn nút “Exit Game” ở

Main Menu hoặc nút “Quit Game” ở Pause Menu

Yêu cầu đặc biệt Không Điều kiện trước - Game đang hoạt động Điều kiện sau - Ứng dụng bị tắt

Bảng 5.4 Đặc tả use case Exit game

Mô tả Tạm dừng game

Luồng sự kiện Luồng chính 1 Người chơi nhấn phím “Esc” để pause game

2 Người chơi nhấn phím “Esc” lần nữa để tiếp tục game

Yêu cầu đặc biệt Không Điều kiện trước - Player vẫn còn sống Điều kiện sau - Game bị tạm dừng

Bảng 5.5 Đặc tả use case Pause game

Mô tả Lưu trạng thái game và settings game

Luồng sự kiện Luồng chính 1 Người chơi

Yêu cầu đặc biệt Không Điều kiện trước - Game vẫn hoạt động Điều kiện sau - Game bị tạm dừng

Bảng 5.6 Đặc tả use case Save game

Mô tả Lưu trạng thái game và settings game

Luồng sự kiện Luồng chính 1 Player ở GamePlayScene và chiến đấu với các enemy và khiến máu trở về 0

2 Player quay lại địa điểm lưu game gần nhất

Yêu cầu đặc biệt Không Điều kiện trước - Game vẫn hoạt động Điều kiện sau - Player quay lại địa điểm lưu game gần nhất và xóa tất cả buff kiếm được

Bảng 5.7 Đặc tả use case Restart game

Mô tả Game chuyển sang MainMenuScene

Luồng sự kiện Luồng chính 1 Người chơi nhấn phím “Esc” ở

GamePlayScene để hiện lên Pause Menu

2 Người chơi nhấn vào nút “Exit to Menu”

Yêu cầu đặc biệt Không Điều kiện trước - Game vẫn hoạt động Điều kiện sau - Player quay lại địa điểm lưu game gần nhất và xóa tất cả buff kiếm được

Bảng 5.8 Đặc tả use case Exit to menu

Mô tả Người chơi di chuyển nhân vật

Luồng sự kiện Luồng chính 1 Người chơi nhấn phím các phím A,

2 Nhân vật bắt đầu di chuyển theo đúng hướng người chơi mong muốn

Yêu cầu đặc biệt Hướng di chuyển mà người chơi chỉ định phải không tồn tại địa hình cản trở Điều kiện trước - Game đang trong GamePlayScene Điều kiện sau - Vận tốc của Player Object thay đổi

Bảng 5.9 Đặc tả use case Move

Mô tả Người chơi điều khiển nhân vật lướt theo hướng chỉ định

Luồng sự kiện Luồng chính 1 Người chơi nhấn phím “Ctrl” + phím chỉ định hướng di chuyển để di chuyển nhân vật

2 Nhân vật di chuyển nhanh theo hướng chỉ định

Yêu cầu đặc biệt Hướng di chuyển mà người chơi chỉ định phải không tồn tại địa hình cản trở nếu không sẽ bị cản lại Điều kiện trước - Game đang trong GamePlayScene Điều kiện sau - Vận tốc của Player Object tăng nhanh

Bảng 5.10 Đặc tả use case Dash

Mô tả Người chơi điều khiển nhân vật tấn công

Luồng sự kiện Luồng chính 1 Người chơi nhấn chuột trái

2 Nhân vật chuyển sang trạng thái tấn công và bắn ra PlayProjectile để gây sát thương lên enemy

Yêu cầu đặc biệt Hướng di chuyển mà người chơi chỉ định phải không tồn tại địa hình cản trở nếu không sẽ bị cản lại Điều kiện trước - Game đang trong GamePlayScene Điều kiện sau - Nhân vật chuyển sang trạng thái tấn công

Bảng 5.11 Đặc tả use case Attack

Mô tả Cập nhật Hp cho player hoặc enemy

Luồng sự kiện Luồng chính 1 Player hoặc enemy được khởi tạo

2 Trong quá trình hoạt động của player hoặc enemy khi nhận sát thương thì tiến hành cập nhật lượng máu hiện có

Yêu cầu đặc biệt - Player không ở trạng thái bất tử hoặc chết

- Enemy không ở trạng thái chết Điều kiện trước - Game đang trong GamePlayScene Điều kiện sau - Lượng máu Player và Enemy được cập nhật

Bảng 5.12 Đặc tả use case Update HP

Mô tả Player hoặc enemy nhận sát thương

Luồng sự kiện Luồng chính 1 Rigid body sẽ phát hiện collision giữa player với enemy hoặc với các đối tượng tấn công

2 Lượng máu của Player hoặc enemy sẽ được

Yêu cầu đặc biệt - Player không ở trạng thái bất tử hoặc chết

- Enemy không ở trạng thái chết Điều kiện trước - Game đang trong GamePlayScene Điều kiện sau - Lượng máu Player và Enemy được cập nhật

Bảng 5.13 Đặc tả use case Take damaged

Mô tả Kiểm tra lượng máu của player hoặc enemy

Luồng sự kiện Luồng chính 1 Player hoặc enemy được khởi tạo

2 Trong quá trình player hoặc enemy hoạt động, khi nhận sát thương thì sẽ kiểm xem lượng máu có về 0 không? Nếu lượng máu của player và enemy trở về 0

3 Chuyển trạng thái sang dead

Yêu cầu đặc biệt Không Điều kiện trước - Player hoặc enemy đã được khởi tạo và hoạt động Điều kiện sau Không

Bảng 5.14 Đặc tả use case CheckHP

Mô tả Hủy các đối tượng enemy hoặc player và restart game khi HP của đối tượng trở về

Luồng sự kiện Luồng chính 1 HP của player hoặc enemy trở về 0 hoặc thấp hơn

2 Phát dead animation của player hoặc enemy

Nếu là đối tượng enemy

3 Hủy đối tượng enemy khi dead animation kết thúc

Nếu là đổi tượng player

Yêu cầu đặc biệt Không Điều kiện trước - HP của player và enemy trở về 0 hoặc thập hơn Điều kiện sau - Hủy những đối tượng enemy mà máu trở về 0 hoặc Restart game nếu máu của player trở về 0

Bảng 5.15 Đặc tả use case Dead

Mô tả Nâng cấp các thông số player khi player nhặt các vật phẩm nâng cấp rơi ra khi đánh quái

Luồng sự kiện Luồng chính 1 Người chơi start game

2 Sau khi đánh bại toàn bộ enemy hoặc boss thì sẽ rơi ra một vài item nâng cấp

3 Player tiến lại gần và nhặt các vật phẩm

4 Vật phẩm sẽ biến mất và nâng cấp thông số của player

Yêu cầu đặc biệt Không Điều kiện trước - Di chuyển và hành động của player không bị hạn chế

- Player đứng đủ gần để có thể tương tác với các item nâng cấp Điều kiện sau - Item nâng cấp sẽ biến mất và nâng cấp thông số của player

Bảng 5.16 Đặc tả use case Buff

Mô tả Tương tác với item nâng cấp

Luồng sự kiện Luồng chính 1 Người chơi start game

2 Sau khi đánh bại toàn bộ enemy hoặc boss thì sẽ rơi ra một vài item nâng cấp

3 Player tiến lại gần và tiến hành tương tác

Yêu cầu đặc biệt Không Điều kiện trước - Di chuyển và hành động của player không bị hạn chế

- Player đứng đủ gần để có thể tương tác với các item nâng cấp Điều kiện sau - Item nâng cấp sẽ biến mất và nâng cấp thông số của player

Bảng 5.17 Đặc tả use case Interact with item

Mô tả Dịch chuyển đến các điểm dịch chuyển

Luồng sự kiện Luồng chính 1 Người chơi nhấn phím “m” để mở map

2 Người chơi nhấn double vào các điểm dịch trên map

3 Player sẽ được dịch chuyển đến điểm dịch chuyển

Yêu cầu đặc biệt Không Điều kiện trước - Đang ở màn hình GamePlayScene Điều kiện sau - Player sẽ được dịch chuyển đến điểm dịch chuyển

Bảng 5.18 Đặc tả use case Teleport

Mô tả Dịch chuyển đến các điểm dịch chuyển

Luồng sự kiện Luồng chính 1 Enemy sắp hết máu và bắt đầu tự sát

Yêu cầu đặc biệt Không Điều kiện trước - Đang ở màn hình GamePlayScene Điều kiện sau Không

Bảng 5.19 Đặc tả use case Explosive

Mô tả Thay đổi trạng thái player hoặc enemy về không hoạt động

Luồng sự kiện Luồng chính 1 Player hoặc enemy không thực hiện hành nào động nào hoặc đang chuẩn bị tấn công skill

2 Chuyển trạng thái player hoặc enemy về “IDLE”

3 Phát IDLE animation của player hoặc enemy

Yêu cầu đặc biệt Không Điều kiện trước - Player và enemy đã được khởi tạo và đang hoạt động

Bảng 5.20 Đặc tả use case IDLE

Mô tả Tìm đường dẫn đến vị trí player

Luồng sự kiện Luồng chính 1 Xác định vị trí của enemy và player

2 Tìm con đường ngắn nhất từ enemy đến player nếu không xung đột với đối tượng khác

Yêu cầu đặc biệt Không Điều kiện trước - Player và enemy đã được khởi tạo, đang hoạt động và đang ở cùng một Scene Điều kiện sau Không

Bảng 5.21 Đặc tả use case Run

Mô tả Enemy di chuyển xung quanh

Luồng sự kiện Luồng chính 1 Enemy kiểm tra khoảng cách từ vị trí đang đứng đến vị trí player

2 Enemy di chuyển về phía player

Luồng phụ Nếu player nằm ngoài phạm vi hoạt động của Enemy

1 Enemy sẽ di chuyển ramdom xung quanh vị trí ban đầu

2 Enemy phát run animation Nếu player nằm trong phạm vi hoạt động của enemy

1 Xác định vị trí của player

2 Di chuyển đến vị trí của player

Yêu cầu đặc biệt Không Điều kiện trước - Player và enemy đã được khởi tạo, đang hoạt động và đang ở cùng một Scene

- Enemy không bị hạn chế di chuyển Điều kiện sau - Vận tốc FlyEye lớn hơn 0

Bảng 5.22 Đặc tả use case Walk

Mô tả Enemy tấn công Player

Luồng sự kiện Luồng chính 1 Enemy kiểm tra xem có vật cản giữa player và Enemy không

2 Enemy kiểm tra xem đòn đánh có thể sử dụng không

3 Tấn công Luồng phụ Nếu player nằm ngoài phạm vi hoạt động của FlyEye

1 Enemy sẽ di chuyển đến vị trí có thể tấn công

Yêu cầu đặc biệt Không Điều kiện trước Không Điều kiện sau Không

Bảng 5.23 Đặc tả use case Shoot

PHÂN TÍCH THIẾT KẾ

Phân tích thiết kế

1 Health Class dùng chung để thể hiện máu của các gameobject

2 PlayerHealth Quản lý máu của nhân vật

3 EnemyHealth Quản lý máu của enemy

4 MovementController class định nghĩa các phương thức, thuộc tính để điều khiển di chuyển của các đối tượng không phải người chơi

5 ChasingMovement Kiểu di chuyển đuổi theo người chơi

6 TurretMovement Kiểu di chuyển của turret

7 FieldOfView Tầm nhìn của quái để kiểm tra khi nào gặp người chơi

8 PlayerController Điều khiển hoạt động của người chơi gồm di chuyển, tấn công, nhảy.

9 AttackBehavior Quản lý các các tấn công của enemy

10 AttackSkill Abstract class định nghĩa các thuộc tính, phương thức dùng chung cần thiết để enemy thực hiện tấn công

11 AutoShoot Đòn bắn tự động

12 Explosive Đòn tấn công nổ bằng cách tự sát

Singleton quản lý quá trình save và load game

14 FileDataHandler Hiện thực việc đọc, lưu trữ gamedata sang file

15 GameData Lưu trữ data của game

Kiểu dữ liệu Mô tả

1 maxHealth Float Lượng máu tối đa

2 Health Float Lượng máu hiện tại

3 hitEffect GameObject Hiệu ứng khi đối tượng bị tấn công

4 deadEffect GameObject Hiệu ứng khi đối tượng chết

5 TakeDamage Void Hàm xử lý khi đối tượng nhận sát thương

6 Die Void Hàm xử lý khi đối tượng chết

Bảng 6.25 Chi tiết Class Health

ST Thuộc tính / Phương Kiểu dữ liệu Mô tả

1 maxHealth Float Lượng máu tối đa

2 Health Float Lượng máu hiện tại

3 hitEffect GameObject Hiệu ứng khi đối tượng bị tấn công

4 deadEffect GameObject Hiệu ứng khi đối tượng chết

5 TakeDamage Void Hàm xử lý khi đối tượng nhận sát thương

6 Die Void Hàm xử lý khi đối tượng chết

Bảng 6.26 Chi tiết Class PlayerHealth

Kiểu dữ liệu Mô tả

1 maxHealth Float Lượng máu tối đa

2 Health Float Lượng máu hiện tại

3 hitEffect GameObject Hiệu ứng khi đối tượng bị tấn công

4 deadEffect GameObject Hiệu ứng khi đối tượng chết

5 TakeDamage Void Hàm xử lý khi đối tượng nhận sát thương

6 Die Void Hàm xử lý khi đối tượng chết

Bảng 6.27 Chi tiết Class EnemyHealth

Kiểu dữ liệu Mô tả

1 Move() Void Hàm abstract để để các lớp con điều chỉnh cách di chuyển

Bảng 6.28 Chi tiết Class EnemyMovement

Kiểu dữ liệu Mô tả

1 WalkAroundPosi List Danh sách các vị trí cần tuần tra

2 Move() Void Ghi đè phương thức từ lớp cha, điều khiển kiểu di chuyển đuổi theo

Bảng 6.29 Chi tiết Class FlyEnemyMovement

Kiểu dữ liệu Mô tả

1 angularDeg Float Phạm vi quay của trị

2 angularSpeed Float Tốc độ quay

3 angularSpeedPerFrame Float Tốc độ di chuyển của turret trong mỗi game frame

4 Move() Void Ghi đè phương thức ở lớp cha, điều khiển kiểu di chuyển của turret

Bảng 6.30 Chi tiết Class BossMovement

Kiểu dữ liệu Mô tả

1 visionRange Float Độ lớn của tầm nhìn

2 Update() Void Phương thức được unity định nghĩa, chạy liên tục mỗi frame để quét xem đối tượng đã vào tầm nhìn chưa

Bảng 6.31 Chi tiết Class Vision Range

Kiểu dữ liệu Mô tả

1 playerAnimator Animator Là 1 thuộc tính được unity định nghĩa, điều khiển hoạt ảnh của nhân vật

2 platformLayer LayerMask Là 1 thuộc tính được unity định nghĩa, lưu trữ danh sách các layer được coi là platform

3 Rb Rigidbody2d Là 1 thuộc tính được unity định nghĩa, là cơ thể vật lý của nhân vật

4 boxCollider Boxcollider2d Là 1 thuộc tính được unity định nghĩa, là khung va chạm của nhân vật

5 playerInputActions PlayerInputActions Là 1 thuộc tính được unity định nghĩa, xử lý thông tin bàn phím và chuột.

6 Move InputAction Là 1 thuộc tính được unity định nghĩa, lưu trữ thông tin của sự kiện move

7 meleeAttack InputAction Là 1 thuộc tính được unity định nghĩa, lưu trữ thông tin của sự kiện meleeAttack

8 Dash InputAction Là 1 thuộc tính được unity định nghĩa, lưu trữ thông tin của sự kiện dash

9 Awake() Void Là 1 phương thức được unity định nghĩa, thực hiện các công việc sau khi khởi tạo đối tượng

10 OnEnable() Void Là 1 phương thức được unity định nghĩa, thực hiện các công việc khi đối tượng được enable

11 OnDisable() Void Là 1 phương thức được unity định nghĩa, thực hiện các công việc khi đối tượng được disable

12 Update() Void Là 1 phương thức được unity định nghĩa, liên tục được gọi mỗi frame

13 FixedUpdate() Void Là 1 phương thức được unity định nghĩa, liên tục được gọi mỗi 1 khoảng thời gian nhất định trôi qua

14 Fire() Void Phương thức thực hiện đòn tấn công

15 Dash() Void Phương thức xử lý hành động lướt

Bảng 6.32 Chi tiết Class PlayerController

Kiểu dữ liệu Mô tả

1 attackContainer Transform Thuộc tính được unity định nghĩa, lưu trữ các đòn tấn công của đối tượng

2 Attacks AttackBase[] Danh sách các đòn tấn công của đối tượng

3 AttackTarget Transform Mục tiêu cần tấn công

4 Animator Animator Thuộc tính được unity định nghĩa, thực hiện việc điều khiển hoạt ảnh của đối tượng

5 Attack() Void Hàm xử lý tấn công

6 ExcuteAttack() Void Hàm xử lý thực hiện đòn tấn công

7 AttackToUse AttackBase Phương thức để xử lý xem nên sử dụng đòn tấn công nào

8 SetTarget() Void Phương thức dùng để truyền vào đối tượng cần tấn công

Bảng 6.33 Chi tiết Class AttackBehavior

Kiểu dữ liệu Mô tả

1 attackCD Float Thời gian hồi chiêu

2 attackDuration Float Thời gian thực hiện đòn tấn công

3 readyToAttack Bool Thuộc tính dùng để kiểm tra xem đối tượng đã sẵn sàng tấn công chưa

4 animTrigger String Tên của hành động tấn công để xử lý hoạt ảnh

5 maxRange Float Tầm đánh tối đa

6 minRange Float Tầm đánh tối thiểu

7 noRange Bool Thuộc tính để kiểm tra thuộc tính này có tầm đánh không

8 startWithCD Bool Thuộc tính dùng để kiểm tra xem có thời gian hồi chiêu khởi đầu không

9 IsInRange(float ) Bool Phương thức để kiểm tra đối tượng cần tấn công có trong tầm đánh không

10 CanExcuteAttack() Bool Phương thức dùng để kiểm tra xem có thể thực hiện đòn tấn công này hay không

11 ExcuteAttack() Abstract void Phương thức trừu tượng để thực hiện đòn tấn công

12 AttackCD() Ienumrator Phương thức để xử lý thời gian hồi chiêu

Bảng 6.34 Chi tiết Class AttackBase

Kiểu dữ liệu Mô tả

1 shootPoint Vector3 Tọa độ của nơi thực hiện đòn tấn công

2 ExcuteAttack() Void Triển khai phương thức được kế thừa từ lớp cha

3 Projectile GameObject Instance của loại đối tượng mà boss sẽ bắn ra

Bảng 6.35 Chi tiết Class BossAttackSkill4

Kiểu dữ liệu Mô tả

1 ExcuteAttack() Void Triển khai phương thức được kế thừa từ lớp cha

Bảng 6.36 Chi tiết Class FlyDashAttack

Kiểu dữ liệu Mô tả

2 fileName String Tên của file lưu trữ

3 gameData GameData Instance của class GameData

4 fileDataHandler FileDataHandler Instance của class

5 SaveGame() Void Phương thức xử lý sự kiện save game

6 LoadGame() Void Phương thức xử lý sự kiện load game

7 ReLoadGame() Void Phương thức xử lý sự kiện reload game

8 NewGame Void Phương thức xử lý sự kiện new game

Bảng 6.37 Chi tiết Class DataPersistanceManager

Kiểu dữ liệu Mô tả

1 dataDirPath String Địa chỉ của file lưu trữ

2 dataFileName String Tên của file lưu trữ

3 useEncryption Bool Thuộc tính dùng để kiểm tra xem có sử dụng mã hóa không

4 encryptionCodeWord Bool Từ dùng để mã hóa

Bảng 6.38 Chi tiết Class FileDataHandler

Kiểu dữ liệu Mô tả

1 PlayerPosition Vector3 Vị trí của người chơi hiện tại

2 playerHealth Float Lượng máu hiện tại của người chơi

3 GameData() Phương thức khởi tạo

Bảng 6.39 Chi tiết Class GameData

State diagram

Hình 6.15 Sơ đồ state của Player

Bảng 6.40 Chuyển đồi state của Player

Hình 6.16 Sơ đồ state của Boss

Bảng 6.41 Chuyển đổi state của Player

Hình 6.17 Sơ đồ state của Destroyar

Bảng 6.42 Chuyển đổi state của Destroyar

Hình 6.18 Sơ đồ state của Engineer

Bảng 6.43 Chuyển đổi state của Engineer

Hình 6.19 Sơ đồ state của SecurityCyborg1

Bảng 6.44 Chuyển đổi state của SecurityCyborg1

Hình 6.20 Sơ đồ state của SecurityCyborg2

Bảng 6.45 Chuyển đổi state của SecurityCyborg2

Hình 6.21 Sơ đồ state của Turret

Bảng 6.32 Chuyển đổi state của Turret

Thiết kế UI

- Làm giao diện người dùng nhất quán, dễ sử dụng

- Vô hiệu hóa các chức năng theo ngữ cảnh

- Sử dụng màn hình hiệu quả

Người dùng sẽ vào Main menu Screen đầu tiên khi chạy game Main menu Screen có: 1 image làm background, 1 image làm title, 7 buttons: PlayGameButton, BackButton, SettingButton, StoreButton, MissionButton, GunSelectButton, BoomSelectButton, ItemSelecButton

- Nhấn nút PlayGameButton: Mở Mission Menu

- Nhấn nút BackButton: Thoát game

- Nhấn nút SettingButton: Mở Settings Menu

- Nhấn nút StoreButton: Mở Store Menu

- Nhấn nút MissionButton: Mở Mission Menu

- Nhấn nút GunSelectButton: Mở Gun Menu

- Nhấn nút BoomSelectButton: Mở Boom Menu

- Nhấn nút ItemSelecButton: Mở Item Menu

Gun menu lựa chọn súng cần thiết để vào màn chơi Game Menu 1 scroll view chưa nhiều đối tượng GunSelectPanel Mỗi GunSelectPanel: 1 Image súng, 1 text làm tên súng, 1 text làm level, 3 button: SelectButton, UpgrapeButton, Close Button.

- Nhấn nút SelectButton: Chọn súng cho player chuẩn bị vào game.

- Nhấn nút UpgrapeButton: Mở Upgrape Gun Menu

- Nhấn nút CloseButton: Đóng Gun Menu

Boom menu lựa chọn boom cần thiết để vào màn chơi Boom Menu 1 scroll view chưa nhiều đối tượng BoomSelectPanel Mỗi BoomSelectPanel: 1 Image boom, 1 text làm tên boom, 1 text làm level, 2 button: SelectButton, Close Button.

- Nhấn nút SelectButton: Chọn bom cho player chuẩn bị vào game.

- Nhấn nút CloseButton: Đóng Boom Menu

Item menu lựa chọn item cần thiết để vào màn chơi Item Menu 1 scroll view chưa nhiều đối tượng ItemSelectPanel Mỗi ItemSelectPanel: 1 Image item, 1 text làm tên item, 1 text làm số lượng item hiện có, 2 button: SelectButton, Close Button.

- Nhấn nút SelectButton: Chọn bom cho player chuẩn bị vào game.

- Nhấn nút CloseButton: Đóng Item Menu

Store menu lựa chọn mở shop cần mua Store Menu có 1 text làm tiêu dề, 4 button: GunButton, ItemButton, WeaponSupportButton, Close Button.

- Nhấn nút GunButton: Mở Shop Gun menu

- Nhấn nút ItemButton: Mở Shop Item Menu

- Nhấn nút WeaponSupportButton: Mở Shop Boom Menu

- Nhấn nút Close Button: Đóng Store Menu

Shop gun menu dùng để mua súng Shop gun Menu có 1 text làm tiêu dề, 2 scroll view: OptionView (chứa nhiều optionButton) và GunView (chứa nhiều GunPanel) và 1 button: Close button

- Nhấn nút OptionButton: Load lại danh sách gun theo loại súng được chọn.

- Nhấn nút BuyButton trong GunPanel: Mua súng.

- Nhấn nút CloseButton: Đóng Shop gun menu.

Shop item menu dùng để mua item Shop item Menu có 1 text làm tiêu dề, 2 scroll view: OptionView (chứa nhiều optionButton) và GunView (chứa nhiều ItemPanel) và 1 button: Close button

- Nhấn nút OptionButton: Load lại danh sách item theo loại item được chọn.

- Nhấn nút BuyButton trong ItemPanel: Mua item.

- Nhấn nút CloseButton: Đóng Shop item menu.

Mission menu dùng để chọn màn chơi bắt đầu Mission Menu, 2 scroll view: OptionAreaView (chứa nhiều optionButton) và MapView (chứa nhiều MissionPanel) và

2 button: Back button, Start button.

- Nhấn nút OptionButton: Load lại danh sách mission theo Area được chọn.

- Nhấn nút BackButton: Đóng Mission Menu.

- Nhấn nút StartButton: Mở PlayScene được chọn.

Setting menu dùng để thay đổi các cài đặt của game Setting Menu có 1 text làm tiêu đề, 2 slider: MusicSlider và VolumeSlider, 1 dropdown: ResolutionDp, 1 button: CloseButton.

- Kéo thả MusicSlider: Tăng giảm âm lượng nhạc nền.

- Kéo thả VolumeSlider: Tăng giảm âm lương hiệu ứng.

- Nhấn chọn option trong ResolutionDp: Thay đổi độ phân giải của game.

- Nhấn nút Close button: Đóng Setting Menu

Pause game menu dùng để hiển thị những lựa chọn trong lúc đang chơi game. Pause game Menu có 1 text làm tiêu đề, 4 button: ResumeButton, SettingButton, RestartButton và ExitButton.

- Nhấn nút ResumeButton: Đóng Pause game menu và tiếp tục game.

- Nhấn nút SettingButton: Mở Setting Menu

- Nhấn nút RestartButton: Đóng Pause Game menu và khởi động lại màn chơi.

- Nhấn nút ExitButton: Chuyển về Main Menu Screen.

Game win menu dùng để hiển thị thông tin và lựa chọn khi người chơi hoàn thành một màn chơi Game win Menu có 1 image làm tiêu đề, 3 toogle hiển thị sao, 2 button: RestartButton và ExitButton.

- Nhấn nút RestartButton: Đóng Pause Game menu và khởi động lại màn chơi.

- Nhấn nút ExitButton: Chuyển về Main Menu Screen.

Game Over menu dùng để hiển thị những lựa cho khi người chơi thua game Game Over Menu có 1 image làm tiêu đề, 2 button: RestartButton và ExitButton.

- Nhấn nút RestartButton: Đóng Pause Game menu và khởi động lại màn chơi.

- Nhấn nút ExitButton: Chuyển về Main Menu Screen.

Message Box dùng để hiển thị thông báo Message Box có 1 text làm tiêu đề, 1 text làm mô tả.

HUD dùng để hiển thị những thông số của người chơi lúc đang chơi game HUD 2 Slider: HP Slider (hiển thị máu hiện tại của người chơi) và Defense Slider (hiển thị phòng thủ hiện tại của người chơi), 2 button: gunButton, SkillButton

- Nhấn vào gunButton: Thay đổi súng đang sử dụng.

- Nhấn vào skillButton: Sử dụng skill.

CÀI ĐẶT VÀ KIỂM THỬ

Môi trường cài đặt và kiểm thử

Môi trường nhóm đã cài đặt và kiểm thử: Windows 10 Để kiểm tra và quản lí source code, cần có Unity Editor, launch qua Unity Hub, hướng dẫn cài đặt theo link sau: Unity - Manual: Installing Unity using the Hub

(unity3d.com) Để chạy thử game, tải game về và chạy game bằng unity: AFK-devabc/Magic-and-Tech (github.com)

Kết quả kiểm thử

Tính năng Mức độ hoàn thiện

Bảng 7.47 Kết quả kiểm thử

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

HÌNH ẢNH LIÊN QUAN

Hình 3.5. Game Hotline Miami Series - đồ án 2 xây dựng game 3d top down với unity
Hình 3.5. Game Hotline Miami Series (Trang 23)
Hình 3.6. Nuclear Throne - đồ án 2 xây dựng game 3d top down với unity
Hình 3.6. Nuclear Throne (Trang 24)
Hình 3.7. Helldivers - đồ án 2 xây dựng game 3d top down với unity
Hình 3.7. Helldivers (Trang 25)
Hình 5.8. Sơ đồ use case Player - đồ án 2 xây dựng game 3d top down với unity
Hình 5.8. Sơ đồ use case Player (Trang 30)
Hình 5.9. Sơ đồ use case Destroyar - đồ án 2 xây dựng game 3d top down với unity
Hình 5.9. Sơ đồ use case Destroyar (Trang 31)
Hình 5.10. Sơ đồ use case DroneRobot - đồ án 2 xây dựng game 3d top down với unity
Hình 5.10. Sơ đồ use case DroneRobot (Trang 32)
Hình 5.11. Sơ đồ use case Engineer - đồ án 2 xây dựng game 3d top down với unity
Hình 5.11. Sơ đồ use case Engineer (Trang 33)
Bảng 5.3. Đặc tả use case Play game - đồ án 2 xây dựng game 3d top down với unity
Bảng 5.3. Đặc tả use case Play game (Trang 39)
Bảng 5.20. Đặc tả use case IDLE - đồ án 2 xây dựng game 3d top down với unity
Bảng 5.20. Đặc tả use case IDLE (Trang 47)
Bảng 5.22. Đặc tả use case Walk - đồ án 2 xây dựng game 3d top down với unity
Bảng 5.22. Đặc tả use case Walk (Trang 48)
Hình 6.14. Sơ đồ Class - đồ án 2 xây dựng game 3d top down với unity
Hình 6.14. Sơ đồ Class (Trang 50)
Bảng 6.24. Danh sách class - đồ án 2 xây dựng game 3d top down với unity
Bảng 6.24. Danh sách class (Trang 51)
Bảng 6.26. Chi tiết Class PlayerHealth - đồ án 2 xây dựng game 3d top down với unity
Bảng 6.26. Chi tiết Class PlayerHealth (Trang 52)
Bảng 6.29. Chi tiết Class FlyEnemyMovement - đồ án 2 xây dựng game 3d top down với unity
Bảng 6.29. Chi tiết Class FlyEnemyMovement (Trang 53)
Bảng 6.42. Chuyển đổi state của Destroyar - đồ án 2 xây dựng game 3d top down với unity
Bảng 6.42. Chuyển đổi state của Destroyar (Trang 62)
Hình 6.22. Main menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.22. Main menu (Trang 67)
Hình 6.23.Gun Menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.23. Gun Menu (Trang 68)
Hình 6.24. Boom menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.24. Boom menu (Trang 69)
Hình 6.25. Item menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.25. Item menu (Trang 70)
Hình 6.27. Shop gun menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.27. Shop gun menu (Trang 71)
Hình 6.28. Shop item menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.28. Shop item menu (Trang 72)
Hình 6.29. Mission menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.29. Mission menu (Trang 73)
Hình 6.30. Setting menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.30. Setting menu (Trang 74)
Hình 6.31. Pause menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.31. Pause menu (Trang 75)
Hình 6.32. Game win menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.32. Game win menu (Trang 76)
Hình 6.33. Game over menu - đồ án 2 xây dựng game 3d top down với unity
Hình 6.33. Game over menu (Trang 77)
Hình 6.34, Message Box - đồ án 2 xây dựng game 3d top down với unity
Hình 6.34 Message Box (Trang 78)
Hình 6.35. HUD - đồ án 2 xây dựng game 3d top down với unity
Hình 6.35. HUD (Trang 78)
w