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 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 ...................................................................................................... ...................................................................................................... ...................................................................................................... ...................................................................................................... ...............................................................................

pdf120 trang | Chia sẻ: hunglv | Lượt xem: 1119 | Lượt tải: 0download
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:

  • pdf0112191.pdf