- Tìm hiểu về SED, trình soạn thảo dùng để viết các câu lệnh script để kếtnối các mô hình được tạo ra trong MED, các khung cảnh được tạo ra trongWED và sử dụng những hàm có sẵn trong SED
Trang 1TRƯỜ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
Trang 2TRƯỜ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
Trang 3
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 4
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Trang 5
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
Trang 6Mục lục
i
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
Trang 7Mụ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
Trang 8Mụ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
Trang 9Mụ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
Trang 10h ương 1: G iớ i thiệu
1
Trang 11sự 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óngphú 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ộtgame 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
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
Trang 12Với hàng trăm game đã được phát hành, 3D Game Studio xứng đáng là mộtngô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ướchướ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ácthể 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 Gameloại này có đặc điểm chúng là tính co giật trong game, như trong game bắn
Trang 13sú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ể thaongườ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ế
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ếtnối các mô hình được tạo ra trong MED, các khung cảnh được tạo ra trongWED 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 đó
Trang 14Chương 2: Các thuật toán tìm đường đi
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ếmtươ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 đượcbiể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ậphợp giữa các đỉnh và các cung nối giữa các đỉnh Các cung có thể được địnhhướ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ó cungnà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ộtcung 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áiban đầu đến trạng thái mong muốn được biểu diễn qua hai đỉnh nào đó của đồ
Trang 15Chươ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ươngphá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êntheo 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ântạ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ằngcá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ếptụ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ở chotrướ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 trithứ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 trithức sẽ được trình bày chi tiết
Trang 16Chươ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
100 1 1
A 17 D
K L M N 1
1 U 1
Trạng thái mong muốn
Trang 17Chươ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ộcphầ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ểudiễn vấn đề không có đường đi tới mục tiêu Nếu có từ 2 đỉnh trở lên cùnggiá 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
Trang 18Chươ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ệctì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ụctì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ổ sungtrong 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ạnnă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
Trang 19Chương 2: Các thuật toán tìm đường điđược tương ứng một giá trị h(n) ∧ Chẳng hạn đó là ước lượng giá thành đường
∧
đi từ n đến mục tiêu (như vậy h
biết đến)
là ước lượng giá thành đường đi con chương
Thuật giải AKT gồm các bước sau:
N là mục tiêu thì đường tới N là đường đi có giá thành nhỏ nhất g(N) Nếukhô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ó
Trang 21từ 2 đỉnh mở trở lên cùng giá trị f 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
c) Đóng đỉnh N, mở đỉnh sau N Với mỗi đỉnh S sau N ta tínhg(s)=g(N)+(giá thành cung từ N đến S) Sử dụng tri thức bổ sung ở bước này,
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 Tuynhiê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 đỉnhchỉ 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
Trang 22trên một đồ thị dạng tổng quát Ta cũng có thể mở rộng thuật giải AKT thànhthuật giải tổng quát A* như sau:
Trang 23mở đỉnh đầu tiên 0, gán cho g(0)=0, ước lượng h(0) và gán f (0) = h(0) .
Bước 2: Chọn đỉnh mở với giá trị ∧f = g + h ∧ 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ị f 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
Bước 3: Đóng đỉnh N và đối với mỗi đỉnh sau đó, ta tính g′(s) = g ( N )
Trong thuật giải A*, ta đặc ∧f = g + h ∧ở đây vai trò của g và h∧ được xem lànhư nhau Nhưng tùy theo trường hợp, có thể xét ∧f = w1.g + w2 ∧
Trang 25là các trọng số cho biết vai trò của g và h 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 h
và tập đỉnh đóng để có cơ sở đánh giá hiệu quả của thuật giải một cách đầy đủ
Trang 26Chươ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àmkhởi động và gởi một mô hình 3D đến graphic adapter (GA), engine 3D sẽ giaotiế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ộtengine, 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à 1engine 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
Trang 27Chươ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ộtthế 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ữngngười mới bắt đầu và những nhà thiết kế chuyên nghiệp, WED cũng sẽ là mộtcô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:
Trang 28Chươ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 trong3D GameStudio Tạo ra một game 3D, tức là đưa những đối tượng vào môitrườ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àochú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ượngtrư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ẩmcuối cùng
Trang 29Chươ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ấthiệ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ượngnào đó sẽ được chọn Nếu không chọn được đối tượngmong muốn, có thể là nó đang được phủ bởi một đốitượng khác, vì thế chỉ cần nhấn nút chuột trái tiếp đếnkhi 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
Trang 30Chươ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ìnvào các khung nhìn để kiểm tra xem đối tượng có đến được nơi mong muốnhay 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 theomộ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ữ [C T RL ] trong khi thay đổi kíchthướt thì kích thướt theo chiều dọc và chiều ngang sẽ cùng thay đổi một lượngbằ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ó
Trang 31Chươ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ặcmột nhóm các đối tượng Việc nhóm các đối tượnglại cho phép chúng ta xây dựng nên các cấu trúcnhư: 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ệcnhóm các đối tượng sẽ giúp chúng ta tạo ra đượcnhữ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 đốitượ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ườidù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ấutrúc khác nhau một cách độc lập, để từ đó tạo ra một thư viện các đối tượngphứ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ờigian để xây dựng lại những đối tượng tương tự nhau Điều này gợi ra mộthướng khác là cách sử dụng các cấu trúc và đối tượng đã được tạo sẵn trongcá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
Trang 32Chươ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 trongnhó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àomộ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ệndướ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 tinWAD 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
Trang 33Chươ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
Trang 34Chương 3: Game Engine – Cách sử dụng WED
Trang 35Chương 3: Game Engine – Cách sử dụng WED
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áctập tin trung gian $$M, và lưuchú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.
Build WMB: trước khi có thể sử dụng các khung cảnh được thiết kế trong
WED, phải chuyển từ định dạng thiết kế (WMP) đến định dạng WMB, là
định dạng mà engine có thể hiểu được Lệnh này đưa ra một hộp thoại chophép chọn lựa những tùy chọn khác nhau để biên dịch tập tin thiết kế
(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 fileACKNEX.EXE) và kiểm tra level của mình Nó nằm ở thư mục BIN, và
Trang 36chúng ta có thể tạo ra một đường tắt trên desktop để khởi động và gọi levelcủ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ộctí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 tinscript 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ântheo 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:
Trang 37cá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
Trang 38mà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ầutrờ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ànhcho những game bắn súng đơn giản, và không được đề nghị trong các gamethươ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ợpvớ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
Trang 392.1.2 Thự c đ ơn edit
Để 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ủamặt trời (sun elevation)
Trang 40undo: 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 [SHIF T ]
và rê chuột, hoặc nhấn phím [IN S ] 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êntrong 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 để