HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Создаём крутой костёр средствами маппинга (GoldSrc)
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 659

Рейтинг



Half-Life Создаём крутой костёр средствами маппинга (GoldSrc)

Захотелось мне как-то сделать наиболее реалистичный спрайтовый огонь в Half-Life 1. Для этой цели я использовал свой любимый способ: нахожу все доступные реализации, копирую их друг за другом на тестовую карту, анализирую каждую из них, перерабатываю и получаю лучший вариант. Что, ж приступим.



На тестовой карте получилось около 20 костров. Я не помню все источники копипасты, это были различные карты и моды (например, DoD, PVK, CS), также обращал внимание на реализации в других Quake-образных движках.

Общая структура костра везде плюс-минус такая:
Спрайт пламени, звук огня, дым и свет. Начнём с более простых и скучных вещей.

1) Звук

В качестве звука горения в основном используются стандартные вавки из ХЛ - burning1-burning4. Послушав burning3.wav сразу его отбрасываем, судя по звуку там какой-то дождь с грозой, но остальные неплохи, если не считать их общую среднечастотность, что создаёт эффект звука из бочки. Последнее таки можно исправить с помощью сильного задирания высоких частот эквалайзером, после сохранения в максимальные для Half-Life 22 кГц излишняя форсированность высоких обрежется и звук станет более сбалансированным.

burning1.wav из Day of Defeat сойдёт, но как-то он хрустящ.
fire.wav с карты cs_snowflake.bsp норм.
Также проверил звуки из Kingpin (Quake 2 Engine), fire.wav - очень короткий луп, fire_sm.wav - не похоже на огонь.
e_torcha.wav из Daikatana в принципе нормальный, но требует конвертации.
Неплохие звуки огня есть в Call of Duty и в Half-Life 2.

По-хорошему, звук горения древесины и какой-нибудь машины должен отличаться, можно это учитывать.

2) Цвет и свет

В целом костёр даёт более оранжевый свет, нежели желтый. Из подходящих вариантов параметра brightness у энтити light попадались такие:
253 150 1 150
255 128 0 200 (конверт из Кингпина)
255 128 64 140 (Betrayed.bsp для TFC)
255 102 0 200
255 85 0 200 и 255 85 0 350 для огромного пламени (мод HL: Echoes)
248 79 22 200

Также неплохо бы установить Appearance: Flicker B (style 6, если SmartEdit, style 1 тоже подойдёт), это создаст мерцание света, правда на встроенных видеокартах Intel в режиме OpenGL приведёт к сильному падению fps.

3) Дым

Часто про него забывают, но это важный элемент пламени. В основном применяют env_sprite с xssmke1.spr или env_beam с направлением smoke.spr в info_target.
Это оптимизированный вариант, но даёт артефакты при близком расстоянии в виде резкого визуального обрыва спрайта либо его кручение.
Хорошее решение этой проблемы я нашёл в моде The Specialists на карте ts_urbannights.bsp. Её автор, Cayle George, здорово реализовал пар из канализационного люка и, что ещё более интересное, спустя много лет с минимальными изменениями применил этот же префаб у себя в моде Half-Life: C.A.G.E.D. для пара из труб



Метод состоит в том, что друг за другом цепочкой выстраиваются круглые спрайты дыма с разными фреймрейтом и скейлом, и с постепенно увядающей прозрачностью. Это даёт некий партиклевый объёмный эффект.
Использованный для этой цели спрайт xsmoke1.spr имеет довольно мало фреймов, но, к счастью, это не трудно исправить с помощью автоматических промежуточных кадров в Фотошопе.

Похожий способ, но для формирования всего пламени, использовал Скаарж на карте sp_arx. Делалось это с помощью окрашивания нижних клубов дыма в жёлто-оранжевые цвета, что создавало unreal'оподобное пламя.

Не стоит забывать подобрать адекватную прозрачность спрайта дыма, в зависимости от интенсивности горения это значение может быть разным, в случае с использованием одного спрайта для всего дыма, renderamt в среднем будет равняться где-то 60, но, конечно, зависит от спрайта.

Сильную же задымлённость (а-ля горящая машина) легко получить с помощью cycler_wreckage.

4) Теперь самое интересное, само пламя

Первое, что мы видим, это то, что из мода в мод гуляют в основном одни и те же спрайты:



Что ж, это хорошо, нам меньше работы. Отбрасываем самые откровенно низкокачественные и выстраиваем оставшиеся в ряд, подогнав по размеру.



На спрайтах из Counter-Strike: Condition Zero (два крайних слева) мы видим артефакты усиления резкости и низкое разрешение. Тем не менее, хоть убейте, но самые реалистичные спрайты получились именно в CZ. Видно, что для их производства использовалась видеозапись огня и минимум обработки, а это, как и в случае использования фототекстур, даёт графическое преимущество в старых играх. Третий спрайт тоже имеет это свойство, но из-за размеров своих языков он менее универсальный (при записи огонёк был маленьким), но отлично подойдёт для факелов, четвёртый взят из Quake 3 и имеет очень сильную неестественную обработку, пятый - кривой рендер, у шестого прилично урезан цветовой диапозон.

К сожалению, я не смог найти то, откуда были взяты спрайты в Condition Zero. Возникало предположение, что это что-то из библиотеки футажей Artbeats, ведь, к примеру, те же взрывы в CZ, которых растащили в огромное количество модов, были взяты из довольно популярного пака Artbeats - ReelExplosions.
Ладно, низкое разрешение можно побороть с помощью суперскейлеров. Я начал их тестирование, но не закончил, предварительно неплохие результаты дают Gigapixel, ESRGAN.

Кстати, часто спрайту огня выставляют полупрозрачность и довольно низкую частоту смены кадров, это ошибка, огонь не особенно то и прозрачный да и "колышется" он достаточно быстро.

Окей. Но всё это не решает главную проблему спрайтов: если к такому пламени подойти близко, он будет заметно крутиться и наклоняться вслед за игроком, нарушая всю иллюзию. И тут я придумал решение проблемы, нам необходимо заблокировать наклоны спрайта, разрешив только кручение вокруг своей оси, а плоскость огня при взгляде сверху компенсировать круглым огненным vp_parallel-спрайтом, который будет выполнять роль очага, основы пламени, алелуя. Спрайт огня из vp_parallel переделываем в vp_parallel_upright (быстрее всего поменять 8-ой байт с 02 на 00 через хекс-редактор), а для очага просто возьмём flamefire.spr из XDM. Чтобы сделать более органичный переход, у спрайта пламени выставляем renderamt-прозрачность 200, а у круглой основы оставляем 255. Собираем всё воедино, компилируем, конец



cорец

Вложение: jpeg_fire_prefab_sources.rar (600.1 кб)
Этот файл был скачан 244 раз.

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг

Отредактировано JPEG 03-12-2020 в 02:08

Сообщить модератору | | IP: Записан
Сообщение: 198971

Старое сообщение 03-12-2020 02:04
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
JPEG писал:
Для этой цели я использовал свой любимый способ

Это не любимый способ, а научный подход.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 198974

Старое сообщение 03-12-2020 06:59
-
KorteZZ
Lambda

Дата регистрации: Oct 2009
Проживает: Mongolia
Сообщений: 377
Возраст: 36

Рейтинг



Классно, что появляются такого рода статьи. Это даже не инструкция, а полноценный тутор. Тут есть и анализ и объяснение что, зачем и для чего мы это делаем.
Большое респектище!

У меня давно есть желание сделать мод про пожарных, где надо как в игре SWAT4 выезжать на вызовы и делать свою работу. Такой симулятор опасной и благородной профессии на ксаше, где можно было бы начинать с рекрута из ПГТ, который тушит возгорание в мусорном баке, и заканчивать профи в мегаполисе, который тушит пожар в небоскребе или на каких-нибудь нефтяных вышках. Начиная с ведра с водой, заканчивая пожарными вертолетами и кораблями, поездами. Но технологии 98 года вряд ли позволят реализовать нормальную работу огня, пожирающего разные материала, дыма, который то стелется, то тянется ввысь, реализовать потоки воды и воздуха (открытые\закрытые окна и двери), работу пены и порошка. Может быть когда-нибудь и сделаю что-нибудь подобное, когда наберусь опыта и знаний. Век живи, век учись.
К сведению, есть прототип этого мода, называется он Firefighter: https://www.moddb.com/mods/firefighter-mod

Вот уж где подобный огонь может пригодиться в большом количестве)

__________________

Killing Floor: Horzine Outbreak

Сообщить модератору | | IP: Записан
Сообщение: 198983

Старое сообщение 03-12-2020 12:20
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 659

Рейтинг



Цитата:
KorteZZ писал:
К сведению, есть прототип этого мода, называется он Firefighter: https://www.moddb.com/mods/firefighter-mod

в хл2 нечто подобное планировалось)

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг

Сообщить модератору | | IP: Записан
Сообщение: 199002

Старое сообщение 04-12-2020 01:42
- За что?
KorteZZ
Lambda

Дата регистрации: Oct 2009
Проживает: Mongolia
Сообщений: 377
Возраст: 36

Рейтинг



Да, довольно интересная механика для игр. В шутерах я такое не встречал. Единственное, что вспоминается - ГТА:СА, где надо было девчушку спасать. Но это такой мелкий эпизод. Было бы круто сделать эту механику тушения основной механикой мода. Но при этом разнообразить.

__________________

Killing Floor: Horzine Outbreak

Сообщить модератору | | IP: Записан
Сообщение: 199003

Старое сообщение 04-12-2020 09:22
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 10:16. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Создаём крутой костёр средствами маппинга (GoldSrc)
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024