Xây dựng cấu trúc game

Một phần của tài liệu Xây dựng game Highway bằng OpenGL ES 2.0. (Trang 37 - 43)

Một đối tƣợng trong game 3D luôn chứa ba thành phần: shader, texture, model. Nhƣ vậy, hai đối tƣợng khác nhau có thể dùng chung một mô hình, shader hoặc texture, để thuận tiện cho việc quản lý và tránh lãng phí bộ nhớ ta sẽ cần xây dựng một trình quản lý các tài nguyên này.

Trong game, nhiều đối tƣợng đƣợc vẽ ra cùng một lúc, cùng một thời điểm, vì vậy ta sẽ cần xây dựng một chƣơng trình quản lý tất cả các đối tƣợng này để đảm bảo các đối tƣợng đều đƣợc vẽ ra hoặc đƣợc cập nhật trạng thái khi thay đổi. Từ những vấn đề đã đề cập ở trên ta đƣa ra cấu trúc của một game thỏa mãn đƣợc các yêu cầu trên:

Nguyễn Thị Ngọc Thúy – 10CNTT4 Trang 30

H nh 26: Cấu trúc ame en ine

Ta xây dựng hai file Resourcer managerScene Manager. Trong đó file Resource Manager để quản lý toàn bộ các tài nguyên nhƣ model, texture của game. File Scene Manager chứa các thông tin hiển thị trên màn hình game.

Lớp Object: Là một lớp trừu tƣợng dùng để mô ta các đối tƣợng 2D, 3D và các hiệu ứng đƣợc sử dụng trong chƣơng trình.

H nh 27: Lớp dẫn xuất cơ b n của lớp Object

Lớp Object2D: dùng để vẽ các đối tƣợng 2D gồm có các thuộc tính:

ID background STATE 1

TEXTURE 15 X Y 0.0, 0.0 SIZE 800, 600

Nguyễn Thị Ngọc Thúy – 10CNTT4 Trang 31 SHADER 3

POSITION -400.0, -240.0, 0.0 SCALE 2.0, 1.7, 1.0

Trong đó:

- IDlà một giá trị duy nhất cho một đối tƣợng. - STATE trạng thái của đối tƣợng ẩn hoặc hiện. - TEXTURE ID của texture.

- X Y là tọa độ lấy màu của sprite.

- SIZE width, height - Kích thƣớc chiều dài và chiều rộng lấy màu trong sprite lớn.

- POSITION là vị trí của đối tƣợng trong không gian.

- ROTATION là góc quay theo trục x, y, z.

- SCALE là tỷ lệ của đối tƣợng.

Lớp Object3D: dùng để vẽ các đối tƣợng 3D gồm có các thuộc tính sau:

#Objects: 1 #ROAD ID 0 MODEL 8 TEXTURES 1 TEXTURE 4 CUBETEXTURES 0 SHADER 0 LIGHTS 0 LIGHT 0 POSITION 0.0, 0.0, 0.0 ROTATION 0.0, 0.0, 0.0 SCALE 0.15, 0.03, 5.0 - #Objects: số lƣợng đối tƣợng 3D. - #Tên đối tƣợng.

- ID thuộc tính duy nhất của game. - MODEL ID của model.

Nguyễn Thị Ngọc Thúy – 10CNTT4 Trang 32 - TEXTURE ID của texture.

- CUBETEXTURES Số lƣợng của texture bube. - SHADER ID của shader.

- LIGHTS Số lƣợng ánh sáng. - LIGHT ID của ánh sáng.

- POSITION là vị trí của đối tƣợng trong không gian.

- ROTATION là góc quay theo trục x, y, z.

- SCALE là tỷ lệ của đối tƣợng.

Lớp Resource manager: Chứa tất cả các tài nguyên đƣợc sử dụng trong chƣơng trình, bao gồm texture, shader, các model 3D và 2D, có chức năng khởi tạo tất cả tài nguyên khi chƣơng trình bắt đầu thực thi và thu dọn tất cả càng tài nguyên này khi chƣơng trình kết thúc.

Lớp Scene manager: Chứa một danh sách các đối tƣợng 2D, 3D trong chƣơng trình nhƣ nhân vật, thực đơn, camera… khi chƣơng trình cập nhật, hay thực hiện vẽ thì tất cả các đối tƣợng trong Scenes đều đƣợc cập nhật hay vẽ ra màn hình.

H nh 28: Sơ đồ cấu trúc mối quan hệ giữa Resource mana er và Scene mana er

Scene Manager và Resource Manager đều đƣợc xây dựng với cấu trúc Singleton. Để dễ truy cập và xử lý.

Nguyễn Thị Ngọc Thúy – 10CNTT4 Trang 33 Cấu trúc file có dạng: #Models: 2 ID 0 FILE ../sdcard/ExamGL/Resources/Models/gateway.nfg ID 1 FILE ../sdcard/ExamGL/Resources/Models/SkyBox.nfg #Textures: 2 ID 0 FILE ../sdcard/ExamGL/Resources/Textures/Terrain.tga TILING REPEAT ID 1 FILE ../sdcard/ExamGL/Resources/Textures/background_ gamePlay.tga TILING CLAMP #Shaders: 2 ID 0 VS ../sdcard/ExamGL/Resources/Shaders/Basic.vs FS ../sdcard/ExamGL/Resources/Shaders/Basic.fs ID 1 VS ../sdcard/ExamGL/Resources/Shaders/Basic.vs FS ../sdcard/ExamGL/Resources/Shaders/Cube.fs Trong đó Model: - #Model số lƣợng.

- ID: một giá trị duy nhất cho một model. - FILE: đƣờng dẫn tƣơng đối đến file model.

Texture:

- #Textures: Số lƣợng texture. - ID giá trị duy nhất của texture.

- FILE: đƣờng dẫn tƣơng đối đến filetexture.

Nguyễn Thị Ngọc Thúy – 10CNTT4 Trang 34

Shader:

- #Shaders: Số loại shader - ID giá trị duy nhất của shader.

- VS đƣờng dẫn tƣơng đối đến file vertex shader. - FS đƣờng dẫn tƣơng đối đến file fragment shader.

Lớp GameState: Là một lớp trừu tƣợng chứa thông tin một trạng thái của chƣơng trình. Tƣơng tự nhƣ một vòng lặp game. Dùng SetState để chuyển đổi giữa các game state với nhau.

Từ đó ta xây dựng các lớp dẫn xuất của game state để tạo ra các state cho game.

H nh 29: Lớp dẫn xuất của lớp game state

Lớp GamePlay: Là lớp chính thực hiện các thao tác lời gọi khởi tạo, cập nhật các đối tƣợng, vẽ các đối tƣợng và dọn dẹp các tài nguyên khi chƣơng trình kết thúc.

Nguyễn Thị Ngọc Thúy – 10CNTT4 Trang 35

Một phần của tài liệu Xây dựng game Highway bằng OpenGL ES 2.0. (Trang 37 - 43)