Khóa luận Nghiên cứu và xây dựng thử nghiệm 3D Engine - Phần 8
Trong ví dụ ởhình vẽtrên, ta có hai đối tượng một là một khối hình chữnhật,
một là một khối capsule (hình trụvới hai đầu là hai bán cầu). Ta sẽdùng hai hình
hộp và capsule tương tứng bao bọc lại với cùng kích thước và khớp với vật thểcủa
Game. Bằng cách thực hiện nhưvậy ta tận dụng được tất cảcác tính năng vật lý do
NovodeX cung cấp và tất nhiên ta không hiển thịcác hình bao bọc trong Game mà
chỉdùng chúng nhưvật trung gian đểxửlý vật lý.
không có lời giải đáp chỉ biết rằng vào lúc đó họ đã phát minh được cách mở cánh cổng vào thế giới song song. Điều này đã đặt ra một loạt câu hỏi, liệu có phải họ đã di chuyển toàn bộ dân cư của mình vào thế giới song song ấy như trái đất đang làm bây giờ Chương 7. Giới thiệu Game demo Dead Rising - 117 - hay không, các nhà khoa học vẫn mãi loay hoay tìm lời giải đáp, cho tới một ngày… Trung tâm chỉ huy tại trái đất liên tục nhận được các tín hiệu không rõ ràng từ trạm nghiên cứu trên sao Hỏa, ít lâu sau thì người ta không thể nhận được bất kỳ thông tin phản hồi gì tại sao Hỏa nữa, thông điệp cuối cùng mà trung tâm trái đất nhận được là lời kêu cứu khẩn cấp của một người nào đó “no..o…h.el..p..m.e”. Để xác minh điều gì đã xảy ra cho căn cứ sao Hỏa, đội đặc nhiệm Bravo Team đã được thành lập. Các thành viên của đội đặc nhiệm được tuyển chọn vô cùng gắt gao từ lực lượng lính marine (lựu lượng tinh nhuệ nhất của trái đất). Nhiệm vụ của Bravo Team là tiếp cận trung tâm điều khiển chính trên căn cứ sao Hỏa, thiết lập thông tin liên lạc lại với trái đất và tìm hiểu điều gì đã xảy ra tại đó. Được hỗ trợ bởi tàu chuyên chở quân sự Dropship, Bravo Team đã nhanh chóng tiếp cận trạm nghiên cứu trên sao Hỏa. Cái mà họ nhận ra đầu tiên là chỉ là không khí yên lặng đến ghê người, hầu như không thấy một chút gì chứng tỏ là sự sống đã từng hiện diện ở nơi đây. Đến được trung tâm điều khiển chính, Bravo Team cẩn trọng đi vào, bạn chỉ là thành viên trong lực lượng hỗ trợ (Backup Team) nên được giao nhiệm vụ canh giữ cổng chính của trung tâm điều khiển. Biết bao nhiêu vũ khí tối tân hạng nặng đã đi cùng với lực lượng thâm nhập (Assault Team) chỉ để lại cho bạn một khẩu machine gun cũ kỹ với một vài băng đạn. Nhiệm vụ của bạn là phải luôn duy trì liên lạc với Assault Team để kiểm soát tình hình. Điều gì đến đã phải đến, bạn nghe thấy tiếng súng nổ, tiếng đỗ vỡ, tiếng la hét, rên rỉ trong bộ đàm… phút chốc mọi thứ đều im bặt, im như lúc ban đầu bạn đến đây vậy. Bạn không thích chuyện này, “điều gì đã xảy ra ?” trong đầu bạn cứ luôn quanh quẩn câu hỏi ấy. Quyết tâm tìm cho ra sự thật bạn quyết định tiến vào bên trong căn cứ. Với khẩu machine gun nắm chặt trên tay bạn đưa tay ấn nút mở cổng chính… Cơn ác mộng đã bắt đầu… và có thể nó sẽ không bao giờ kết thúc… Chương 7. Giới thiệu Game demo Dead Rising - 118 - 7.3. Các thành phần chính cần sử dụng Nhiệm vụ chính của Game demo Dead Rising là dùng để minh hoạ các chức năng của Nwfc Engine. Nhưng nếu chỉ sử dụng Nwfc Engine thì ta chỉ có thể dựng hình 3D chứ không thể tạo thành ứng dụng Game hoàn chỉnh được. Chính vì lẽ đó ta sẽ sử dụng thêm các hệ thống khác bổ sung. Hệ thống diễn hoạt: Sử dụng hệ thống diễn hoạt đã được giới thiệu và xây dựng ở chương 5. Hệ thống vật lý: Sử dụng hệ thống vật lý đã được giới thiệu và xây dựng ở chương 6. Hệ thống hạt (Particle System), trí tuệ nhân tạo (AI): Sẽ được trình bày ở chương sau. Ngoài ra ta cần thêm các hệ thống phụ như hệ thống quản lý tập tin, hệ thống quản lý âm thanh. Trong các hệ thống trên, hệ thống diễn hoạt và hệ thống vật lý được xây dựng mang tính đôc lập và tống quát cao nên được dùng ở nhiều ứng dụng khác nhau. Chính vì vậy chúng tôi đã trình bày như một phần riêng không liên quan đến ứng dụng cụ thể. 7.4. Hệ thống các tập tin định nghĩa Các tập tin định nghĩa (defination files) là hệ thống tập tin được phát triển từ định dạng tập tin Parameter của Engine. Hệ thống tập tin này có vai trò rất lớn trong Game vì hệ thống này giúp lưu trữ tất cả các thuộc tính và thông số của tất cả các đối tượng trong Game, từ người chơi (player), các con quái vật (monsters) cho đến hệ thống hạt (particle system), trí tuệ nhân tạo (AI)… Việc lưu trữ các thông số trong trò chơi trong các tập tin có ý nghĩa rất lớn trong việc chỉnh sửa và thay đổi sau này mà không cần phải biên dịch lại mã nguồn của toàn bộ chương trình. Hệ thống tập tin định nghĩa trong Game Dead Rising được phân chia nhiều thành phần tùy theo chức năng sử dụng. Chương 7. Giới thiệu Game demo Dead Rising - 119 - 7.4.1. Định nghĩa giao diện (GUI) Tập tin định nghĩa giao diện cho phép người thiết kế đồ họa thiết kế và trình bày các đối tượng giao diện trên màn hình. mgun_hud { matlib "matlibs/gui/hud_lib.nmt" panel ammo { material ammo_panel rect [ 0 , 0 , 256 , 64 ] align rb color [ 0.39 , 0.57 , 0.64 , 1.0 ] text_org [ 204 , 30 ] } panel ammo_filler { material ammo_filler rect [ 0 , 0 , 128 , 64 ] align rb color [ 0.0 , 1.0 , 0.0 , 1.0 ] text_org [ 0 , 0 ] } . . . } 7.4.2. Định nghĩa hệ thống hạt (Particle System) Tập tin định nghĩa cho hệ thống hạt lưu trữ các thuộc tính hình thành nên 1 hệ thống hạt đặc trưng. Tập tin định nghĩa giúp phân rã công việc của người thiết kế và người lập trình. blood_pray smoke { material blood_pray "matlibs/sfx/smoke_lib.nmt" sprites 4 e_type point e_size 0 e_cycletime 0.1 e_numpars 20 e_maxcycle 5 max_particles 200 c_size 8.0 c_speed 5.0 c_spin 0.0 c_life 2.0 c_dir [ 0.0, 1.0, 0.0 ] c_sizevar 0.5 c_speedvar 0.5 Chương 7. Giới thiệu Game demo Dead Rising - 120 - c_spinvar 0.0 c_lifevar 0.5 c_dirVar 0.5 c_start_color [ 1.0, 1.0, 1.0, 1.0 ] c_end_color [ 1.0, 1.0, 1.0, 0.5 ] // smoke unique info scale_speed 0.5 wind_force [ 0.0, -5.0, 0.0 ] wind_distort 0.0 } 7.4.3. Định nghĩa màn chơi (Map level) Tập tin này có nhiệm vụ định nghĩa các thực thể tĩnh (static entity) cho 1 màn chơi (cái hộp, cửa, items…) Có 3 loại thực thể có thể được định nghĩa: entity. Định nghĩa thực thể tĩnh door. Định nghĩa các cửa tự động item. Định nghĩa các vật dụng có thể tương tác với người chơi như bình máu, hộp đạn entity 1 { object tbox1 pos [ -183 , 66 , 79 ] rot [ 0 , 120.219 , 0 ] } . . . door 1 23_1 { object deldoor1 pos [0, 15.993, -151.98] [-85.962, 15.993, -151.98] rot [ 0 , -90 , 0 ] sensor_range 60 open_time 1.0 delay_time 1.0 sound { open "sound/door/open3.wav" close "sound/door/close4.wav" } } . . item 1 medkit { object medkit_large Chương 7. Giới thiệu Game demo Dead Rising - 121 - pos [ -76.728 , 16.0 , -255.275 ] rot [ 0 , 90 , 0 ] affect_range 10.0f sleep_time 60.0f sound { affect "sound/voice/voc_yeah_right.wav" } } . . . 7.4.4. Định nghĩa đối tượng và AI Giúp định nghĩa các tính chất của các thực thể động (npcs, monster, player ..) hellknight_a { body hellknight_b particle gob_drop tongue3 rotate_speed 2.0 jump_height 35.0 extents [24, 55, 24] skinwidth 0.1 slopelimit 45.0 stepoffset 10.0 mass 500 } . . . Định nghĩa các thuộc tính AI, âm thanh và hành động của NPCs hellknight { actor hellknight_a // animation idle_a idle2 sight_a roar1 move_a walk7 attack1_a leftslash 100 attack2_a turret_attack 100 pain_a headpain death_a pain1 // AI attribute sight_range 300 attack_range 60 max_health 2400 // sounds sound { revive sound/hellknight/hk_chatter_01.wav Chương 7. Giới thiệu Game demo Dead Rising - 122 - sight sound/hellknight/sight2_3.wav attack1 sound/hellknight/chomp1.wav attack2 sound/hellknight/chomp1.wav pain sound/hellknight/hk_pain_01.wav death sound/hellknight/die2.wav } } 7.4.5. Các định nghĩa khác Ngoài ra Game còn sử dụng tập tin định nghĩa cho rất nhiều mục đính khác nhau như định nghĩa các vật thể dựng hình (render model), định nghĩa các thuộc tính vật lý cho vật thể, định nghĩa vũ khí, định nghĩa người chơi… Việc triển khai hệ thống tập tin định nghĩa có ý nghĩa rất lớn trong việc mở rộng Game sau này như ta hoàn toàn có thể tạo 1 màn chơi (level) mới hay thêm vào các vật thể mới mà không phải sửa lại toàn bộ code của chương trình rất thuận lợi để phát triển các level editor sau này. 7.5. Tóm tắt Trong chương này, chúng ta đã được giới thiệu về Game demo Dead Rising cùng các thành phần liên quan. Chúng tôi cũng trình bày về hệ thống các tập tin định nghĩa giúp quản lý mọi thông tin của Game một cách thống nhất và cho phép thay đổi, mở rộng sau này. Trong chương tiếp ta sẽ xem xét đến 2 thành phần làm nên nét đặc trưng và lôi cuốn của Game demo Dead Rising là hệ thống hạt (Particle System) và AI. Chương 8. Hệ thống hạt (Particle System) và AI - 123 - Chương 8 Hệ thống hạt (Particle System) và AI Hệ thống hạt (Particle System) Trí tuệ nhân tạo (AI) Tóm tắt Chương 8. Hệ thống hạt (Particle System) và AI - 124 - 8.1. Hệ thống hạt (Particle System) Hiện nay hệ thống hạt đã trở thành không thể thiếu trong các ứng dụng Game. Hệ thống hạt có công dụng rất to lớn trong việc thiết kế các hiệu ứng cho bối cảnh. Hệ thống hạt trong Game thường được dùng để tạo các hiệu ứng như khói lửa, cháy nổ thời tiết và các hiệu ứng phức tạp khác như sấm sét, năng lượng, ánh sáng… Hệ thống hạt là một tập hợp các hạt (particles) có các thuộc tính và hành động hoàn toàn độc lập với nhau. Nguồn phát ra các hạt được gọi là nguồn phát (emitter), nguồn phát có chức năng cung cấp cho các hạt các thuộc tính khởi tạo ban đầu. Sau khi được khởi tạo mỗi hạt sẽ tự mình hành động độc lập theo các thuộc tính của mình cho đến khi chết đi. Mỗi hạt trong hệ thống khi dựng hình sẽ được biễu diễn bằng 1 đa giác (thường là tứ giác). Đặc điểm của đa giác này là luôn hướng về phía camera cho dù là camera ở vị trí hay hướng nào đi chăng nữa. Căn cứ vào mức độ phụ thuộc của mỗi hạt vào camera (khi dựng hình), hệ thống hạt trong Game chia ra làm 2 loại: hoàn toàn hướng về phía camera (smoke particle system), hướng về camera nhưng bị ràng buộc trên phương của vận tốc (spark particle system). 8.1.1. Smoke particle system Hình 8-1 Đặc điểm của 1 particle dạng smoke
File đính kèm:
- thu_nghiem_3d_engine_8.pdf