Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
1,68 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO 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ÌM HIỂU VỀ OPENGL VÀ THIẾT KẾ 2D GAME ENGINE Giảng viên hướng dẫn Sinh viên thực Sinh viên thực Lớp : : : : ThS Thái Thụy Hàn Uyển Nguyễn Viết Lưu – 19520155 Vũ Đức Trung - 19520324 SE122.N11 Thành phố Hồ Chí Minh, tháng 12 năm 2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO 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ÌM HIỂU VỀ OPENGL VÀ THIẾT KẾ 2D GAME ENGINE Giảng viên hướng dẫn Sinh viên thực Sinh viên thực Lớp : : : : ThS Thái Thụy Hàn Uyển Nguyễn Viết Lưu – 19520155 Vũ Đức Trung - 19520324 SE122.N11 Thành phố Hồ Chí Minh, tháng 12 năm 2022 Lời cảm ơn Đồ án mơn học có nhiều thử thách, địi hỏi người học phải dành nhiều thời gian, công sức để nghiên cứu, tìm tịi xây dựng Đồng thời, hội để sinh viên thực hành học suốt năm đại học học hỏi thêm nhiều kiến thức, kinh nghiệm kỹ phục vụ cho công việc sau Hơn hết, đồ án bước chuẩn bị cuối để nhóm phát triển lên thành khóa luận tốt nghiệp Cho nên xem thử thách hội để sinh viên rèn luyện, hoàn thiện thân kĩ tích lũy suốt q trình làm đồ án Để đến đoạn cuối hành trình nỗ lực, cố gắng kiên trì Đồng hành sinh viên vượt qua thử thách có mặt giúp đỡ người thầy tận tâm cơng việc Nhóm xin chân thành cảm ơn Thái Thị Hàn Uyển tận tình giúp đỡ nhóm em hồn thành đồ án Chính nhờ góp ý, động viên giúp đồ án nhóm hồn thiện chun nghiệp nhiều Bên cạnh đó, nhóm học hỏi nhiều kiến thức, kinh nghiệm học thú vị q trình làm khố luận, hành trang hữu ích cho nhóm sau Nhóm xin chân thành cảm ơn anh chị, bạn bè giúp đỡ nhóm q trình thực đồ án Nhờ người mà nhóm có nhiều góc nhìn khác đề tài làm, từ giúp hồn thiện đồ án nhóm Một lần nữa, nhóm xin chân thành cảm ơn cô người Lời nhận xét giảng viên hướng dẫn ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… Mục lục Lời cảm ơn .3 Lời nhận xét giảng viên hướng dẫn Mở đầu Chương Tổng quan 1.1 Lý chọn đề tài .8 1.1.1 Giới thiệu sơ lược OpenGL 1.1.2 Giới thiệu sơ lược Game Engine 1.1.3 Các Game Engine có thị trường 1.1.4 Lý lựa chọn đề tài 1.2 Mục tiêu đồ án 10 1.2.1 Yêu cầu nghiên cứu 10 1.2.2 Yêu cầu tính sản phẩm 10 1.2.3 Yêu cầu kỹ thuật sản phẩm 10 1.3 Hướng tiếp cận dự kiến 10 1.3.1 Công nghệ dự kiến sử dụng 10 1.3.2 Đối tượng phạm vi dự án nhắm đến 10 Chương Cơ sở lý thuyết 11 2.1 Cách game hoạt động 11 2.1.1 Loop 11 2.1.2 Render 11 2.1.3 Game object 11 2.1.3 Component 11 2.1.4 Script 11 2.2 OpenGL .11 2.2.1 OpenGL gì? .11 2.2.2 OpenGL hoạt động nào? 11 2.2.3 Lịch sử hình thành, phiên OpenGL 12 2.2.4 Đối thủ cạnh tranh OpenGL 13 2.2.5 Tại cần có OpenGL? .13 2.2.6 Tại Shader lại chạy nhanh tới mức vậy? .13 2.3 Game Engine .15 2.3.1 Game Engine gì? .15 2.3.2 Mục đích đời 15 2.3.3 Game Engine thời điểm 16 2.3.5 Những thành phần cấu thành nên Game Engine 16 2.3.6 Quy trình tạo game dựa vào Game Engine .16 Chương Thiết kế hệ thống .17 3.1 Kiến trúc hệ thống .17 3.2 Mô tả thành phần hệ thống 17 Chương Phân tích thiết kế 18 4.1 Phân tích chức 18 4.1.1 Bảng tính 18 4.1.2 Danh sách tính phát triển 18 4.1.3 Danh sách tính q trình phát triển 21 4.2 Thiết kế giao diện 21 4.2.1 Sơ đồ thiết kế giao diện 21 4.2.2 Danh sách giao diện 22 4.2.3 Mô tả chi tiết giao diện .22 Chương Thực nghiệm 23 5.1 Thực nghiệm chương trình 23 5.1.1 Phương pháp đánh giá 23 5.1.2 Kết đánh giá 24 Kết luận 25 Hướng phát triển 26 Cài đặt sử dụng .27 Phân công công việc 28 Tài liệu tham khảo .29 Mở đầu Ngày nay, tốc độ phát triển nghành Cơng nghệ thơng tin phải nói nhanh đến chóng mặt từ bước ban đầu dùng để tính tốn, xem tin tức, lưu trữ số thơng tin quan trọng bây giờ, gần cho phép người vào giới quan với thao tác gõ phím đấp chuột xây dựng nên Game đơn giản Mario, Pinball, … Một phần tạo nên thành công công nghệ OpenGL OpenGL viết tắt cho "Open Graphics Library" dùng nhiều ngơn ngữ máy tính Bên cạnh phát triển nhanh chóng ấy, xu hướng tạo tựa Game đơn giản dần người yêu thích quan tâm Và ngày có nhiều phần mềm giúp người tạo tựa Game từ đơn giản đến nâng cao Đó lí mà chúng em tìm hiểu cơng nghệ OpenGL làm nên phần mềm công cụ giúp thiết kế Game 2D cách dễ dàng dễ hiểu cho người dùng Các cơng việc mà phần mềm hỗ trợ để giúp cho việc phát triển game cách dễ dàng là: Hỗ trợ render hình ảnh với FPS cao, kéo thả vật thể game, dễ dàng thêm component cho vật thể game, hỗ trợ phát âm thanh, tạo animation, Chương Tổng quan 1.1 Lý chọn đề tài 1.1.1 Giới thiệu sơ lược OpenGL OpenGL viết tắt “Open Graphics Library”, API đa tảng, đa ngôn ngữ cho việc render đồ họa 2D 3D OpenGL xử lý phép tính đồ họa trực tiếp GPU thay CPU, điều làm cho giảm cơng việc cực nhọc GPU, từ làm cho đồ họa render nhanh 1.1.2 Giới thiệu sơ lược Game Engine Game Engine phần mềm dùng để xây dựng thiết kế trò chơi điện tử Hình dung cách đơn giản game engine cung cấp cho nhà sản xuất game nguyên liệu để từ họ dễ dàng việc phát triển game Lợi ích Game Engine: Tạo game mà hạn chế khơng sử dụng lập trình Tiết kiệm thời gian, công sức tiền bạc Đồ họa chân thực Hỗ trợ đa tảng 1.1.3 Các Game Engine có thị trường Hiện có nhiều Game Engine thị trường, số game engine bật: Unity Unreal Engine CryEngine Coco’s Creator Amazon Lumberyard Godot GameMaker: Studio Unity Unity số game engine phổ biến toàn giới phát triển Unity Technologies Chúng ta dễ dàng nhìn thấy game phát triển Unity Nó sử dụng để phát triển game điện thoại di động Unity game engine đa tảng cho phép nhà phát triển tạo nội dung 3D cách thuận tiện Nó hỗ trợ nội dung 2D 3D với việc phát triển VR AR Unity có cộng đồng rộng lớn, có Assets Store riêng mình, nơi cung cấp packages miễn phí trả phí Nó hỗ trợ cho Windows, Mac, Linux, Android, iOS,… Một số game phát triển Unity: Temple Run, Assassin’s Creed Identity,… Unreal Engine Unreal Engine số game engine phổ biến toàn giới phát triển Epic Games Nó game engine đa tảng Game tạo Unreal Engine hỗ trợ Microsoft Windows, macOS, Linux, SteamOS, HTML5, iOS, Android, Nintendo Switch, PlayStation 4, Xbox One Nó có Market riêng mình, nơi mà packages mua Ngồi ra, chương trình nặng đồ họa, u cầu máy tính mạnh engine khác Unity Một số game làm Unread Engine: Fornite, Batman Arkham City,… CryEngine Được phát triển CryTek CryEngine trình chỉnh sửa Sandbox 1đầy đủ tính dùng để phát triển cho hầu hết tảng bao gồm: Xbox, PlayStation, PC Oculus Một số game phát triển CryEngine: War of Rights, Last Kingdom,… Coco’s Creator Nó cơng cụ tập trung vào việc tạo nội dung phát triển Xiamen; có tính mạnh mẽ thân thiện với người dùng Đây công cụ phát triển trò chơi đa tảng hỗ trợ nhiều tảng khác nhau, bao gồm web, iOS, Android, Windows Mac Nó hỗ trợ phát triển trị chơi 2D 3D Họ cung cấp giải pháp khác Cocos 2D Cocos 2Dx Một số game phát triển Coco’s Creator: Magic Rush, Ark of Conquest, Idle Heroes,… Amazon Lumberyard Được phát triển Amazon Nó chủ yếu sử dụng để phát triển game 3D Nó hỗ trợ chế độ xem trước VR (VR preview mode), kịch trực quan (visual script) tích hợp Twitch Adobe Photoshop Amazone Lumberyard hỗ trợ phát triển game online nhiều người chơi cách dễ dàng Nó sử dụng C++ làm ngơn ngữ lập trình Một số game phát triển Amazon Lumberyard: New World, Star Citizen,… Godot Godot Game Engine sử dụng miễn phí, mã nguồn mở thơng qua giấy phép MIT Godot công cụ phát triển mã nguồn mở chạy máy tính Windows, Linux Mac Cơng cụ hỗ trợ khả 2D 3D, có trình chỉnh sửa hình ảnh hệ thống cảnh linh hoạt để đưa tiến trình trị chơi Ngồi ra, Godot sử dụng ngôn ngữ GDScript, ngôn ngữ lập trình cấp cao có cú pháp giống với Python Một số game phát triển Godot: Kingdoms of the Dump, Hardcored,… GameMaker: Studio Được phát triển Yoyo, Đây tảng phát triển trò chơi 2D không yêu cầu kinh nghiệm kiến thức lập trình Thay vào đó, người dùng “point and click” để tạo trò chơi nhanh nhiều so với viết mã ngơn ngữ mẹ đẻ Nhìn chung, công cụ thân thiện với người bắt đầu mở khả phát triển trò chơi cho tất người Một số game phát triển bưởi GameMaker: Undertale, Hotline Miami,… 1.1.4 Lý lựa chọn đề tài OpenGL kiến thức quan trọng mà nhà phát triển game cần phải nắm rõ Đồng thời 2D Game Engine đề tài mà người bắt đầu tìm hiểu lập trình game nên tìm hiểu Vì cấp cho người Sandbox giới ảo, nơi người chơi xây dựng, sở hữu kiếm tiền từ trải nghiệm chơi game họ blockchain Ethereum nhiều kiến thức, thuật ngữ quan trọng Với định hướng nhóm mong muốn thử thách mình, chúng em định chọn đề tài “Tìm hiểu OpenGL thiết kế 2D Game Engine” để làm đề tài cho môn Đồ án 1.2 Mục tiêu đồ án 1.2.1 Yêu cầu nghiên cứu Hiểu khái niệm OpenGL Hiểu nắm rõ kiến thức, quy trình phát triển 2D Game Engine 1.2.2 Yêu cầu tính sản phẩm Được lấy cảm hứng từ Hazel Engine Sản phẩm 2D Game Engine cần có u cầu tính sau: Hỗ trợ phát triển game 2D Hỗ trợ kéo thả (drag and drop) Hạn chế lập trình sản xuất game (no-code) 1.2.3 Yêu cầu kỹ thuật sản phẩm Sản phẩm 2D Game Engine cần có yêu cầu kỹ thuật sau: Giao diện thân thiện, trực quan, đại Tính dễ sử dụng 1.3 Hướng tiếp cận dự kiến 1.3.1 Công nghệ dự kiến sử dụng Ngôn ngữ lập trình: Java Các thư viện hỗ trợ: o ImGui (Immediate Mode GUI): Hỗ trợ tạo giao diện nhanh, linh hoạt, dock cửa sổ lên vị trí hình o OpenAL (Open Audio Library): API hỗ trợ phát âm o GLFW (Graphics Library Framework): Thư viện hỗ trợ làm việc với OpenGL, xử lý liệu đầu vào từ chuột, bàn phím, pad, o LWJGL (Lightweight Java Game Library): Thư viện hỗ trợ render đồ họa Java o JOML (Java math library for OpenGL): Hỗ trợ tính tốn phép tính render o JBOX2D: Hỗ trợ vật lý, va chạm 1.3.2 Đối tượng phạm vi dự án nhắm đến Những người có đam mê muốn tìm hiểu việc phát triển game, muốn tìm hiểu xem phía sau game thứ Những người muốn tạo game đơn giản Chương Cơ sở lý thuyết 2.1 Cách game hoạt động 2.1.1 Loop Về bản, hiểu game lịng lặp vơ tận, trị chơi bật lên 10 Networking Streaming Memory management Threading … 2.3.6 Quy trình tạo game dựa vào Game Engine Bước 1: Tìm kiếm nguyên liệu tạo thành game sprite, âm Bước 2: Đưa nguyên liệu vào game engine Bước 3: Tiến hành tạo game object game Bước 4: Gắn component vào game object, tạo script cần thiết Bước 5: Chạy thử game engine Bước 6: Build thành file dựa tảng hướng tới 16 Chương Thiết kế hệ thống 3.1 Kiến trúc hệ thống 3.2 Mô tả thành phần hệ thống STT Thành phần Game Objects Components Scripts Engine App Renderer Physics System Diễn giải Các vật thể tạo nên game Một game object bao gồm nhiều component tạo thành Là kịch cho game object hoạt động, coi component gắn vào nhiều game object Nơi để người dùng kéo thả, tạo game, set thuộc tính, component, tạo scripts,… thực thao tác game mà họ muốn tạo Thực vẽ hình ảnh, sprite, texture game Game giới, giới cần có áp dụng định luật vật lý Physics hỗ trợ tạo định luật áp dụng game Quản lý đầu vào: Chuột, bàn phím, pad,… Các prefabs (vật thể cha) Camera Window Sound manager 17 18 Chương Phân tích thiết kế 4.1 Phân tích chức 4.1.1 Bảng tính STT Tên tính Ghi Kéo thả Xử lý va chạm định luật vật lý 2D Animation Tạo sprite từ spritesheet Phát âm Transform Rigidbody2D Box2DCollider Circle2DCollider 4.1.2 Danh sách tính phát triển Kéo thả o Mơ tả: Người dùng kéo thả game object trực tiếp lên hình cách trực quan thay phải code vị trí phải vào code set vị trí o Hình ảnh minh họa: Xử lý va chạm định luật vật lý o Mơ tả: Các game object có thể va chạm với vật thể khác chịu định luật vật lý như: lực, trọng lực (lực hút trái đất), vận tốc, phản lực, 2D Animation o Mô tả: Engine hỗ trợ tạo 2D Animation đơn giản theo dạng frame by frame o Ví dụ minh họa: 19 Tạo sprite từ spritesheet o Mơ tả: Từ spritesheet tách thành nhiều sprite nhằm hỗ trợ cho việc lưu trữ nguyên liệu cho game o Ví dụ minh họa: Phát âm o Mô tả: Engine hỗ trợ phát âm trị chơi o Hình ảnh minh họa: Transform o Mô tả: Engine hỗ trợ component quan trọng Transform Component hỗ trợ lưu trữ vị trí, scale (độ co), rotation (độ quay), zIndex (sắp lớp layer) o Hình ảnh minh họa: 20 ... tài ? ?Tìm hiểu OpenGL thiết kế 2D Game Engine? ?? để làm đề tài cho môn Đồ án 1.2 Mục tiêu đồ án 1.2.1 Yêu cầu nghiên cứu Hiểu khái niệm OpenGL Hiểu nắm rõ kiến thức, quy trình phát triển 2D Game. .. điện ln 2.3 Game Engine 2.3.1 Game Engine gì? Game engine, hay cịn gọi Phần mềm game, phần mềm dùng để xây dựng thiết kế trò chơi điện tử (video game) Hình dung cách đơn giản, game engine cung... tạo game dựa vào Game Engine Bước 1: Tìm kiếm nguyên liệu tạo thành game sprite, âm Bước 2: Đưa nguyên liệu vào game engine Bước 3: Tiến hành tạo game object game Bước 4: Gắn component vào