LUẬN VĂN: XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG MÔ PHỎNG TỰ NHIÊN docx

55 376 1
LUẬN VĂN: XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG MÔ PHỎNG TỰ NHIÊN docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Thái Dương XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG PHỎNG TỰ NHIÊN KHÓA 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ần Thái Dương XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG PHỎNG TỰ NHIÊN KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hướng dẫn: ThS. Vũ Quang Dũng HÀ NỘI - 2009 LỜI CẢM ƠN Trước hết tôi xin gửi lời cảm ơn chân thành tới Thạc sĩ Vũ Quang Dũng người trực tiếp hướng dẫn và giúp đỡ tôi trong suốt quá trình hoàn thành khóa luận này. Tôi xin bày tỏ lòng biết ơn sâu sắc đến các thầy cô đã giảng dạy tôi trong suốt bốn năm học vừa qua, đã cung cấp cho tôi những kiến thức quý báu và phương pháp duy đúng đắn để tôi có thể có được nền tảng vững chắc bước đi trên con đường của mình. Tôi xin gửi lời cảm ơn tới các bạn trong nhóm làm khóa luận đã giúp đỡ tôi thực hiện khóa luận này. Tôi cũng xin cảm ơn phòng thí nghiệm Toshiba đã giúp đỡ vào tạo cho tôi môi trường làm việc và học tập trong quá trình thực hiện khóa luận của mình. Và lời cuối cùng, tôi xin tỏ lòng biết ơn sâu sắc đến gia đình, bạn bè và những người thân đã luôn ở bên cạnh động viên, ủng hộ tôi trong những lúc khó khăn nhất, giúp tôi vượt qua được nhưng khó khăn trong học tập cũng như trong cuộc sống. Hà Nội, ngày 22 tháng 05 năm 2009 Sinh viên Trần Thái Dương TÓM TẮT Ngày nay, Game Engine là thành phần không thể thiếu trong bất cứ một quy trình phát triển trò chơi điện tử nào. Sức mạnh của trò chơi phụ thuộc chính vào sức mạnh của Game Engine được sử dụng để phát triển nó. Trong khóa luận này, tôi sẽ giới thiệu sơ lược kiến trúc chung của Game Engine đang được phát triển nằm trong dự án “Xây dựng Game Engine đa nền tảng” trong chương 1 và chương 2. Chương 3, sẽ được dành để trình bày các phương pháp triển khai các kĩ thuật được sử dụng để cung cấp khả năng phỏng các hiện tượng tự nhiên cho Game Engine, dựa trên hình quản lí khung cảnh 3D được trình bày trong khóa luận của bạn Trương Đức Phương và hình quản lí tài nguyên được trình bày trong khóa luận của bạn Hoàng Tuấn Hưng. Cuối khóa luận sẽ đưa ra một số thông tin chạy thử của các ứng dụng demo cho các kĩ thuật đã được triển khai. Qua đó đánh giá bước đầu về hiệu quả ứng dụng của các kĩ thuật đó. Cuối cùng tôi sẽ đưa ra định hướng tiếp theo sau khi hoàn thành khóa luận này. MỤC LỤC Chương 1. Đặt vấn đề 2 1.1. Bối cảnh nghiên cứu 2 1.2. Mục tiêu 2 1.3. Giới thiệu chung 3 Chương 2. Kiến trúc tổng thể 4 2.1. Thành phần Các kiểu dữ liệu cơ bản 5 2.2. Thành phần Giao tiếp với hệ điều hành 6 2.3. Thành phần Render Engine 7 2.3.1. Khái quát về Render Engine 7 2.3.2. Kiến trúc của Render Engine 8 2.4. Các thành phần còn lại 9 Chương 3. phỏng Tự nhiên 10 3.1. Khái Quát 10 3.2. phỏng mặt nước 11 3.2.1. Thiết kế cơ bản 11 3.2.2. Thiết kế chức năng 14 3.2.3. Triển khai lớp đề xuất: 21 3.3. Hệ thống hạt 24 3.3.1. Thiết kế cơ bản 25 3.3.2. Thiết kế chức năng 26 3.3.3. Triển khai lớp đề xuất 28 3.4. Địa hình 31 3.4.1. Thiết kế cơ bản 33 3.4.2. Thiết kế chức năng 34 3.4.3. Triển khai lớp đề xuất 38 Chương 4. Kết luận 42 4.1. Kết quả 42 4.1.1. phỏng mặt nước 42 4.1.2. Hệ thống hạt 43 4.1.3. Địa hình 44 4.2. Hướng phát triển 44 Danh Mục Hình Vẽ Hình 1: Kiến trúc phân tầng của GEM 3 Hình 2: Kiến trúc tổng thể 4 Hình 3: Sơ đồ lớp của thành phần Các kiểu dữ liệu cơ bản 5 Hình 4: Quá trình điều phối event. 7 Hình 5: Kiến trúc phân tầng của Render Engine 8 Hình 6: Biểu đồ gói của Render Engine. 8 Hình 7: Sơ đồ lớp cơ bản của package phỏng Mặt Nước 12 Hình 8: Quá trình hoạt động của package Phỏng Mặt Nước 13 Hình 9: Sơ đồ luồng thực hiện chức năng Tiền khởi tạo 14 Hình 10: Sơ đồ luồng thực hiện việc khởi tạo đối tượng WaterSceneNode 16 Hình 11: Sơ đồ tạo hiệu ứng tăng giảm cường độ sóng theo thời gian 17 Hình 12: Quá trình render normal map 18 Hình 13: Sơ đồ hoạt động của chương trình Render mặt nước 20 Hình 14: Sơ đồ lớp WaterParameters 21 Hình 15: Sơ đồ triển khai lớp WaterEffect 22 Hình 16: Sơ đồ triển khai lớp WaterSceneNode 23 Hình 17: Thiết kế lớp cơ bản của hệ thống hạt 25 Hình 18: Sơ đồ thực hiện chức năng Khởi tạo đối tượng ParticleSystemSceneNode 26 Hình 19: Sơ đồ cập nhật vị trí hạt 27 Hình 20: Sơ đồ hoạt động của chức năng Render Hệ thống hạt 28 Hình 21: Sơ đồ triển khai Lớp ParticleParameters 28 Hình 22: Sơ đồ triển khai lớp ParticleEffect 29 Hình 23: Sơ đồ quan hệ Lớp đun Hệ thống hạt 31 Hình 24: Kiến trúc cơ bản của đun Địa hình 33 Hình 25: Sơ đồ hoạt động của đun Địa hình 34 Hình 26: Luồng thực hiện chức năng khởi tạo 35 Hình 27: Sơ đồ hoạt động của chức năng Cập nhật Clipmap 36 Hình 28: Sơ đồ hoạt động chương trình Render Block 37 Hình 29: Triển khai Lớp TerrainParameters 38 Hình 30: Lớp TerrainEffect 39 Hình 31: Sơ đồ lớp TerrainSceneNode và các lớp thành phần. 40 Hình 32: Hình ảnh demo hệ thống hạt 43 Hình 33: Hình ảnh chương trình demo phỏng mặt nước 45 Bảng thuật ngữ và các kí hiệu viết tắt (nếu có) Thuật ngữ Ý nghĩa Viết tắt Animated Mesh Là một mesh được dùng để tả các đố i tượng chuyển động. Bounding box Hình hộp bé nhất chứa trọn vẹn đối tượng 3D Bounding Sphere Hình cầu bé nhất chứa trọn vẹn đối tượng 3D clip space không gian tọa độ vertex được chiếu lên bởi camera clipmap là phương pháp lưu trữ tạm thời một bộ phận của nguồn dữ liệu có kích thước lớn Cube Map Là tập hợp 6 texture 2D được xếp liên tục trong 6 mặt của hình hộp Environment Map Là texture lưu trữ thông tin về ánh sáng phản xạ từ môi trường. Thường có dạng cubemap event Là đơn vị truyền thông liên tiến trình được gửi đến bởi Hệ điều hành fragment program chương trình shader xử lí các biến đổi đối với mỗi pixel. Graphic Processor Unit Đơn vị xử lí đồ họa, có nhiệm vụ render ra màn hình hình ảnh 3D GPU heightfield mảng lưu trữ giá trị độ cao heightmap texture lưu trữ giá trị độ cao của bề mặt địa hình local space không gian riêng của đối tượng 3D. Massively Multiplayer Online Role-Playing Game Trò chơi nhập vai trực tuyến nhiều người chơi MMORPG Mesh Mạng lưới các đa giác dùng để tả hình dạng của vật thể trong không gian 3 chiều. Message System Là hệ thống quản lí các thông điệp trao đổi giữa các tiến trình của Hệ điều hành normal map texture lưu giữ các giá trị các vector pháp tuyến trên bề mặt Occlusion culling Thực hiện cắt bỏ các đối tượng bị chắn bởi một đối tượng khác trong vùng quan sát offscreen render render nhưng hình ảnh được tạo ra không được vẽ lên màn hình Render Tái tạo hình ảnh phản chiếu 2D của đối tượng 3D trong camera. shader Là tập các chỉ lệnh cho GPU được dùng để render các hiệu ứng shading language ngôn ngữ được dùng để triển khai shader cho GPU Texture Các bức ảnh được dùng để dán lên các đối tượng 3D nhằm làm tăng độ chi tiết cho đối tượng Vertex Đỉnh trong không gian 3D vertex program chương trình shader xử lí các biến đổi đối với vertex. View Frustum Trường quan sát của camera View frustum culling Thực hiện cắt bỏ các đối tượng nằm ngoài vùng quan sát của camera world space không gian thế giới trong OpenGL 1 Mở đầu Hiện nay, cùng với sự phát triển của ngành công nghiệp phần mềm, quy trình phát triển game cũng đã thay đổi rất nhiều. Thay vì phát triển các game dựa trên các giao diện lập trình đồ họa 3D cấp thấp, người ta thường phát triển Game Engine như là một hệ thống phần mềm trung gian cho quy trình phát triển game. Thực tế, ngành công nghiệp phát triển game không chỉ đem lại lợi ích lớn về kinh tế cho các công ty phát hành game mà nó còn thúc đẩy sự phát triển của phần mềm cũng như phần cứng máy tính. Đặc biệt là nó thúc đẩy sự phát triển của các kĩ thuật xử lí tái tạo thực tại ảo trở nên chân thực hơn và được ứng dụng rộng rãi trong các lĩnh vực khác của đời sống xã hội như giáo dục, y tế Ở Việt Nam hiện nay, MMORPG đang bùng nổ mạnh mẽ với số lượng người chơi đông đảo và thu hút người chơi ở nhiều đối tượng, lứa tuổi khác nhau. Tuy nhiên, người chơi vẫn thường phải chơi game được phát hành bởi các công ty nước ngoài hoặc game được phát hành bởi các công ty trong nước được phát triển bởi các công ty nước ngoài. Vì vậy nhóm chúng tôi đã bắt đầu thực hiện việc tìm hiểu và xây dựng một Game Engine dành cho việc phát triển MMORPG với mục tiêu mong muốn dần làm chủ được công nghệ xây dựng và phát triển game. Để phỏng khung cảnh ngoài trời của game, Game Engine phải cung cấp khả năng phỏng lại các hiện tượng tự nhiên đáp ứng thời gian thực. Vì đòi hỏi đó, tôi đã thực hiện khóa luận này với mục đích xây dựng đun phỏng Tự nhiên trong dự án “Xây dựng Game Engine đa nền tảng”. Tuy nhiên, vì giới hạn về thời gian và kiến thức, hiện tại trong khóa luận này tôi sẽ chỉ diễn giải các phương pháp triển khai các kĩ thuật phỏng địa hình, mặt nước và hệ thống hạt. Với các chức năng đó, ta có thể tạo ra được khung cảnh 3D ngoài trời đơn giản từ Hai chương đầu của khóa luận dành để giới thiệu chung về Game Engine và kiến trúc tổng thể của nó. Nội dung chính phương pháp triển khai các kĩ thuật trong đun phỏng Tự nhiên sẽ được trình bày chi tiết trong chương 3 của khóa luận này. 2 Chương 2. Đặt vấn đề 2.1. Bối cảnh nghiên cứu Ngành công nghiệp phát triển game trên thế giới đang phát triển như vũ bão. Cách đây 20 năm, game rất đơn giản và chỉ cần một người hoặc một nhóm nhỏ người phát triển nhưng ngày nay, các game hiện đại với đồ họa và khả năng tương tác ấn tượng thường được phát triển bởi một đội ngũ đông đảo người thiết kế game, lập trình viên, nghệ sĩ… trong thời gian ròng rã từ một đến ba năm. Chính việc game ngày càng trở nên phức tạp như vậy nên hiện nay, các game thương mại không còn phát triển từ nguyên thủy nữa mà được phát triển lên từ game engine. Game engine hỗ trợ việc xây dựng game một cách nhanh chóng, đơn giản hơn đồng thời cung cấp khả năng tái sử dụng code cao do có thể phát triển nhiều game từ một game engine. Ở Việt Nam, Game online mới chỉ thực sự thâm nhập vào thị trường cách đây 6 năm nhưng chỉ trong khoảng thời gian ít ỏi đó, chúng ta đã có một số lượng nhà phát hành game lên tới con số hàng chục, số game được phát hành cũng tương ứng với số lượng đó. Nhưng theo như chúng tôi được biết, gần như tất cả các game online đang được phát hành ở Việt Nam là được nhập khẩu từ nước ngoài, chủ yếu là Trung Quốc và Hàn Quốc ( trừ một số game nhỏ chơi trên web như đánh bài, đánh cờ ) Một câu hỏi mà có lẽ tất cả những người chơi game đều trăn trở là “bao giờ mới được chơi game Việt Nam?”. Chúng tôi chọn đề tài này làm khóa luận tốt nghiệp không phải với một tham vọng quá lớn, chỉ là muốn đi những bước chân chập chững đầu tiên vào thế giới phát triển game rộng lớn, để thu lượm kiến thức về lĩnh vực khó khăn nhưng đầy thú vị này và hi vọng ở một tương lai không xa, chúng tôi có thể góp một phần sức lực giái đáp trăn trở của cộng đồng người chơi game Việt Nam. 2.2. Mục tiêu Xây dựng một Game Engine đa nền có thể chạy trên 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 này được đặt tên là GEM. Đây là mục tiêu dài hạn, còn hiện tại, do thời gian làm luận văn chỉ khoảng 5 tháng nên nhóm chúng tôi chỉ tập trung hoàn thiện thành phần Render Engine trong Game Engine (Xem chi tiết ở chương 2). [...]... tại vị trí nhìn đun này được bạn Trương Đức Phương trình bày chi tiết trong khóa luận Xây dựng Game Engine đa nền tảng – Quản lí khung cảnh” ‒ Hiệu ứng ánh sáng và vật liệu là đun mở rộng các thành phần của Quản lý khung cảnh để tạo các hiệu ứng về ánh sáng, vật liệu, và đổ bóng đun này được bạn Bùi Hoàng Khánh trình bày chi tiết trong khóa luận Xây dựng Game Engine đa nền tảng – Hiệu ứng... keyframe và skinning đun này được trình bày chi tiết trong khóa luận Xây dựng Game Engine đa nền tảng – Quản lý tài nguyên và chuyển động đối tượng” của Hoàng Tuấn Hưng 3.4 Các thành phần còn lại Các thành phần Mạng, Trí tuệ nhân tạo, Tính toán vật lí, Âm thanh chưa được triển khai nên chúng tôi không đề cập đến trong tài liệu này 9 Chương 4 phỏng Tự nhiên 4.1 Khái Quát phỏng tự nhiên là một nhiệm... ‒ phỏng tự nhiên đun mở rộng các thành phần của Quản lý khung cảnh để phỏng các yếu tố tự nhiên cần có trong game như nước, địa hình, lửa, khói… đun này sẽ được trình bày chi tiết trong chương 3 của khóa luận này ‒ Chuyển động của đối tượng là đun mở rộng các thành phần của Quản lý khung cảnh, thực hiện quá trình nội suy trong các hình chuyển động (thường là các nhân vật trong game) ... ở trên, Game Engine là một lớp trung gian giữa gamenền tảng bên dưới, các thư viện lập trình cấp thấp GEM là một game engine nênnhiên Hình 1: Kiến trúc phân tầng của GEM nó cũng tuân thủ theo nguyên tắc này Đặc điểm đầu tiên của GEM là khả năng chạy đa nền Để đạt được điều đó, GEM sử dụng các bản build trên các nền tảng khác nhau (không sử dụng thông dịch) Các đoạn code phụ thuộc nền tảng sẽ... tương tác với thiết bị xử lí đồ họa ‒ Quản lý tài nguyên là đun quản lý các tài nguyên cần thiết để xây dựng 8 một khung cảnh 3D như mesh, animated mesh, texture 2D, cubemap… đun này được bạn Hoàng Tuấn Hưng trình bày trong khóa luận Xây dựng Game Engine đa nền tảng – Quản lý tài Nguyên và Chuyển động đối tượng” ‒ Quản lý khung cảnh là đun thực hiện việc tổ chức và kiểm soát các đối tượng tồn... biến đổi Fourier nhanh (FFT) khả năng phỏng mặt nước thời gian thực bằng máy tính cá nhân, với điều kiện kích thước vùng nước không quá lớn Error! Reference source not found Tuy nhiên để triển khai việc phỏng mặt nước trong Game Engine, ta cần có kĩ thuật đơn giản để có thể triển khai trên GPU Vì với ứng dụng phỏng lớn như các trò chơi 3D, thì ngoài việc phỏng được hình ảnh 3D bạn còn phải... trình đa nền ‒ hỗ trợ các tính năng của các card đồ họa thế hệ thứ ( từ 2002 đến nay ) Dựa trên các tiêu chí trên, chúng tôi đã lựa chọn Cg Shading Language Chi tiết về ngôn ngữ là hướng dẫn lập trình có thể tham khảo ở sách “The Cg Tutorial” Error! Reference source not found Như đã nói ở trên đun này hiện tại có 3 đun con độc lập: ‒ phỏng mặt nước: triển khai kĩ thuật phỏng mặt nước từ mô. .. phần duy nhất trong Game Engine giao tiếp với các thư viện đồ họa cấp thấp (cụ thể ở đây là openGL và Cg - Hình 5) 7 Hình 5: Kiến trúc phân tầng của Render Engine 3.3.2 Kiến trúc của Render Engine Render engine được chia thành các đun sau (Hình 6): Hình 6: Biểu đồ gói của Render Engine ‒ Graphic Driver là đun duy nhất trực tiếp sử dụng 3D Graphic API (openGL), cung cấp cho các đun khác một giao... Hệ thống hạt: phỏng các hiện tượng như mưa, lửa, vụ nổ, pháo hoa, khói, tuyết, hay các hiệu ứng thị giác như phép thuật ‒ Địa hình: render địa hình có ứng dụng kĩ thuật LOD 10 4.2 phỏng mặt nước phỏng mặt nước là một trong các công việc phức tạp và khó khăn nhất hiện nay trong lĩnh vực đồ họa 3D bởi tính phức tạp và khối lượng phép toán cần thực hiện Do đó việc thực hiện phỏng mặt nước... Render Engine 3.3.1 Khái quát về Render Engine Render Engine là thành phần cốt lõi của một Game Engine Nó hỗ trợ người lập trình game các công việc thiết yếu để tạo ra một khung cảnh 3D Người dùng sẽ không cần biết nhiều đến những công việc tầng thấp như quá trình đọc file tài nguyên, sử dụng 3D Graphic API, triển khai các hiệu ứng trên GPU… mà chỉ cần dùng giao diện do Render Engine cung cấp Render Engine . hiện khóa luận này với mục đích xây dựng mô đun Mô phỏng Tự nhiên trong dự án Xây dựng Game Engine đa nền tảng . Tuy nhiên, vì giới hạn về thời gian và kiến thức, hiện tại trong khóa luận này. và đổ bóng. Mô đun này được bạn Bùi Hoàng Khánh trình bày chi tiết trong khóa luận Xây dựng Game Engine đa nền tảng – Hiệu ứng ánh sáng và vật liệu”. ‒ Mô phỏng tự nhiên là mô đun mở rộng. dần làm chủ được công nghệ xây dựng và phát triển game. Để mô phỏng khung cảnh ngoài trời của game, Game Engine phải cung cấp khả năng mô phỏng lại các hiện tượng tự nhiên đáp ứng thời gian thực.

Ngày đăng: 28/06/2014, 01:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan