Недокументовані особливості гри Half-Life
Працює техніка Тіньових обсягів або техніка "Shadow volume"
тіні
@PointClass base (Targetname, RenderFxChoices, Angles) size (-16 -16 -16, 16 16 16) = dynamic_light. "Dynamic Light Effect"
[
LightName (target_source). "Name of Light"
framestart (integer). "Starting Frame". 0
spawnflags (flags) =
[
1. "Start On". 0
32: "Toggle". 0
]
]
Доповнення від Buzer і ObaGlaza: сам динамічний світ можна зробити простіше - білий динамічне світло включається при завданні Недокументовані параметра effects = 4 або effects = 8 в точкової або брашевих ентіте. Наприклад, він буде рухатися разом з центром координат рухомого невидимого func_train з параметром effects = 4.
Об'ємне освітлення Початок те ж саме. Пишемо в ваш файл .fgd:
@PointClass base (Targetname, RenderFxChoices, Angles) size (-16 -16 -16, 16 16 16) = volume_light. "Volume Light Effect"
[
LightName (target_source). "Name of Light"
TargetName (target_name). "Name of Target"
conesize (integer). "Size of cone". 30
Fx_amount (integer). "Opaque". 255
Render_mode (fRender_mode). "Render Mode"
spawnflags (flags) =
[
1. "Start On". 0
32. "Not Solid". 0
64: "Toggle". 0
]
]
Використання не набагато складніше. Lightname - джерело світла. В даному випадку можна використовувати info_target.
Targetname - точка, куди буде проектуватися об'ємний промінь світла.
Conesize - кут розбіжності променів.
- falloff (загасання),
- Fx_color (колір туману),
- Fx_amount (прозорість туману),
- fog_density (його щільність)
Мабуть, єдиний момент, коли застосовувався динамічний прорахунок зіткнень - це в грі Blue shift - момент з двома котяться котушками з кабелем на платформі:
Реалізувати подібну фізику досить складно, але все-таки можна. Насамперед розставте на карті досить info_target - краще в кутах сітки і надайте їм яке-небудь однакове ім'я. Потім розставте на підлозі рівною площиною 10-12 info_node з тими ж іменами. Тепер поставте якусь полицю і на ній коробки (зробіть їх ентітей func_pushable), в поле target яких слід вказати ім'я вузлів. Наступний крок - FGD файл, куди слід дописати вже
@PointClass base (Targetname, RenderFxChoices, Angles) size (-16 -16 -16, 16 16 16) = dynamic. "Dynamic physic controller"
[
spawnflags (flags) =
[
1. "Enabled". 0
]
]
Додаємо на карту цей самий dynamic і встановлюємо прапорець.
Тепер, запустивши гру, ви зможете побачити, як коробки від удару злітають і смішно відскакують один від одного і від статі. Скрінка додається.