Tài liệu Khóa luận Ứng dụng trí tuệ nhân tạo trong xây dựng game - Nguyễn Thanh Phong: TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ TRI THỨC
NGUYỄN THANH PHONG
ỨNG DỤNG TRÍ TUỆ NHÂN TẠO
TRONG XÂY DỰNG GAME
KHÓA LUẬN CỬ NHÂN TIN HỌC
TP. HCM, 2005
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ TRI THỨC
NGUYỄN THANH PHONG - 0112191
ỨNG DỤNG TRÍ TUỆ NHÂN TẠO
TRONG XÂY DỰNG GAME
KHÓA LUẬN CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN
TH.S BÙI TIẾN LÊN
NIÊN KHÓA 2001-2005
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
...............................................................................
120 trang |
Chia sẻ: hunglv | Lượt xem: 1119 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Khóa luận Ứng dụng trí tuệ nhân tạo trong xây dựng game - Nguyễn Thanh Phong, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ TRI THỨC
NGUYỄN THANH PHONG
ỨNG DỤNG TRÍ TUỆ NHÂN TẠO
TRONG XÂY DỰNG GAME
KHÓA LUẬN CỬ NHÂN TIN HỌC
TP. HCM, 2005
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ TRI THỨC
NGUYỄN THANH PHONG - 0112191
ỨNG DỤNG TRÍ TUỆ NHÂN TẠO
TRONG XÂY DỰNG GAME
KHÓA LUẬN CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN
TH.S BÙI TIẾN LÊN
NIÊN KHÓA 2001-2005
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
......................................................................................................
LỜI CẢM ƠN
Em sẽ không thể hoàn thành luận văn nếu không có sự hướng dẫn và chỉ
bảo tận tình của thầy Bùi Tiến Lên. Em xin chân thành cảm ơn sự chỉ bảo của
thầy.
Em cũng rất cảm ơn các thầy cô trong khoa Công nghệ Thông tin trường
Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh đã tận tình giảng dạy, truyền đạt
những kiến thức quý báu và tạo điều kiện cho em hoàn thành luận văn này.
Xin chân thành cảm ơn sự giúp đỡ, động viên của của tất cả các bạn trong
quá trình thực hiện luận văn.
Em cũng muốn cảm ơn những người thân trong gia đình đã động viên, giúp
đỡ và tạo điều kiện để hoàn thành luận văn.
Mặc dù đã cố gắng hoàn thành luận văn với tất cả sự nổ lực của bản thân,
nhưng luận văn chắc chắn không tránh khỏi những thiếu xót. Em rất mong
nhận được sự thông cảm và chỉ bảo tận tình của các thầy cô và các bạn.
Tp.HCM 7/2005
Sinh viên thực hiện
Nguyễn Thanh Phong
Mục lục
MỤC LỤC
Chương 1 GIỚI THIỆU ................................................................................... 1
1. Lý do chọn đề tài ....................................................................................... 1
1.1. Các ngôn ngữ lập trình game............................................................ 1
1.2. Phân loại game.................................................................................. 2
1.2.1. Game hành động....................................................................... 2
1.2.2. Game nhập vai.......................................................................... 3
1.2.3. Game đua xe............................................................................. 3
2. Mục đích của đề tài ................................................................................... 3
Chương 2 CÁC THUẬT TOÁN TÌM ĐƯỜNG ĐI ....................................... 4
1. Mô tả các thủ tục tìm kiếm rộng, sâu và sâu dần ...................................... 6
2. Thuật giải tìm đường đi có giá thành nhỏ nhất AT ................................... 7
3.Tìm kiếm với tri thức bổ sung.................................................................... 8
4.Tìm đường đi trên đồ thị tổng quát ............................................................ 9
Chương 3 GAME ENGINE ........................................................................... 12
I. WED editor:................................................................................................... 13
1. Những khái niệm cơ bản ......................................................................... 13
a. Giao diện người dùng......................................................................... 13
b. Thanh Icon ......................................................................................... 15
c. Mode .................................................................................................. 15
d. Thiết kế một khung cảnh ................................................................... 14
e. Hướng đối tượng................................................................................ 16
f. Cửa sổ dự án ....................................................................................... 18
2. Các lệnh trong WED ............................................................................... 19
2.1.Các lệnh trong các thực đơn ............................................................ 19
2.1.1. Thực đơn file .......................................................................... 20
2.1.2. Thực đơn edit: ........................................................................ 24
i
Mục lục
2.1.3. Thực đơn mode ...................................................................... 25
2.1.4. Thực đơn Object..................................................................... 29
2.1.5. Thực đơn Texture................................................................... 32
2.1.5. Thực đơn View....................................................................... 33
2.1.6. Thực đơn help ........................................................................ 34
2.2 Giao diện sử dụng ............................................................................ 35
2.3. Cửa sổ dự án ................................................................................... 36
2.3.1. Tab đối tượng ......................................................................... 36
2.3.2. Tab Views .............................................................................. 38
2.3.3. Tab Texture ............................................................................ 38
2.3.4. Tab Resource.......................................................................... 41
2.4. Cửa sổ Bookmark ........................................................................... 41
2.5. Thuộc tính của khối ........................................................................ 41
2.6. Thuộc tính của thực thể .................................................................. 43
3. Thiết kế một map..................................................................................... 45
4. Thực thể................................................................................................... 46
4.1. Thực thể mô hình............................................................................ 46
4.2. Thực thể Sprite................................................................................ 47
4.3. Thực thể Map.................................................................................. 47
4.4. Thực thể Địa hình (terrain) ............................................................. 48
4.5. Bóng................................................................................................ 48
4.5. Thuộc tính trong suốt...................................................................... 49
II. CÁCH SỬ DỤNG MED.............................................................................. 50
1. Trình thiết kế ........................................................................................... 50
1.1. Các thực đơn ................................................................................... 50
1.1.1. Thực đơn File ......................................................................... 50
1.1.2. Thực đơn Edit......................................................................... 53
1.1.3. Thực đơn View....................................................................... 55
ii
Mục lục
1.1.4. Thực đơn Options................................................................... 56
1.1.5. Thực đơn Help........................................................................ 57
1.2. Toolbars................................................................................................ 58
1.2.1. Toolbar File ............................................................................ 58
1.2.2. Toolbar Edit............................................................................ 58
1.2.3. Toolbar Select ........................................................................ 60
1.2.4. Toolbar Mesh ......................................................................... 60
1.2.5. Toolbar các đối tượng cơ sở................................................... 61
1.2.6. Toolbar view .......................................................................... 62
1.2.7. Toolbar Frame........................................................................ 63
1.2.8. Thanh trạng thái ..................................................................... 64
2.Trình thiết kế Skin.................................................................................... 64
2.1. Các thực đơn ................................................................................... 65
2.1.1. Thực đơn File ......................................................................... 65
2.1.2. Thực đơn Edit......................................................................... 66
2.1.3. Thực đơn View....................................................................... 67
2.2. Các Toolbar..................................................................................... 68
2.2.1. Toolbar Skin........................................................................... 68
2.2.2. Toolbar Edit............................................................................ 68
2.2.3. Toolbar Paint .......................................................................... 69
III. SED, C-Script editor ................................................................................... 70
1. Giao diện sử dụng.................................................................................... 71
2. Soạn thảo ................................................................................................. 72
2.1. Lệnh Insert ...................................................................................... 72
2.2. Dòng chú thích................................................................................ 72
2.3. Nhảy đến một đoạn mã ................................................................... 72
2.4. Sử dụng danh sách các thành phần ................................................. 73
2.5. Kiểm tra cú pháp............................................................................. 73
iii
Mục lục
2.6. Soạn thảo thông minh ..................................................................... 73
3. Cấu hình .................................................................................................. 74
4. Thực đơn.................................................................................................. 75
4.1. Thực đơn File.................................................................................. 75
4.2. Thực đơn Edit ................................................................................. 76
4.3. Thực đơn Options ........................................................................... 76
4.4. Thực đơn Tools............................................................................... 77
4.5. Thực đơn Debug ............................................................................. 77
IV. Giao tiếp với các DLL ................................................................................ 79
1. Bắt đầu với SDK ..................................................................................... 79
2. Sử dụng đối tượng C-Script trong một DLL........................................... 82
3. Sử dụng các hàm API.............................................................................. 83
4. Lập trình một game trong C++................................................................ 87
Chương 4 CÀI ĐẶT........................................................................................ 89
I. Người chơi ..................................................................................................... 89
1. Chuyển động vật lý.................................................................................. 89
a. Gia tốc, quán tính và lực ma sát......................................................... 89
b. Rơi từ trên xuống ............................................................................... 93
2. Cách di chuyển camera theo người chơi ................................................. 97
2.1. Tầm nhìn của người thứ nhất.......................................................... 97
2.2. Quay tự do tầm nhìn của người thứ 3 ........................................... 101
2.3. Cách để cho camera tránh chạm vào tường.................................. 106
II. Xe tự động.................................................................................................. 108
Tránh chướng ngại vật trên đường đi ........................................................ 108
iv
Chương 1: Giới thiệu
Chương 1
GIỚI THIỆU
1. Lý do chọn đề tài
Ngày nay, do nhu cầu đời sống của con người ngày càng được nâng cao,
trong đó nhu cầu giải trí của con người được quan tâm đến rất nhiều. Trong đó
việc giải trí bằng Game máy tính ngày càng phát triển nhanh và lan rộng ra do
sự lôi cuốn rất mạnh mẽ của nó. Hầu như ai đã sử dụng máy tính đều đã giải trí
bằng một số game nào đó trên máy tính. Có thể nói Game là một thể loại phóng
phú nhất trong tất cả các loại chương trình trên máy tính.
Mặc dù các chương trình Game rất nhiều, nhưng để có thể viết ra được một
game hay, có thể chơi được quả là một điều không dễ. Tuy vậy, với niềm đam
mê về game máy tính, em cũng muốn tiếp cận với lĩnh vực này.
1.1. Các ngôn ngữ lập trình game
Có rất nhiều chương trình hỗ trợ cho việc viết game: các ngôn ngữ lập trình
như C++, Visual C++, Delphi, Dark Basic Pro, 3D Game Studio.
Nhưng với các ngôn ngữ lập trình C++, Visual C++, DelPhi… có thể là
những ngôn ngữ rất mạnh, có thể viết ra được những game có quy mô lớn. Đây
là những ngôn ngữ lập trình có thể hoạt động trong nhiều lĩnh vực: với cơ sở dữ
liệu, lập trình hệ thống, hoặc viết game…Do đó sự hỗ trợ của nó trong việc viết
game là rất ít. Để có thể viết được một game bằng những ngôn ngữ lập trình
này mà không sử dụng một thư viện nào, đòi hỏi phải bỏ ra rất nhiều công sức.
Với engine Dark Basic Pro, đây là loại engine rất đơn giản và dễ sử dụng, là
một ngôn ngữ Script theo họ Basic. Nó chỉ thích hợp với các game nhỏ.
Tại sao lại sử dụng ngôn ngữ 3D Game Studio để viết game?
3D Game Studio là chương trình chuyên dụng dùng để tạo ra game 3D.
1
Chương 1: Giới thiệu
Với hàng trăm game đã được phát hành, 3D Game Studio xứng đáng là một
ngôn ngữ lập trình game lớn. Với 3D Game Studio, chúng ta có thể:
- Tạo ra một game đơn giản từ những script mẫu có sẵn.
- Tạo ra các game thương mại viết bằng ngôn ngữ script.
- Có thể sử dụng VisualC++ hoặc Delphi để kết hợp với 3D Game Studio
để viết game.
Có rất nhiều tài liệu hướng dẫn lập trình game bằng 3D Game Studio. Ngay
cả với những người chưa có kiến thức về lập trình, nhưng nếu theo từng bước
hướng dẫn tạo một game hành động đơn giản thì cũng có thể hoàn thành nó
trong một thời gian ngắn.
Theo Dr.Dobb's Journal: “Đây là bộ công cụ tuyệt vời để nhanh chóng tạo
ra mẫu ban đầu và phát triển ứng dụng 3D”. Chúng ta có thể sử dụng ngôn ngữ
script trong 3D Game Studio để viết và phân phối một game thương mại. Dưới
đây là những game thương mại được làm bằng 3D Game Studio:
1.2. Phân loại game
Thể loại của game thì rất phong phú và đa dạng, ở đây chúng ta chỉ xét các
thể loại game thường thấy nhất là:
1.2.1. Game hành động
Game hành động xuất hiện rất nhiều trong cả game 3D và game 2D. Game
loại này có đặc điểm chúng là tính co giật trong game, như trong game bắn
2
Chương 1: Giới thiệu
súng. Game hành động thường đơn giản hơn tất cả các loại game khác bởi vì
những người bình thường dễ dàng biết cách chơi và chơi hay game này .
1.2.2. Game nhập vai
Game nhập vai thường có hai đặc trưng là: sự thay đổi, phát triển nhân vật
và một câu chuyện mà trong đó nhân vật sẽ trải qua.
1.2.3. Game thể thao
Game thể thao là sự thách thức cho các nhà thiết kế game. Không giống như
hầu hết các thể loại game khác, người chơi biết rất ít về nó, trong game thể thao
người chơi biết rất rõ vì nó mô phỏng một môn thể thao có sẵn trong thực tế.
1.2.3. Game đua xe
Game đua xe tạo ra cảm giác giống như người chơi đang lái xe bên ngoài
thế giới thực.
Tuy trong đề tài của em không thể nói là viết ra được một game chơi được
như một game đua xe, mà đây chỉ là một chương trình ở mức độ mô phỏng
giao thông trên đường phố.
2. Mục đích của đề tài
Tìm hiểu ngôn ngữ lập trình game trong 3D GameStudio:
- Tìm hiểu về WED, một chương trình thiết kế khung cảnh trong game.
- Tìm hiểu về MED, một chương trình thiết kế các mô hình trong game.
- Tìm hiểu về SED, trình soạn thảo dùng để viết các câu lệnh script để kết
nối các mô hình được tạo ra trong MED, các khung cảnh được tạo ra trong
WED và sử dụng những hàm có sẵn trong SED hoặc trong các DLL khác để
tạo ra một game.
Sử dụng thuật toán cổ điển A* tìm kiếm đường đi để một đối tượng có thể
chuyển động theo một hướng mong muốn nào đó.
3
Chương 2: Các thuật toán tìm đường đi
Chương 2
CÁC THUẬT TOÁN TÌM
ĐƯỜNG ĐI
Hầu hết các bài toán hoặc vấn đề đều có thể phát biểu dưới dạng “từ một
trạng thái xuất phát hãy tìm đường dẫn đến một trạng thái kết thúc mong
muốn”
Việc tìm “đường dẫn” từ trạng thái xuất phát (S0) đến trạng thái kết thúc
(Sn) gồm có một số bước sau đây:
− Chọn không gian tìm kiếm thích hợp.
− Tiến hành tìm kiếm có hệ thống và hiệu quả trong không gian tìm kiếm.
− Sử dụng triệt để các nguồn tri thức liên quan trong quá trình tìm kiếm
tương ứng với miền đối tượng cụ thể.
Không gian tìm kiếm của một vấn đề cần giải trên máy tính thường được
biểu diễn bằng đồ thị hay một dạng đặt biệt của đồ thị là cây. Đồ thị là một tập
hợp giữa các đỉnh và các cung nối giữa các đỉnh. Các cung có thể được định
hướng hoặc không định hướng, gán giá trị hoặc không gán giá trị.
Cây là đồ thị định hướng đặt biệt có duy nhất một đỉnh mà không có cung
nào hướng đến (gốc của cây), và mỗi đỉnh khác của cây chỉ có duy nhất một
cung hướng đến.
Sau khi bài toán hoặc vấn đề được biểu diễn lại dưới dạng đồ thị hoặc cây:
− Mỗi đỉnh là một trạng thái của quá trình giải bài toán.
− Mỗi cung là tác động biến đổi quá trình từ giai đoạn này sang giai đoạn
khác.
Như vậy, việc giải quyết một bài toán cũng chỉ là tìm đường đi từ trạng thái
ban đầu đến trạng thái mong muốn được biểu diễn qua hai đỉnh nào đó của đồ
4
Chương 2: Các thuật toán tìm đường đi
thị hoặc cây tìm kiếm. Nhiều bài toán phức tạp nếu giải quyết bằng phương
pháp tìm kiếm ngẫu nhiên thì hầu như vô vọng vì số đường đi có thể sẽ tăng lên
theo hàm mũ của số đỉnh. Chính ở đây biểu lộ toàn bộ bản chất của trí tuệ nhân
tạo khi giải quyết các vấn đề: Đó là nghệ thuật xử trí với các vấn đề lớn bằng
cách giảm số lượng tìm kiếm.
Các thủ tục tìm kiếm điển hình bao gồm:
− Tìm kiếm rộng: đường đi được tìm theo mọi hướng có thể ở mỗi bước.
− Tìm kiếm sâu: đường đi sâu mãi theo một hướng đến khi nào không tiếp
tục được nữa mới chuyển sang hướng khác.
− Tìm kiếm sâu dần: kết hợp tìm kiếm rộng và tìm kiếm sâu trên cơ sở cho
trước mức sâu n rồi tìm kiếm rộng ứng với mức sâu đó.
− Tìm kiếm cực tiểu hóa giá thành: mỗi cung của cây (đồ thị) được gán giá
thành và hướng tìm kiếm được xác định bởi việc cực tiểu hóa giá thành
đường đi.
− Tìm kiếm với tri thức bổ sung: hướng tìm kiếm được xác định với tri
thức bổ sung ở mỗi bước.
Trước hết các thủ tục tìm kiếm rộng, sâu và sâu dần sẽ được mô tả qua một
ví dụ. Sau đó một số thuật giải tìm kiếm cực tiểu hóa giá thành và bổ sung tri
thức sẽ được trình bày chi tiết.
5
Chương 2: Các thuật toán tìm đường đi
1. Mô tả các thủ tục tìm kiếm rộng, sâu và sâu dần
Tìm kiếm rộng: quá trình tìm kiếm sẽ lần lượt là A, B, C, D, E, F, G, H, I,
J, K, L, M, N, O, P, Q, R, S, T, U, V…
Tìm kiếm sâu: quá trình tìm kiếm sẽ lần lượt là A, E, K, O, Q, S, T, U, V,
…B, F,… C, G, L, H, M, … D, I, J, N, P, R.
Chú ý: nếu nhánh dưới v dài vô hạn thì quá trình tìm kiếm sẽ không bao giờ
đến được mục tiêu.
Tìm kiếm sâu dần: ứng với mức sâu 2: (A,E), (B,F), (C,G), (C,H), (D,I),
(D,J).
R
V
U
T
S
Q
P O
K L M N
J I H G F E
A
B C
D
1
1
1
1
1 1
1
1
1
10
100 1
17
1 10 12 1
1 1 1
1
1
Trạng thái mong muốn
6
Chương 2: Các thuật toán tìm đường đi
ứng với mức sâu 3: (A,E,K), (B,F), (C,G,L), (C,H,M), (D,I), (D,J,N).
2. Thuật giải tìm đường đi có giá thành nhỏ nhất
AT (Algorithm for Trees) với mỗi đỉnh n tương ưng số g(n) là giá thành
đường đi từ đỉnh đầu tới n. (g(n) có thể chưa xác định đối với các đỉnh thuộc
phần cây chưa hướng đến). Mỗi đỉnh n có thể là:
− Đỉnh đóng: nghĩa là đỉnh đã được xem xét;
− Đỉnh mở: là đỉnh giả định sẽ được xem ở bước sau;
− Đỉnh ẩn: là đỉnh mà hàm g(n) tương ứng chưa được tính đến và chưa
được xem xét đến.
Thuật giải AT gồm các bước sau:
Bước 1: Đầu tiên, mọi đỉnh n và mọi giá trị g(n) đều là ẩn. Mở đỉnh đầu tiên
(coi đỉnh đầu tiên là đỉnh mở và đặt giá trị g tương ứng bằng 0).
Bước 2: Chọn đỉnh mở với giá thành g tương ứng nhỏ nhất. Gọi đỉnh này là
N, nếu N là đỉnh mục tiêu thì đường dẫn tới N là đường đi có giá thành nhỏ
nhất g(n) và vấn đề đã được giải. Nếu không còn đỉnh mở nào thì cây biểu
diễn vấn đề không có đường đi tới mục tiêu. Nếu có từ 2 đỉnh trở lên cùng
giá trị g nhỏ nhất thì kiểm tra trong số đó có đỉnh mục tiêu không? Nếu có
thì chọn đỉnh mục tiêu đó và quá trình giải kết thúc. Nếu không thì chọn tùy
ý một đỉnh trong số đó và gọi là N.
Bước 3: Đóng đỉnh N và mở các đỉnh sau N (có cùng hướng đến N), với
mỗi đỉnh sau N gọi là s, ta tính:
g(s)=g(N)+(giá thành cung từ N tới s)
Bước 4: Quay trở lại bước 2.
Thuật giải AT đã được chứng minh là luôn luôn tìm được đường đi với giá
thành nhỏ nhất nếu như tồn tại đường đó trên đồ thị và là thuật giải tối ưu theo
nghĩa số đỉnh đóng trong quá trình tìm kiếm là ít nhất.
7
Chương 2: Các thuật toán tìm đường đi
3. Tìm kiếm với tri thức bổ sung
Thuật giải AT là thuật giải tìm kiếm đường đi tốt nhất đối với các cây chỉ có
thông tin về đỉnh, cung và giá thành cung. Nhưng trong nhiều trường hợp việc
tìm kiếm đường đi sẽ được định hướng rõ thêm nếu sử dụng các tri thức thu
được dựa trên những hiểu biết về tình huống vấn đề ở mỗi bước. Các thủ tục
tìm kiểm dựa trên 3 cách tiếp cận:
− Không tính đến các tri thức bổ sung ngoài thông tin về đỉnh, cung, giá
thành.
− Sử dụng tri thức bổ sung để tìm cách giải riêng biệt cho vấn đề mà bỏ
qua việc xây dựng cây biểu diễn cho vấn đề.
− Xây dựng biểu diễn vấn đề dưới dạng cây có tính đến tri thức bổ sung
trong cấu trúc cây hoặc giá thành các cung.
Ngoài ra có có cách tiếp cạn theo hướng xây dựng các thuật giải “vạn
năng”, tìm kiếm đường đi với tri thức bổ sung. Họ thuật giải này mang tên là
AKT(Algorithm for knowledgeable Tree search). Tri thức bổ sung ở mỗi đỉnh
được tương ứng một giá trị . Chẳng hạn đó là ước lượng giá thành đường
đi từ n đến mục tiêu (như vậy là ước lượng giá thành đường đi con chương
biết đến).
)(nh
∧
∧
h
Thuật giải AKT gồm các bước sau:
a) Đầu tiên, mọi đỉnh cũng như giá trị g, , là chưa biết. Mở đỉnh đầu
tiên (o) và gán g(0), sử dụng tri thức bổ sung để ước tính h(0) và tính
.
∧
h
∧
f
)0()0()0(
∧∧ += hgf
b) Chọn đỉnh mở có giá trị nhỏ nhất. Gọi đỉnh này là N. Nếu
N là mục tiêu thì đường tới N là đường đi có giá thành nhỏ nhất g(N). Nếu
không tồn tại đỉnh mở nào thì cây không tồn tại đường đi tới mục tiêu. Nếu có
)()( nhngf
∧∧ +=
8
Chương 2: Các thuật toán tìm đường đi
từ 2 đỉnh mở trở lên cùng giá trị nhỏ nhất, hãy kiểm tra trong các đỉnh này
có chứa mục tiêu không? Nếu một trong các đỉnh này là mục tiêu thì vấn đề đã
được giải quyết, còn không thì chọn tùy ý một trong các đỉnh này là N.
∧
f
c) Đóng đỉnh N, mở đỉnh sau N. Với mỗi đỉnh S sau N ta tính
g(s)=g(N)+(giá thành cung từ N đến S). Sử dụng tri thức bổ sung ở bước này,
ước lượng và gán cho f(s) giá trị . )(sh
∧
)()()( shsgsf
∧∧ +=
d) Quay về bước 2.
Giải thích ý nghĩa AKT: giả sử h(n) là giá thành nhỏ nhất được biết chính
xác từ n đến mục tiêu. Như vậy h(n) chỉ là ước lượng gần đúng về h(n). nếu
thì A)()( nhnh ≡∧ KT là thủ tục hoàn toàn tuyệt đối (các đỉnh đóng đúng là các
đỉnh nằm trên đường đi ngắn nhất đến mục tiêu). Trong trường hợp không có
tri thức bổ sung, và A0)( =∧ nh KT suy biến thành AT. Ta thấy rõ ràng rằng giữa
và sẽ tồn tại các thuật giải với mức độ hiệu quả rất thú vị. Nếu
(với mọi n), A
0=∧h hh =∧
hh ≤∧ KT sẽ bảo đảm tìm ra được đường đi giá thành nhỏ nhất và
tối ưu theo nghĩa sử dụng số đỉnh đóng ít nhất so với mọi thuật giải cũng chỉ
làm việc với các tri thức như vậy.
Nếu (với mọi n, hoặc với một số đỉnh). Ahh >∧ KT không bảo đảm tìm được
đường đi giá thành nhỏ nhất nhưng đường đi mà AKT tìm ra vẫn dùng được
trong nhiều trường hợp thực tiễn giải quyết vấn đề.
4. Tìm đường đi trên đồ thị tổng quát
Các phần trên đã trình bày thuật giải tìm đường đi trên đồ thị dạng cây. Tuy
nhiên biểu diễn dạng cây nhiều khi sẽ lặp lại quá nhiều một trạng thái. Điều đó
sẽ tăng thêm thời gian tim kiếm. Để khắc phục cần nới bỏ điều kiện mỗi đỉnh
chỉ có một cung hướng đến và do vậy phải nghiên cứu thuật giải tìm đường đi
9
Chương 2: Các thuật toán tìm đường đi
trên một đồ thị dạng tổng quát. Ta cũng có thể mở rộng thuật giải AKT thành
thuật giải tổng quát A* như sau:
Bước 1: Đầu tiên, mọi đỉnh và các giá trị g, , đều xem như chưa biết,
mở đỉnh đầu tiên 0, gán cho g(0)=0, ước lượng và gán .
∧
h
∧
f
)0(
∧
h )0()0(
∧∧ = hf
Bước 2: Chọn đỉnh mở với giá trị nhỏ nhất và gọi là N. Nếu N là
mục tiêu thì đường dẫn tới N đã tìm được và g(N) là giá thành của đường đi đó.
Nếu không tồn tại đỉnh mở thì đồ thị đó không tồn tại đường đi đến mục tiêu.
Nếu có từ 2 đỉnh mở trở lên cùng giá trị và 1 trong 2 đỉnh đó là mục tiêu thì
quá trình tìm đường đi cũng kết thúc, còn không thì chọn tùy ý một trong 2
đỉnh đó là N.
∧∧ += hgf
∧
f
Bước 3: Đóng đỉnh N và đối với mỗi đỉnh sau đó, ta tính +=′ )()(g Ngs (giá
thành cung từ N đến S). Nếu đỉnh S đã mở và )(gg(s) s′≤ thì bỏ qua S. Ngược
lại ta mở S và đặt )(gg(s) s′= , tính và . )(sh∧ )()()( shsgsf ∧∧ +=
Bước 4: Quay về bước 2.
Bây giờ chúng ta có thể dùng A* để tìm đường đi ngắn nhất giữa 2 thành
phố dựa theo bản đồ giao thông với tri thức bổ sung có thể là khoảng cách
đường chim bay từ điểm (thành phố) n tới mục tiêu (thành phố cần đến). Do
khoảng cách đường chim bay bao giờ cũng nhỏ hơn khoảng cách đường giao
thông nên với mọi n. Thuật giải A* với tri thức bổ sung như
trên sẽ tìm được đường đi ngắn nhất (hoặc giá thành nhỏ nhất) với mức độ hiệu
quả càng cao nếu càng gần h(n).
)(nh
∧
)()( nhnh ≤∧ )(nh∧
)(nh
∧
Trong thuật giải A*, ta đặc ở đây vai trò của g và được xem là
như nhau. Nhưng tùy theo trường hợp, có thể xét với w1, w2
∧∧ += hgf ∧h
∧∧ += hwgwf .2.1
10
Chương 2: Các thuật toán tìm đường đi
là các trọng số cho biết vai trò của g và tham gia trong quá trình giải. Ngoài
ra cũng cần thêm các ước lượng về giá thành (độ phức tạp) của việc xác định
và tập đỉnh đóng để có cơ sở đánh giá hiệu quả của thuật giải một cách đầy đủ.
∧
h
∧
h
11
Chương 3: Game Engine
Chương 3
GAME ENGINE
Có thể định nghĩa engine như một loại máy móc làm cho xe chạy, nó hoạt
động bên trong, như chuyển năng lượng động lực vào trục xe làm xe chuyển
động. Người lái xe không quan tâm đến những gì xảy ra bên trong.
Một engine 3D cũng được định nghĩa như vậy. Khi chúng ta gọi một hàm
khởi động và gởi một mô hình 3D đến graphic adapter (GA), engine 3D sẽ giao
tiếp với GA và hiển thị mô hình 3D lên màn hình
Công việc của engine là làm những việc khó chịu ở cấp thấp như: giao tiếp
với card đồ họa, biến đổi các mô hình, làm việc với các phép toán khó hiểu như
phép biến đổi ma trận…
Các nhà lập trình game cũng giống như người lái xe, khi sử dụng một
engine, họ không cần quan tâm một engine thực sự làm việc như thế nào, họ
chỉ cần xác định đưa vào những gì, và engine sẽ đưa ra kết quả.
Có rất nhiều định nghĩa khác nhau về engine. Các nguyên lý tổng quát mà 1
engine phải có :
1. Quản lý dữ liệu trong vùng mà nó chịu trách nhiệm.
2. Tính toán dữ liệu theo nhiệm vụ của nó.
3. Xử lý dữ liệu đến instance sau của nó, nếu cần thiết.
4. Nhận dữ liệu để quản lý và tính toán từ các instance có trước.
3D GameStudio cũng là một game engine. Nó bao gồm 3 thành phần sau:
WED editor, MED, C-Script editor. Chúng ta cùng tìm hiểu cách sử dụng của 3
bộ phận của 3D GameStudio.
12
Chương 3: Game Engine – Cách sử dụng WED
I. WED editor
WED là một trình biên soạn. Lập trình viên có thể sử dụng nó để tạo ra một
thế giới ảo của game. WED là công cụ để kết hợp lại toàn bộ các thành phần:
level (được tạo ra bởi WED), các mô hình (được tạo ra bởi MED) và các mã
lệnh (được viết trong SED) tạo ra sản phẩm cuối cùng.
Với WED, chúng ta có thể tạo ra được một khung cảnh 3D hết sức dễ dàng
mà không cần phải có bất cứ kinh nghiệm gì về việc tạo hình 3D. Với cả những
người mới bắt đầu và những nhà thiết kế chuyên nghiệp, WED cũng sẽ là một
công cụ rất cần thiết có thể tạo ra một khung cảnh 3D chuyên nghiệp một cách
đơn giản và nhanh chóng.
1.Những khái niệm cơ bản
a. Giao diện sử dụng
Khi mở WED, màn hình giao diện sau sẽ xuất hiện:
13
Chương 3: Game Engine – Cách sử dụng WED
Đây chính là môi trường mà chúng ta sẽ làm việc để tạo ra một game trong
3D GameStudio. Tạo ra một game 3D, tức là đưa những đối tượng vào môi
trường 3D này, và gắn các thuộc tính và hành vi mà chúng ta đã lập trình vào
chúng, hoặc chọn từ một danh sách các hành vi đã được tạo sẵn.
Đầu tiên, chúng ta cần chú ý đến 4 cửa sổ 2D và 3D. Mỗi cửa sổ tượng
trưng cho một khung nhìn ở mỗi góc khác nhau trong lúc thiết kế game. Có thể
cuộn một cửa sổ bằng cách click và rê chuột phải, và có thể phóng to, thu nhỏ
bằng nút lăn.
Khung nhìn 3D sẽ cho chúng ta thấy trước một game sẽ được thể hiện như
thế nào. Chúng ta có thể chuyển khung nhìn 3D sang các dạng khung lưới,
đặc, kết cấu. Trong mục Preferences chúng ta có thể chọn cách biểu diễn đồ
họa trong khung nhìn 3D. Mục cuối cùng dùng để điều chỉnh độ sáng nền để
cho ra một quang cảnh giống thực, nhưng vẫn không hoàn giống với sản phẩm
cuối cùng.
14
Chương 3: Game Engine – Cách sử dụng WED
Khi click phải vào khung nhìn 3D và chọn GXL Properties, thì các đặc
điểm như độ sáng và tầm nhìn có thể được thay đổi.
Chúng ta có thể tìm thấy thanh bar ở phía trên, phía dưới là dòng trạng thái và
phía trái là cửa sổ dự án. Nó chứa các cửa sổ Objects, Views, Textures và
Resources.
b. Thanh Icon
Thanh bar này chứa những hàm thường dùng trong các menu, và chúng ta
có thể gọi một hàm bằng cách nhấp chuột. Khi rê chút đến một Icon sẽ xuất
hiện một dòng chữ gần con chuột để giải thích ý nghĩa của nút này. Có thể cho
hiển thị hay ẩn đi các thanh bar File, Edit và View bằng cách chọn vào menu
View/Toolbar. Ngoài ra, chúng ta có thể di chuyển từng thanh bar đến bất cứ
đâu trên cửa sổ. Mặc định, sau đây là thứ tự của các nút trên thanh bar:
New, Open, Save, Copy, Paste, Undo, Build, Run, Select, Move, Rotate, Scale,
Vertex Move, Edge Move, Face Move, Add Object, Delete Object, Snap on/off,
Snap Mode, Snap Size, Axis Restriction, Eye Move, Eye Rotate, Eye Zoom,
Camera Move, Camera Walkthru, Scope Up, Scope Down.
c. Mode
Chế độ Select: Nếu chế độ này được chọn, khi nhấn
nút trái chuột thì một khối, nhóm hoặc một đối tượng
nào đó sẽ được chọn. Nếu không chọn được đối tượng
mong muốn, có thể là nó đang được phủ bởi một đối
tượng khác, vì thế chỉ cần nhấn nút chuột trái tiếp đến
khi nào chọn được thì thôi. Chúng ta có thể chọn nhiều
đối tượng bằng cách kéo rê một hình chữ nhật xung
15
Chương 3: Game Engine – Cách sử dụng WED
quanh chúng, hoặc giữ phím [CTRL] trong khi chọn các đối tượng.
Chế độ Move: Nếu chế độ này được chọn, thì có thể di chuyển một đối
tượng bằng cách nhấn nút trái chuột và rê nó đến vị trí mong muốn. Hãy nhìn
vào các khung nhìn để kiểm tra xem đối tượng có đến được nơi mong muốn
hay không. Cũng có thể di chuyển các đối tượng bằng các phím di chuyển.
Chế độ Rotate: Nếu chế độ này được chọn, ta có thể quay các khối và các
nhóm được chọn bằng cách nhấn nút trái chuột và rê trái hoặc phải tùy theo ý
muốn. Trong mỗi khung nhìn, chúng ta chỉ có thể quay một đối tượng theo
một hướng nào đó. Cũng có thể quay các đổi tượng bằng các phím di chuyển.
Chế độ Scale: nhấn và rê nút trái chuột để thay đổi kích thướt của khối và
nhóm đã chọn. Nếu rê lên thì chiều cao của khối sẽ tăng lên, rê qua trái thì
chiều rộng của khối sẽ được tăng lên. Nếu giữ [CTRL] trong khi thay đổi kích
thướt thì kích thướt theo chiều dọc và chiều ngang sẽ cùng thay đổi một lượng
bằng nhau. Khối sẽ được phồng ra hay co vào một cách đối xứng, vì thế chúng
ta cần phải di chuyển khối trở lại đúng vị trí sau khi thay đổi kích thướt của nó.
d.Thiết kế một khung cảnh
Có hai thành phần chính trong một khung cảnh 3D là khối (block) và thực
thể (entity). Khối chỉ đơn giản là một đối tượng cấu trúc đặc có dạng lồi. Một
khung cảnh 3D được cấu thành từ có khối đặc và các đối tượng là sự kết hợp
của nhiều khối. Ví dụ, để tạo ra một cái phòng có hình lập phương, chúng ta sẽ
cần 6 khối bao quanh một không gian trống rỗng: 1 khối là trần nhà, một khối
là nền đất, 4 khối là 4 bức tường.
Thành phần thứ 2 là thực thể, thực thể gồm 4 loại sau đây: terrain, map,
model và sprite. Mỗi loại được sử dụng cho những mục đích khác nhau.
e. Hướng đối tượng
16
Chương 3: Game Engine – Cách sử dụng WED
WED xem tất cả mọi thứ đều là đối tượng. Một
đối tượng có thể là một thực thế, một khối, hoặc
một nhóm các đối tượng. Việc nhóm các đối tượng
lại cho phép chúng ta xây dựng nên các cấu trúc
như: cầu thang, một chiếc vòm, một chiếc cầu,
hoặc một chiếc ghế từ những khối đơn giản. Việc
nhóm các đối tượng sẽ giúp chúng ta tạo ra được
những căn phòng phức tạp và tạo ra một khung
cảnh (level) một cách nhanh chóng từ các cấu trúc
đó. Như vậy, một khung cảnh sẽ được cấu tạo từ
những cấu trúc phức tạp như các căn phòng trên,
được tạo thành từ những cấu trúc đơn giản hơn, vì
chính những cấu trúc này được tạo ra từ những đối
tượng nhỏ hơn nữa hay chỉ ra từ các khối.
Phương pháp thiết kế hướng đối tượng này sẽ
dấu đi những thông tin không cần thiết với người
dùng. Với nó, chúng ta có thể xây dưng một khung cảnh từ những đối tượng có
thực mà không cần phải sử dụng hàng ngàn các khối và đỉnh. Phương pháp này
có tính dễ điều chỉnh và dễ mang chuyển. Người sử dụng có thể tạo ra các cấu
trúc khác nhau một cách độc lập, để từ đó tạo ra một thư viện các đối tượng
phức tạp để có thể sử dụng lại sau này. Vì thế chúng ta sẽ không phải mất thời
gian để xây dựng lại những đối tượng tương tự nhau. Điều này gợi ra một
hướng khác là cách sử dụng các cấu trúc và đối tượng đã được tạo sẵn trong
các thư viện.
Với thực đơn Object, chúng ta có thể chèn một khối cơ sở (có nhiều loại
khác nhau), một đối tượng 3D đã được tạo sẵn, hoặc chèn vào các tài nguyên
17
Chương 3: Game Engine – Cách sử dụng WED
ánh sáng (light) hoặc âm thanh (sound), camera, vị trí (positon), địa hình
(terrain), mô hình 3D (model), các sprite 2D, các đường dẫn (path).
f. Cửa sổ dự án
Hình ở bên là cửa sở làm việc với 4 tùy chọn Object, Views, Texture và
Resources.
Object: Đây là một danh sách tất cả các nhóm, đối tượng và khối trong toàn
cảnh thiết kế. Nhấp double chuột để chọn một đối tượng. Nhấp phải chuột vào
một đối tượng sẽ hiện ra một thực đơn và chọn Properties sẽ có thể thay đổi
được thuộc tính của các đối tượng. Nếu nhấn vào dấu “+” các đối tượng trong
nhóm này sẽ được mở ra, vì thế các đối tượng này có thể được chọn và sửa
đổi một cách riêng biệt. Đối tượng có thể bị khóa lại bằng cách nhấn phải chuột
và chọn Render Style/Disable.
Views: nhấp phải chuột vào Views List vị trí các cửa sổ có thể được chọn,
lưu và gọi lại.
Texture: Để tạo ra một khung cảnh trong đó các bức tường có một kết cấu
xác định, chúng ta cần phải mở tập tin *.WAD chứa nhiều kết cấu khác nhau.
Chọn thực đơn Texture / Texture Manager / Add WAD (hoặc nhấp phải vào kết
cấu mặc định và chọn Texture Manager / Add WAD ). Chúng ta có thể chọn
nhiều tập tin WAD cùng lúc, và cũng có thể thêm một kết cấu nào đó đến vào
một tập tin WAD. Hình ảnh của các kết cấu trong tập tin WAD sẽ xuất hiện
dưới thanh WAD tương ứng và có thể được cuộn lên bằng thanh cuộn được đặt
ở phía bên phải. Nếu nhấp vào một thanh WAD nào đó, thì hình ảnh của tập tin
WAD tương ứng sẽ được mở ra hoặc đóng lại.
Khi nhập double chuột vào một kết cấu của một WAD thì kết cấu này sẽ
được gắn vào đối tượng đang chọn.
18
Chương 3: Game Engine – Cách sử dụng WED
Nhấp phải chuột vào một kết cấu trong một WAD, một thực đơn xuất hiện,
lúc này chúng ta có thể xóa kết cấu này khỏi WAD hoặc đổi tên của nó, và
cũng có thể thay đổi các thuộc tính của nó. Với thực đơn này chúng ta có thể
thêm một kết cấu mới vào WAD từ các ảnh có dạng PCX, BMP hoặc TGA, và
cũng có thể đánh dấu các kết cấu thường dùng vào bookmarks, lưu WAD hoặc
mở texture manager.
Cửa sổ Object sẽ hiển thị kết cấu của một đối tượng được chọn. Trong cửa
sổ Texture chúng ta sẽ luôn luôn thấy hình ảnh và tên của một kết cấu mà con
chuột đang chỉ đến nó trong WAD. Nếu đóng WAD lại hoặc di chuyển chuột ra
ngoài cửa sổ project, thì kết cấu được chọn cuối cùng vẫn được giữ trong cửa
sổ này.
Kích thướt của các cửa sổ có thể được thay đổi bằng cách kéo rê chuột ở
cạnh bên dưới của cửa sổ.
Resources: danh sách tất cả các tập tin có liên quan đến việc thiết kết game.
Nếu nhấp double vào một hành vi, thì mã nguồn sẽ được hiện thị ở một cửa sổ
khác.
2. Các lệnh trong WED
2.1. Các lệnh trong các thực đơn
Sau đây là những giải thích ngắn gọn cho từng lệnh và hàm trong WED.
Một vài lệnh khá đơn giản, và đòi hỏi ít hoặc không cần phải giải thích.
• File
• Edit
• Mode
• Object
19
Chương 3: Game Engine – Cách sử dụng WED
• Texture
• View
• Help
Chúng ta sẽ bắt đầu với thực đơn file.
2.1.1. Thực đơn file
New
Open
Close
Save
Save As
Exit
Giao tiếp với những loại tập tin
mà nó có hỗ trợ. Chúng ta có thể
mở tập tin .MAP và .QLE và các
tập tin trung gian $$M, và lưu
chúng với định dạng .WMP.
Trong phiên bản chuyên nghiệp, chúng có thể
được lưu trữ trong định dạng MAP.
Map properties: mở cửa sổ thuộc tính map.
Add script: đưa những đoạn mã mẫu vào đoạn mã main.
WMB: trước khi có thể sử dụng các khung cảnh được thiết kế trong
, phải chuyển từ định dạng thiết kế (WMP) đến định dạng WMB, là
ạng mà engine có thể hiểu được. Lệnh này đưa ra một hộp thoại cho
chọn lựa những tùy chọn khác nhau để biên dịch tập tin thiết kế
Build
WED
định d
phép (WMP).
Run level: bắt đầu engine và kết hợp mã nguồn với khung cảnh thiết kế.
Chúng ta có thể chọn chế độ cửa sổ hoặc chế độ fullscreen, chế độ D3D
hoặc không. Hoặc chúng ta có thể khởi động engine trực tiếp (chạy file
ACKNEX.EXE) và kiểm tra level của mình. Nó nằm ở thư mục BIN, và
20
Chương 3: Game Engine – Cách sử dụng WED
chúng ta có thể tạo ra một đường tắt trên desktop để khởi động và gọi level
của mình.
Starter: Trong phiên bản chuyên nghiệp nó tạo ra một tập tin có định dạng
ACKNEX.WDF cho đoạn mã hiện tại. ACKNEX.WDF xác định các thuộc
tính bắt đầu của ứng dụng trước khi chuyển đến chế độ fullscreen: hiển thị
một biểu tượng, hiển thị thông tin biên dịch…
Resource: Trong phiên bản chuyên nghiệp: tạo ra một thư mục con .CD
trong thư mục WORK. Bên trong có chứa một tập tin tài nguyên .WRS đây
là tập tin nén và mã hóa tất cả các tập cần thiết cho game, một tập tin .EXE
để khởi động nó, và tập tin WEDS.EXE cùng với một vài tập tin khác. Tất
cả các tập tin trong thư mục .CD có thể được phân phối tự do. Nếu sự phân
phối trình soạn thảo level là không được phép, WEDS.EXE,
WWMP2WMB.EXE và WEDS.DAT trong thư mục .CD cần được xóa đi.
Bằng không, các tập tin WMP và WAD trong game phải được kèm theo cho
người dùng cuối. WEDS là một phiên bản có giới hạn của WED. Nó chỉ
được dùng để biên soạn level trong lúc phân phối game – nó không thể
được dùng như là một phần mềm riêng biệt. Nó sử dụng tất cả các thực thể
và hành vi tìm thấy trong tập tin tài nguyên. Các đoạn mã trong các tập tin
script không thể thay đổi được – đó luôn luôn là tập tin có chứa đoạn mã
chính. Các tập tin WAD có thể được gọi đến như là thành phần bên ngoài,
nhưng không thể sửa lại được. RESOURCE, PUBLISH và STARTER thì
không được hoạt động. Tất cả những đặc điểm còn lại WED có thể sử dụng
được. Tất cả những tập tin nằm trong dấu ngoặc góc () trong mã nguồn,
và tất cả các tập tin nằm trong level được đưa ra bởi câu lệnh khai báo level
đều được đưa vào tài nguyên. Tuy nhiên có một vài tập tin vẫn phải tuân
theo các quy luật hiện tại và không thể được truy xuất từ tập tin tài nguyên:
21
Chương 3: Game Engine – Cách sử dụng WED
các tập tin DLL, âm thanh và bất kì tập tin nào được truy xuất bằng lệnh
file_ đều phải được đưa vào bằng tay trong lúc phân phối game.
Publish: tạo ra một thư mục con .CD trong thư mục WORK, và sao chép tất
cả các tập tin cần thiết cho game vào đó. Một tập tin EXE để bắt đầu game
cũng được tạo ra, và có thể tự do phân phối. Chú ý rằng tập tin EXE đã bị
khóa – nó không thể bắt đầu một game khác hoặc với một đoạn mã đã bị
thay đổi. Toàn bộ thư mục .CD có thể được chép vào CD-ROM để phân
phối. Tất cả các tập tin được gọi đến cùng với dấu ngoặc góc (), và cùng
với dòng khai báo level, đều được đưa vào thư mục .CD.
Recent Files: hiển thị 4 tập tin map gần nhất để có thể mở nhanh hơn.
Preferences: lệnh này để cho chúng ta có thể thay đổi một vài tùy chọn
trong WED. Tùy chọn khác có thể được thay đổi trong tập tin
OPTIONS.SCR trong thư mục data.
Map Properties
Mở một cửa sổ thuộc tính
map, ở đây chúng ta có thể
chọn hoặc tạo ra một tập tin
script, chọn lựa màu, và chọn
lựa kích thướt quan hệ (Nexus)
với engine cho map. Tập tin
script phải nằm trong cùng thư mục với tập tin map. Một tập tin script mới
có thể được tạo bằng cách nhấn vào nút New. Kích thướt của nexus tùy
thuộc vào level lớn nhất trong game, và phải được tăng lên nếu thông điệp
nexus too small xuất hiện. Bảng màu được đưa ra từ một tập tin PCX hoặc
BMP 8 bit hoặc từ một tập tin RAW được phát sinh trong qua trình build.
Tất cả các kết cấu 8 bit cũng phải được sửa lại để phù hợp với nó. Một bảng
22
Chương 3: Game Engine – Cách sử dụng WED
màu thì luôn luôn rất cần thiết ngay cả khi màu của các kết cấu sử dụng là
các màu thật, để duy trì khả năng của engine để chạy trong chế độ 8-bit. Tất
cả các màu là các giá trị RGB có phạm vi giá trị từ 0..255. Ánh sáng bầu
trời được phát ra bởi hộp bầu trời bao quanh level.
Khi nhấn chuột vào nút new script,
một hộp thoại mới xuất hiện cho phép
chọn lựa bất cứ loại script mẫu nào tìm
thấy trong thư mục template_6, hoặc
một script trống rỗng. Theo phương
pháp này chúng ta có thể chọn lựa
những script mẫu cũ hay là mới hoặc
thêm vào các mẫu script mặc định.
Các script mẫu cũ được sử dụng trong hướng dẫn này. Chúng chỉ dành
cho những game bắn súng đơn giản, và không được đề nghị trong các game
thương mại.
Các script mẫu mới thì mềm dểo và mạnh hơn, có thể dễ dàng kết hợp
với mã nguồn riêng của chúng ta và thích hợp với các game thương mại.
Để thay đổi 4 màu sương mù
(fog). Có thể thay đổi nó bằng
cách thay đổi biến fog_color
trong tập tin script.
23
Chương 3: Game Engine – Cách sử dụng WED
Để thay đổi ánh sáng mặt trời
(sunlight), màu sắc ở xung
quanh (ambient), vòm trời
(sun azimuth), độ cao của
mặt trời (sun elevation).
2.1.2. Thực đơn edit
undo: quay lại bước sau cùng
cut: cắt phần đang chọn
copy: sao chép phần đang chọn
paste: dán
Select_None: bỏ chọn
Delete: xóa phần đang chọn
Duplicate: Tạo ra một bản sao của đối tượng được
chọn. Các đối tượng cũng có thể được nhân đôi bằng cách giữ phím [SHIFT]
và rê chuột, hoặc nhấn phím [INS] trong khi rê chuột.
Hollow Block: hàm này chỉ dành cho các khối. Nó làm trống rỗng đi một khối
đặc, phân ra nhiều khối mỏng hơn bao quanh một khu vực trống rỗng bên
trong. Lệnh này thường được sử dụng để tạo ra một căn phòng được cấu thành
từ nhiều khối hình lập phương.
CSG Subtract: làm việc giống như một vật để cắt một cái bánh. Nó khoét lỗ
bên trong các khối đặc bằng cách sử dụng đối tượng được chọn như là vật để
cắt. Nó xóa đi những phần của các khối khác mà giao với đối tượng được chọn.
Kết cấu của vật cắt được gán cho mặt phẳng bị cắt. Hàm này được sử dụng để
chặt đứt các mảnh từ các khối, hoặc tạo ra một lỗ trống giữa 2 căn phòng để
24
Chương 3: Game Engine – Cách sử dụng WED
làm một cửa đi. Hàm này chỉ có tác dụng cho các khối và không có tác dụng
trên các nhóm và thực thể.
Chế độ Object: chỉ những loại đối tượng có thể chọn và thay đổi được.
All Objects: tất cả các đối tượng đều có thể được chọn và thay
đổi
Group: chỉ các nhóm đối tượng mới được chọn và thay đổi
Block: chỉ các khối mới có thể được chọn và thay đổi
Entity: chỉ các thực thể mới có thể được chọn và thay đổi
Start: chỉ những vị trí mới có thể được chọn và thay đổi
Light: chỉ những nguồn sáng mới có thể được chọn và thay đổi
Model: chỉ những mô hình mới có thể được chọn và thay đổi
Sound: chỉ những đối tượng âm thanh mới có thể được chọn và thay đổi
Path: chỉ những đối tượng đường dẫn (path) mới có thể được chọn và thay đổi
Find Object: Hàm này cho phép xác định một khối nào đó, mà là nguyên nhân
của một thông điệp lỗi hoặc cảnh báo trong quá trình BUILD. Chỉ tiến đến khối
có số được phát sinh ra trong quá trình build. Nếu khối đó được chứa trong một
nhóm thì tất cả nhóm sẽ được đánh dấu, và chúng ta có thể sử dụng lệnh scope
down và lặp lại lệnh Find Object để tìm kiếm lại khối này.
2.1.3. Thực đơn mode
Một chế độ trong WED đưa ra cách thức hoạt động
mặc định khác nhau của các nút chuột. Có 11 chế độ soạn
thảo khác nhau, đó là:
• Object Select
25
Chương 3: Game Engine – Cách sử dụng WED
• Object Move
• Object Rotate
• Object Scale
• Vertex Move
• Edge Move
• Face Move
• Eye Move
• Eye Rotate
• Eye Zoom
• Walk-thru
WED luôn luôn ở trong một trong những chế độ hoạt động này. Dưới đây là sự
giải thích sự khác nhau của các chế độ này.
Object Select: chế độ này cho phép chọn một đối tượng để nhận một hành động
tiếp theo. Để chọn đối tượng, đặt con chuột trên một đối tượng và nhấn nút
chuột trái vào đối tượng cho đến khi đối tượng chuyển sang màu đỏ. Quá trình
chọn đối tượng đi từ đối tượng gần nhất đến đối tượng xa nhất nằm ở vị trí
dưới con trỏ. Chúng ta có thể chọn nhiều đối tượng bằng cách rê một hình chữ
nhật xung quanh các đối tượng đó, hoặc giữ phím [CTRL] trong khi nhấn trái
chuột vào các đối tượng. Chế độ chọn đối tượng cũng được đưa vào trong các
chế độ Object Move, Object Rotate và Object Scales. Để chọn các đối tượng
trong các chế độ này, hãy nhấn trái chuột và không di chuyển chuột.
Object Move: Chế độ này cho phép thay đổi các đối tượng được chọn. Để di
chuyển một đối tượng, nhấn trái chuột để chọn một đối tượng trong cửa sổ thiết
kế, rê nó đến vị trí mới và thả chuột ra. Chúng ta cũng có thể di chuyển một đối
tượng bằng các phím di chuyển. Chúng ta chỉ có thể di chuyển đối tượng song
26
Chương 3: Game Engine – Cách sử dụng WED
song với cửa sổ thiết kế. Khi Snap được kích hoạt trên thanh bar, đối tượng chỉ
có thể di chuyển theo tọa độ gốc (World Snap), theo gốc tọa độ của một nhóm
(Local snap), hoặc theo gốc tọa độ của riêng đối tượng (Delta snap). Nút Move
Restrict trên thanh bar hạn chế sự di chuyển theo hướng dọc và hướng ngang.
Giữ phím [INS] trong khi di chuyển để tạo ra một bản sao của đối tượng ở vị trí
của con chuột.
Object Rotate: Chế độ này cho phép thay đổi hướng của đối tượng được chọn.
Để quay một đối tượng, hãy nhấn trái chuột vào đối tượng đó trên cửa sổ thiết
kế, rê nút trái hoặc phải chuột và thả ra. Việc này sẽ làm cho đối tượng quay
theo hướng ngược chiều kim đồng hồ và cùng chiều kim đồng hồ trong mặt
phẳng song song với cửa sổ. Chúng ta cũng có thể quay các đối tượng bằng các
phím mũi tên.
Object Scale: Chế độ này cho phép thay đổi kích thướt của các đối tượng.
Tương tự như Object Move và Rotate, chúng ta có thể thay đổi kích thướt của
một đối tượng bằng cách: chọn đối tượng, rê và thả chuột theo ý muốn. Theo
mặc định, tại một thời điểm, WED sẽ giới hạn chỉ thay đổi kích thướt theo hai
chiều. 2 chiều này được xác định bởi các trục của mặt phẳng song song với cửa
sổ. Khi thay đổi kích thướt của một nhóm các đối tượng, chỉ kích thướt của các
khối trong nhóm đó mới được thay đổi. Các thực thể chỉ có thể thay đổi kích
thướt theo cách riêng. Nút Axis Restriction trên thanh bar sẽ hạn chế sự thay
đổi kích thướt theo hướng dọc hoặc hướng ngang. Nếu phím [CTRL] được giữ
trong lúc rê chuột, thì kích thướt của đối tượng sẽ được thay đổi bằng nhau theo
2 hướng.
Vertex Move: hàm này chỉ dành cho các khối hoặc cách đối tượng đường dẫn
(path). Nó cho phép thay đổi hình dạng của một khối bằng cách thay đổi vị trí
của các đỉnh. Trong chế độ này, các đỉnh của khối được chọn sẽ được hiển thị
màu vàng. Để di chuyển một đỉnh, nhấn trái chuột vào đỉnh đó và rê đến vị trí
27
Chương 3: Game Engine – Cách sử dụng WED
mới. Khi biên dịch map, tất cả các khối đặc phải có hình dạng lồi. Chúng ta
không thể thay đổi vị trí của một đỉnh mà làm cho khối có hình dạng lõm. Điều
này xảy ra khi chúng ta rê một đỉnh ra khỏi mặt phẳng của bề mặt. Trong
trường hợp này, WED sẽ phát sinh ra một lỗi. Nếu nhấn vào nút Ignore thì khối
có dạng không hợp lệ này sẽ bị giữ lại và việc này có thể tạo ra nhiều lỗi trong
map – vì thế đừng nên mạo hiểm. Bằng không WED sẽ chuyển khối trở lại
trạng thái gốc.
Face Move: Hàm này chỉ dành cho các khối. Nó cho phép di chuyển một bề
mặt của một khối đến vị trí khác. Trong chế độ này, các điểm màu vàng xuất
hiện ở giữa tất cả các bề mặt của nó. Để di chuyển một mặt, nhấp chuột phải
vào điểm màu vàng và kéo rê nó đến vị trí mới. Khi sử dụng chế độ Snap,
chuyển đến Delta Snap để tránh tình trạng làm méo mó các khối. Di chuyển
một mặt có thể làm méo mó một khối, làm cho nó có hình dạng lõm không có
giá trị. Trong trường hợp này WED sẽ phát sinh ra một lỗi. Nếu nhấn vào nút
Ignore thì khối có dạng không hợp lệ này sẽ bị giữ lại và việc này có thể tạo ra
nhiều lỗi trong map – vì thế đừng nên mạo hiểm. Bằng không WED sẽ chuyển
khối trở lại trạng thái gốc.
Eye Move: Chế độ này thay đổi vị trí của con mắt ảo đang nhìn vào cửa sổ thiết
kế. Theo mặc định, tất cả các tiêu điểm của 4 cửa sổ đều nằm tại một điểm
trong không gian. Nếu di chuyển một khung nhìn của một cửa sổ thiết kế, thì
khung nhìn của tất cả các cửa sổ thiết kế khác sẽ tự động cập nhật theo tiêu
điểm mới. Để di chuyển vị trí tiêu điểm này, nhấn chuột trái và kéo rê chuột
trong bất kì cửa sổ nào. Sự di chuyển này chỉ nằm trong mặt phẳng song song
với cửa sổ. Để di chuyển tiêu điểm tiến tới và lùi ra trong trong khung nhìn 3D,
nhấp phải và kéo rê chuột tới và lùi ra trong cửa sổ thiết kế 3D. Chúng ta cũng
có thể dùng phím mũi tên để di chuyển vị trí của tiêu điểm.
28
Chương 3: Game Engine – Cách sử dụng WED
Eye Rotate: Chế độ này cho phép thay đổi hướng của khung nhìn trong cửa sổ
thiết kế 3D. Có 2 cách thực hiện. Cách thứ nhất là quay tròn khung nhìn xung
quanh tiêu điểm thiết kế. Vị trí của con mắt ảo thay đổi nhưng vị trí của tiêu
điểm thiết kế thì không. Vì thế cách thực hiện này sẽ không có tác dụng trong
cửa sổ 2D. Bằng cách nhấp trái và kéo rê chuột trong cửa sổ thiết kế 3D. Mặc
định, chế độ này sử dụng giao diện quả cầu thạch anh, thì hành động quay sẽ
trông giống như việc quay một quả cầu thạch anh xung quanh tiêu điểm. Nếu
tùy chọn Invert Mouse được kích hoạt trong cửa sổ cấu hình (config), thì chế độ
này sẽ sử dụng tương tác quay theo quỹ đạo. Lúc đó, chúng ta sẽ di chuyển vị
trí của con mắt qua trái và phải xung quanh vị trí tiêu điểm. Cách thứ 2 là con
mắt của khung nhìn 3D vẫn nằm ở vị trí đó, nhưng khung nhìn sẽ nhìn lên, nhìn
xuống, nhìn trái, nhìn phải. Nếu tùy chọn View/Lock Views được chọn, chế độ
này sẽ đưa ra một tiêu điểm thiết kế mới dựa trên hướng của khung nhìn mới,
và cập nhật các khung nhìn 2D có liên quan. Để quay khung nhìn, nhấn phải và
kéo rê chuột trong cửa sổ thiết kế 3D.
Eye Zoom: Chế độ này cho phép phóng to hoặc thu nhỏ khung nhìn 2D. Nhấp
trái chuột trong bất kì cửa sổ nào và kéo rê chuột lên và xuống. Trong khung
nhìn 3D, chế độ này cho phép tăng và giảm khoảng cách giữa vị trí con mắt của
khung nhìn 3D với vị trí của tiêu điểm.
Walk-thru: Chế độ này cho phép di chuyển khung nhìn 3D trong toàn bộ khung
cảnh thiết kế sử dụng giống như camera Fly-thru. Trong chế độ này, chúng ta
có thể sử dụng chuột để nhìn trái, phải, trên, dưới và di chuyển bằng cách dùng
các phím mũi tên hoặc nút phải chuột. Giữ [shift] để nhân đôi tốc độ. Phím
[Home] và phím [End] cho phép di chuyển theo chiều dọc. [Pgup], [PgDn],
Left/Right cho phép rẽ xung quanh trục chính. Ấn phím [ESC], [SPACE], hoặc
[ENTER] bất cứ lúc nào muốn thoát khỏi chế độ WalkThrough.
2.1.4. Thực đơn Object
29
Chương 3: Game Engine – Cách sử dụng WED
Grouping: Thực đơn con – Nhóm và giới hạn lại các đối
tượng, đây chính là đặc trưng hướng đối tượng của WED.
Khi nhóm và giới hạn lại, chúng ta có thể xem nhiều nhóm
như là những đối tượng có thực. Chúng ta có thể nhóm các
đối tượng bằng cách sử dụng các lệnh theo sau:
Add To: Sử dụng lệnh này để thêm những đối tượng được
chọn vào một nhóm. Màu của các đối tượng được chọn sẽ
chuyển sang màu da cam để chúng ta biết rằng đối tượng
đã được đánh dấu chuẩn bị gom thành nhóm.
Finish: Lệnh này nhận ra các đối tượng đã được đánh dấu
hoặc được chọn và nhóm chúng lại thành một đối tượng mới.
Ungroup: Lệnh này sẽ phân nhóm được chọn ra thành các đối tượng riêng
rẽ.
Scope: Thực đơn con - việc này tương tự như tập hợp các thư mục trong một hệ
thống tập tin. WED định nghĩa giới hạn của một đối tượng là tập hợp các thành
phần con của nó. Nếu chúng ta muốn thay đổi các thành phần con của một đối
tượng, đầu tiên chúng ta cần phải nhảy tới phạm vi của đối tượng này. WED
cung cấp 2 lệnh scope up và scope down để thực hiện các mục tiêu này. Giới
hạn dưới cuối cùng là các bề mặt của một khối, trong khi giới hạn trên cùng thì
luôn luôn là toàn bộ map.
Scope up: lệnh này sẽ thoát ra khỏi phạm vi của một đối tượng. Nếu phạm
vi hiện thời là toàn bộ level, và có nhiều đối tượng trong phạm vi hiện thời,
WED sẽ tạo ra một phạm vi mới và đặt tất cả các đối tượng vào một nhóm
mới. Hàm này tương tự với lệnh chuyển về thư mục cha trong hệ thống tập
tin.
30
Chương 3: Game Engine – Cách sử dụng WED
Scope down: lệnh này cho phép tiến vào phạm vi của một nhóm các đối
tượng. Mặc định, tất cả mọi thứ, ngoài đối tượng được chọn sẽ không xuất
hiện trong cửa sổ thiết kế. Scope down sẽ dấu đi những thông tin không cần
thiết, tức là dấu đi phần còn lại của khung cảnh mà chỉ làm việc với đối
tượng được chọn. Hàm này tương tự với lệnh chuyển về thư mục con trong
hệ thống tập tin.
Add Cube: Thực đơn con này cung cấp nhiều khối có dạng hình lập phương mà
chúng ta sẽ đặt vào level.
Add Hollow Cube: Thực đơn con này cung cấp một vài hộp đã được làm rỗng
mà ta sẽ đặt vào level.
Add Primitive: Thực đơn con này cung cấp một vài khối cơ sở mà chúng ta có
thể sử dụng trong WED. Những khối cơ sở này gồm có các loại: hình lập
phương, hình cầu, hình tam giác, và các hình lăng trụ có số cạnh khác nhau.
Add Prefab: Thực đơn con này đưa ra khoảng 500 loại đối tượng, được sắp
xếp vào một vài nhóm, được sử dụng trong WED. Đồ đạc, cửa, xe cộ hoặc các
kiến trúc có giá trị khác. Các đối tượng được làm sẵn nằm trong thư mục
PREFAB và có thể được thêm vào bởi người dùng.
Add Light: đặt một nguồn sáng tĩnh vào map. Chúng ta có thể thay đổi màu sắc
(chỉ trong một vài phiên bản) và độ sáng bằng cách thay đổi các giá trị Red,
Green, Blue (từ 0..25) và phạm vi của nguồn sáng. Nếu Red và Green được gán
là 0 thì ánh sáng có màu trắng thì độ sáng của nó được thay đổi bởi giá trị Blue.
Add Sound: Đặt một tài nguyên âm thanh tĩnh (tập tin WAV) vào map. Chúng
ta có thể điều chỉnh độ lớn và phạm vi của tài nguyên âm thanh.
Add Position: Đặt một vị trí vào map. Vị trí có thể được xác định trong lúc viết
mã. Nếu không có thực thể người chơi, vị trí đầu tiên được sử dụng là vị trí bắt
đầu của camera.
31
Chương 3: Game Engine – Cách sử dụng WED
Add Map Entity: Đặt một thực thể map (tập tin WMB) như cửa, thang máy, sân
ga. Thực đơn hiện ra tất cả các thực thể map trong thư mục map và trong các
thư mục con. Chúng ta có thể tự tạo ra một thực thể thể map bằng cách mở một
đối tượng đã được làm sẵn, và BUILD để tạo ra tập tin WMB. Khi thêm một
thực thể mới vào WED sẽ đặt chúng vào chính giữa 4 cửa sổ thiết kế.
Add Model: đưa một thực thể mô hình (tập tin MDL) vào map, là các thực thể
có thể chuyển động. Thực đơn hiện ra tất cả các thực thể mô hình trong thư
mục map và trong các thư mục con. Chúng ta có thể tạo ra một thực thể mô
hình bằng cách sử dụng chương trình thiết kế các mô hình, MED.
Add Terrain: đưa một thực thể địa hình (tập tin HMP; không được hỗ trợ trong
tất cả các phiên bản). Thực thể địa hình có thể được tạo ra bằng chương trình
MED. Thực thể địa hình có thể được di chuyển và thay đổi kích thướt nhưng
không quay được.
Add Sprite: đưa một thực thể cảnh (tập tin PCX), như đồng cỏ, cây…Thực đơn
hiện ra tất cả các thực thể cảnh trong thư mục map và trong các thư mục con.
Có thể sử dụng các chương trình vẽ hình, như Paint Shop Pro, để tạo ra một
thực thể cảnh. Nhớ lưu tâp tin PCX theo định dạng có màu sắc thật.
Add Path: Thêm vào một đường dẫn, để các thực thể hành động sử dụng
(không được hỗ trợ trong mọi phiên bản). Chúng ta có thể đặt tên cho đường
dẫn trong properties; còn không thì một tên mặc định được tạo ra. Trong chế
độ Vertex Mode, các điểm trong đường dẫn có thể được tạo thêm hoặc xóa đi.
Load Entity: Đưa một tập tin thực thể từ một thư mục nào đó, đưa nó vào map,
và sao chép nó vào thư mục map. Cẩn thận nếu không nó sẽ đè lên thực thể có
cùng tên.
Load Sound: Đưa một tập tin WAV từ một thư mục nào đó, đưa nó vào map, và
sao chép nó vào thư mục map.
32
Chương 3: Game Engine – Cách sử dụng WED
Load Prefab: Đưa tập tin WMP như là đối tượng kiểu khối vào khung cảnh
thiết kế.
Save Prefab: Lưu khối đối tượng được chọn vào tập tin WMP, để sử dụng
trong các khung cảnh thiết kế khác.
2.1.5. Thực đơn Texture
Apply to Object: Lệnh này gắn kết cấu được chọn trong
cửa sổ texture đến tất cả các mặt của đối tượng được
chọn. Hoặc chúng ta có thể nhấp double vào kết cấu được
chọn trong cửa sổ kết cấu.
Texture Bookmarks: Lệnh này mở ra một cửa sổ cho phép cất giữ các kết cấu
ưa thích trong cửa sổ kết cấu.
Texture Manager: Lệnh này đưa ra một hộp thoại, trên đó chúng ta có thể thêm
hoặc xóa đi bộ kết cấu WAD trong thanh
texture. Trên đó có các tùy chọn sau:
New WAD: Tạo ra một tập tin WAD rỗng, để
chúng ta có thể thêm các kết cấu mới vào thanh
texture.
Add WAD: Thêm một tập tin WAD vào texture.
Add Folder:Thêm tất cả các tập tin WAD trong
thư mục được chọn.
Save WAD: Lưu tập tin WAD sau khi nó đã bị thay đổi như thêm vào hoặc bỏ
đi một kết cấu nào đó.
Build WAD: Tạo ra một tập tin WAD mới chứa đựng tất cả các kết cấu được sử
dụng trong lúc thiết kế.
Remove WAD: Xóa đi một kết cấu trên thanh kết cấu.
33
Chương 3: Game Engine – Cách sử dụng WED
2.1.6. Thực đơn View
GXL Properties: Danh sách các thuộc tính của thư
viện đồ họa được sử dụng trong khung nhìn 2D và 3D.
Toolbars: Hiển thị hoặc ẩn đi một toolbar nào đó hoặc
cửa sổ dự án.
Add View: Thêm một cửa sổ khung nhìn mới ngoài 4
cửa số thiết kế đã có.
Wireframe: Chọn loại biểu diễn trong cửa sổ 3D theo
dạng khung dây.
Solid: Chọn loại biểu diễn trong cửa sổ 3D theo dạng khối đặc.
Textured: Chọn loại biểu diễn trong cửa sổ 3D theo dạng kết cấu.
Goto Center: Đưa tiêu điểm của 4 cửa sổ thiết kế đến phạm vi của đối tượng
đang chọn.
Lock Views: Mặc định, tiêu điểm của 4 cửa sổ thiết kế nằm trên cùng một
điểm trong không gian. Khi thay đổi vị trí của một khung nhìn, các khung nhìn
thiết kế khác cũng sẽ tự động cập nhật vị trí của chúng tùy vào tiêu điểm mới.
Lệnh Lock Views sẽ cho phép hoặc vô hiệu đặc điểm này. Khi vô hiệu, các cửa
sổ thiết kế này có thể di chuyển một cách độc lập, không phụ thuộc vào nhau.
Decrease View Depth: làm cho dễ dàng thấy cửa sổ thiết kế hơn, WED sẽ
không hiển thị những phần của khung cảnh nằm ngoài phạm vi nào đó. Lệnh
này sẽ làm giảm phạm vi tầm nhìn này.
Increase View Depth: làm cho dễ dàng thấy cửa sổ thiết kế hơn, WED sẽ không
hiển thị những phần của khung cảnh nằm ngoài phạm vi nào đó. Lệnh này sẽ
tăng phạm vi tầm nhìn này.
2.1.6. Thực đơn help
34
Chương 3: Game Engine – Cách sử dụng WED
Tutorial: mở tập tin hướng dẫn sử dụng 3D GameStudio.
About WED: Thông tin về WED và phiên bản GameStudio.
2.2. Giao diện sử dụng
4 cửa sổ thiết kế hiển thị khung cảnh mà chúng ta xây dựng từ 4 khung nhìn
khác nhau theo các hướng: hướng trên, sau lưng, bên cạnh và ở một góc tùy ý
trong cửa sổ 3D. Theo mặc định, 4 khung nhìn có tiêu điểm nằm trên cùng một
điểm trong không gian. Có thể cuộn một cửa sổ bằng cách nhấp phải và kéo rê
chuột, và phóng to, thu nhỏ bằng nút lăn chuột hoặc giữ phím [SHIFT] và rê
nút chuột phải. Khi di chuyển một khung nhìn trong cửa sổ WED sẽ tự động
cập nhật các khung nhìn khác tùy vào vị trí của tiêu điểm mới. Chúng ta có thể
khóa hoặc mở khóa khung nhìn của 4 cửa sổ bằng cách chọn Lock Views.
Engine sử dụng hệ tọa độ thuận tay phải trong lúc thiết kế. Để hiểu được hệ
thống này, hãy tưởng tượng về con đường đi hằng ngày. Chiều dương của trục
X chỉ về hướng đông, và hướng đến cạnh bên phải trong cửa sổ khung nhìn
trên. Chiều dương của trục Y chỉ về hướng bắc, và hướng lên trên trong cửa sổ
khung nhìn trên. Còn trục Z thì chỉ chiều cao của khung cảnh. Chiều dương của
trục Z tiến ra bên ngoài cửa sổ khung nhìn trên và hướng về phía chúng ta. Cửa
sổ sau lưng quy định khung nhìn hướng đến hướng bắc, và cửa sổ bên cạnh quy
định khung nhìn hướng đến hướng tây. Hệ thống lưới của cửa sổ không chia
lưới tọa độ theo bội số của 10, như chúng ta mong đợi mà được chia theo bội số
của 8 (có thể điều chỉnh trong Preference). Theo phương pháp này chúng ta có
thể dễ dàng tạo ra một đối tượng có chính xác cùng kích thướt với kết cấu của
mình, thông thường kích thướt của nó chính là bội số của 2 (như 64x64,
128x128, hoặc 256x256). Sử dụng mạng lưới mặc định và kích thướt của kết
cấu, ví dụ với một kết cấu 128x128 điểm sẽ bao phủ 128 hình lập phương đơn
vị mà không cần phải lợp thêm vào nữa. Kích thướt của một hộp lưới nhỏ, và
số hộp nhỏ trên hộp lưới lớn, được cho biết trên thanh tiêu đề.
35
Chương 3: Game Engine – Cách sử dụng WED
Trong cửa sổ 3D chỉ là một khung nhìn quay xung quanh tiêu điểm thiết kế
trong không gian. Cửa sổ 3D có thể được biểu diễn ở dạng khung dây, rắn,
hoặc kết cấu để xem trước. Cách biểu diễn này có thể được thay đổi bằng cách
chọn thực đơn View/Render. Trong Preferences chúng ta có thể chọn giữa phần
mềm biểu diễn cơ sở (GXL_BASE) và biểu diễn DirectX 8.1(GXL_DX81) cho
khung nhìn 2D và khung nhìn 3D. Tất cả chúng cũng đều hiển thị màu sắc của
nguồn sáng và đưa ra một khung nhìn khá thực cho toàn cảnh, tuy nhiên nó
không có cùng chất lượng như sản phẩm cuối cùng. Nếu phần mềm biểu diễn là
DirectX, chúng ta có thể điều chỉnh các tham số biểu diễn bằng cách nhấn phải
chuột vào cửa sổ và chọn GXL_Properties. Lúc này chúng ta có thể điều chỉnh
tác dụng của mặt trời, ánh sáng được biểu diễn trong cửa sổ 3D.
Chúng ta có thể đưa các khung nhìn của các cửa sổ thiết kế trở về trạng thái
ban đầu bằng lệnh View/Home. Cửa sổ thiết kế có giới hạn theo chiều sâu.
Nhiều đối tượng của khung cảnh sẽ không được hiển thị nếu nó vượt ra khỏi
phạm vi nào đó của khung nhìn. Nó rất hữu ích khi chúng ta xây dựng một
level quá lớn, bởi vì nó có thể làm giảm số đối tượng được hiển thị trên màn
hình. Chúng ta có thể điều chình giá trị khoảng cách trong GXL_Properties
hoặc sử dụng lệnh View/Decrease ViewDepth và View/Increase View Depth.
Để dọn dẹp cửa sổ thiết kế trong lúc xây dựng level, chúng ta có thể tắt việc
hiện thị các thực thể trong map. Chúng ta có thể việc này bằng cách bỏ chọn
tùy chọn Show Entities trong cửa sổ Preferences.
2.3. Cửa sổ dự án
2.3.1. Tab đối tượng
Cửa sổ này hiển thị danh sách tất cả các đối tượng ở dạng cây trong toàn bộ
level. Đối tượng được chọn được làm nổi bật trong cây danh sách. Chúng ta có
thể chọn một đối tượng bằng cách nhấp double vào nó. Có thể chọn nhiều đối
36
Chương 3: Game Engine – Cách sử dụng WED
tượng trong cây đối tượng bằng cách giữ phím [CTRL] trong khi nhấp vào các
đối tượng. Khi nhấp phải vào một đối tượng sẽ đưa ra tùy chọn sau đây:
Scope to: Giới hạn lại một nhóm trong cửa sổ
2D và 3D.
Goto Object: Trung tâm của khung nhìn được
chọn bao quanh đối tượng được chọn.
New Group: Tạo ra một nhóm mới bên trong
nhóm hiện tại.
Ungroup: Đưa các đối tượng ra khỏi nhóm
hiện tại.
Cut/Copy/Delete: Thay đổi một đối tượng
hoặc nhóm đối tượng.
Render style:
Chọn loại biểu diễn (khung dây, đặc, kết cấu) của đối
tượng hoặc nhóm. Cũng cho phép nó không được chọn
(disable) và di chuyển đối tượng, và làm cho nó không thể
nhìn thấy được (invisible) trong khung nhìn.
Đối tượng hoặc nhóm các đối tượng có thể được bỏ qua trong quá trình biên
dịch, để tăng tốc độ biên dịch để kiểm tra các phần khác trong toàn level. Để
làm điều này, chúng ta có thể nhấp chuột phải vào đối tượng và chọn Render
Style->Ignore
Properties: mở ra cửa sổ thuộc tính của đối tượng.
37
Chương 3: Game Engine – Cách sử dụng WED
2.3.2 Tab Views
Cửa sổ này hiển thị một danh sách các khung nhìn đã được lưu, và cho phép
lưu vị trí một khung nhìn nào đó bằng cách nhấp phải chuột.
Add View Setting: vị trí mới của khung
nhìn.
Save View Settings: lưu vị trí của khung nhìn.
Restore View Setting: Gọi lại vị trí của khung nhìn.
Delete: Xóa vị trí của khung nhìn đang chọn.
2.3.3. Tab Texture
Cửa sổ này hiển thị tất cả các kết cấu từ các tập tin kết
cấu đã được xác định trong texture manager. Chúng ta có
thể mở một bộ các kết cấu WAD bằng cách nhấp vào nó,
thay đổi kích thướt cửa số texture bằng cách kéo rê chuột ở
cạnh phía dưới, và có thể cuộn một WAD bằng thanh cuộn
nằm ở phía bên phải. Nếu con chuột đang nằm trên một
texture nào, thì tên của nó sẽ được hiển thị trong cửa sổ cửa
sổ Texture. Khi nhấp vào một kết cấu thì hình ảnh của nó sẽ được xuất hiện ở
38
Chương 3: Game Engine – Cách sử dụng WED
cửa sổ Texture, chúng ta có thể thay đổi các thuộc tính của kết cấu bằng cách
nhấp phải chuột vào nó và chọn Setting. Khi nhấp double chuột vào một kết
cấu, thì nó sẽ xuất hiện trong cửa sổ Object và gắn đến tất cả các mặt của khối
đang chọn. Muốn thay đổi kết cấu của một khối map, đầu tiên chọn khối, rồi
cuộn đến cửa sổ kết cấu, nhấp trái chuột vào kết cấu mong muốn, rồi nhấp
chuột phải vào nó và chọn lệnh apply.
Hộp thoại cũng cho phép thêm vào hoặc xóa đi một kết cấu
trong bộ sưu tập các kết cấu WAD. Nhấp chuột phải vào một kết
cấu đưa ra những tùy chọn sau đây:
Apply: Gắn kết cấu vào đối tượng được chọn.
Settings: Xuất hiện bảng điều chỉnh các thuộc tính của một kết
cấu.
Tên, độ phân giải, độ sâu của màu sắc.
x – y offset: độ dịch chuyển của kết cấu.
x – y scale: kích thướt của kết cấu.
Angle: góc quay của kết cấu.
Ambient: điều chỉnh cường độ ambient.
Albedo: Albedo dưới 5 để điều chỉnh màu sương mù, trên 5 chỉ cường độ suất
phân chiếu.
Flags Được sử dụng trong lúc viết mã.
Smooths Để điều chỉnh độ mịn của bóng.
Mirror Làm cho kết cấu có độ phản chiếu lại.
Shaded kết cấu vô hình
Flat kết cấu phẳng
39
Chương 3: Game Engine – Cách sử dụng WED
Sky kết cấu bầu trời
Turbulence kết cấu chuyển động
None không có kết cấu
Add Teture: sẽ thêm một kết cấu PCX, BMP, TGA đến WAD, để làm kết cấu
cho các bề mặt. Tên kết cấu được tạo từ các kí tự thông thường, số, gạch dưới
(không chứa các kí tự đặc biệt và khoảng cách). Các trường hợp ngoài lệ: nếu
một kết cấu được đặt tên bắt đầu là một kí tự ‘+’, theo sau là 1 số, thì kết cấu
này là một hoạt ảnh với chu trình từ ‘+0…+9’. Nếu tên bắt đầu là ‘*’ thì đây
chính là một kết cấu chuyển động hỗn loạn có thể qua lại được; nếu nó bắt đầu
với sky, thì nó chính là kết cấu loại bầu trời.
Remove Texture: sẽ xóa kết cấu đang chọn ra khỏi WAD.
Rename: đổi tên kết cấu đang chọn.
Extract Texture: lưu kết cấu được chọn vào tập tin BMP hoặc PCX.
Add to Bookmarks: thêm kết cấu được chọn vào tập các kết cấu được làm dấu.
Save WAD: Lưu tập tin WAD. Chú ý rằng tập tin WAD trong
GameStudio có định dạng khác với định dạng tập tin WAD trong Quake. Tuy
nhiên, WED đều có thể truy cập cả hai loại theo cách thức riêng.
Show Texture: Đưa ra nhiều cách thức hiển thị của kết cấu.
1:1 hiển thị kết cấu cùng với
kích thướt gốc của nó
64x64 hiển thị kết cấu có kích
thướt là 64x64
32x32 hiển thị kết cấu có kích
thướt là 32x32
40
Chương 3: Game Engine – Cách sử dụng WED
Texture Name hiển thị tên của kết cấu
dưới ảnh của nó
Texture Name
Only
chỉ hiển thị tên của kết
cấu
2.3.4. Tab Resource
Cửa sổ này hiển thị danh sách tất cả các tập tin và mã nguồn trong game.
Chúng ta có thể xem mã nguồn hoặc nhấp double chuột vào một tập tin nào đó
để mở nó bằng trình soạn thảo của nó.
2.4. Cửa sổ Bookmark
chúng ta sử dụng cửa sổ này để đánh dấu những kết cấu trong cửa sổ
texture. Để mở cửa sổ này chọn lệnh Textures/Bookmarks. Để đánh dấu một
kết cấu thường sử dụng, nhấp phải chuột vào kết cấu
trong cửa sổ kết cấu rồi chọn lệnh Add to
Bookmarks.
2.5. Thuộc tính của khối
Properties
Block: Cho phép đặt tên cho một khối.
Texture Lock: kết cấu được giữ thẳng hàng trong lúc di chuyển khối. Chúng
không được giữ thẳng hàng trong lúc quay và thay đổi kích thướt.
Passable: Được dùng khi muốn tạo ra một môi trường chất lỏng. Để cho
khối có thể qua lại được và có thể thấy được bề mặt có nó từ bên trong.
Invisible: Chướng ngại vật không nhìn thấy được. Chú ý rằng những khối
không nhìn thấy thì không thể được dò tìm bởi lệnh trace(). Nếu muốn một
41
Chương 3: Game Engine – Cách sử dụng WED
khối khối nhìn thấy nhưng có thể được dò tìm bằng lệnh trace() thì hãy sử dụng
cờ none.
Surface/Texture
Surface: Cho phép gắn một kết cấu khác đến từng bề mặt của khối được chọn,
và điều chỉnh các tham số của bề mặt này. sử dụng nút >> và nút << để chuyển
đến bề mặt mong muốn. Bề mặt được chọn sẽ có màu vàng trong khung nhìn
hiện tại. Để gắn một kết cấu khác đến bề mặt này, chọn một kết cấu mới trong
cửa sổ kết cấu, nhấp phải chuột và chọn apply. Sử dụng X/Y offset, và X/Y scale
để sửa lại cho kết cấu thẳng hàng với cạnh bề
mặt nếu cần. Chúng ta có thể quan sất kết quả
trong khung nhìn 3D. Điều chỉnh Angle để
quay hướng của kết cấu trên bề mặt. Ô flags
cho phép thay đổi các thuôc tính của bề mặt.
Ambient: làm tối hoặc chiếu sáng kết cấu của khối, -100..+100 (mặc định là
0).
Albedo/Fog: hệ số phản xạ của mặt trời (10..100, mặc định là 50), hệ số phản
xạ của gương hoặc màu sắc (1..4).
Shaded: kết cấu thông thường có bóng mờ với ánh sáng tĩnh và ánh sáng
động.
Flat: kết cấu phía bên ngoài, không có bóng mờ. Bóng thẳng theo góc
chiếu sáng của mặt trời.
Sky: bề mặt bầu trời nhiều lớp, cần thiết cho hộp bầu trời bao quanh
khung cảnh. Là mặc định nếu tên kết cấu bắt đầu là ‘sky’.
Turbulence: được dùng cho các chất lỏng, kết cấu này được dùng cho nước
hoặc dung nham. Là mặc định nếu tên kết cấu bắt đầu là ‘*’.
42
Chương 3: Game Engine – Cách sử dụng WED
None: bề mặt không được hiển thị.
Flag1..7 thông thường được sử dụng trong lúc viết mã.
Mirror: xác định bề mặt này có chiều ngang hoặc dọc (chỉ sử dụng trong
các phiên bản chuyên nghiệp).
Possition: cho phép chỉnh sửa bằng số để
di chuyển, quay, kích thướt của khối. Các giá
trị quay và kích thướt có thể nhập vào nhưng
không được thay đổi.
Object: Hiển thị vị trí cục bộ (trong một
nhóm) và toàn cục của một khối.
2.6. Thuộc tính của thực thể
Nhấp phải chuột vào thực thể, rồi
chọn Properties để hiển thị hộp thoại
này. Tùy chọn bên phải xuất hiện:
Name: Mỗi thực thể có một tên
duy nhất, để xác định thực thể trong lúc viết mã. Tên này được phát sinh tự
động nhưng cũng có thể được sửa lại (tối đa 20 kí tự).
File: Tên tập tin địa hình, map, mô hình, ảnh của thực thể (tối đa 32 kí
tự).
Ambient: giảm hoặc tăng độ sáng cho thực thể (-100...+100).
43
Chương 3: Game Engine – Cách sử dụng WED
Flags: Transparent – làm cho thực thể trở nên trong mờ.
Invisible – thực thể không nhìn thấy được, nhưng nó vẫn còn là một
chướng ngại vật.
Shadow – thực thể sẽ có bóng nửa trong suốt trên nền đất.
Overlay – chuyển kết cấu của các mô hình hoặc map từ đen sang
trong suốt.
Flare – sự trong suốt của một mô hình hoặc một cảnh phụ thuộc vào
độ sáng của nó.
Bright – tăng độ sáng của một mô hình hoặc cảnh trong mờ, cho các
ngọn lửa hoặc tia sáng.
Metal – làm cho vỏ bên ngoài của thực thể có thể phản xạ lại khi bị
ánh sáng mặt trời chiếu vào.
Action: Hành vi của thực thể, nhận
được từ mã nguồn.
Flag1..Flag8: Có nhiệm vụ là làm
một công tắc, phụ thuộc vào hành vi
của thực thể trong mã nguồn. Chúng
có thể xuất hiện dưới tên gọi khác
được định nghĩa bởi khai báo define
trong mã nguồn.
Skill1..Skill20: chứa các giá trị kiểu
số, phụ thuộc vào hành vi của thực thể
trong mã nguồn. Chúng có thể xuất
hiện dưới tên gọi khác được định
44
Chương 3: Game Engine – Cách sử dụng WED
nghĩa bởi khai báo define trong mã nguồn.
Position: Cho phép di chuyển, quay và thay
đổi kích thướt của thực thể bằng cách nhập
giá trị vào các ô position, angle, scale.
Object: hiển thị vị trí cục bộ (trong một
nhóm) và vị trí toàn cục của thực thể.
3.Thiết kế một map
Không những về mặt thẩm mỹ mà còn cả những kỹ thuật phát sinh cũng
phải được đề cập đến trong lúc thiết kế một level. Một cấu trúc cây BSP chứa
tất cả các bề mặt mà cắt với các mặt khác. Các cạnh và đỉnh không được nhận
từ WED, mà được tính toán từ các phần giao nhau. Ưu điểm của ý tưởng này là
chúng ta có thể sử dụng những khối trùng lắp lên nhau - những phần giao
không nhìn thấy được sẽ bị bỏ đi trong quá trình xử lý, và các cạnh và đỉnh mới
sẽ tự động được thêm vào phần giao nhau. Chính vì đặc điểm này mà biên dịch
sẽ nhanh hơn, bởi vì những khối bị trùng lắp, không thấy được không được
biên dịch (những engine khác sẽ biên dịch tất cả các khối giao với nhau).
Khuyết điểm của ý tưởng này chính là khi các đỉnh tạo ra một góc quá nhỏ dẫn
đến sự chênh lệch vị trí giữa các đỉnh là rất lớn. Nếu bề mặt tiếp xúc hoặc giao
nhau tạo ra một góc rất nhỏ, sai lệch khoảng 1/100 độ có thể cách vị trí các
cạnh khoảng một vài pixel thì có thể thấy được trong level.
Với đặc điểm này, chúng ta không nên sử dụng những khối quá hẹp, quá
dài, hoặc quá nhọn. Không nên tạo ra những khối có cạnh nhỏ hơn 2 quants.
Hãy thiết kế các map có bề mặt ít nhất như có thể, và sử dụng những khối dày
như có thể. Đôi khi chúng ta không thể không sử dụng những bề mặt có góc
quá nhỏ, những vẫn có một cách thiết kế tốt và xấu để thiết kế những bề mặt
này. Ví dụ, khi thiết kế một đoạn đường dốc như thế này:
45
Chương 3: Game Engine – Cách sử dụng WED
Thiết kế tồi: sử dụng khối quá mỏng, góc chênh lệch quá nhỏ. Và các chỗ
nối sẽ có thể giống như là những lỗ hổng.
Thiết kế tốt: sử dụng 3 khối với 15 bề mặt thay vì 5 khối với 20 bề mặt, và
sự sai lệch của một góc, khi xảy ra cũng không nhìn thấy được.
4. Thực thể
Thực thể là loại tập tin ngoài nằm ở thư mục work hoặc trong các thư mục
con của nó. Có 4 loại thực thể có thể đưa vào WED.
4.1. Thực thể mô hình
Một mô hình là một đối tượng 3D có thể chuyển động, được lưu trữ trong
tập tin ngoài MDL. Nó bao gồm một mạng lưới 3D với vỏ bao rất mịn. Mô
hình thực thể thường dùng là các đối tượng nhỏ có thể chuyển động: diễn viên,
quái vật hoặc giống như vậy. Chúng có thể được tạo ra bằng cách sử dụng
46
Chương 3: Game Engine – Cách sử dụng WED
chương trình thiết kế mô hình, như MED, là một thành phần của 3D
gameStudio. Hầu hết tất cả các chương trình thiết kế mô hình, kể cả MED, đều
có thể hiểu các định dạng 3D khác như 3DS, X, hoặc MD2 và chuyển nó thành
mô hình MDL. Vì thế nếu muốn đưa các đối tượng, cảnh được tạo ra bởi một
chương trình khác, như Truespace®, Maya® hoặc 3D Studio MAX®. Với các
mô hình nhận được từ các chương trình như MAX hoặc MAYA có thể được tải
từ trang web GameStudio.
4.2 Thực thể Sprite
Một sprite là một hình phẳng 2 chiều, nó giống như là một hình vẽ trên một
bức tường, hoặc luôn luôn đối mặt với camera nếu cả 3 góc của nó đều là 0. Nó
được lưu trữ trong các tập tin ngoài theo các định dạng PCX, BMP, TGA và có
thể được tạo ra bằng các chương trình vẽ hình chuẩn, như PaintShop Pro hoặc
Adobe Photoshop. Loại tập tin TGA có chứa kênh alpha có thể đưa ra được giá
trị trong suốt trong từng điểm ảnh. Thực thể sprite được biên dịch nhanh hơn
các thực thể map hoặc thực thể mô hình, và rất thích hợp để sử dụng để tạo ra
các vụ nổ, nguồn sáng, ngọn lửa hoặc như thứ tương tự như vậy.
Nếu không muốn một thực thể luôn luôn di chuyển theo camera, thì cần
thiết lập các góc của nó khác 0, như 0.1 chẳng hạn. Với các sprite có thể
chuyển động, cất tất cả các khung chuyển động liên tục trong cùng một tập tin,
ví dụ như tập tin explo+7.pcx trong thư mục template. Thông thường, cần đặt 4
sprite vào một hình dạng ‘X’ để tạo ra một đối tượng giống thế giới thực như
các loại cây. Một vài chương trình làm ảnh chuyển động 3D, như VoodooT
không cho phép kích thướt của các sprite lớn hơn 256x256 điểm ảnh.
4.3 Thực thể Map
Một thực thể map là một đối tượng 3D tĩnh, được lưu trữ trong tập tin ngoài
có định dạng WMB. Thực thể map có thể được sử dụng như là các thành phần
47
Chương 3: Game Engine – Cách sử dụng WED
của level như cửa, nền đất, các loại xe cộ. Bởi vì chúng chỉ là một map đã được
biên dịch, vì thế chúng ta có tạo ra chúng bằng trình thiết kế WED. Thí dụ,
chúng ta có thể chuyển từng map đã được làm sẵn thành một thực thể bằng
cách mở nó, thực hiện BUILD với tùy chọn Map Entity, rồi chép tập tin WMB
vào thư mục hiện tại. Chúng ta có thể tìm thấy các loại map đã được làm sẵn
như cửa, đồ đạc, xe cộ… trong thư mục con prefab. Các thực thể mô hình
(model), ảnh (sprite), địa hình (terrain) đều là như bộ phận cấu thành thực thể
map sẽ được đưa vào level khi thực thể map được đưa vào level. Như vậy, một
nhóm thực thể có thể được định nghĩa và biên dịch thành các thực thể map.
Chúng ta có thể truy cập đến các thực thể trong thực thể map bằng chỉ lệnh
map_subents.
4.4. Thực thể Địa hình (terrain)
Thực thể địa hình gồm nhiều kết cấu được ánh xạ vào mạng lưới hình chữ
nhật. Nó được tập tin ngoài HMP (không được hỗ trợ trong tất cả các phiên
bản). Giống như tên gọi thực thể địa hình có thể được sử dụng như là các thành
phần lớn hoặc nhỏ của level mà không theo bất kì quy luật nào của địa hình.
Địa hình không quay được.
4.5. Bóng
Chỉ các thực thể mô hình mới có bóng động trên mặt đất. Tuy nhiên, nếu
một thực thể không di chuyển mà không hoạt động, như cây, chúng ta nên chọn
loại bóng cho nó là bóng tĩnh. Bóng tĩnh thì mịn hơn và được biên dịch nhanh
hơn, và được hỗ trợ trong tất cả các phiên bản. Tạo ra một khối có kích thướt
và hình dạng gần giống như thực thể, đặt vào vị trí của thực thể, bật cờ detail
và chọn chế độ kết cấu cho tất cả các mặt của nó là None để cho nó không thấy
được. Khối sẽ tạo ra một bóng tĩnh trên nền đất và nó các tác dụng như một
48
Chương 3: Game Engine – Cách sử dụng WED
chướng ngại vật, nhưng không thấy được. Có thể bật cờ passable để cho sự dò
tìm thực thể được nhanh hơn.
4.5. Thuộc tính trong suốt
Thực thể có thể trở nên trong suốt nếu bật cờ transparent hoặc cờ flare,
hoặc sử dụng ảnh có định dạng với kênh alpha cho các thực thể sprite hoặc vỏ
bao bên ngoài của thực thể.
49
Chương 3: Game Engine – Cách sử dụng MED
II. Cách sử dụng MED
MED được sử dụng để tạo hoặc chuyển đổi định dạng các mô hình hoặc các địa
hình 3D trong 3D GameStudio. Giao diện rất dễ sử dụng để tạo ra các mô hình
3D và vỏ bao bên ngoài đơn giản.
1. Trình thiết kế
Dưới đây là giao diện của MED:
Chúng ta thấy rằng 4 khung nhìn của MED rất giống 4 khung nhìn của
WED. Tuy nhiên, vì chức năng và nhiệm vụ của nó là thiết kế một mô hình
chuyển động, khác so với WED là thiết kế level, nên tương tác với người dùng
là khác. Khi kéo rê vào các thanh trong các khung nhìn thì sự cân xứng của các
khung nhìn sẽ bị thay đổi.
Khi nhấp phải vào khung nhìn 3D và chọn GXL Properties, thì thuộc tính
của nó như độ sáng và phạm vi khung nhìn có thể được thay đổi.
1.1. Các thực đơn
1.1.1. Thực đơn File
Với thực đơn file, chúng ta có thể lưu, gọi lại, nhập hoặc xuất các tập tin từ
MED.
50
Chương 3: Game Engine – Cách sử dụng MED
New Model: Tạo ra một mô hình mới.
New Terrain:Tạo ra một địa hình mới.
Open
Save Lưu mô hình hoặc địa hình với
đến tập tin hiện trong các định dạng MDL5,
MDL7, HMP của GameStudio. Định dạng
MDL không giống như định dạng mô hình
có cung phần mở rộng trong QuakeT. Khung xương chỉ được hỗ trợ trong
định dạng MDL7.
Save As: Lưu với tên mới.
Merge: Cộng mô hình khác vào mô hình hiện tại, vì thế kết quả là sự
kết hợp của hai mô hình.
Choose Palette: Gọi một bảng màu cho các mô hình mà vỏ bọc có kết cấu kiểu
8 bit. Bảng màu có thể nhận được từ các định dạng như BMP, PCX, PAL, LMP
hoặc RAW.
Import / Append Vertices: Nhập một mô hình từ các định dạng .ASC hoặc .3DS.
Lệnh này sẽ nhập các mô hình được tạo ra từng các ứng dụng 3D như 3D
Studio. Cả hình dạng và kết cấu của các mô hình đều được đưa vào. Muốn đưa
một mô hình đã được tạo ra bởi các ứng dụng khác, đầu tiên cần đưa khung vào
trước, rồi sử dụng tùy chọn "Import Append Frames" giữ nguyên các khung.
Khi nhập một tập tin 3DS quá phức tạp, chúng ta nên chọn tùy chọn Model
Properties / Fast Prec trước khi lưu nó. Sau khi nhập theo phương pháp này,
các bản vẽ và kết cấu có thể được tạo ra bằng trình thiết kế skin.
Import / Append Frames: Đưa vào một vài khung chuyển động của một mô
hình. Để cho các khung theo đúng thứ tự, đầu tiên, chọn khung cuối cùng, rồi
51
Chương 3: Game Engine – Cách sử dụng MED
giữ phím SHIFT, rồi chọn tập tin đầu tiên trong nhóm muốn đưa vào, rồi nhấn
OK.
Import / Frame Names From Text : Lệnh này nhập các khung có tên trong tập
tin kiểu text. Để tạo ra một tập tin kiểu text, đặt tên một khung trên một dòng
không có khoảng trống.
Export / Q1 MDL: Xuất mô hình ra định dạng Quake 1 MDL.
Export / MD2: Xuất mô hình ra định dạng Quake 2 MDL, là định dạng
được sử dụng rất phổ biến và là phần thứ 3 của trình thiết kế mô hình. Sẽ xuất
hiện một hộp thoại lưu các tập tin có định dạng .MD2 này trong đó cần nhập
đường dẫn để lưu tập tin skin của mô hình.
Export / AQM: Xuất mô hình ra định dạng .AQM, là định dạng được sử
dụng trong trình thiết kế mô hình Quake 2.
Export / Frame to ASC: Xuất khung hiện thời ra định dạng .ASC.
Export / Model to ASC: Xuất mô hình hiện thời ra nhiều định dạng .ASC tùy
thuộc vào số khung của nó.
Export / Frame to 3DS: Xuất mô hình hiện thời ra định dạng .3DS (không có
skin).
Export / Model to 3DS: Xuất mô hình hiện thời ra nhiều định dạng .3DS tùy
thuộc vào số khung của nó.
History: Chỉ 8 tập tin đã mở.
Exit: Thoát khỏi chương trình.
52
Chương 3: Game Engine – Cách sử dụng MED
Open:
Mở hoặc đưa một mô hình hoặc địa hình. Danh sách các tập tin này đưa ra
nhiều định dạng khác nhau. Chúng ta có thể mở các định dạng MDL, MD2,
WMP hoặc X đối với các mô hình, và các định dạng PCX, BMP hoặc HMP đối
với các địa hình. Khi nhập một định dạng nào đó thì một cửa sổ sẽ hiện ra để
chúng ta có thể chọn các thuộc tính của cần đưa vào. Khi nhập một mô hình
phức tạp có định dạng là MD2 hoặc X thì tùy chọn Model Properties/Fast Prec
nên được chọn trước khi lưu chúng.
Một bản đồ địa hình có định dạng PCX, BMP hoặc RAW có thể được tạo ra
từ các chương trình vẽ phong cảnh hoặc địa hình. Các định dạng bitmap sẽ
được nhập vào và chuyển thành mô hình theo định dạng HMP. Chúng ta có thể
xác định giá trị tốt nhất của độ phân giải của một mắt lưới theo chiều ngang
hoặc chiều dọc theo mỗi hướng từ 30 đến 100 đỉnh. Một vài hướng có thể được
phát sinh tự động.
1.1.2. Thực đơn Edit
53
Chương 3: Game Engine – Cách sử dụng MED
Undo: Quay trở lại hành động vừa mới thực hiện.
Redo: Quay trở lại hành động Undo vừa mới thực hiện.
Copy Selected: Lưu phần được chọn vào clipboard.
Paste: Dán dữ liệu đã được sao chép vào mô hình. Hộp
thoại đưa ra các tùy chọn cho phép thay thế các vị trí của
các đỉnh trong mô hình và thêm vào mô hình như đó là
các đỉnh mới. Việc thay các đỉnh cũng có một nhân tố pha
trộn, vì thế khi chép dữ liệu từ một khung và dán vào
khung khác, chúng ta có thể pha trộn giữa hai bộ dữ liệu.
Paste range: Dán dữ liệu đã được sao chép vào một phần nào đó của khung,
tùy vào yếu tố pha trộn ở trên.
Change Frame Name: Đổi tên khung hiện tại. Thông thường tên khung nên
bao gồm một từ mô tả và 1 số, như “walk1”, “walk2”. Tên khung xác định các
khung này có chức năng là đi bộ, tấn công, chết …Các hoạt động này sẽ được
gắn vào sau.
Goto Frame: Nhảy đến một khung xác định, chọn khung mà bạn
muốn đến trong danh sách và nhấp OK.
Add New Frame: Thêm một khung mới. Hộp thoại sẽ đưa ra những tùy
chọn là đặt khung mới sau khung cuối cùng, trước
khung đầu tiên, hoặc sau một khung nào đó. Chúng ta
cũng có thể nhập vào tên của một khung.
Delete Current Frame: Xóa khung hiện tại, xuất hiện hộp thoại xác nhận quyết
định của bạn.
Delete Frame: Xóa nhiều khung bằng cách nhập khung bắt đầu và
khung kết thúc.
54
Chương 3: Game Engine – Cách sử dụng MED
Move Frame: Di chuyển một vài khung trong một mô hình bằng cách
chọn khung đầu tiên và khung cuối trong một tập các
khung muốn di chuyển đến vị trí mới, chọn khung
trước và khung sau và chọn OK.
Select All: Chọn tất cả các đỉnh hoặc mặt của mô hình tùy vào chế
độ đang chọn.
Select None: Bỏ chọn tất cả các đỉnh hoặc mặt của mô hình tùy vào
chế độ đang chọn.
Select Inverse: Đảo ngược sự chọn lựa hiện tại.
Select Connected: Chọn tất cả các mặt hoặc đỉnh liên kết với các đối
tượng được chọn.
Select Touching: Chọn tất cả các mặt hoặc đỉnh kề với đối tượng được
chọn.
1.1.3. Thực đơn View
Toolbars: Bật hoặc tắt hiển thị các toolbar.
Status Bar: Bật hoặc tắt hiển thị thanh tình trạng.
Skins: Chuyển sang chế độ thiết kế vỏ bao, ở đây vỏ bao của thực thể
được hiển thị, và skin có thể được nhập hoặc sửa đổi.
Model Properties: Hiển thị số mặt, đỉnh… trong mô hình. Bằng cách chọn
tùy chọn Fast Prec thì mô hình sẽ được lưu với định dạng khác, định dạng tạo
ra kích thướt tập tin lớn hơn, nhưng tăng lên độ phân giải các đỉnh. Chọn chế
độ phân giải cao để nhập các mô hình hoạt hình lớn và phức tạp từ các định
dạng 3DS, X hoặc MD2 để ngăn chặn tình trạng các đỉnh không được liên tục
khi chuyển động. Chú ý một khi mô hình được lưu với Fast Prec, độ phân giải
55
Chương 3: Game Engine – Cách sử dụng MED
của các đỉnh sẽ mất mãi mãi - điều chỉnh các cờ sau này cũng không giúp được
gì.
1.1.4. Thực đơn Options
Vertices Ticks: Thể hiện tất cả các đỉnh bằng hình chữ
thập.
Show Origin: Hiển thị gốc tọa độ của mô hình
(x=0,y=0,z=0). Gốc được sử dụng để quay, cũng như để dò
tìm xung đột trong engine A5.
Show Grid: Hiển thị mặt phẳng lưới.
Show Normals ...
None: Không hiển thị các bề mặt
pháp tuyến.
Selected Faces: hiển thị pháp tuyến của bề
mặt được chọn.
All: hiển thị pháp tuyến của tất cả các bề mặt được chọn.
2D View…
Draw BackFaces: tắt mở việc hiển thị các
mặt mà các pháp tuyến của nó hướng đến
camera.
Play camera XY: Khi chạy một hoạt ảnh, thì nó cũng được thể hiện trong
khung nhìn 2D trên.
Play Camera XZ: Khi chạy một hoạt ảnh, thì nó cũng được thể hiện trong
khung nhìn 2D bên cạnh.
56
Chương 3: Game Engine – Cách sử dụng MED
Play Camera ZY: Khi chạy một hoạt ảnh, thì nó cũng được thể hiện trong
khung nhìn 2D phía trước.
3D View:
WireFrame: hiển thị khung nhìn 3D trong chế độ khung dây.
Gouraud Shaded: hiển thị khung nhìn 3D
trong chế độ Gouraud Shaded.
Gouraud Shaded: hiển thị khung nhìn 3D
trong chế độ kết cấu.
Texture + Gouraud: hiển thị khung nhìn 3D trong chế độ Textured Gouraud
Shaded .
Draw BackFaces: Chuyển đổi việc hiển thị bề mặt sau lưng trong khung nhìn
3D.
Sync Skin Selection: Bất kỳ mặt nào được chọn trong khung nhìn 3D sẽ được
chọn trong trình thiết kế skin.
Configure:
Colors: Hiển thị thực đơn cấu hình màu
sắc. Ở đây chúng ta có thể gắn màu sắc đến
phần nào đó của giao diện hoặc mô hình hiển
thị.
Keyboard: Hiển thị thực đơn cấu hình bàn phím. Ở đây, chúng ta có thể gắn
các phím tắt vào từng lệnh.
1.1.5. Thực đơn Help
Contents: Hiển thị tài liệu hướng dẫn.
About: Nói về phiên bản này của MED.
57
Chương 3: Game Engine – Cách sử dụng MED
1.2. Toolbars
Toolbar là nơi mà bạn thường thao tác và thiết kế các mô hình. MED có
nhiều toolbar có thể được bật hoặc tắt hoặc được sắp xếp lại. Muốn sắp xếp
một toolbar, chỉ cần nhấp trái và kéo rê chuột đến nơi mà bạn muốn. Nếu con
chuột nằm trên một nút toolbar nào đó, thì một mô tả nút sẽ được hiển thị.
1.2.1. Toolbar File
Toolbar này chứa đựng những lệnh thường dùng trong thực đơn File.
New: tạo một mô hình mới
Open: mở một mô hình/ địa hình
Save: lưu một mô hình/ địa hình
Copy: sao chép phần được chọn
Paste: dán phần được chọn
Delete: xóa phần được chọn
Undo: Trở lại hành động kế trước
Redo: Trở lại hành động Undo kế trước
1.2.2. Toolbar Edit
Toolbar này được sử dụng để thay đổi chế độ soạn thảo. Dưới đây là diễn giải
các nút từ trái qua phải:
58
Chương 3: Game Engine – Cách sử dụng MED
Pan: Khi nút này chọn, kéo rê nút chuột trái trong cửa sổ 2D sẽ di chuyển
viewport, trong cửa sổ 3D camera sẽ được quay. Kéo rê nút chuột phải sẽ
phóng to hoặc thu nhỏ cửa sổ.
Select: Trong chế độ Select, kéo rê một hình chữ nhật xung quanh các đỉnh
hoặc mặt mà chúng ta muốn chọn.
Move: Di chuyển các mặt hoặc các đỉnh được chọn. Nếu một giá trị nap
được thiết lập, chúng chỉ có thể được di chuyển theo bội số của các giá trị đó.
Chúng ta cũng có thể di chuyển nó bằng cách sử dụng các phím di chuyển. Các
đỉnh trong các bản đồ địa hình chỉ có thể được di chuyển theo chiều dọc.
Rotate: Quay các mặt hoặc đỉnh được chọn. Quay xung quanh một điểm mà
chúng ta chọn đầu tiên. Kéo rê chuột xuống hoặc lên để quay nó theo hướng
cùng chiều hoặc ngược chiều kim đồng hồ. Nếu giá trị quay snap được thiết
lập. Các đỉnh và các mặt chỉ có thể được quay theo bội số của giá trị này. Nên
nhớ rằng một địa hình không thể quay được.
Scale: Thay đổi kích thướt của các đỉnh hoặc các mặt được chọn. Kéo rê lên
hoặc xuống để thay đổi kích thướt của nó.
Options: vài tùy chọn để thiết kế mô hình là:
Các giá trị Move Snap, Rotate Snap và Scale
Snap cho biết đơn vị để di chuyển, quay, hoặc
thay đổi kích thướt bằng chuột hoặc bàn phím.
Nút Rotate Center cho phép chọn điểm nối để
quay là điểm trung tâm của phần được chọn,
vị trị của con chuột, và gốc của mô hình.
Nếu hộp Use Frame Range được chọn, bất cứ
thay đổi gì cũng đều tác động đến tất cả các
59
Chương 3: Game Engine – Cách sử dụng MED
khung với phạm vi được thiết lập trong vị trí From và To. Còn không nó chỉ có
tác dụng đối với khung hiện tại
Restrict: 3 trạng thái của nút sẽ hạn chế sự di chuyển hoặc thay đổi kích thướt
theo chiều dọc hoặc chiều ngang trong các cửa sổ.
1.2.3. Toolbar Select
Để quyết định loại đối tượng được chọn và thay đổi.
Vertex Mode: hành động chọn có hiệu lực với các đỉnh của mạng lưới.
Triangle Mode: hành động chọn có hiệu lực với các mặt của mạng lưới.
Bones Mode: hành động chọn có hiệu lực với các khung xương.
Select All: Chọn tất cả các đỉnh hoặc mặt tùy thuộc vào chế độ hiện tại.
Select None: Bỏ chọn tất cả các đỉnh hoặc mặt tùy thuộc vào chế độ hiện
tại.
Select Connected: Chọn tất cả các mặt hoặc đỉnh liên kết với tập được chọn.
1.2.4. Toolbar Mesh
Để thiết kế các đỉnh hoặc bộ ba đỉnh của mạng lưới.
Create Vertex: Nhấp vào bất cứ đâu trong cửa sổ 2D để tạo một đỉnh. Một
phương pháp khác là sử dụng hàm Insert Vertex mà đã được gắn vào một phím
nào đó đã được thiết lập trong cấu hình bàn phím.
60
Chương 3: Game Engine – Cách sử dụng MED
Build Face: Trong bất kì cửa sổ nào, nhấp 3 đỉnh theo chiều kim đồng hồ để
tạo thành một mặt giữa chúng. Chọn theo thứ tự ngược chiều kim đồng hồ sẽ
tạo ra một mặt phẳng mà pháp tuyến của nó sẽ có hướng đi ra từ chúng ta.
Mirror : Chuyển đỉnh hoặc mặt được chọn về trục trung tâm của nó.
Weld: Gắn kết các đỉnh được chọn đến một điểm chung là trung bình
của các đỉnh được chọn.
Merge: Gộp 2 hoặc nhiều đỉnh được chọn mà nằm ở cùng vị trí (sai
lệch khoang +/-0.5).
Subdivide: Chia nhỏ mặt được chọn. Việc này bao gồm việc tạo ra một
đỉnh ở trung tâm của mỗi đỉnh và chia nhỏ mỗi mặt thành 3 mặt.
Extrude: Kéo hoặc đẩy các mặt được chọn từ mạng lưới.
Flip Normals: Chuyển hướng pháp tuyển của mặt được chọn.
Magnet: Là công cụ để tạo ra những đồi núi và thung lũng trong một
địa hình bằng cách di chuyển nam châm trên địa hình. Ấn nút chuột trái để hút
các đỉnh được chọn; nút phải chuột để đẩy các đỉnh được chọn. Chúng ta có thể
điều chỉnh phạm vi, cường độ và hình dạng của đỉnh được chọn trong cửa sổ
công cụ Magnet xuất hiện khi chọn công cụ này.
1.2.5. Toolbar các đối tượng cơ sở
Chọn một đối tượng cơ sở và chèn chúng vào bằng cách nhấp vào một cửa
sổ 2D. Có 8 loại cơ sở sau đây:
Cube: hình lập phương
Sphere: hình cầu
61
Chương 3: Game Engine – Cách sử dụng MED
Cylinder: hình trụ
Torus(1): bánh xe
Torus(2): bánh xe
Pyramid: hình chóp
Cone: hình nón
DCone: hai hình nón ghép lại
1.2.6. Toolbar View
Điều khiển 4 khung nhìn, các nút từ trái qua phải được diễn giải như sau:
2D Vertices Ticks: Tất cả các đỉnh được hiển thị với hình dạng là dấu chữ
thập trong cửa sổ 2D.
3D Vertices Ticks: Tất cả các đỉnh được hiển thị với hình dạng là dấu chữ
thập trong cửa sổ 3D.
Show Vertices: Hiển thị tất cả các đỉnh trong khung nhìn.
Show Faces: Hiển thị tất cả các mặt trong khung nhìn.
Show Bones: Không được sử dụng trong phiên bản này.
Hide Selected: Ẩn đi phần được chọn của mô hình.
Hide Unselected: Ẩn đi phần không được chọn của mô hình.
Flip: Ẩn đi phần không ẩn lúc trước của mô hình.
Show All: Ẩn đi toàn bộ mô hình.
Fit All: nút này phóng to hoặc thu nhỏ và quay mô hình để nó vừa vặn
với từng khung nhìn.
62
Chương 3: Game Engine – Cách sử dụng MED
Fit Selected: tính toán giống như tron “Fit All”, tuy nhiên các hệ thống
được chọn được điều chỉnh để vừa với các khung nhìn thay vì
toàn bộ thực thể.
Top: mở rộng cửa sổ trên.
Front: mở rộng cửa sổ trước.
Side: mở rộng cửa sổ cạnh.
3D: mở rộng cửa sổ 3D.
Default: khôi phục lại kích thướt mặc định của cửa sổ.
1.2.7. Toolbar Frame
Điều chỉnh sự hoạt
Các file đính kèm theo tài liệu này:
- 0112191.pdf