Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
8,51 MB
Nội dung
TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA PHÁT TRIỂN NÔNG THÔN BÁO CÁO NIÊN LUẬN NGÀNH ĐỀ TÀI: PHÁT TRIỂN GAME 3D BẮN SÚNG FPS FINAL BATTLEGROUND TRÊN NỀN TẢNG UNITY Giảng viên hướng dẫn: Sinh viên thực hiện: Lê Công Lý ThS Sử Kim Anh Mã số sinh viên: B1809605 Mã lớp: HG18V7A1 Khóa: 44 Cần Thơ, tháng năm 2021 TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA PHÁT TRIỂN NÔNG THÔN BÁO CÁO NIÊN LUẬN NGÀNH ĐỀ TÀI: PHÁT TRIỂN GAME 3D BẮN SÚNG FPS FINAL BATTLEGROUND TRÊN NỀN TẢNG UNITY Giảng viên hướng dẫn: Sinh viên thực hiện: Lê Công Lý ThS Sử Kim Anh Mã số sinh viên: B1809605 Mã lớp: HG18V7A1 Khóa: 44 Cần Thơ, tháng năm 2021 LỜI CẢM ƠN Lời em xin chân thành cảm ơn đến cô Sử Kim Anh giúp em nhiều trình thực niên luận ngành Được phân công hướng dẫn cô Sử Kim Anh em thực đề tài “Phát triển game 3D bắn súng FPS Final Battleground tảng Unity” Trong trình thực hiện, giúp đỡ tận tình em thu nhiều kiến thức quý báu giúp em nhiều trình học làm việc tương lai Do hạn chế kiến thức kinh nghiệm lập trình nên đề tài khơng tránh khỏi số sai sót Em mong nhận góp ý để đề tài hồn chỉnh hơn, đồng thời tạo tiền đề tốt cho nghiên cứu sau Một lần em xin chân thành cảm ơn giúp đỡ q trình thực để em hoàn thành tốt niên luận ngành Cần Thơ, ngày tháng năm Sinh viên thực Lê Công Lý NHẬN XÉT Cần Thơ, ngày tháng năm Giảng viên hướng dẫn ThS Sử Kim Anh MỤC LỤC Trang DANH MỤC BẢNG Trang DANH MỤC HÌNH Trang CHƯƠNG TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ NGHIÊN CỨU 1.1.1 Hiện trạng Xã hội ngày phát triển, nhu cầu giải trí người ngày tăng cao Cùng với phát triển công nghệ thông tin, điện tử, thiết bị chơi game ngày phổ biến Trong năm gần ngành công nghệ game lên đem lại doanh thu khổng lồ Có thể nói game khơng phương tiện giải trí bản, cịn lĩnh vực đáng quan tâm theo đuổi Thiết kế game cơng việc khơng dễ dàng địi hỏi nhiều thời gian công sức, nhiên q ta biến dịng code khơ khan thành trải nghiệm thú vị cho người chơi, đồng thời học hỏi kiến thức tảng Unity Framework củng cố ngôn ngữ C# Sản phẩm công nghệ ngày chịu đánh giá khắt khe từ phía người dùng, đặc biệt sản phẩm Game nhận nhiều đánh giá từ phía Game thủ, người chơi bình thường Ngành cơng nghiệp Game nói bùng nổ, với tốc độ phát triển đến chóng mặt, nhiều Game hay hấp dẫn đời thời gian qua Phía sau Game phát triển tiếng có Game Engine Game Engine công cụ hỗ trợ, Middleware giúp người phát triển viết Game cách nhanh chóng đơn giản, đồng thời cung cấp khả tái sử dụng tài nguyên mã nguồn cao phát triển nhiều Game từ Game Engine Từ xu hướng phát triển bất cập trên, em định tìm hiểu thực đề tài: “Phát triển game 3D bắn súng FPS Final Battleground tảng Unity” Chuẩn bị kiến thức kỹ cho định hướng nghề nghiệp (phát triển Game) sau này, góp phần vào phát triển ngành công nghiệp Game nước nhà 1.1.2 Mục tiêu Xây dựng phát triển game Final Battleground nhằm mục đích giúp có trải nghiệm game thú vị với góc nhìn thứ Nghiên cứu lĩnh vực lập trình game, lĩnh vực dần phát triển xã hội Nghiên cứu công nghệ Unity Engine giúp tối ưu cách tốt hiệu lập trình game 1.2 PHẠM VI CỦA ĐỀ TÀI 1.2.1 Về sở lý thuyết − Vận dụng lý thuyết lập trình học để xây dựng đề tài − Nắm vững phương pháp tổ chức, phân tích thiết kế game − Có kiến thức lập trình game − Nghiên cứu, tìm hiểu quy trình xây dựng game ứng dụng vào thực tiễn − Sử dụng ngơn ngữ lập trình C# − Nắm vững kiến trúc xây dựng game tảng Unity 1.2.2 Về kỹ thuật − − − − − Xây dựng giao diện thân thiện Tốc độ truy xuất nhanh Game dễ mở rộng phát triển Sử dụng ngơn ngữ lập trình C# Có thể build game sang số hệ điều hành Windows, MacOS, IOS, Android,… 1.3 PHƯƠNG PHÁP NGHIÊN CỨU 1.3.1 Thu thập liệu Tham khảo từ số nguồn Internet 1.3.2 Công cụ công nghệ phát triển Bảng 1.1 Các phần mềm sử dụng STT Tên phần mềm Chức Unity Lập trình game Visual Studio Code Lập trình ngơn ngữ C# Photoshop CS6 Thiết kế cắt ghép logo, hình ảnh, banner, 10 Thu phóng để bắn tỉa: Ví dụ, có súng trường bắn tỉa có chức phóng to súng lục Trong trường hợp đó, sử dụng aimZoomRatio Bắn súng: Trong WeaponController, khởi tạo prefabs đường đạn Dòng chức bên HandleShootInputs -> TryShoot -> HandleShoot Vị trí dấu đầu dịng: Mọi vị trí đạn tạo vũ khí Muzzle Ngồi ra, hiệu ứng đèn flash mõm tạo Ngăn chặn việc bắn nhanh: Nếu gọi hàm HandleShoot thực nhanh chóng, viên đạn tạo Nếu gọi HandleShoot người dùng nhấn nút viên đạn tạo nhanh người dùng có tốc độ ánh sáng! Chúng ta phải ngăn chặn Có biến m_LastTimeShoot ngăn việc gọi hàm thực nhanh chóng Đây logic thời gian 3.3.7 Damageable Có lớp Health, đại diện cho sức khỏe Player Bot Để giảm sức khỏe người chơi/bot, có hai cách: − Gọi phương thức TakeDamage lớp sức khỏe − Thông qua Damagable, gọi phương thức TakeDamage lớp sức khỏe Số dùng để phóng đạn Số sử dụng cho người chơi (Bị hư hỏng rơi / môi trường lý khác) 3.3.8 ProjectileBase Như bạn thấy, ProjectileStandard có thành viên ProjectileBase ProjectileBase có biến UnityAction, onShoot đại biểu, onShoot gọi phương thức Shoot Logic thực tế liên quan đến Projectile nằm lớp ProjectileStandard Thành phần ProjectileStandard gắn vào Projectile_ [WeaponName] Đạn có bán kính để phát va chạm Điều chỉnh súng Torbjorn: Nếu bạn biết đến Overwatch (game Blizzard) có nhân vật Torbjorn Một chút thay đổi tạo cảm giác khác biệt Điều chỉnh số giá trị để tạo đường đạn giống với súng Torbjorn Gọi lại Register: Phương thức OnEnable, đăng ký phương thức OnShot cho đại biểu onShot ProjectileBase Khi gọi phương thức Shoot 43 ProjectileBase phương thức gọi lại OnShot ProjectileStandard gọi Hình 3.27 Quy trình bắn game Khi người dùng bắn súng, số chức gọi gọi lại onShot gọi thông qua đại biểu Trong OnShot, đặt shootTime, tốc độ, m_LastRootPosition, v.v Đặc biệt m_LastRootPosition để theo dõi vị trí sử dụng để phát va chạm Ngăn chặn việc bắn súng trước tường: Người dùng bắn súng phía trước tường Khi người dùng thực gần tường, viên đạn xuyên qua tường Chúng ta cần ngăn chặn điều Phát va chạm: Điều quan trọng đường đạn phát va chạm Để phát va chạm, sử dụng sphere shape Như bạn biết viên đạn nhanh, có nghĩa xuyên qua tường kẻ thù, chí nhân vật người chơi Vì vậy, phát sphere vs plane sphere vs sphere không đủ Chúng ta phải xem xét thời gian trôi Trong Unity tích hợp sẵn chức cho việc sử dụng Lưu trữ m_LastRootPosition: Khi kết thúc phương thức Update, nên lưu trữ m_LastRootPosition bên để theo dõi vị trí cuối đường đạn Quá trình nổ hư hỏng: Trong phương pháp OnHit, tạo hạt, phát SFX tự hủy Đối với trình thiệt hại, sử dụng lớp Damageable Sử dụng GetComponent, nhận comp Damagable sau gọi hàm InflictDamage Nếu loại đạn khu vực (như bom), gọi InflictDamageInArea 44 3.3.9 EnemyController Khi nói kẻ thù (đối với lập trình viên AI), thơng thường lớp kẻ thù có trạng thái, hành vi AI Ví dụ, trạng thái nhàn rỗi, di chuyển, cơng, chết Trong ví dụ này, EnemyMobile EnemyTurret có hành vi di chuyển AI riêng điều khiển kẻ thù EnemyController EnemyController khơng có kết nối với EnemyMobile EnemyTurret Thay vào đó, EnemyMobile EnemyTurret sử dụng EnemyController EnemyController có weekPath, chức tiện ích khác logic chung cho EnemyMobile EnemyTurret 3.3.10 EnemyMobile EnemyMobile lớp AI cho Enemy HoverBot EnemyMobile có trạng thái Tuần tra, Theo dõi, Tấn công Dữ liệu tuần tra lấy từ đối tượng trò chơi tuần tra Lớp PatrolPath có pathNode Kẻ thù theo đường trạng thái Tuần tra Ngay kẻ thù nhìn thấy người chơi thay đổi trạng thái người Điều chỉnh cao độ âm cho chuyển động: Khi kẻ thù di chuyển, thay đổi cao độ âm dựa tốc độ Transitions: Có nhiều cách khác để triển khai FSM (Finite State Machine) Theo định nghĩa, trạng thái có kết nối nó, sau kết nối có điều kiện 45 Nếu trạng thái khơng có kết nối phù hợp trạng thái thực thi logic dựa trạng thái (nhập, cập nhật, thốt) Trong ví dụ bot này, q trình chuyển đổi cập nhật logic tách thành chức UpdateAIStateTransitions UpdateCurrentAIState Theo cá nhân, tách logic chuyển tiếp cập nhật ý kiến hay 3.4 PHÂN TÍCH SƠ ĐỒ USECASE VÀ LUỒNG GAME 3.4.1 Sơ đồ Usecase Hình 3.28 Sơ đồ Usecase game 3.4.2 Luồng game Tạo cảnh cách chép MainScene thực thay đổi bạn muốn Để chép MainScene, tìm cửa sổ Project ( Assets> FPS> Scenes > MainScene ), chọn cú nhấp chuột, sau nhấn Ctrl + D (Windows) Cmd + D (Mac), sau đổi tên Gọi cảnh SecondaryScene, cảnh tên bạn chọn Bây bạn có cảnh trị chơi bổ sung (hoặc 'cấp độ'), bạn điều chỉnh luồng trò chơi để cảnh bạn trải nghiệm sau: 46 Hình 3.29 Luồng game Nếu MainScene mà bạn đáp ứng điều kiện thắng (mũi tên màu xanh cây), bạn thẳng đến SecondaryScene, bạn đáp ứng điều kiện thắng lần (mũi tên màu xanh cây), bạn đến WinScene Ngược lại, bạn đáp ứng điều kiện thua (mũi tên đỏ) điểm nào, bạn đến LoseScene Cuối cùng, bạn chọn “Chơi lại” từ WinScene LoseScene, bạn bắt đầu lại MainScene Các bước thực hiện: − Bắt đầu cách khởi chạy cảnh bạn cách nhấp đúp vào − Tiếp theo, mở cửa sổ Build Settings (File > Build Settings…) Hình 3.30 File > Build Setting − Nhấp vào nút Add Open Scenes (nằm phần bên phải cửa sổ) Bạn thấy SecondaryScene xuất danh sách Scenes in Build bạn trơng giống sau: 47 Hình 3.31 Thêm vào game − Mở MainScene từ cửa sổ Project, tới cửa sổ Hierarchy chọn Đối tượng GameManager GameObject: Hình 3.32 Mở GameManager − Sau cửa sổ Inspector, tới thành phần Game Flow Manager tìm tham số Win Scene Name thay đổi từ “WinScene” thành “SecondaryScene” 48 Hình 3.33 Đổi từ “WinScene” thành “SecondaryScene” − Bây bạn sẵn sàng để kiểm tra trị chơi Khởi chạy MainScene cách nhấn Play, sau chơi giành chiến thắng Khi bạn thắng, cảnh tải cảnh phụ 3.5 GIAO DIỆN GAME 3.5.1 Menu vào game Menu vào game có button chính: − Vào game: Bắt đầu vào game − Điều khiển: Hướng dẫn điều khiển nhân vật game − Thoát: Thốt khỏi game 49 Hình 3.34 Menu vào game Khi nhấn vào button Điều khiển: Hình 3.35 Hướng dẫn điều khiển game 3.5.2 Bắn Enemy game Người chơi bắn súng để tiêu diệt Enemy, Enemy có lượng máu định, có Enemy máu nhiều máu nên người chơi phải bắn liên tục để tiêu diệt chúng Bắn liên tiếp sát thương mạnh 50 Hình 3.36 Bắn hạ Enemy game Sau bắn hạ Enemy, có lượng máu cấp cứu nơi Enemy bị hạ: Hình 3.37 Máu nhận sau bắn hạ Enemy 51 Hình 3.38 Bắn hạ Enemy khác game 3.5.3 Tạm dừng/Tùy chọn game Nhấn phím Tab phím P để tạm dừng game, Menu tạm dừng có mục: − − − − Tốc độ chuột: Cho phép chỉnh tốc độ chuột nhanh hay chậm Đổ bóng: Bật tắt đổ bóng game Bất khả chiến bại: Người chơi không bị máu bị Enemy bắn Tốc độ khung hình: Đếm số khung hình/giây game Khung hình lý tưởng để chơi game mượt từ 50 – 60 FPS − Hướng dẫn: Hướng dẫn điều khiển game − Screenshot: Chụp ảnh hình chơi game Hình 3.39 Tạm dừng/Tùy chọn game 52 3.5.4 Hồn thành nhiệm vụ game Hình 3.40 Sau bắn hạ Enemy thứ Sau bắn hạ tất Enemy thứ nhất, người chơi chuyển qua thứ hai Hình 3.41 Sau bắn hạ Enemy thứ hai Sau bắn hạ tất Enemy thứ hai, người chơi hoàn thành nhiệm vụ Menu hồn thành nhiệm vụ có button: − Chơi lại: Chơi lại game từ đầu − Menu: Trở menu đầu game 53 − Thoát: Thoát khỏi game Hình 3.42 Menu sau hồn thành nhiệm vụ 3.5.5 Khơng hồn thành nhiệm vụ Người chơi sau bị Enemy bắn hạ khơng hồn thành nhiệm vụ Menu khơng hồn thành nhiệm vụ có button: − Chơi lại: Chơi lại game từ đầu − Menu: Trở menu đầu game − Thoát: Thoát khỏi game Hình 3.43 Menu sau nhiệm vụ thất bại 54 CHƯƠNG KẾT LUẬN 4.1 KẾT QUẢ ĐẠT ĐƯỢC 4.1.1 Về kiến thức Hiểu cấu trúc, cách thức hoạt động, cách thức phát triển ứng dụng Unity Nâng cao kiến thức lập trình tiếng anh chuyên ngành thông qua tài liệu Unity Tiếng Anh Thiết kế phát triển nhân vật game nhứng phần mềm hỗ trợ Photoshop, 3DS MAX, Xây dựng chức máu, chơi, chế độ AI Unity, thông qua ngôn ngữ lập trình C# Visual Code Studio Sau hồn thành thành công game, không ngừng bổ sung cho kiến thức bản, cần thiết cho trình làm việc sau Nhờ hiểu sâu ứng dụng kiến thức học vào thiết kế game ứng dụng thực tế Qua áp dụng lý thuyết vào thực tiễn, có vai trị định hoạt động nghề nghiệp sau trường 4.1.2 Về kỹ Hình thành kỹ lập trình ứng dụng thực tế phù hợp với yêu cầu đặt Có kỹ lựa chọn phương án lập trình để hệ thống hoạt động với yêu cầu đặt Ngồi cịn hình thành kỹ lựa chọn, tìm hiểu, phân tích tài liệu liên quan để từ bổ sung thêm kiến thức phục vụ cho trình học tập 4.1.3 Về thái độ Có thái độ học tập, làm việc nghiêm túc, độc lập theo hướng dẫn giáo viên, làm việc tập chung có trách nhiệm với cơng việc Có ý thức việc tìm hiểu, nghiên cứu tài liệu để thực đề tài, tự giác nghiên cứu để vận dụng kiến thức học vào giải vấn đề đề tài, qua thấy yêu cầu thực tế để có cố gắng, chuẩn bị kiến thức sau trường 55 4.2 ƯU ĐIỂM – NHƯỢC ĐIỂM 4.2.1 Ưu điểm Game cho khả phản hồi cao, chơi mượt mà Dưới góc nhìn thứ nhất, “FPS FinalBattleground” mang lại cảm giác chơi vô chân thật Giao diện đơn giản, thân thiện, dễ sử dụng phù hợp với nhiều người 4.2.2 Nhược điểm Do kiến thức Unity hạn chế nên chức game đơn giản Game chưa có nhiều nhân vật Sắp xếp nhân vật chơi chưa logic 4.3 HƯỚNG PHÁT TRIỂN Tăng thêm nhiều chơi để người chơi có thật nhiều điều khám phá Thêm vũ khí, nhân vật, nâng cấp Enemy lên level khó Cải thiện AI Enemy Thêm chức như: Điều chỉnh độ phân giải, tăng giảm âm lượng, Tối ưu hóa để game chạy tốt hơn, phần q trình phát triển game, nói cách đơn giản quy trình để cải tiến tính hiệu hiệu game Vấn đề tối ưu hố đặc biệt quan trọng q trình phát triển game mobile 56 TÀI LIỆU THAM KHẢO Efraim Meulenberg, Game Development for iPhone/iPad Using Unity iPhone, VTC, 2010 Efraim Meulenberg, Game Development with Unity, VTC, 2010 Ryan Henson Creighton, Unity 3D Game Development by Example, PackT Publishing, 2010 Will Goldstone, Unity Game Development Essential, Packt Publishing, 2009 http://www.unityprefabs.com/wormgamecartoonyseriestutorial.html http://www.3dbuzz.com/vbforum/content.php?176 https://learn.unity.com/project/fps-template https://viblo.asia/p/gioi-thieu-ve-unity-engine-game-engine-pho-biennhat-hien-nay-V3m5WBj8lO7 57 ... đề tài: ? ?Phát triển game 3D bắn súng FPS Final Battleground tảng Unity? ?? Chuẩn bị kiến thức kỹ cho định hướng nghề nghiệp (phát triển Game) sau này, góp phần vào phát triển ngành công nghiệp Game. ..KHOA PHÁT TRIỂN NÔNG THÔN BÁO CÁO NIÊN LUẬN NGÀNH ĐỀ TÀI: PHÁT TRIỂN GAME 3D BẮN SÚNG FPS FINAL BATTLEGROUND TRÊN NỀN TẢNG UNITY Giảng viên hướng dẫn: Sinh viên... TỔNG QUAN VỀ UNITY ENGINE 2.1.1 Unity gì? Unity “Cross - Flatform Game Engine” tạm hiểu công cụ phát triển game đa tảng phát triển Unity Technologies Game engine sử dụng để phát game PC, consoles,