Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 56 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
56
Dung lượng
1,69 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN ĐỀ TÀI: DUNGEON ESCAPE GAME Giảng viên: Trần Anh Dũng Sinh viên thực hiện: Trần Lộc Tài – 19522157 Lê Trần Thanh Duy – 19520062 Thành phố Hồ Chí Minh, năm 2022 Báo cáo đồ án Mục lục LỜI CẢM ƠN ĐỀ CƯƠNG CHI TIẾT NỘI DUNG Chương I: GIỚI THIỆU CHUNG Tổng quan đề tài Lý chọn đề tài Đối tượng sử dụng Phạm vi nghiên cứu Chương II: CƠ SỞ LÝ THUYẾT Unity Engine C# 10 Microsoft Visual Studio 11 GitHub .12 Chương III: TỔNG QUAN ỨNG DỤNG 13 Giới thiệu tính 13 Giới thiệu GameObject 13 2.1 Trong GameScene 13 2.1.1 MainCamera: 13 2.1.2 Grid: 13 2.1.3 Player: .14 2.1.4 Moss_Giant_Enemy: 14 2.1.5 Spider_Enemy: 14 2.1.6 Skeleton_Enemy: 14 2.1.7 Spike: 14 2.1.8 Gate: 14 2.1.9 EventSystem: 14 2.2 Trong MenuScene 15 2.2.1 Main Camera: 15 2.2.2 Canvas: .15 2.2.3 EventSystem: 15 Chương IV: ĐẶC TẢ USE CASE 15 Sơ đồ Use Case 15 Báo cáo đồ án 1.1 Player 15 1.2 Moss Giant 17 1.3 Spider 18 1.4 Skeleton 19 Danh sách tác nhân 20 Danh sách Use Case 20 Mô tả chi tiết Use Case 22 4.1 Start Game 22 4.2 Quit Game 23 4.3 Người chơi di chuyển 24 4.4 Vung kiếm 25 4.5 Người chơi nhận sát thương 26 4.6 Chạm Spike 27 4.7 Trở lại menu 28 4.8 Moss Giant – Idle 29 4.9 Moss Giant – Tấn công 30 4.10 Skeleton – Idle 31 4.11 Skeleton – Tấn công .32 4.12 Spider – Tấn công liên tục 33 4.13 Enemy nhận sát thương 34 4.14 Enemy chết 35 4.15 Chạm cổng 36 Chương V: PHÂN TÍCH THIẾT KẾ 37 Phân tích class 37 1.1 Class diagram 37 1.2 Danh sách class 38 1.3 Quan hệ 39 1.4 Chi tiết class .40 State Diagram 50 1.1 Player State Diagram 50 1.2 Moss Giant State Diagram 51 1.3 Skeleton State Diagram 52 1.4 Spider State Diagram 53 Báo cáo đồ án Chương VI: CÀI ĐẶT VÀ KIỂM THỬ 54 Môi trường cài đặt kiểm thử 54 Kết kiểm thử 54 Chương VII: KẾT LUẬN 55 Tổng kết 55 Kết đạt 55 Khó khăn hạn chế 55 Hướng phát triển 55 Báo cáo đồ án LỜI CẢM ƠN Sau trình học tập rèn luyện khoa Công nghệ phần mềm trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM chúng em trang bị kiến thức bản, kỹ thực tế để lần đầu thực Đồ án Để hồn thành Đồ án này, chúng em xin gửi lời cảm ơn chân thành đến: Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM tạo điều kiện sở vật chất với hệ thống thư viện đại, đa dạng loại sách, tài liệu thuận lợi cho việc tìm kiếm, nghiên cứu thơng tin Chúng em xin gửi lời cảm ơn chân thành đến thầy Trần Anh Dũng tận tình giúp đỡ, định hướng cách tư cách làm việc khoa học Đó góp ý q báu khơng q trình thực luận văn mà hành trang tiếp bước cho chúng em trình học tập lập nghiệp sau Trong trình làm Đồ án chúng em không tránh khỏi sai sót, chúng em kính mong nhận dẫn góp ý q thầy để hồn thiện phát triển đồ án môn học Đồ án Chúng em xin chân thành cảm ơn Xin chúc điều tốt đẹp đồng hành người Báo cáo đồ án ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: Game 2D Dungeon Escape Cán hướng dẫn: ThS Trần Anh Dũng Thời gian thực hiện: Từ ngày 05/03/2022 đến ngày 11/06/2022 Sinh viên thực hiện: Lê Trần Thanh Duy – 19520062 Trần Lộc Tài – 19522157 Lý chọn đề tài: Hiện video game hình thức giải trí phổ biến giới trẻ thời gian rảnh Do ngày gần sở hữu máy tính cá nhân hệ thống phân phối game phổ biến nên game nhóm phát triển nhỏ dễ đến tay người chơi Dựa theo nhu cầu giải trí người, nhóm em định chọn đề tài phát triển game 2D nhỏ Nội dung sơ lược: Người chơi điều khiển nhân vật vượt qua chơi kết hợp giải đố tiêu diệt quái, người chơi chiến thắng thoát khỏi hầm ngục (dungeon) Đối tượng sử dụng: Tất người chơi có độ tuổi từ tuổi trở lên Báo cáo đồ án Phương pháp thực hiện: Phương pháp làm việc: Làm việc online offline nhóm thành viên hướng dẫn giảng viên hướng dẫn Phương pháp nghiên cứu: Nghiên cứu tài liệu công nghệ liên quan Phương pháp công nghệ: Tìm hiểu xây dựng game 2D Unity Engine, sử dụng ngơn ngữ C# để lập trình Tìm hiểu xây dựng mơi trường game 2D Tilemap Quản lý source code Github Nền tảng công nghệ: Unity Game Engine Tilemap 2D Visual Studio IDE Kết mong đợi: Các chế cốt lõi hoạt động ổn định Game có giao diện, đồ hoạ đẹp mắt Thiết kế nội dung chơi logic, hấp dẫn Các chế điều khiển mượt mà, dễ chịu Hướng phát triển đề tài: Thêm chơi nội dung cho game Tính chuyển đổi ngơn ngữ Phát triển tảng ứng dụng di động Thêm nhạc âm hiệu ứng Kế hoạch làm việc: Thời gian thực từ ngày 05/03/2022 đến ngày kết thúc môn Đồ án – 11/06/2022 Chia thành giai đoạn cụ thể: Giai đoạn 1: Xây dựng chế cốt lõi cho game Báo cáo đồ án Thời gian: 05/03/2022 - 08/05/2022 Bao gồm công việc dự kiến: Khởi tạo đồ án import asset từ Unity Store Xây dựng môi trường game Xây dựng nhân vật người chơi điều khiển Xây dựng kẻ địch AI cho địch Xây dựng chế công cho nhân vật kẻ địch Giai đoạn 2: Hoàn thiện chế giai đoạn 1, xây dựng hệ thống phụ, thiết kế giao diện viết báo cáo Thời gian: 09/05/2022 – 11/06/2022 Bao gồm công việc dự kiến: Xây dựng hệ thống loot Thiết kế giao diện main menu Kiểm thử ứng dụng game Triển khai ứng dụng Viết báo cáo Phân công công việc: Công việc chung: Khởi tạo đồ án import asset từ Unity Store Kiểm thử ứng dụng game Triển khai ứng dụng Viết báo cáo Công việc riêng: Thành viên Trần Lộc Tài Công việc Xây dựng nhân vật người chơi điều khiển Xây dựng kẻ địch AI cho địch Xây dựng hệ thống công cho nhân vật người chơi điều khiển Xây dựng môi trường game Lê Trần Thanh Duy Xây dựng hệ thống loot Thiết kế giao diện main menu Báo cáo đồ án NỘI DUNG Chương I: GIỚI THIỆU CHUNG Tổng quan đề tài Tên đề tài: Dungeon Escape Game Nền tảng công nghệ: Unity Engine Môi trường phát triển: Desktop - Windows 10 Lý chọn đề tài Hiện video game hình thức giải trí phổ biến giới trẻ thời gian rảnh Do ngày gần sở hữu máy tính cá nhân hệ thống phân phối game phổ biến nên game nhóm phát triển nhỏ dễ đến tay người chơi Dựa theo nhu cầu giải trí người, nhóm định chọn đề tài phát triển game 2D nhỏ Đối tượng sử dụng Tất người chơi có độ tuổi từ 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 chức năng: Game 2D đơn chơi xuyên suốt Một nhân vật người chơi điều khiển với hệ thống di chuyển - trái phải nhảy – khả chiến đấu – nhấn chuột để vung kiếm Nhiều enemy NPC (quái vật) tự di chuyển hành động theo AI cài đặt sẵn, phản ứng theo hành vi người chơi Màn chơi thiết kế thủ công, sử dụng asset có sẵn, với độ rộng thấp Một menu mở ứng dụng game lên kết thúc game với nút Báo cáo đồ án Chương II: CƠ SỞ LÝ THUYẾT Unity Engine Hình II.1: Unity Logo Unity game engine đa tảng phát triển Unity Technologies, lần công bố phát hành vào tháng năm 2005 Apple Worldwide Developers Conference dạng game engine cho Mac OSX Unity Engine mở rộng để hỗ trợ loại tảng desktop, mobile, console Virtual Reality Nó đặc biệt phổ biến IOS, Android coi dễ sử dụng cho người bắt đầu phát triển game nhà phát triển indie Cơng cụ sử dụng để tạo game 3D 2D, mô tương tác trải nghiệm khác Engine được chấp nhận ngành bên ngồi trị chơi điện tử, chẳng hạn phim, ô tô, kiến trúc, kỹ thuật xây dựng Unity cung cấp cho người dùng khả tạo game trải nghiệm 2D 3D, đồng thời engine cung cấp scripting API C# cách sử dụng Mono, cho trình soạn thảo Unity editor dạng plugin thân game, chức kéo thả Trước C# trở thành ngơn ngữ lập trình sử dụng engine, trước engine hỗ trợ Boo, bị xóa phát hành Unity triển khai dựa Boo JavaScript gọi UnityScript, không dùng vào tháng năm 2017, sau phát hành Unity 2017.1, để sử dụng C# Trong game 2D, Unity cho phép import sprite 2D world renderer tiên tiến Đối với game 3D, Unity cho phép đặc tả kỹ thuật texture compression, mipmap cài đặt độ phân giải cho tảng mà engine hỗ trợ 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 full-screen post-processing effects Báo cáo đồ án Player No Thuộc tính/Phương Thức _rigid Quyền truy cập Kiểu liệu public Rigidbody2D Mơ tả Thuộc tính Unity cung cấp để thay đổi vận tốc, trọng lực đối tượng _playerAnim private Một instance lớp PlayerAnimation PlayerAnimation, dùng để quản lý đồ họa đối tượng _playerSprite private SpriteRenderer Thuộc tính Unity cung cấp SpriteRenderer để render đường kiếm nhân vật Thuộc tính Unity cung cấp để render đối tượng _swordArcSprite private jumpForce private float Lực nhảy người chơi _resetJump private bool Kiểm tra người chơi nhảy hay chưa _speed private float _grounded private bool Tốc độ người chơi Kiểm tra người chơi có chạm đất hay không Kiểm tra người chơi chết hay chưa isDeath private bool 10 isHit private bool Kiểm tra người chơi bị đánh trúng hay chưa 11 Health public int Máu người chơi, thực hóa từ interface IDamageble 12 Start() private void Phương thức thực game bắt đầu 13 Update() private void Phương thức cập nhật cho nhân vật người chơi (được cập nhật 41 Báo cáo đồ án liên tục frame) 14 Movement() private void Phương thức di chuyển nhân vật 15 IsGrounded() private bool Phương thức kiểm tra xem người chơi có mặt đất hay ko void Phương thức lật ngược hình ảnh nhân vật bên trái phải theo chiều di chuyển 16 Flip() private 17 ResetJumpRoutine() private IEnumerator Phương thức cho phép nhân vật nhảy chạm đất (khi nhân vật khơng chức nhảy bị vơ hiệu) 18 SetDeathState() private IEnumerator Phương thức chuyển trạng thái nhân vật sang chết sau khoảng thời gian 19 SetHitState() private IEnumerator Phương thức chuyển trạng thái nhân vật sang bị đánh trúng sau khoảng thời gian void Phương thức tính sát thương, xử lí nhân vật bị đánh trúng, thực hóa từ interface IDamageble void Phương thức xử lí nhân vật chạm vào Spikes, thực hóa từ interface IDamageble 20 21 Damage() Spike() public public 42 Báo cáo đồ án PlayerAnimation No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu Mơ tả _anim private Animator Thuộc tính Unity cung cấp dùng để quản lý đồ hoạ đối tượng _swordAnimation private Animator Thuộc tính dùng để quản lý đồ họa đối tượng Start() private void Phương thức thực game bắt đầu Move() public void Phương thức bắt đầu animation di chuyển nhân vật quản lí logic vận tốc Jump() public void Phương thức bắt đầu animation nhảy nhân vật Swing() public void Phương thức bắt đầu animation vung kiếm nhân vật, đồng thời bắt đầu animation swordAnimation Death() public void Phương thức bắt đầu animation chết nhân vật Hit() public void Phương thức bắt đầu animation bị đánh trúng nhân vật 43 Báo cáo đồ án Attack No Thuộc tính/Phương Thức _canDamage OnTriggerEnter2D() ResetDamage() Quyền truy cập Kiểu liệu bool Thuộc tính dùng để quản lý đối tượng nhận sát thương hay khơng void Phương thức thực đối tượng thực trạng thái cơng: kiểm tra hitbox thuộc tính _canDamage thực ResetDamage() IEnumerator Phương thức thực OnTriggerEnter2D() thực Bắt đầu thời gian cho đối tượng 0.5 giây private private private Mơ tả MainMenu No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu Mô tả StartButton public void Phương thức thực người dùng nút ‘Start’ – Chuyển ứng dụng sang GameScene QuitButton public void Phương thức thực người dùng nút ‘Quit’ – tắt ứng dụng 44 Báo cáo đồ án AcidEffect No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu Start() private void Phương thức thực game bắt đầu Mô tả Update() private void Phương thức cập nhật cho Acid prefab (được cập nhật liên tục frame) OnTriggerEnter2D() private void Phương thức thực Acid prefab va chạm nhân vật Moss_Giant No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu Health public int Init() Movement() Damage() OnTriggerEnter2D() Mô tả Máu quái, thực hóa từ interface IDamageble public Phương thức khởi tạo quái override void game bắt đầu, override lại từ lớp Enemy public Phương thức di chuyển override void quái, override lại từ lớp Enemy public void Phương thức tính sát thương, xử lí quái bị đánh trúng, thực hóa từ interface IDamageble void Phương thức xử lí va chạm với người chơi (gây sát thương cho người chơi, đổi trạng thái) private 45 Báo cáo đồ án Enemy No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu health protected int speed protected float pointA protected Transform Lưu vị trí quái game bắt đầu pointb protected Transform Lưu vị trí mà quái di chuyển tới currentTarget protected Vector3 Hướng quái (là pointA pointB) Animator Thuộc tính Unity cung cấp dùng để điều khiển trạng thái quái Mô tả Máu quái Tốc độ di chuyển quái anim protected sprite Thuộc tính Unity cung cấp protected SpriteRenderer dùng để điều khiển render hình ảnh quái Kiểm tra quái chết hay chưa isDeath protected bool isHit protected bool Kiểm tra quái bị đánh trúng hay chưa 11 player protected Player Một instance lớp Player, dùng để truy cập thuộc tính , thay đổi trạng thái người chơi 12 Start() private void Phương thức thực game bắt đầu 13 Update() public virtual void Phương thức cập nhật cho quái (được cập nhật liên tục frame), lớp override lại 14 Movement() public virtual void Phương thức di chuyển quái, lớp override lại 46 Báo cáo đồ án 15 Init() public virtual void Phương thức khởi tạo quái game bắt đầu, lớp override lại Skeleton No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu Health public int Init() Movement() Damage() OnTriggerEnter2D() Mô tả Máu quái, thực hóa từ interface IDamageble Phương thức khởi tạo quái override void game bắt đầu, override lại từ lớp Enemy public public public private 47 override void Phương thức di chuyển quái, override lại từ lớp Enemy void Phương thức tính sát thương, xử lí qi bị đánh trúng, thực hóa từ interface IDamageble void Phương thức xử lí va chạm với người chơi (gây sát thương cho người chơi, đổi trạng thái) Báo cáo đồ án Spider No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu Health public int Máu quái, thực hóa từ interface IDamageble public GameObject Một instance lớp acidEffect, dùng để tạo acid nhện công public Phương thức khởi tạo quái override void game bắt đầu, override lại từ lớp Enemy acidEffectPrefab Init() Movement() public Mô tả override void Phương thức di chuyển quái, override lại từ lớp Enemy Damage() public void Phương thức tính sát thương, xử lí quái bị đánh trúng, thực hóa từ interface IDamageble Attack() public void Phương thức công nhện void Phương thức xử lí va chạm với người chơi (gây sát thương cho người chơi, đổi trạng thái) OnTriggerEnter2D() private 48 Báo cáo đồ án SpiderAnimationEvent No Thuộc tính/Phương Thức Quyền truy cập Kiểu liệu Mơ tả _spider public Spider Một instance lớp Spider, dùng để truy cập vào lớp Spider để xử lí kiện Start() private void Phương thức thực game bắt đầu void Phương thức xử lí nhện công (tạo acid từ lớp AcidEffect) Fire() public 49 Báo cáo đồ án State Diagram 1.1 Player State Diagram Alias s0 s1 s2 s3 s4 s5 s6 s7 State Initial state Idle state Run state Jump state Swing state Hit state Dead state Final state Alias e1 e2 e3 e4 e5 e6 Action ToIdle ToMove ToJump Attack isHit isDeath No 10 11 12 13 14 15 State s0 s1 s1 s1 s1 s2 s2 s2 s3 s3 s3 s4 s4 s5 s5 s6 50 Action/Event e2 e4 e5 e6 e1 e3 e6 e1 e2 e6 e1 e6 e1 e6 Result state s1 s2 s4 s5 s6 s1 s3 s6 s1 s2 s6 s1 s6 s1 s6 s7 Báo cáo đồ án 1.2 Moss Giant State Diagram Alias s0 s1 s2 s3 s4 s5 s6 State Initial state Idle state Walk state Attack state Hit state Dead state Final state Alias e1 e2 e3 e4 e5 Action ToIdle ToMove Attack isHit isDeath No 10 State s0 s1 s1 s1 s2 s2 s3 s3 s4 s4 s5 51 Action/Event e2 e3 e5 e1 e5 e1 e5 e1 e5 Result state s2 s2 s3 s5 s1 s5 s1 s5 s1 s5 s6 Báo cáo đồ án 1.3 Skeleton State Diagram Alias s0 s1 s2 s3 s4 s5 s6 State Initial state Idle state Walk state Attack state Hit state Dead state Final state Alias e1 e2 e3 e4 e5 Action ToIdle ToMove Attack isHit isDeath No 10 State s0 s1 s1 s1 s2 s2 s3 s3 s4 s4 s5 52 Action/Event e2 e3 e5 e1 e5 e1 e5 e1 e5 Result state s2 s2 s3 s5 s1 s5 s1 s5 s1 s5 s6 Báo cáo đồ án 1.4 Spider State Diagram Alias s0 s1 s2 s3 s4 s5 State Initial state Idle state Attack state Hit state Dead state Final state Alias e1 e2 e3 e4 Action ToIdle Attack isHit isDeath No State s0 s1 s1 s2 s2 s3 s3 s4 53 Action/Event e2 e4 e1 e4 e1 e4 Result state s1 s2 s4 s1 s4 s1 s4 s5 Báo cáo đồ án Chương VI: CÀI ĐẶT VÀ KIỂM THỬ Môi trường cài đặt kiểm thử Mơi trường nhóm cài đặt kiểm thử: Windows 10 Để kiểm tra 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 file DungeonEscape.zip qua link GitHub đồ án: https://github.com/Moonbanner/Dungeon_Escape_Game Kết kiểm thử STT Tính Độ hoàn thiện Nhân vật di chuyển 100% AI hành vi Enemy 100% Hệ thống combat 90% Thiết kế chơi 80% Giao diện menu 100% 54 Báo cáo đồ án Chương VII: KẾT LUẬN Tổng kết Đạt chung khoảng 85% kế hoạch đề ra, với sản phẩm game chơi được, chưa đạt quy mô mong muốn Phân đoạn kiểm thử hồn thành kĩ, với đồ án khơng có lỗi rõ rệt Kết đạt Game có animation mượt mà, đẹp mắt Điều khiển người chơi thoải mái, khơng lứng cứng, cầu kì Tính không nhiều chăm chút kĩ lưỡng Thơng qua q trình làm đồ án, nhóm có thêm nhiều kiến thức Unity Engine, cách thức Engine vận hành sử dụng giao diện Unity Editor, sửa lỗi có liên quan gặp vấn đề Visual Studio IDE lúc viết script cho đồ án Khó khăn hạn chế Các tính chưa đạt theo kế hoạch chủ yếu nằm phần chơi có độ dài thấp số lượng kẻ địch không phong phú Một số hiệu ứng công người chơi enemy đôi lúc thơ sơ, thiếu tự nhiên nhóm chưa thơng thạo animator Game chưa thực có UI rõ ràng Game khơng có âm Hướng phát triển Thêm UI Thêm hệ thống quản lí âm Thêm nhiều loại enemy Thiết kế thêm nhiều chơi chế chuyển màn, kết thúc Thêm chế tính điểm số/phần thưởng Thêm hệ thống loot/inventory/shop/equipment 55 ... trình làm Đồ án chúng em không tránh khỏi sai sót, chúng em kính mong nhận dẫn góp ý q thầy để hồn thiện phát triển đồ án mơn học Đồ án Chúng em xin chân thành cảm ơn Xin chúc điều tốt đẹp đồng hành... thúc môn Đồ án – 11/06/2022 Chia thành giai đoạn cụ thể: Giai đoạn 1: Xây dựng chế cốt lõi cho game Báo cáo đồ án Thời gian: 05/03/2022 - 08/05/2022 Bao gồm công việc dự kiến: Khởi tạo đồ án import... TẢ USE CASE Sơ đồ Use Case 1.1 Player 15 Báo cáo đồ án Hình IV.1: Player Use Case Diagram 16 Báo cáo đồ án 1.2 Moss Giant Hình IV.2: Moss Giant Use Case Diagram 17 Báo cáo đồ án 1.3 Spider Hình