Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 72 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
72
Dung lượng
3,56 MB
Nội dung
ĐẠ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 ĐỒ ÁN XÂY DỰNG GAME 2D BẮN PHI THUYỀN VŨ TRỤ VỚI UNITY GV HƯỚNG DẪN: ĐINH NGUYỄN ANH DŨNG SV THỰC HIỆN: Dín Hiền Dũng - 20521205 Nguyễn Hồng Phúc - 20521768 TP HỒ CHÍ MINH, 2023 LỜI CẢM ƠN Lời em xin chân thành cảm ơn hướng dẫn tận tình thầy Đinh Nguyễn Anh Dũng - giảng viên hướng dẫn Đồ án hỗ trợ thông tin cần thiết giải đáp thắc mắc cho nhóm suốt q trình thực đề tài Đồng thời nhóm em muốn gửi lời cảm ơn đến anh chị khóa trên, đặc biệt anh chị khoa chia sẻ kinh nghiệm quý báu môn học kiến thức liên quan Vì kiến thức chúng em cịn hạn hẹp nên khơng thể tránh khỏi thiếu sót q trình thực đồ án Vì nhóm chúng em ln mong đợi nhận ý kiến đóng góp q báu từ phía giảng viên để qua rút kinh nghiệm, tự sửa chữa, hồn thiện thân tinh thần nghiêm túc, tự giác học hỏi Một lần nhóm chúng em xin chân thành cảm ơn thầy Thành phố Hồ Chí Minh, 05 tháng 07 năm 2023 Sinh viên DÍN HIỀN DŨNG NGUYỄN HỒNG PHÚC MỤC LỤC Chương MỞ ĐẦU 10 1.1 Tổng quan đề tài 10 1.2 Lý chọn đề tài 10 1.3 Mục tiêu 11 1.4 Phạm vi nghiên cứu 12 Chương CƠ SỞ LÝ THUYẾT 13 2.1 Unity 13 2.2 Aseprite .18 2.3 C# 19 2.4 Microsoft Visual Studio 20 Chương THIẾT KẾ VÀ PHÁT TRIỂN 22 3.1 Tổng quan 22 3.1.1 Tên game 22 3.1.2 Thể loại 22 3.2 Gameplay 23 3.2.1 Mục tiêu 23 3.2.2 Tiến trình 23 3.3 Thiết kế 23 3.3.1 Game manager 23 3.3.2 Background 24 3.3.3 Base Class 24 3.3.4 Ship 26 3.3.5 Ability 28 3.3.6 Spawner 29 3.3.7 Despawn .30 3.3.8 Bullet 33 3.3.9 Laser 35 3.3.10 Enemy 36 3.3.11 Item 39 3.3.12 WaveManager 40 3.3.13 LevelManager 41 3.3.14 User interface 42 Chương THIẾT KẾ CLASS 47 4.1 Class Diagram .47 4.1.1 Ship Class Diagram 47 4.1.2 Enemy Class Diagram 48 4.1.3 Bullet Class Diagram 49 4.1.4 Level and Wave Class Diagram 50 4.1.5 Item Class Diagram 51 4.1.6 Ability Class Diagram 52 4.2 Danh sách class 52 4.2.1 Danh sách class thuộc ShipPlayer 52 4.2.2 Danh sách class thuộc Enemy 53 4.2.3 Danh sách class thuộc Bullet 54 4.2.4 Danh sách class thuộc Level and Wave 55 4.2.5 Danh sách class thuộc Item 55 4.2.6 Danh sách class thuộc Ability 56 Chương USE CASE 57 5.1 Sơ đồ USE CASE 57 5.1.1 Player 57 5.1.2 Enemy 58 5.2 Danh sách tác nhân 58 5.3 Danh sách USE CASE 59 5.4 Mô tả chi tiết USE CASE 60 5.4.1 Trở hình 60 5.4.2 Chọn phi thuyền 60 5.4.3 Chọn chơi 60 5.4.4 Xem thông tin nhà phát triển 61 5.4.5 Di chuyển người chơi 61 5.4.6 Sử dụng kỹ 62 5.4.7 Gây sát thương 62 5.4.8 Nhận sát thương 63 5.4.9 Nhặt vật phẩm 64 5.4.10 Rơi vật phẩm 64 5.4.11 Di chuyển Enemy 65 Chương TỔNG KẾT 66 6.1 Kết đạt 66 6.2 Hạn chế 66 6.3 Hướng phát triển 66 DANH MỤC HÌNH Hình 1.1 Một số game shoot ’em up phổ biến Hình 2.1 Unity game engine Hình 2.2 Giao diện unity Hình 2.3 Sự khác biệt phép chiếu perspective phép chiếu orthographic Hình 2.4 Logo Aseprite 10 Hình 2.5 Hình 2.5 C# Logo 11 Hình 2.6 Microsoft Visual Studio Logo 12 Hình 3.1 Spacewar! Trên hệ máy PDP-1 14 Hình 3.2 Code di chuyển cho background 16 Hình 3.3 Lớp sở GameMonoBehaviour 17 Hình 3.4 Ảnh Ship_1 18 Hình 3.5 Cấu trúc ShipController 19 Hình 3.6 Cấu trúc chung GameObject Ship 19 Hình 3.7 Cấu trúc Ability 20 Hình 3.8 Cấu trúc Component Script Spawner 21 Hình 3.9 Lớp Abstract Despawn 23 Hình 3.10 Hàm CanDespawn triển khai lớp DespawnByDistance 24 Hình 3.11 Hàm CanDespawn triển khai lớp DespawnByTime 24 Hình 3.12 Bullet Shuriken 25 Hình 3.13 Cấu trúc lớp BullerController 26 Hình 3.14 Cấu trúc GameObject Bullet 26 Hình 3.15 Laser 27 Hình 3.16 Enemy 28 Hình 3.17 Cấu trúc lớp BullerController 29 Hình 3.18 Cấu trúc GameObject Bullet 29 Hình 3.19 Asteroid 30 Hình 3.20 Boss Battlecruiser 30 Hình 3.21 Item 31 Hình 3.22 Cấu trúc Script WaveManager 32 Hình 3.23 Từng vị trí Formation xác định 33 Hình 3.24 Cấu trúc LevelManager 34 Hình 3.25 Màn hình 36 Hình 3.26 Màn hình chọn phi thuyền 36 Hình 3.27 Màn hình thơng tin nhà phát 37 Hình 3.28 Màn hình chọn chơi 37 Hình 3.29 Màn hình GamePlay 38 Hình 3.30 Màn hình tạm dừng 38 Hình 3.31 Màn hình thua 39 Hình 3.32 Màn hình thắng chơi 39 Hình 4.1 Ship Class Diagram 40 Hình 4.2 Enemy Class Diagram 41 Hình 4.3 Bullet Class Diagram 42 Hình 4.4 Level and Wave Class Diagram 43 Hình 4.5 Item Class Diagram 44 Hình 4.6 Ability Class Diagram 45 Hình 5.1 Player Use Case Diagram 51 Hình 5.2 Enemy Use Case Diagram 52 DANH MỤC BẢNG Bảng 4.1 Bảng danh sách class thuộc ShipPlayer 46 Bảng 4.2 Bảng danh sách class thuộc Enemy 47 Bảng 4.3 Bảng danh sách class thuộc Bullet 48 Bảng 4.4 Bảng danh sách class thuộc Level and Wave 49 Bảng 4.5 Bảng danh sách class thuộc Item 49 Bảng 4.6 Bảng danh sách class thuộc Ability 50 Bảng 5.1 Bảng danh sách tác nhân 53 Bảng 5.2 Bảng danh sách USE CASE 54 Bảng 5.3 Bảng mô tả chi tiết use case trở hình 54 Bảng 5.4 Bảng mô tả chi tiết use case chọn phi thuyền 55 Bảng 5.5 Bảng mô tả chi tiết use case chọn chơi 56 Bảng 5.6 Bảng mô tả chi tiết use case xem thông tin nhà phát triển 56 Bảng 5.7 Bảng mô tả chi tiết use case di chuyển người chơi 57 Bảng 5.8 Bảng mô tả chi tiết use case sử dụng kỹ 57 Bảng 5.9 Bảng mô tả chi tiết use case gây sát thương 58 Bảng 5.10 Bảng mô tả chi tiết use case nhận sát thương 59 Bảng 5.11 Bảng mô tả chi tiết use case nhặt vật phẩm 60 Bảng 5.12 Bảng mô tả chi tiết use case rơi vật phẩm 60 Bảng 5.13 Bảng mô tả chi tiết use case di chuyển Enemy 61 TÓM TẮT ĐỒ ÁN Ngày nay, ngành cơng nghiệp trị chơi điện tử ngành lớn phát triển nhanh xung quanh, cung cấp việc làm cho nhiều người có thị trường lớn Từ năm 1950 nay, nhiều thể loại trò chơi điện tử khác tạo phù hợp với thị hiếu nhiều người khác Trong số đó, trị chơi Shoot 'em up chủ yếu bao gồm người chơi cố gắng hồn thành trị chơi tránh chướng ngại vật khác bao gồm kẻ thù, vật thể môi trường loại đạn khác Chúng em ln quan tâm đến việc tự phát triển thứ, điều dẫn chúng em cân nhắc thực dự án này: trò chơi điện tử 2D thuộc thể loại bắn súng, mà chúng em đặt tên Space Invader UT2D Đồ án tập trung vào việc phát triển trò chơi 2D bắn phi thuyền vũ trụ với giao diện người dùng hấp dẫn, hệ thống gameplay phong phú đồ họa đẹp mắt Trò chơi phát triển tảng Unity, công cụ phổ biến lĩnh vực phát triển trò chơi Bằng cách tạo Space Invader UT2D, chúng em học cách thiết kế trị chơi điện tử phát triển Q trình bao gồm việc sử dụng các công cụ thiết kế đồ họa Aseprite, công cụ Unity ngơn ngữ lập trình C# để kết hợp chúng thành trò chơi hoạt động trơn tru Sử dụng asset 2D miễn phí mạng số chúng em tự thiết kế Aseprite, chúng thiết kế nhiều đối tượng đồ họa cho trò chơi bao gồm phi thuyền khơng gian khác nhau, phi thuyền Boss phức tạp đa dạng vật thể vật phẩm loại đạn chơi Phần cuối khóa luận trình bày kết thực lên báo cáo, đưa kết luận hướng phát triển cho hệ thống tương lai Nội dung khóa luận trình bày chương: - Chương 01: MỞ ĐẦU Trình bày sơ thực trạng, nhu cầu thực tế Xác định mục tiêu phạm vi đề tài - Chương 02: CƠ SỞ LÝ THUYẾT Giới thiệu, trình bày kiến thức kỹ thuật, cơng nghệ mà nhóm sử dụng - Chương 03: THIẾT KẾ VÀ PHÁT TRIỂN Trình bày, phân tích thiết kế thành phần cốt lõi trò chơi - Chương 04: THIẾT KẾ CLASS Trình bày chi tiết mơ hình đối tượng sử dụng trị chơi thơng qua CLASS DIAGRAM - Chương 5: USE CASE Trình bày chi tiết nội dung thiết kế USE CASE trị mơi - Chương 6: TỔNG KẾT Những kết đạt sau kết thúc đồ án Những hạn chế, khó khăn q trình phát triển đồ án nêu hướng phát triển tương lai ItemDespawn Quản lý việc hủy Item Bảng 4.5 Bảng danh sách class thuộc Item 4.2.6 Danh sách class thuộc Ability Lớp Mô tả AbilityController Chứa liên kết trung gian Component liên quan đến Ability Ability Lớp sở quản lý việc bật/tắt kỹ AbilityProfileSO Chứa thông tin kỹ FireMissileAbility Kỹ bắn loạt đạn theo dõi HealAbility Kỹ hồi máu cho Ship SustentiveAbility Lớp sở quản lý kỹ có thời gian trì PowerUpAbility Kế thừa lớp SustentiveAbility, tăng tốc độ bắn sát thương cho Ship ShieldAbility Kế thừa lớp SustentiveAbility, chắn triệt tiêu đạn Bảng 4.6 Bảng danh sách class thuộc Ability Chương USE CASE 5.1 Sơ đồ USE CASE 5.1.1 Player Hình 5.1 Player Use Case Diagram 5.1.2 Enemy Hình 5.2 Enemy Use Case Diagram 5.2 Danh sách tác nhân STT Tác nhân Mô tả/Ghi Người chơi Phi thuyền người chơi điều khiển Được xem người chơi use case Enemy Kẻ địch hệ thống điều khiển Event System Hệ thống quản lý event chính, hoạt động dựa logic game người phát triển lập trình Bảng 5.1 Bảng danh sách tác nhân 5.3 Danh sách USE CASE STT Use case Mô tả/Chi Trở Màn hình Người chơi nhấn nút Chọn phi thuyền Người chơi ấn vào biểu tượng Màn hình tiến hành lựa chọn phi thuyền sử dụng chơi Chọn chơi Người chơi ấn vào biểu tượng Màn hình chính, tiến hành lựa chọn chơi bắt đầu chơi Xem thông tin nhà phát triển Người chơi ấn vào biểu tượng Màn hình để xem thơng tin lập trình viên Di chuyển Người chơi Người chơi trượt ngón tay hình điện thoại để điều khiển phi thuyền di chuyển theo ý muốn Sử dụng kỹ Người chơi ấn vào biểu tượng kỹ góc trái hình để kích hoạt kỹ tương ứng Gây sát thương Khi đạn người chơi enemy trúng đối phương trừ máu đối phương Nhận sát thương Khi thân người chơi enemy bị đối phương gây sát thương bị trừ máu Nhặt vật phẩm Khi di chuyển phi thuyền chạm vào vật phẩm tiến hành nhặt vật phẩm 10 Rơi vật phẩm Khi enemy bị tiêu diệt rơi vật phẩm 11 Di chuyển Enemy Do hệ thống quản lý Bảng 5.2 Bảng danh sách USE CASE 5.4 Mô tả chi tiết USE CASE 5.4.1 Trở hình Mơ tả - Bắt đầu game người chơi nhấn thoát Luồng kiện Luồng Người chơi nhấn nút Scene có xuất Luồng phụ Khơng u cầu đặt biệt Không Điều kiện trước Không Điều kiện sau Ứng dụng chuyển sang MenuScene Mở rộng Không Bảng 5.3 Bảng mô tả chi tiết use case trở hình 5.4.2 Chọn phi thuyền Mô tả - Người chơi vào hình chọn phi thuyền Luồng kiện Luồng Người chơi nhấn nút chọn danh sách phi thuyền MenuScene Luồng phụ Không Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng mở - Ứng dụng MenuScene Điều kiện sau - Ứng dụng chuyển sang SelectShipScene Mở rộng Không Bảng 5.4 Bảng mô tả chi tiết use case chọn phi thuyền 5.4.3 Chọn chơi Mô tả Luồng kiện - Người chơi vào hình chọn chơi Luồng Người chơi nhấn nút “Start” MenuScene Người chơi lựa chọn chơi Luồng phụ Không Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng mở - Ứng dụng MenuScene Điều kiện sau - Ứng dụng chuyển sang GamePlayScene tương ứng Mở rộng Không Bảng 5.5 Bảng mô tả chi tiết use case chọn chơi 5.4.4 Xem thông tin nhà phát triển Mô tả - Người chơi vào hình xem thơng tin nhà phát triển Luồng kiện Luồng Người chơi nhấn nút xem thông tin nhà phát triển MenuScene Luồng phụ Không Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng mở - Ứng dụng MenuScene Điều kiện sau - Ứng dụng chuyển sang CreditsScene Mở rộng Không Bảng 5.6 Bảng mô tả chi tiết use case xem thông tin nhà phát triển 5.4.5 Di chuyển người chơi Mô tả Luồng kiện - Người chơi di chuyển phi thuyền Luồng Người chơi trượt hình Phi thuyền bắt đầu di chuyển theo hướng định Luồng phụ Không Yêu cầu đặt biệt Không thể di chuyển khỏi hình Điều kiện trước - Ứng dụng mở - Ứng dụng GamePlayScene Điều kiện sau - Vị trí phi thuyền thay đổi Mở rộng Khơng Bảng 5.7 Bảng mô tả chi tiết use case di chuyển người chơi 5.4.6 Sử dụng kỹ Mô tả - Người chơi sử dụng kỹ Luồng kiện Luồng Người chơi ấn vào nút kỹ Kỹ tương ứng thi triển Luồng phụ Yêu cầu đặt biệt Không Kỹ không thời gian hồi chiêu Điều kiện trước - Ứng dụng GamePlayScene Điều kiện sau - Kỹ tự động thi triển Mở rộng Nếu sử dụng kỹ gây sát thương: USE CASE ‘Gây sát thương’ Bảng 5.8 Bảng mô tả chi tiết use case sử dụng kỹ 5.4.7 Gây sát thương Mô tả - Người chơi enemy bắn đạn vào đối phương Luồng kiện Luồng Đạn bắn tự động từ phi thuyền lẫn enemy Luồng phụ Không Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng mở - Ứng dụng GamePlayScene Điều kiện sau - Đạn biến bay khỏi hình mà chưa chạm vào vật cản Mở rộng - Nếu đạn chạm vào enemy phi thuyền chạm phải đạn enemy: Use Case ‘Nhận sát thương’ Bảng 5.9 Bảng mô tả chi tiết use case gây sát thương 5.4.8 Nhận sát thương Mô tả - Người chơi enemy bị trúng phải sát thương đối phương Luồng kiện Luồng Enemy Người chơi bị trúng phải sát thương đối phương Chỉ số HP đối tượng nhận sát thương giảm lượng tương ứng, sau giảm HP > Luồng phụ Enemy người chơi bị trúng phải đạn đối phương Chỉ số HP đối tượng nhận sát thương giảm lượng tương ứng, sau giảm HP = Nếu đối tượng nhận sát thương sau HP = Enemy Enemy bị hủy hình chơi Nếu đối tượng nhận sát thương sau HP = Người chơi chơi kết thúc, chuyển qua GameOverScene Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng GamePlayScene - Các đối tượng người chơi Enemy sống - Các đối tượng người chơi Enemy bị công trúng Điều kiện sau - Chỉ số HP đối tượng nhận sát thương giảm lượng tương ứng Mở rộng Enemy chết có tỷ lệ xảy Use Case ‘Rơi vật phẩm’ Bảng 5.10 Bảng mô tả chi tiết use case nhận sát thương 5.4.9 Nhặt vật phẩm Mô tả - Người chơi di chuyển phi thuyền chạm vào vật phẩm để nhặt Luồng kiện Luồng Vật phẩm sau xuất từ từ di chuyển xuống Người chơi di chuyển phi thuyền chạm vào vật phẩm để nhặt trước biến Luồng phụ Không Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng GamePlayScene Điều kiện sau - Vật phẩm tự động kích hoạt Mở rộng Một số vật phẩm kích hoạt : USE CASE ‘Sử dụng kỹ năng’ Bảng 5.11 Bảng mô tả chi tiết use case nhặt vật phẩm 5.4.10.Rơi vật phẩm Mô tả - Enemy rơi vật phẩm chết Luồng kiện Luồng Enemy chết Enemy rơi vật phẩm Vật phẩm rơi di chuyển xuống Luồng phụ Không Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng GamePlayScene - Enemy bị nhận sát thương bị chết Điều kiện sau - Vật phẩm rơi từ chỗ Enemy bị chết Mở rộng Nếu người chơi nhặt vật phẩm bị rơi: USE CASE ‘Nhặt vật phẩm’ Bảng 5.12 Bảng mô tả chi tiết use case rơi vật phẩm 5.4.11.Di chuyển Enemy Mô tả - Enemy di chuyển liên tục Luồng kiện Luồng Enemy xuất Wave Enemy di chuyển lên xuống liên tục Enemy di chuyển theo đội hình liên tục Luồng phụ Khơng Yêu cầu đặt biệt Không Điều kiện trước - Ứng dụng GamePlayScene - Enemy phải sống Điều kiện sau - Enemy thay đổi vị trí Mở rộng Nếu sử dụng kỹ gây sát thương: USE CASE ‘Gây sát thương’ Bảng 5.13 Bảng mô tả chi tiết use case di chuyển Enemy Chương TỔNG KẾT 6.1 - Kết đạt Thành công xây dựng trò chơi 2D bắn phi thuyền vũ trụ sử dụng tảng Unity - Thiết kế giao diện người dùng thân thiện - Triển khai hệ thống gameplay phong phú với đa dạng loại đạn, loại kẻ địch chơi - Học hỏi nhiều kiến thức công nghệ UnityEngine kỹ thuật lập trình hướng đối tượng - Tìm hiểu áp dụng số mẫu kiến trúc, triển khai lúc làm dự án 6.2 Hạn chế - Chưa có nhiều nét riêng biệt so với sản phẩm khác thị trường - Do đồ án có giới hạn thời gian thực hiện, chúng em phát triển hồn thiện tất tính yếu tố trò chơi theo mong muốn - Chúng em chưa có nhiều kiến thức kinh nghiệm việc xây dựng trò chơi, điều gây ảnh hưởng đến chất lượng hiệu suất trò chơi - Vì vấn đề kỹ năng, nên đồ họa trị chơi khơng thể đẹp mắt chun nghiệp 6.3 Hướng phát triển Dự án nhiều tiềm phát triển tương lai Dưới số hướng nghiên cứu mà thực hiện: - Mở rộng nội dung cấp độ: Xây dựng thêm cấp độ nhiệm vụ mới, đồng thời bổ sung thêm vật phẩm kẻ địch để tăng tính thử thách đa dạng hóa trị chơi - Cải thiện đồ họa hiệu ứng âm thanh: Nâng cao chất lượng đồ họa hiệu ứng âm để tạo trải nghiệm trực quan tăng cường hứng thú người chơi - Tích hợp hệ thống lưu trữ xếp hạng: Xây dựng hệ thống lưu trữ điểm số xếp hạng để người chơi so sánh thành tích với người chơi khác Mong muốn nhóm tương lai đưa trị chơi lên cửa hàng ứng dụng CHPlay TÀI LIỆU THAM KHẢO Các Công nghệ tiêu biểu sử dụng trình phát triển [1] UnityEngine: https://unity.com/ [2] Aseprite: https://www.aseprite.org/ [3] Visual Studio: https://visualstudio.microsoft.com/ Tài liệu hướng dẫn ngơn ngữ lập trình [4] C# Doc: https://learn.microsoft.com/en-us/dotnet/csharp/ [5] UnityDoc: https://docs.unity3d.com/Manual/index.html Tài liệu code mẫu tham khảo trình xây dựng hệ thống logic trò chơi [6] UnityForum: https://forum.unity.com/ [7] SaiChannel: https://www.youtube.com/@SaiGame/featured [8] stackoverflow: https://stackoverflow.com/