ĐẠ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 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
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 là
người trực tiếp, nhiệt tình hướng dẫn tôi hoàn thành khóa luận tốt nghiệp này.
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 cùng nhau nghiên cứu.
Tôi xin gửi lời cảm ơn tới toàn thể các thầy giáo, cô giáo tại Trường Đại học Công
Nghệ - Đai học Quốc gia Hà Nội những người đã hết lòng dạy cho tôi những kiến thức
hết sức bổ ích trong 4 năm học qua.
Xin cảm ơn gia đình và những người bạn đã dành cho tôi tình thương yêu và sự hỗ
trợ tốt nhất.
Hà nội, ngày 22 tháng 05 năm 2009
3.1. Khái niệm khung cảnh và cách tổ chức khung cảnh ............................................ 18
3.3. Thiết kế chức năng ............................................................................................. 28
Chương 4. Tổng kết ...................................................................................................... 41
4.1. Kết quả .............................................................................................................. 41
4.2. Hướng phát triển ................................................................................................ 43
Bảng các thuật ngữ
Thuật ngữ Ý nghĩa
Axis aligned bounding box Là một loại bounding volume có dạng
hình hộp, các cạnh dọc theo 3 trục xyz.
Bounding Sphere Là một loại bounding volume có dạng hình
cầu.
Bounding Volume Là danh từ chung chỉ các loại hình học đơn
giản được sử dụng để mô tả một không
gian bao bọc hoàn toàn một vật thể nào đó.
Event Đơn vị truyền thông liên tiến trình được
gửi đến bởi Hệ điều hành.
Game Engine Middleware cung cấp một giao diện đơn
giản hơn để phát triển game .
Mesh Là một mạng lưới các đa giác dùng để mô
tả hình dạng của vật thể trong không gian 3
chiều.
OpenGL Một chuẩn 3d graphic API .
Render Là việc từ các dữ liệu về khung cảnh, đối
tượng 3D, ta thực hiện các phép biến đổi,
các tính toán để đưa ra hình ảnh 2D thu
được tại vị trí nhìn ( giống nhau quá trình
mắt người hay các camera thu hình ảnh 2D
từ môi trường ).
Texture Là một hoặc một loạt các bức ảnh dùng để
tăng độ chi tiết cho các đối tượng.
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 (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).
1.3. Giới thiệu chung
Như đã giới thiệu ở trên, Game Engine là một lớp trung gian giữa game và nề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 (x
min,
y
min,
z
min
), (
x
max,
y
max,
z
max
)
+ Sphere : hình cầu, được mô tả bởi tọa độ tầm và bán kính.
+ LineSequent, Line, Ray : đoạn thẳng, đường thẳng, tia.
+ Matrix : ma trận sử dụng để biểu diễn các phép biến đổi : dịch,
xoay, co giãn trong không gian 3 chiều.
+ Plane : mặt phẳng được mô tả bằng các hệ số của phương trình :
ax + by + cz + d = 0.
+ Frustum : là hình chóp cụt biểu diễn khung nhìn của camera,
- Graphic Driver là module duy nhất trực tiếp sử dụng 3D Graphic API (openGL),
cung cấp cho các module khác một giao diện đơn giản hơn để tương tác với card đồ
họa.
- Quản lý tài nguyên là module quản lý các tài nguyên cần thiết để xây dựng một
khung cảnh 3D như mesh, animated mesh, texture 2D, cubemap…Module 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à module thực hiện việc tổ chức và kiểm soát các đối
tượng tồn tại trong một khung cảnh 3D, từ đó thực hiện quá trình render toàn bộ khung
cảnh đó tạo nên hình ảnh 2D tại vị trí nhìn. Module này được trình bày chi tiết trong các
chương sau của tài liệu này.
-Hiệu ứng ánh sáng và vật liệu là module 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. Module này được
bạn Bùi Hoàng Khánh trình bày 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à module mở rộng các thành phần của Quản lý khung cảnh
để mô 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…
Module này được bạn Trần Thái Dương trình bày trong khóa luận “Xây dựng Game
Engine đa nền tảng –Mô phỏng tự nhiên”.
- Chuyển động của đối tượng là module mở rộng các thành phần của Quản lý
hung cảnh, thực hiện quá trình nội suy trong các mô hình chuyển động ( thường là các
nhân vật trong game ) thông qua hai kĩ thuật thông dụng là keyframe và skinning.
Module 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”.
2.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.
Chương 3. Quản lý khung cảnh
3.1. Khái niệm khung cảnh và cách tổ chức khung cảnh
Khung cảnh có thể hiểu giống như một trường quay phim. Nó bao gồm tất cả các