Đề tài Xây dựng game engine đa nền tảng quản lý tài nguyên và chuyển động của các đối tượng

Ngày nay, ngành công nghiệp Game đang trên đà phát triển nhanh chóng song song với việc phát triển phần cứng. Game engine sẽlà một công cụhữu ích cho việc phát triển Game, nếu như các nhà phát triển mỗi khi bắt tay vào làm một Game nào đó từđầu thì sẽrất vất vảvà mất nhiều công sức. Với một Game engine thì công việc đó trởnên đơn giản và nhanh hơn nhiều, nó sẽcung cấp các API cho người phát triển Game có thểsửdụng và tạo ra những hiệu ứng một cách nhanh chóng. Khóa luậnsẽtrình bày tổng quan kiến trúc vềGame engine mà chúng tôiđang xây dựng và đi chi tiết vào hai thành phần là quản lí tài nguyên trong Game và các chuyển động của đối tượng. Phần đầu sẽ giới thiệu một cách tổng quan nhất vềhệthống, các thành phần sẽcó trong Game engine, và thiết kếcho các thành phần đó. Phần thứhai khóa luận dành đểgiới thiệu vềcác tàinguyên sẽcó trong Game engine, tầm quan trọng của việc quản lí tài nguyên cho một hệthống. Đặc biệt khóa luận sẽtrình bày cách tổchức và quản lí tài nguyên một cách hiệu quảnhất. Phần thứba của khóa luận sẽgiới thiệu vềcác chuyển động của các đối tượng trong Game, các kỹthuật đểcó thểtạo ra được các loại chuyển động cho đối tượngvà cách triển khai các kỹthuật vào trong Game engine. Phần cuối cùng sẽlà tổng kết những kết quảđã đạt đượccủa khóa luận, những vấn đềcòn tồn tại và hướng phát triển tiếp theo của đềtài.

pdf52 trang | Chia sẻ: nhungnt | Lượt xem: 1795 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng game engine đa nền tảng quản lý tài nguyên và chuyển động của các đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Hoàng Tuấn Hưng XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG 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 1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Hoàng Tuấn Hưng XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG QUẢN LÝ TÀI NGUYÊN VÀ CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG 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: TS. Nguyễn Việt Hà Cán bộ đồng hướng dẫn: ThS. Vũ Quang Dũng HÀ NỘI - 2009 i Lời cảm ơn Tôi xin gửi lời cảm ơn tới các thầy cô trong khoa Công nghệ Thông tin trường Đại học Công Nghệ, Đại học Quốc Gia Hà Nội, đặc biệt là các thầy cô ở Bộ môn Công nghệ Phần mềm đã giúp đỡ tôi trưởng thành trong những năm học tập và rèn luyện ở môi trường đại học. Xin chân thành cảm ơn thầy Nguyễn Việt Hà, thầy Vũ Quang Dũng và phòng thí nghiệm TOSHIBA-COLTECH đã tạo điều kiện cho tôi tìm hiểu, nghiên cứu và học hỏi những kinh nghiệm trong quá trình nghiên cứu và làm khoá luận. Tôi xin gửi lời cảm ơn tới các bạn trong lớp K50CD, K50CNPM đã ủng hộ, khuyến khích tôi trong suốt quá trình học tập tại trường. Và lời cuối cùng, tôi xin bày tỏ lòng chân thành và biết ơn vô hạn tới cha mẹ, và người thân, những người luôn ở bên cạnh tôi những lúc tôi khó khăn nhất, giúp tôi vượt qua khó khăn trong học tập cũng như trong cuộc sống. Hà Nội, ngày 10 tháng 05 năm 2009 Sinh viên Hoàng Tuấn Hưng ii TÓM TẮT Ngày nay, ngành công nghiệp Game đang trên đà phát triển nhanh chóng song song với việc phát triển phần cứng. Game engine sẽ là một công cụ hữu ích cho việc phát triển Game, nếu như các nhà phát triển mỗi khi bắt tay vào làm một Game nào đó từ đầu thì sẽ rất vất vả và mất nhiều công sức. Với một Game engine thì công việc đó trở nên đơn giản và nhanh hơn nhiều, nó sẽ cung cấp các API cho người phát triển Game có thể sử dụng và tạo ra những hiệu ứng một cách nhanh chóng. Khóa luận sẽ trình bày tổng quan kiến trúc về Game engine mà chúng tôi đang xây dựng và đi chi tiết vào hai thành phần là quản lí tài nguyên trong Game và các chuyển động của đối tượng. Phần đầu sẽ giới thiệu một cách tổng quan nhất về hệ thống, các thành phần sẽ có trong Game engine, và thiết kế cho các thành phần đó. Phần thứ hai khóa luận dành để giới thiệu về các tài nguyên sẽ có trong Game engine, tầm quan trọng của việc quản lí tài nguyên cho một hệ thống. Đặc biệt khóa luận sẽ trình bày cách tổ chức và quản lí tài nguyên một cách hiệu quả nhất. Phần thứ ba của khóa luận sẽ giới thiệu về các chuyển động của các đối tượng trong Game, các kỹ thuật để có thể tạo ra được các loại chuyển động cho đối tượng và cách triển khai các kỹ thuật vào trong Game engine. Phần cuối cùng sẽ là tổng kết những kết quả đã đạt được của khóa luận, những vấn đề còn tồn tại và hướng phát triển tiếp theo của đề tài. iii MỤC LỤC MỞ ĐẦU...................................................................................................................1 Chương 1.ĐẶT VẤN ĐỀ ........................................................................................3 1.1.Bối cảnh nghiên cứu............................................................................................................. 3 1.2.Mục tiêu................................................................................................................................ 3 1.3.Giới thiệu chung................................................................................................................... 3 Chương 2.KIẾN TRÚC TỔNG THỂ .....................................................................6 2.1.Các dữ liệu cơ bản ................................................................................................................ 7 2.2.Giao tiếp với hệ điều hành.................................................................................................. 8 2.3.Render Engine....................................................................................................................... 9 2.3.1.Khái quát về Render Engine .......................................................................................... 9 2.3.2.Kiến trúc của Render Engine ........................................................................................10 2.4. Các thành phần còn lại.......................................................................................................11 Chương 3.QUẢN LÝ TÀI NGUYÊN...................................................................12 3.1.Giới thiệu .............................................................................................................................12 3.2. Quản lý tài nguyên trong GEM ........................................................................................12 3.3. Liên kết giữa các thành phần ............................................................................................13 3.4. Các thành phần trong Resource Manager........................................................................14 3.5. Biểu đồ lớp ..........................................................................................................................15 3.5.1.Quản lý Mesh.................................................................................................................16 3.5.2.Quản lý Texture .............................................................................................................17 3.5.3.Quản lý Effect.................................................................................................................19 3.5.4.Quản lý AnimatedMesh................................................................................................20 3.5.5.Quản lý Material ............................................................................................................21 Chương 4.CHUYỂN ĐỘNG CỦA CÁC ĐỐI TƯỢNG ....................................23 4.1.Giới thiệu .............................................................................................................................23 4.2.Khái quát về animation ......................................................................................................23 4.3.Kỹ thuật tạo chuyển động nhân vật ..................................................................................23 4.3.1.Kỹ thuật nội suy Key-Frame.........................................................................................23 4.3.1.1. Giới thiệu..................................................................................................................24 4.3.1.2. Nội suy bậc 1 ............................................................................................................24 4.3.1.3. Nội suy bậc 2 ............................................................................................................25 4.3.1.4.Triển khai kỹ thuật key-frame ....................................................................................25 4.3.2.Kỹ thuật skinning ..........................................................................................................27 4.3.2.1.Giới thiệu...................................................................................................................28 4.3.2.2. Kỹ thuật Skeletal Subspace Deformation ...................................................................29 4.3.2.3. Kỹ thuật Animation Space ........................................................................................31 iv 4.3.2.4. Kỹ thuật Multi-Weight Enveloping ..........................................................................32 4.3.2.5.Triển khai skinning....................................................................................................33 Chương 5.THỰC NGHIỆM..................................................................................35 5.1. Demo key-frame .................................................................................................................35 5.2. Demo Skinning...................................................................................................................37 Chương 6.KẾT LUẬN............................................................................................39 6.1.Kết quả đạt được..................................................................................................................39 6.2.Định hướng tương lai .........................................................................................................39 PHỤ LỤC.................................................................................................................40 TÀI LIỆU THAM KHẢO......................................................................................44 v BẢNG CÁC CHỮ VIẾT TẮT API Application Programming Interface CPU Central Processing Unit GPU graphics processing unit LBS Linear Blend Skinning MWE Multi-Weight Enveloping SBS Spherical Blend Skinning SSD Skeletal Subspace Deformation vi DANH MỤC CÁC HÌNH VẼ BẢNG BIỂU Hình 1. Kiến trúc phân tầng của GEM .........................................................................4 Hình 2. Kiến trúc tổng thể............................................................................................6 Hình 3. Biểu đồ lớp của thành phần các kiểu dữ liệu cơ bản ........................................7 Hình 4. Quá trình điều phối event ................................................................................9 Hình 5. Kiến trúc phân tầng của Render Engine.........................................................10 Hình 6. Biểu đồ gói của Render Engine .....................................................................11 Hình 7. Mô hình quan hệ với các thành phần khác.....................................................12 Hình 8.Ví dụ Mesh Bank ...........................................................................................13 Hình 9. Mô hình liên kết với các thành phần khác......................................................14 Hình 10. Các thành phần trong Resource manager .....................................................15 Hình 11. Biểu đồ lớp Mesh và MeshBank..................................................................16 Hình 12. Biểu đồ lớp Texture và TextureBank...........................................................17 Hình 13. Biểu đồ lớp Effect và EffectBank ................................................................19 Hình 14. Biểu đồ lớp AnimatedMesh và AnimatedMeshBank ...................................20 Hình 15. Biểu đồ lớp Material....................................................................................21 Hình 16. Ví dụ key-frame ..........................................................................................24 Hình 17. Nội suy bậc 1 và bậc 2.................................................................................25 Hình 18. Mô hình tổ chức các loại animation.............................................................26 Hình 19. Biểu đồ lớp KeyFrame ................................................................................27 Hình 20.Ví dụ Skinning .............................................................................................28 Hình 21. Thành phần trong một nhân vật ...................................................................29 Hình 22. Hạn chế kỹ thuật SSD .................................................................................30 Hình 23. Sử dụng kỹ thuật SSD .................................................................................31 Hình 24. Sử dụng kỹ thuật SBS .................................................................................31 Hình 25. Sơ đồ chuyển trục tọa độ .............................................................................32 Hình 26. Mô hình tổ chức khung xương.....................................................................34 Hình 27. Demo key-frame .........................................................................................37 Hình 28. Demo Skinning ...........................................................................................38 1 MỞ ĐẦU Trong thời đại công nghệ thông tin như hiện nay, sản phẩm công nghệ ngày càng chịu sự đánh giá khắt khe hơn từ phía những người dùng, đặc biệt là về sản phẩm Game được nhận rất nhiều sự đánh giá từ phía các game thủ, hay chỉ là những người chơi bình thường. Ngành công nghiệp game hiện nay có thể nói là bùng nổ, với tốc độ phát triển đến chóng mặt, rất nhiều những game hay và hấp dẫn đã được ra đời trong thời gian qua. Đằng sau những Game phát triển và nổi tiếng như vậy đều có một Game Engine. Game engine là một công cụ hỗ trợ, một middleware giúp người phát triển viết 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 mã nguồn cao do có thể phát triển nhiều game từ một game engine. Tại Việt Nam, ngành công nghiệp Game mới chỉ đang phát triển đa số vẫn là phát hành Game là chủ yếu, còn việc xây dựng một Game Engine vẫn gần như chưa có. Đây là một lĩnh vực tiềm năng, hứa hẹn sẽ phát triển nhanh ở Việt Nam trong thời gian sắp tới. Từ những xu hướng phát triển trên, khóa luận tập trung nghiên cứu xây dựng một Game engine để phát triển tại Việt Nam. Hiện nay những Game engine nổi tiếng cũng khá nhiều, tuy nhiên giá thành một Game engine như vậy không phải là nhỏ, vì vậy nhóm phát triển muốn xây dựng một Game engine phục vụ cho những người đam mê về làm Game nhưng không đủ tài chính để có thể mua được một Game engine thương mại. Khóa luận sẽ tập trung đi sâu vào hai thành phần trong Game engine đó là: quản lí tài nguyên và các chuyển động của đối tượng. Trong các phần mềm, việc quản lí tài nguyên luôn được xem xét và cân nhắc cẩn thận để làm sao có thể quản lí một cách hiệu quả nhất, đặc biệt trong Game thì vấn đề này càng cấp thiết hơn bao giờ hết. Một Game muốn được phát triển sẽ phải quản lí tài nguyên tốt, hạn chế tới mức tối đa sử dụng tài nguyên của máy tính người chơi và cũng để tăng tốc cho chương trình. Cần có cơ chế cấp phát và giải phóng bộ nhớ một cách hiệu quả. Trong Game bao giờ cũng phải có các đối tượng chuyển động, vì vậy cần có cách thức phương pháp để quản lí và tạo ra được các nhân vật có chuyển động. Khóa luận sẽ tập trung vào nghiên cứu các kỹ thuật để tạo ra các chuyển động cho nhân vật để cho các chuyển động ngày càng giống với chuyển động của con người, tạo được hiệu ứng tốt cho Game. 2 Ngoài phần mở đầu kết cấu khóa luận bao gồm 6 chương:  Chương 1, 2: Đặt vấn đề và tổng quan về hệ thống Game engine của cả nhóm.  Chương 3: Giới thiệu về quản lí tài nguyên và cách tổ chức tài nguyên trong hệ thống.  Chương 4: Giới thiệu về chuyển động cho các đối tượng, đi vào các kỹ thuật tạo chuyển động.  Chương 5: Thực nghiệm các kỹ thuật được nêu ở chương 4  Chương 6: Kết luận, thực hiện đánh giá kết quả đã đạt được, hướng phát triển sắp tới. 3 Chương 1.ĐẶT VẤN ĐỀ 1.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. 1.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 (MMO). 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). 1.3.Giới thiệu chung 4 Như đã giới thiệu ở trên, Game Engine là một lớp trung gian giữa game và nề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ên dĩ nhiên nó cũng tuân thủ theo nguyên tắc này. Hình 1. Kiến trúc phân tầng của GEM Đặ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 (chứ không phải sử dụng thông dịch). Các đoạn mã nguồn phụ thuộc nền tảng sẽ được phân chia bằng việc sử dụng các cờ tiền biên dịch, hạn chế tối đa việc sử dụng các lớp abstract – vì việc này sẽ làm giảm hiệu suất chương trình đáng kể [10]. Cũng vì lí đo chạy đa nền 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, do chuẩn OpenGL là chuẩn mở và không bị phụ thuộc vào hệ điều hành. GEM được thiết kế hướng đối tượng và yêu cầu về hiệu năng chạy cao nên chúng tôi sử dụng ngôn ngữ C++ - Ngôn ngữ đáp ứng hoàn hảo các điều kiện trên. Đa số các Game Engine trên thế giới hiện nay đều được phát triển bằng ngôn ngữ C++. Chúng tôi 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ả năng tương thích với một phạm vi rộng cấu hình phần cứng là một điều kiện quan trọng, dự kiến sẽ hỗ trợ các card đồ họa hỗ trợ openGL 1.4 và shader 1.0 trở 5 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 6 Chương 2.KIẾN TRÚC TỔNG THỂ GEM là được chia thành nhiều thành phần để tiện cho việc phát triển và bảo trì. Cụ thể GEM gồm các thành phần như sau: Hình 2. Kiến trúc tổng thể Ghi chú: Do thời gian làm luận văn có hạn, chúng tôi mới chỉ hoàn thành những thành phần sau: Giao tiếp với hệ điều hành, Các kiểu dữ liệu cơ bản, Render Engine. Những thành phần này đủ để hỗ trợ người sử dụng tạo ra các khung cảnh 3D và tương tác với chúng. 7 2.1.Các dữ liệu cơ bản Các kiểu dữ liệu cơ bản là thành phần bao gồm các cấu trúc dữ liệu cơ bản như mảng động, vector, ma trận… các phép toán trên các kiểu dữ liệu đó cung cấp cho thành phần khác sử dụng. Hình 3. Biểu đồ lớp của thành phần các kiểu dữ liệu cơ bản Các kiểu dữ liệu này có thể chia thành 2 nhóm chính: - Các yếu tố trong không gian 3D:  Vector2, Vector, Vector4: các loại vector biểu diễn tọa độ 2 chiều, 3 chiều và tọa độ đồng nhất.  Aabb ( Axis aligned bounding box ): hình hộp chữ nhật có các cạnh dọc theo 3 trục xyz, được mô tả bằng 2 điểm (xmin, ymin, zmin ), ( xmax, ymax, zmax) 8  Sphere: hình cầu, đ