Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
2,82 MB
Nội dung
VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN PHẠM PHƯƠNG TÚ ĐỒ ÁN TỐT NGHIỆP Đề tài: Tìm Hiểu Về Game Engine Và Xây Dựng Game 3D Dựa Trên Game Engine Chuyên ngành: TIN HỌC ỨNG DỤNG Trang LỜI CẢM ƠN Em xin chân thành cảm ơn Khoa Công Nghệ Thông tin, Viện Đại học Mở Hà Nội tạo điều kiện cho em thực đề tài tốt nghiệp Em xin chân thành cảm ơn Thầy Nguyễn Đức Tuấn tận tình hướng dẫn, bảo em suốt thời gian làm đề tài Em xin cảm ơn quý Thầy Cô Khoa tận tình giảng dạy, trang bị cho em kiến thức cần thiết suốt trình học tập khoa Em xin gởi lòng biết ơn sâu sắc đến ba, mẹ, bạn bè ủng hộ, giúp đỡ, động viên em suốt trình học thời gian làm luận văn đầy khó khăn, thử thách Mặc dù cố gắng hoàn thành đồ án tốt nghiệp với tất nổ lực thân, chắn luận văn không tránh khỏi sai sót hạn chế, kính mong thơng cảm, bảo quý Thầy Cô bạn Sinh Viên Phạm Phương Tú Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang LỜI MỞ ĐẦU Ngày nay, sản phẩm giải trí mà đặc biệt Game mang lại nguồn lợi nhuận to lớn cho ngành cơng nghiệp máy tính Do nhu cầu thị trường tăng nhanh, Game ngày có chất lượng cao thời gian xây dựng ngày rút ngắn Các Game 3D thị trường đa dạng nội dung chủng loại có điểm chung xây dựng Game Engine Chất lượng Game phụ thuộc vào chất lượng Game Engine mà sử dụng Game Engine phần cốt lõi để xây dựng Game Graphic 3D Engine phần quan trọng Game Engine Việc sử dụng Game Engine để xây dựng Game xu tất yếu để có Game chất lượng cao thời gian ngắn Tiếc thay, nước ta việc xây dựng Game 3D Game Engine tương đối hạn chế Chính vậy, em thực đề tài “Tìm Hiểu Về Game Engine Và Xây Dựng Game 3D Dựa Trên Game Engine” với mong muốn đóng góp xây dựng nên ngành cơng nghiệp Game nước nhà tương lai gần Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang MỤC LỤC LỜI CẢM ƠN LỜI MỞ ĐẦU MỤC LỤC DANH MỤC KÍ HIỆU, CHỮ VIẾT TẮT DANH SÁCH HÌNH VẼ 10 CHƯƠNG 1: MỞ ĐẦU 12 1.1 Giới thiệu .12 1.2 Phạm vi đề tài 13 1.3 Báo cáo tính khả thi dự án 14 1.3.1 Khả thi kĩ thuật 14 1.3.2 Khả thi kinh tế 14 1.3.3 Khả thi vận hành 14 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 15 2.1 Xây dựng Game sử dụng thư viện đồ họa 15 2.1.1 Giới thiệu 15 2.1.2 Thư viện đồ họa OpenGL 15 2.1.3 Thư viện đồ họa Direct3D .18 2.1.4 Các kiến thức đồ họa 3D Game, Game Engine .20 2.1.5 Một số khai báo xử lý Game mô 22 2.1.6 Giới thiệu Game mô sử dụng thư viện đồ họa OpenGL 26 2.2 Lịch sử đời Game Engine 29 2.3 Xu hướng 32 2.4 Mục đích Game Engine 33 Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 2.5 Kiến trúc thành phần chi tiết Game Engine 35 2.5.1 Âm Thanh 36 2.5.2 Đầu vào 36 2.5.3 Tương tác vật lý 36 2.5.4 Xử lý đồ họa 37 2.5.5 Lõi hệ thống 37 2.5.6 Lập trình Script .37 2.5.7 Giao tiếp mạng 38 2.6 Mối quan hệ Game Engine Game 39 2.7 Giới thiệu số loại Game Engine 40 2.7.1 Roll-your-own engine 40 2.7.2 Mostly-ready Game engine 41 2.7.3 Point-and-click engine 41 2.8 Danh sách số Game Engine hàng đầu 42 2.8.1 Cry Engine 42 2.8.2 Unreal Engine 42 2.8.3 Unity Engine 43 2.8.4 Rage Engine 43 2.8.5 Dead Engine 44 2.8.6 Avalanche Engine 44 2.8.7 MT Framework Engine 44 2.8.8 IW Engine .45 2.8.9 Anvil Engine 45 CHƯƠNG 3: XÂY DỰNG GAME 3D SỬ DỤNG 46 GAME ENGINE UNITY 46 3.1 Giới thiệu Game Engine Unity 46 Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 3.1.1 Sơ lược Game Engine Unity 46 3.1.2 Lý lựa chọn Game Engine Unity .46 3.1.3 Các tính tiêu biểu Game Engine Unity 48 3.2 Hướng dẫn sử dụng Game Engine Unity .54 3.3 Giới thiệu Game minh họa xây dụng Game Engine Unity .74 CHƯƠNG 4: HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG 76 4.1 Hướng dẫn đặt 76 4.2 Hướng dẫn sử dụng 80 LỜI KẾT 82 DANH MỤC TÀI LIỆU THAM KHẢO 84 Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang DANH MỤC KÍ HIỆU, CHỮ VIẾT TẮT STT Tên viết tắt Tên đầy đủ Dịch Tiếng Việt GE Game Engine Phần mềm để thiết kế phát triển video Game OPENGL Open Graphics Library Thư viện lập trình đồ họa mở CAD Computed Assisted Design Sử dụng máy tính trình thiết kế, lập vẽ ARB Architecural Review Board Hội đồng chuyên đưa chuẩn mở rộng OpenGL COM Component Object Model Giao diện đứng thành phần hệ thống viết ngơn ngữ khác hiểu MMORPG Massively Multiplayer Online Role-Playing Game Dạng Game nhập vai người chơi giao tiếp với nhân vật người khác điều khiển thông qua server chung nhà cung cấp quản lý DHTML Dynamic HyperText Markup Language Ngôn ngữ HTML động Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 8 SDK Software Development Kit Gói cơng cụ phát triển phần mềm UDP User Datagram Protocol Là giao thức cốt lõi giao thức TCP/IP Đặc điểm truyền liệu nhanh không đảm bảo 10 API Application Programming Interface Giao diện lập trình ứng dụng 11 AI Artificial Intelligence Trí thơng minh nhân tạo 12 OPENGL ES OpenGL for Embedded Systems Bản rút gọn thư viện lập trình đồ họa mở OPENGL dành cho thiết bị di động 13 GLSL OpenGL Shading Language Một ngơn ngữ lập trình bậc cao dựa cú pháp ngơn ngữ lập trình C 14 SSAO Screen Space Ambient Occlusion Kĩ thuật sử lý đồ họa mang lại kết gần xác thời gian thực 15 CG C for Graphics Một ngôn ngữ lập trình bậc cao Nvidia Microsoft hợp tác tạo Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang nên 16 XML eXtensible Markup Language Ngôn ngữ đánh dấu có khả mở rộng 17 RGB Red Green Blue Mơ hình màu sử dụng ánh sáng đỏ, xanh xanh lam tổ hợp với theo nhiều phương thức khác để tạo thành màu khác 18 3D Three-dimensional space Không gian ba chiều Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 10 DANH SÁCH HÌNH VẼ STT Số Thứ Tự Nội Dung Số Trang Hình 2.1 Mơ hình nhìn từ xa 29 Hình 2.2 Mơ hình lúc bắt đầu chương trình 30 Hình 2.3 Mơ hình phía bên 31 Hình 2.4 Thiết kế lý thyết Game Engine 40 Hình 2.5 Mối quan hệ Game Engine Game 41 Hình 3.1 Giao diện Game Engine Unity 56 Hình 3.2 Giao diện Projects Víew 57 Hình 3.3 Giao diện Hierarchy 59 Hình 3.4 Giao diện Toolbar 60 10 Hình 3.5 Giao diện Scene View 61 11 Hình 3.6 Giao diện Scene Gizmo 63 12 Hình 3.7 Các chế độ Transform Tools 64 13 Hình 3.8 Giao diện Scene View Control Bar 64 14 Hình 3.9 Giao diện Game View 65 15 Hình 3.10 Giao diện Play Mode 66 16 Hình 3.11 Giao diện Game View Control Bar 66 17 Hình 3.12 Giao diện Imspector 67 Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 70 o Sử dụng kiểu Assets khác Mối liên hệ số kiểu assets thông dụng: Một Texture áp cho Material Một Material áp cho GameObject (với Mesh Renderer Component) Một Animation áp cho GameObject (với Animation Component) Một file âm áp cho GameObject (với Audio Source Component) Tạo Prefab Prefabs tính hữu ích Unity, sưu tập nhiều GameObject Components mà dùng lại nhiều lần scene Nhiều đối tượng riêng biệt tạo Prefab, gọi intance Lấy ví dụ Game Ta tạo Prefab cho cây, sau thêm vào Game để tạo thành vườn Bởi tất Prefab, nên sau này, bạn cần thay đổi màu lá, màu vỏ v v cho toàn vườn cây, bạn cần đơn giản hiệu chỉnh thông số Prefab, sau áp cho tồn đối tượng cách chọn GameObject->Apply Changes to Prefab từ menu Thật dễ dàng nhanh chóng, Prefab giúp bạn tiết kiệm nhiều thời gian việc quản lý hiệu chỉnh asset Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 71 Khi bạn có Gameobject chứa nhiều thành phần Hierachy Gameobject con, bạn tạo Prefab Gameobject mức đỉnh tái sử dụng tập hợp khối Gameobject Tưởng tượng Prefab khung sườn, khuôn mẫu Nghĩa Prefab thay đổi, tất cập nhật theo Có nhiều cách để thay đổi, bạn thay đổi từ Prefab gốc, từ áp ngược lại cho tồn Prefab Để tạo Prefab từ GameObject scene, đầu tiên, khởi tạo trước Prefab Project View, đặt tên cho Prefab theo ý thích bạn, sau đó, click drag đối tượng GameObject mà bạn muốn trở thành Prefab vào Prefab, tên GameObject chuyển sang xanh dương Cập nhật Assets Bạn làm quen với việc import, thay đổi, liên kết asset Prefab Giờ bạn muốn có chút thay đổi với asset? Chỉ cần double-click Project View Chương trình chỉnh sửa tương ứng chạy bạn chỉnh sửa theo ý thích, hồn tất, cần save lại, Unity tự động nhận biết thay đổi import lại asset cách nhanh chóng Những asset liên kết Prefab thay đổi theo Ví dụ bạn thêm bảng hiệu Game file Photoshop Doubleclick lên nó, Photoshop chạy, bạn chỉnh sửa bảng hiệu Photoshop, save lại Quay lại Unity, bạn thấy thay đổi Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 72 Khởi tạo Scenes Scenes chứa đối tượng Game Nó thường dùng để tạo hình Game, tầng (level) độc lập, thứ khác Game Tưởng tượng Scene tầng độc lập, mà scene, bạn thiết lập môi trường, vật thể, chi tiết, kể việc design xây dựng Game từ thứ nhỏ Instancing Prefabs Sử dụng kiến thức từ trước để tạo Prefab Một bạn tạo Prefab rồi, bạn copy thành nhiều cách dễ dàng nhanh chóng, gọi Instance Để tạo instance Prefab nào, cần drag từ Project View qua Hierarchy hay trực tiếp Scene View Thêm Component & Scripts Khi bạn có Prefab hay GameObject hành, bạn thêm tính cho cách sử dụng Component Chi tiết Component Reference đây, xem qua để phân biệt khác chúng Script dạng Component Để thêm Component, cần chọn đối tượng, chọn loại Component tương ứng menu Component, bạn thấy xuất thông số Component bên Inspector Script mặc định đặt menu Component Nếu việc thêm vào Component làm gãy liên kết GameObject với Prefab nó, bạn dùng GameObject -> Apply Changes to Prefab từ menu để thiết lập lại mối liên kết Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 73 Đặt vị trí cho GameObjects Một có GameObject scene, bạn dùng cơng cụ Transform Tools để di chuyển, thay đổi giá trị Transform Inspector để có vị trí xác Làm việc với Cameras Camera mắt bạn Game Mọi thứ người chơi nhìn thấy chơi thể thơng qua camera Chúng định vị, thay đổi, di chuyển GameObject Một camera thực chất GameObject với Camera Component đính kèm Điều có nghĩa có đủ thuộc tính GameObject, tất nhiên, có thêm vài thuộc tính camera Unity cung cấp số script Camera hữu ích sẵn kèm theo gói cài đặt mẫu assets bạn khởi tạo project Bạn tìm chúng menu Components -> Camera-Control Một số tính khác camera có ích q trình làm Game Nguồn sáng Ngoại trừ số trường hợp định, cịn lại bạn phải thêm nguồn sáng vào scene Có ba kiểu nguồn sáng bản, loại có chút đặc điểm khác Điều quan trọng ảnh hưởng nguồn sáng tới Game Kiểu nguồn sáng khác thay đổi sắc thái Game nhiều Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 74 3.3 Giới thiệu Game minh họa xây dụng Game Engine Unity Em xin giới thiệu Game lăn bóng 3D đơn giản với nội dung chơi tương tự game lăn bóng 2D truyền thống xuất nhiều nhiều thiết bị điện thoại di động, máy tính, v.v… Hình 3.13 Giao diên Game lúc bắt đầu Hình 3.14 Giao diện Game di chuyển Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 75 Hình 3.15 Giao diện Game chiến thắng Hình 3.16 Giao diện Game thua Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 76 CHƯƠNG 4: HƯỚNG DẪN CÀI ĐẶT VÀ SỬ DỤNG 4.1 Hướng dẫn đặt Phiên Unity sử dụng đồ án phiên Unity 3.5.0f5, sau tài cài đặt trang chủ http://unity3d.com, bạn tiến hành cài đặt chương trình bình thường với thao tác sau: • Bước 1: Chọn Next để tiếp tục, chọn Cancel để hủy bỏ cài đặt Hình 4.1 Cài đăt Game Engine Unity, bước Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 77 • Bước 2: Chọn I Agree để đồng ý với điều khoản nhà sản xuất, chọn Back để trở lại bước 1, chọn Cancel để hủy bỏ cài đặt Hình 4.2 Cài đăt Game Engine Unity, bước Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 78 • Bước 3: Chọn thành phần mà ta muốn cài đặt, sau chọn Next để tiếp tục cài đặt, chọn Back để trở lại bước 2, chọn Cancel để hủy bỏ cài đặt Hình 4.3 Cài đăt Game Engine Unity, bước Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 79 • Bước 4: Chọn đường dẫn cài đặt Unity sau chọn Install để cài đặt, chọn Back để trở lại bước 3, chọn Cancel để hủy bỏ cài đặt Hình 4.4 Cài đăt Game Engine Unity, bước Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 80 • Bước 5: Click chọn Run Unity 3.5.0f5 nhấn Finish để hoàn tất cài đặt khởi động Game Engine Unity Hình 4.5 Cài đăt Game Engine Unity, bước 4.2 Hướng dẫn sử dụng Thực khởi động Game Engine Unity, ta thực Open Project sau Open Scene xây dựng Game lăn bóng Game có giao diện trực quan, thân thiện dễ dàng sử dụng với người chơi Game chơi cách sử dụng phím mũi tên điều hướng phím W, A, S, D để di chuyển bóng theo hướng người chơi mong muốn Mục tiêu người chơi di chuyển đến vị trí viên ngọc thu thập hết chúng Trò Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 81 chơi kết thúc người chơi chiến thắng cách ăn hết toàn số ngọc chơi người chơi thất bại bị rơi xuống Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 82 LỜI KẾT Trước hết, em xin gửi lời cảm ơn chân thành tới thầy giáo hướng dẫn Thạc sĩ Nguyễn Đức Tuấn Trong suốt thời gian em thực đồ án, thầy hết lịng quan tâm, tận tình bảo, hướng dẫn để em hồn thành đề tài Em cảm ơn thầy cô khoa Công Nghệ Thông Tin – Viện Đại Học Mở Hà Nội dìu dắt, bảo truyền đạt kiến thức quý báu giúp em hoàn thiện đường học tập suốt trình học tập khoa Cuối lời cảm ơn tới người bạn lớp, khố, khoa học tập mơi trường cơng nghệ động, dìu dắt học tập sống Bốn tháng khoảng thời gian dài cho đồ án mẻ mà nhiều kiến thức chưa dạy lớp Trong suốt khoảng thời gian này, em nghiên cứu nhiều tài liệu lập trình với thư viện đồ họa Direct3D, OpenGL, kiến trúc Game Engine tài liệu chi tiết Game Engine Unity Từ em tiến hành nghiên cứu hồn thành hai Game mơ thử nghiệm, phân tích đánh giá kĩ thuật thực Game xây dựng bám sát vào nội dung phân tích báo cáo hoạt động tốt Chương trình vận hành bình thường, mượt mà, khơng xảy lỗi có khả phát triển mở rộng Tuy nhiên cịn có nhiều mặt hạn chế, là lĩnh vực rộng lớn với nhiều công việc phải làm để tạo Game hoàn chỉnh viết cốt truyện, vẽ đối tượng, xây dựng đồ Game tìm hiểu lập trình, Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 83 thân em khó phát triển rộng chuyên sâu, nên hi vọng tương lai có đội ngũ chuyên nghiệp phát triển đề tài Do hạn chế kiến thức, thời gian kinh nghiệm, đề tài chắn khơng tránh khỏi thiếu sót Em hi vọng thời gian tới nhận nhiều ý kiến đóng góp thầy bạn sinh viên quan tâm tới lĩnh vực này, để em phát triển chương trình cách tốt Em xin chân thành cảm ơn Hà Nội, ngày 30 tháng năm 2012 Phạm Phương Tú – Lớp 08B1 – Khoa CNTT Trang 84 DANH MỤC TÀI LIỆU THAM KHẢO [1] Lê Phong, Hướng dẫn lập trình OpenGL [2] Lê Tấn Hùng, Lập Trình Game, Bộ Môn Công nghệ Phần Mềm – Viện Công Nghệ Thông Tin Và Truyền Thông – Đại Học Bách Khoa Hà Nội [3] Björn Nilson, Martin Söderberg, Game Engine Architecture [4] Clayton Walnum, 3D graphics programing with OpenGL [5] Dave Eberly, Lars Bishop, Turner Whitted, Mark Finchm, Michael Shantz, Designing a PC [6] Michal Valient, 3D Engines in Games [7] Philip Chu, Game Development with Unity [8] Ryan Henson Creighton, Unity 3D Game Development by Example Beginers Guide [9] Will Goldstone, Unity Game Development Essentials Phạm Phương Tú – Lớp 08B1 – Khoa CNTT