Đang tải... (xem toàn văn)
Tài liệu tham khảo công nghệ thông tin Xây dựng game engine đa nền tảng quản lý khung cảnh
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trương Đức Phương XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ KHUNG CẢNH KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thơng tin HÀ NỘI - 2009 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trương Đức Phương XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ KHUNG CẢNH KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thông tin Cán hướng dẫn: TS Nguyễn Việt Hà Cán đồng hướng dẫn : ThS Vũ Quang Dũng HÀ NỘI - 2009 Lời cảm ơn Tôi xin chân thành cảm ơn Tiến sĩ Nguyễn Việt Hà, Thạc sĩ Vũ Quang Dũng người trực tiếp, nhiệt tình hướng dẫn tơi hồn thành khóa luận tốt nghiệp Tơi xin gửi lời cảm ơn phịng thí nghiệm Toshiba-Coltech tạo mơi trường làm việc để nhóm chúng tơi tập trung nghiên cứu Tôi xin gửi lời cảm ơn tới tồn thể thầy giáo, giáo Trường Đại học Công Nghệ - Đai học Quốc gia Hà Nội người hết lịng dạy cho tơi kiến thức bổ ích năm học qua Xin cảm ơn gia đình người bạn dành cho tơi tình thương u hỗ trợ tốt Hà nội, ngày 22 tháng 05 năm 2009 Sinh viên Trương Đức Phương Tóm tắt nội dung Khái niệm Game Engine xuất thập kỉ 90 ngày trở thành thành phần quan trọng quy trình phát triển trị chơi điện tử Sự đời phát triển Game Engine mang đến cho game đại bước tiến nhảy vọt mặt : đồ họa, khả tương tác, độ chân thực… Khóa luận đề cập đến phương pháp triển khai module “Quản lý khung cảnh” dự án “Xây dựng Game Engine đa tảng” Cụ thể, chương chương mang đến cho người đọc nhìn tổng thể kiến trúc hệ thống Game Engine Sau đó, chương trình bày chi tiết module “Quản lý khung cảnh”, sâu vào cách tổ chức khung cảnh giai đoạn trình render khung cảnh Cuối thông tin kiểm thử thực nghiệm hiệu kỹ thuật triển khai hướng phát triển tương lai Mục lục Tóm tắt nội dung Bảng thuật ngữ Danh mục hình vẽ Chương Đặt vấn đề 1.1 Bối cảnh nghiên cứu 1.2 Mục tiêu 1.3 Giới thiệu chung Chương Kiến trúc tổng thể .4 2.1 Thành phần Các kiểu liệu 2.2 Thành phần Giao tiếp với hệ điều hành .7 2.3 Thành phần Render Engine .8 2.4 Các thành phần lại .10 Chương Quản lý khung cảnh 11 3.1 Khái niệm khung cảnh cách tổ chức khung cảnh 11 3.2 Thiết kế cấu trúc 13 3.3 Thiết kế chức 21 Chương Tổng kết 34 4.1 Kết 34 4.2 Hướng phát triển 37 Bảng thuật ngữ Thuật ngữ Ý nghĩa Axis aligned bounding box Là loại bounding volume có dạng hình hộp, cạnh dọc theo trục xyz Bounding Sphere Là loại bounding volume có dạng hình cầu Bounding Volume Là danh từ chung loại hình học đơn giản sử dụng để mơ tả khơng gian bao bọc hồn tồn vật thể Event Đơn vị truyền thơng liên tiến trình gửi đến Hệ điều hành Game Engine Middleware cung cấp giao diện đơn giản để phát triển game Mesh Là mạng lưới đa giác dùng để mơ tả hình dạng vật thể không gian chiều OpenGL Một chuẩn 3d graphic API Render Là việc từ liệu khung cảnh, đối tượng 3D, ta thực phép biến đổi, tính tốn để đưa hình ảnh 2D thu vị trí nhìn ( giống trình mắt người hay camera thu hình ảnh 2D từ mơi trường ) Texture Là một loạt ảnh dùng để tăng độ chi tiết cho đối tượng View Frustum Hình chóp cụt xác định khung nhìn camera Danh mục hình vẽ Hình 1: Kiến trúc phân tầng GEM Hình 2: Kiến trúc tổng thể Hình 3: Biểu đồ lớp thành phần Các kiểu liệu .5 Hình 4: Quá trình điều phối event .7 Hình 5: Kiến trúc phân tầng Render Engine Hình 6: Biểu đồ gói Render Engine Hình 7: Axis Aligned Bounding Box Bounding Sphere GEM 12 Hình 8: Ví dụ khung cảnh BHVs tương ứng 12 Hình 9: Biều đồ lớp module Quản lý khung cảnh .13 Hình 10: Lớp SceneNode 14 Hình 11: Lớp SolidMeshSceneNode 16 Hình 12: Hình ảnh Bàn cờ quân cờ dùng SolidMeshNode 17 Hình 13: Lớp CameraSceneNode 18 Hình 14: Lớp SkyboxSceneNode 19 Hình 15: Skybox .20 Hình 16: Lớp SceneGraphManager 20 Hình 17: Lớp RenderList RenderContext .21 Hình 18: Biều đồ hoạt động giai đoạn prepare-render 23 Hình 19: Biều đồ hoạt động giai đoạn Tính lại BVHs 25 Hình 20: Ví dụ minh họa khung hình 27 Hình 21: Biều đồ hoạt động giai đoạn view frustum culling .28 Hình 22: Ví dụ Bounding Sphere có d > R 29 Hình 23: Biều đồ hoạt động giai đoạn render render-list 32 Hình 24: Ví dụ minh họa vật thể bị chắn hồn toàn 33 Chương Đặt vấn đề 1.1 Bối cảnh nghiên cứu Ngành công nghiệp phát triển game giới phát triển vũ bão Cách 20 năm, game đơn giản cần người nhóm nhỏ người phát triển ngày nay, game đại với đồ họa khả tương tác ấn tượng thường phát triển đội ngũ đông đảo người thiết kế game, lập trình viên, nghệ sĩ… thời gian rịng rã từ đến ba năm Chính việc game ngày trở nên phức tạp nên nay, game thương mại khơng cịn phát triển từ nguyên thủy mà phát triển lên từ game engine Game engine hỗ trợ việc xây dựng game cách nhanh chóng, đơn giản đồng thời cung cấp khả tái sử dụng code cao phát triển nhiều game từ game engine Ở Việt Nam, Game online thực thâm nhập vào thị trường cách năm khoảng thời gian ỏi đó, có số lượng nhà phát hành game lên tới số hàng chục, số game phát hành tương ứng với số lượng Nhưng theo chúng tơi biết, gần tất game online phát hành Việt Nam nhập từ nước ngoài, chủ yếu Trung Quốc Hàn Quốc ( trừ số game nhỏ chơi web đánh bài, đánh cờ ) Một câu hỏi mà có lẽ tất người chơi game trăn trở “bao chơi game Việt Nam?” Chúng tơi chọn đề tài làm khóa luận tốt nghiệp với tham vọng lớn, muốn bước chân chập chững vào giới phát triển game rộng lớn, để thu lượm kiến thức lĩnh vực khó khăn đầy thú vị hi vọng tương lai khơng xa, chúng tơi góp phần sức lực giái đáp trăn trở cộng đồng người chơi game Việt Nam 1.2 Mục tiêu Xây dựng Game Engine đa chạy nhiều hệ điều hành khác nhau, hướng đến phân khúc phát triên game nhập vai trực tuyến (MMORPG) Game Engine đặt tên GEM Đây mục tiêu dài hạn, tại, thời gian làm luận văn khoảng tháng nên nhóm chúng tơi tập trung hồn thiện thành phần Render Engine Game Engine ( Xem chi tiết chương 2) 1.3 Giới thiệu chung Như giới thiệu trên, Game Engine lớp trung gian game tảng bên dưới, thư viện lập trình cấp thấp GEM game engine nên dĩ nhiên tuân thủ theo nguyên tắc Hình 1: Kiến trúc phân tầng GEM Đặt điểm GEM khả chạy đa nền.Để đặt điều đó, GEM sử dụng build tảng khác ( sử dụng thông dịch ) Các đoạn code phụ thuộc tảng phân chia việc sử dụng cờ tiền biên dịch, hạn chế tối đa việc sử dụng lớp abstract – việc làm giảm hiệu suất chương trình đáng kể [1] Cũng lí đo chạy đa nên chúng tơi lựa chọn openGL làm giao diện lập trình đồ họa 3D cấp thấp cho GEM, chuẩn openGL chuẩn mở không bị phụ thuộc vào hệ điều hành GEM thiết kế hướng đối tượng yêu cầu hiệu chạy cao nên sử dụng ngôn ngữ C++ - ngôn ngữ đáp ứng hoàn hảo điều kiện Đa số Game Engine giới phát triển ngôn ngữ C++ Chúng thiết kế GEM nhắm đến phân khúc phát triển game nhập vai trực tuyến, nên khả tương thích với phạm vi rộng cấu hình phần cứng điều kiện quan trọng, dự kiến support card đồ họa hỗ trợ openGL 1.4 shader 1.0 trở lên Bảng cấu hình tối thiểu dự kiến : Hãng sãn xuất Dịng card hỗ trợ nVidia Từ GeForce4 Ti trở lên ATI Từ Radeon 9500 trở lên Intel ( card tích hợp ) Từ Intel® GMA 3100 ( chipset G31,Q33) trở lên ... ? ?Quản lý khung cảnh? ?? dự án ? ?Xây dựng Game Engine đa tảng? ?? Cụ thể, chương chương mang đến cho người đọc nhìn tổng thể kiến trúc hệ thống Game Engine Sau đó, chương trình bày chi tiết module ? ?Quản. .. Quản lý tài nguyên module quản lý tài nguyên cần thiết để xây dựng khung cảnh 3D mesh, animated mesh, texture 2D, cubemap…Module bạn Hồng Tuấn Hưng trình bày khóa luận ? ?Xây dựng Game Engine đa. ..ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trương Đức Phương XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ KHUNG CẢNH KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thơng tin