HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashXT > Динамическая смена скайбокса
уроки по XashXT
Страницы (4): [1] 2 3 4 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

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

Рейтинг



Динамическая смена скайбокса

Тов. KRE030T не знает как реализовать динамическую смену дня и ночи в своём моде. Поскольку в XashXT на данный момент нету единой централизованной системы управлением времени суток, я решил привести пример мапперам, как это можно сделать не прибегая к кодингу, но при этом получив довольно неплохие результаты.

1. Немного теории.
Что нам потребуется для того чтобы иммитировать смену дня и ночи посредством смены скайбокса? Ну как минимум - эти самые скайбоксы с различными облаками, иммитирующие закат, рассвет, полдень. За этим далеко ходить не надо - такие скайбоксы лежат в папке valve (просто для примера). Однако движок не имеет встроенных способов плавной замены одного скайбокса другим. Что же делать в этой ситуации? Мы прибегнем к помощи 3D Sky и методу, продемонстрированному на карте demo_1 - натянем текстуры нашего небесного куба на самый обычный брашевый кубик. Если сделать это аккуратно и впоследствии выровнять скейл, то шва заметно не будет. Шов, к слову сказать, присутствует и при программной отрисовке скайбокса, и борются с ним точно так же - небольшим сдвигом текстурных координат. Итак, у нас есть скайбокс, однако он натянут на саму комнатку 3D Sky, мы не можем его плавно сфейдить, чтобы показать другой. Нам придется сделать копию нашей комнатки, немножко (на 1 юнит) сдвинуть её стенки к центру и обратить в func_illusionary. Таких комнаток следует сделать 4 шутки, проставить им rendermode texture и renderamt 0, кроме одной, та, которая будет видна при старте карты. Чтобы основная комнатка 3D Sky не вносила цветовых искажений при наших сменах скайбокса мы покрасим её стенки текстурой WHITE.
2. Практика.
Итак, у нас уже есть 4 скайбокса, которые только и ждут, чтобы мы начали их менять. Приступим. Для каждой энтити func_illusionary мы создадим два env_render, которые кроме резкой смены параметров имеют так же замечательную фичу - плавную смену параметров. Эта фича пришла к нам из спирита и активируется проставлением параметра в поле frags. Значение обозначает кол-во секунд, за которое один наш скайбокс поменяет свою прозрачность до нуля, а другой, соответственно, наоборот - наберет видимость с нуля. Как вы уже догадались, один env_render включает заданное небо, другой выключает. Теперь создадим 4 multi_manager, чтобы управится со всем этим хозяйством. Каждый из мульти_менеджеров будет давать команду одному из env_render на включение, а всем остальным - на выключение. Это позволит нам чередовать скайбоксы в произвольном порядке, если нам вдруг это захочется. Но для начала освоим простое циклическое переключение по кругу. Как вы уже наверное догадались для этого нам потребуется еще три энтити - multi_switcher, который будет активировать выбранную цель,
multi_manager который, через multi_switcher будет активировать собственно, какой скайбокс включить, выключив остальные, а так же с небольшой задержкой переключать multi_switcher на следующую позицию, ну и наконец generator, который будет переодически активировать наш multi_manager через заданный промежуток времени. Впрочем можно обойтись и без генератора, если закольцевать мультименеджер сам на себя.
3. ограничения:
убедитесь что квар r_lighting_extended не равен значению 2. Если это так, поставьте 1 или 0. Так же проверьте что у вас включена поддержка материалов (HD текстур), поскольку 8-битные текстуры неба выглядят ужасно
4. возможные доработки
Даже с такими жуткими текстурами скайбокса смена выглядит довольно терпимо, особенно если учесть, что переход занимает 10 секунд и игрок этого ждёт. В реальной игре с красивыми скайбоксами и временем на смену до 5-10 минут, ни один игрок не отличит сиё действо от сталкера.
Так что - экспериментируйте.
5. пример к туториалу можно скачать здесь:
www.hlfx.ru/xash/skybox_shuffle.rar - 2.8 Mb
распакуйте в папку xash и наберите в консоли weathdemo.
Смена скайбокса начнется через 20 секунд после начала игры.

Пожелания, предложения, вопросы?

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

Старое сообщение 22-03-2013 22:06
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Пожелания: поменьше энтить для реализации механизма. В самом деле, ведь ксашмод задумывался как альтернатива спириту, в которой все те же самые плюшки можно будет сделать с использованием меньшего количества энтить. Здесь же получается классический спиритовский изврат в стиле Доктора Тресни с тем лишь отличием от спирита, что гарантированно не глючит и выглядит на пятёрку.
Намного проще для мапперов использовать одну-единственную энтитю типа func_illusionary, текстуры которой будут плавно меняться при её активации по списку, находящемуся в свойствах этой энтити или в текстовом файле. Так что здесь кодинг треба Причём, по большей части на клиенте, текстуру ведь нужно менять посредством рендерера. А в таком случае можно какие-нибудь эффекты прикрутить.

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

Старое сообщение 23-03-2013 05:12
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34521
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Ku2zoff
Лучше делать универсальные фичи с десятком энтитей, чем узкоспециальные на одной-двух.
В этом смысле идеология спирита очень правильная.
Кому нужно что-то специализированное - всегда сможет сам нужный код написать.

__________________

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

Старое сообщение 23-03-2013 06:03
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12899
Возраст: 32

Рейтинг



Дядя Миша
Попрасил бы креозота чтобы скаи из сталкера выложил.

Насчет демки - выглядит прикольно, но весьма странно переключается - сначало плавно меняется, потом ждёт, потом опять меняется. К чему такие задержки?

Кстати старые халфовские компиляторы умели в каждой комнатке с небом делать собственный свет от солнышка, собсно вопрос: нельзя ли точно также чтобы у каждой комнатки с небом мог быть свой скайбокс?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 23-03-2013 в 07:30

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

Старое сообщение 23-03-2013 07:19
- За что?
PLut
Creator

Дата регистрации: Jun 2009
Проживает: Санкт-Петербург
Сообщений: 1220
Возраст: 29

Рейтинг



Дядя Миша Можно ли поставить 4 light_environment и переключать их вместе со скаями? Как я понял, light_environment можно включать и выключать, причем плавно.

__________________
Base Defense on Steam, ModDB

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

Старое сообщение 23-03-2013 08:42
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Ku2zoff писал:
Здесь же получается классический спиритовский изврат в стиле Доктора Тресни с тем лишь отличием от спирита, что гарантированно не глючит и выглядит на пятёрку.

Так в этом-то и весь смысл - что оно не глючит и его можно использовать в реальной игре.
Цитата:
FiEctro писал:
выглядит прикольно, но весьма странно переключается - сначало плавно меняется, потом ждёт, потом опять меняется. К чему такие задержки?

Там в паке исходник карты - подбери задержки по своему вкусу.
Цитата:
PLut писал:
Можно ли поставить 4 light_environment и переключать их вместе со скаями?

В том-то и дело, что да! Скажем три лампочки на рассвет, полдень, закат и одну для иммитации спыжки молний.
Небольшая загвоздка заключается в определенной ступенчатости смены яркости лайтмапы, но я уверен это можно решить, подобрав паттерн подлиннее (до 256 буков). Скажем, типа такого:
mmmmmmmllllllllkkkkkkkkjjjjjjjjjiiiiiiiiihhhhhhhhgggggggggffffffffeeeeeeedddddddcccccbbbbbbbaaaaaaa
в халфе, прошу заметить макс. длина паттерна 64 символа, а в ксаше - 256.

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

Старое сообщение 23-03-2013 15:24
-
SpAwN
БУГАГАШЕНЬКА

Дата регистрации: Nov 2011
Проживает: Узбекистан, Ташкент
Сообщений: 199
Возраст: 28

Рейтинг



Добавить модельку плывущих облаков, движущиеся солнце (env_glow), хотя можно вращать и сам скайбокс (если это возможно).

ТЕОРЕТИЧЕСКИ:
Для идеала наверное потребуется:
1) 3 (или более) скайбокса без облаков. Это утро, день, ночь (можно даже в фотошопе однотонные цвета подобрать, но я не дело ваше). Ещё лучше ещё добавить такие как рассвет, закат.

2) Анимированная моделька облаков.
3) Env_glow движущийся по путям - как бы имитация солнца.
3.1) Можно солнышко нарисовать и на самих скайбоксах, но придется крутиться и сам скайбокс.

Для большей крутости можно использовать несколько light_enviroment как и описал ДМ. Только, я так думаю, тени не будут динамическими. Будут стоять на месте вне зависимости от движения Солнца по небосклону. Хотя...я не проверял. Это теоретически. Но, думаю, стоит попробовать

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

Старое сообщение 23-03-2013 16:23
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Товарищи! Я вам просто показал принцип. Чтобы вы лучше его усвоили, вам необходимо попрактиковаться самостоятельно.
Почему бы например не замутить мини-конкурс на лучшую иммитацию погодных условий мапперскими способами?
Выкладывайте свои наработки прямо в тему.

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

Старое сообщение 23-03-2013 16:28
-
SpAwN
БУГАГАШЕНЬКА

Дата регистрации: Nov 2011
Проживает: Узбекистан, Ташкент
Сообщений: 199
Возраст: 28

Рейтинг



Цитата:
Дядя Миша писал:
Почему бы например не замутить мини-конкурс на лучшую иммитацию погодных условий мапперскими способами?


Нууу...я как бы не против. Но думаю изврат Доктора все равно будет круче))

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

Старое сообщение 23-03-2013 16:45
- За что?
SpAwN
БУГАГАШЕНЬКА

Дата регистрации: Nov 2011
Проживает: Узбекистан, Ташкент
Сообщений: 199
Возраст: 28

Рейтинг



А у меня ничего не получается. Смена идет, но скайбоксы переливаются, ну как бы мигают. Думал я с менеджерами намудрил. Пошел хардкорнее - полностью скопировал коробку со скайбоксами и менеджерами от ДМ к себе в тест карту - и что? Так же мигают скайбоксы!!!

Причем что на тест карте ДМ все впорядке, ничего не мигает, но копипаста всей коробки в моей карте дает глюки.

Порой бывает что освещение вырубается начисто. И потом снова включается...

Добавлено 24-03-2013 в 00:53:

r_lighting_extended и 1 и 0 пробовал

Добавлено 24-03-2013 в 03:45:

Дядь Миш. Скомпилировал я твой исходник. Не знаю чем ты компилировал, но после компиляции у меня так же моргают небеса (потому что браш друг в друге). Не знаю какими компиляторами ты компилировал, но я компилировал теми что идут в комплекте с ксаш модом под бсп31.

Я вижу такой выход: каждую следующую коробку с текстурой неба делать на 1 юнит больше. Но если приглядеться, то не так уж и идеально все получится.

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

Старое сообщение 23-03-2013 23:45
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2088

Рейтинг



Может там дело во float координатах, которые хаммером округляются?

__________________
-Brain is dead-

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

Старое сообщение 24-03-2013 07:50
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Я вам давно говорил - переходите на QuArK. Ну или хотя бы поставьте патч от китайца.

Цитата:
SpAwN писал:
Я вижу такой выход: каждую следующую коробку с текстурой неба делать на 1 юнит больше

Вот сразу видно кто теорию не учил
Они же рисуются с отключенным з-буффером и моргать не могут по определению. Что, кстати, убедительно доказывает моя демка.

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

Старое сообщение 24-03-2013 08:25
-
SpAwN
БУГАГАШЕНЬКА

Дата регистрации: Nov 2011
Проживает: Узбекистан, Ташкент
Сообщений: 199
Возраст: 28

Рейтинг



Цитата:
Дядя Миша писал:
Я вам давно говорил - переходите на QuArK. Ну или хотя бы поставьте патч от китайца.


Патч китайский стоит.

Теорию я учил. Как работает твоя демка без понятий, но твоя же демка скомпилированная мною не работает. Все скайбоксы переливаются друг с другом

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

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

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

Рейтинг



Попробуй скомпилить без участия хаммера - батником. Посмотрим что получится. Только map-файл возьми из пака, а не тот что перезаписал хаммер.

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

Старое сообщение 24-03-2013 12:50
-
SpAwN
БУГАГАШЕНЬКА

Дата регистрации: Nov 2011
Проживает: Узбекистан, Ташкент
Сообщений: 199
Возраст: 28

Рейтинг



Компилировал как раз батником. Но правда перезаписывал хаммером...сейчас протестирую

Добавлено 24-03-2013 в 17:41:

Оо, а вот откомпилированный исходник без перезаписи хаммером работает!
Но есть разница!
В демки ДМ - освещение яркое
После перезаписи хаммером - темнее
После компиляции без перезаписи - совсем темное.

Но в чем причина то? Как теперь тоже самое в хаммере реализовать?

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

Старое сообщение 24-03-2013 13:41
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 05:28. Новая тема    Ответить
Страницы (4): [1] 2 3 4 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashXT > Динамическая смена скайбокса
уроки по XashXT
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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