Создание динамической смены суток

Помогаем новичкам в создании своего мира
Ответить
Сообщение
Автор
Аватара пользователя
BigDerilL
Нович0к
Нович0к
Сообщения: 1
Зарегистрирован: 22.03.2011

#1 Сообщение 22.03.2011, 02:20

Подскажите, пожалуйста, возможно ли на движке Source воссоздать динамическую смену дня и ночи? Если да, то как? Ведь насколько я знаю, текстуры скайбокса нельзя поменять в реальном времени.

Аватара пользователя
Eldarium
Капитан
Капитан
Сообщения: 352
Зарегистрирован: 13.02.2010
Откуда: Днепропетровск
Благодарил (а): 3 раза
Поблагодарили: 1 раз
Контактная информация:

#2 Сообщение 22.03.2011, 14:00

Серверплагины типо DayAndNight
ИзображениеИзображение
воопщем установил кррякед стим активировал игру через тор ну воопщем всё ок друзей можно добавлять захажу в cs 1.6 пытаюсь зайти полностью на стимовский сервеp ip: пишиет: "STEAM validation rejected"
поначалу я думал что это из-за того что друзья не активированы но когда активировал их понел что дело не в этом
помогите плз в игре говорят уменя вопще стима нету
А есть какие-нибудь Чит-Коды дя этой игры?(про тф2 :D)
СЕгодня решил поиграть с друзьями в кс 1.6 она скачена на крякнутый стим зашол на сервак и стал играть а в стиме друзья говорят что я типо воббше не в игре как исправить эту проблему??
КСмания-крупнейшее русскоязычное анти-стим сообщество

scorp75
Майор
Майор
Сообщения: 586
Зарегистрирован: 20.11.2008
Откуда: Чебоксары
Поблагодарили: 52 раза

#3 Сообщение 31.12.2012, 04:50

На самом то деле можно сделать смену дня и ночи и в хамере.
Однако для полной реалистичности требуется много инпутов и аутпутов.

Я вобщем то давно уже балуюсь такой фишкой в своих картах

вот пример на двух картах


На обоих картах имеется система смены дня и ночи.
В конце цикла происходит зачистка карты от различных пропов и мусора от трупов.
Это позволяет предотвращать краш сервера от переполнения лимита пропами.

Теперь о смене суток.
Во первых нужно установить таймер - logic_timer и указать время суток, ну к примеру 180 секунд. Значит цикл суток будет идти за 3 минуты.

Далее создадим ентити light_environment
Присвоим ему имя, к примеру тот же light_environment

при срабатывании таймера это энтити будет включаться и выключаться в заданые промежутки времени. light_environment - освещение через браши и скайбокс

Солнце на карте - ентити env_sun
Назавем его mi_sun
теперь можно выключать и выключать освещение через таймер.

Код: Выделить всё

entity
{
	"id" "45372"
	"classname" "logic_timer"
	"RefireTime" "220"
	"spawnflags" "0"
	"StartDisabled" "1"
	"targetname" "day"
	connections
	{
		"OnTimer" "mi_sun,TurnOff,,3,-1"
		"OnTimer" "mi_sun,TurnOn,,62,-1"
		"OnTimer" "light_environment,Toggle,,0,-1"
		"OnTimer" "light_environment,Toggle,,63,-1"
            }
}

Нужно иметь ввиду что мы не можем совсем отключить light_environment.
Мы можем только отключить параметр Brightnes, а параметр Ambient остается неизменным.

Поэтому настроим light_environment следующим образом
Brightnes 250 227 200 700
Ambient 200 200 200 10
env_sun не влияет на освещенность карты и потому его надо настраивать исходя из скайбокса и создаваемой обстановки на карте.

Далее надо понимать, что если мы подобным образом настроим карту при 2d скайбоксе, то ничего путного не получится. Тк скайбокс имеет свое свечение даже при отключении light_environment
Вывод простой. Нам надо загородить скабокс от взгляда игрока. Для этого потребуется создать 3d скайбокс.
Самый простой способ - создание коробки скайбокса в центре которого находится sky_camera
Внутри коробки скабокса создаем вторую коробку - затемнение имеющую любую текстуру на ваш вкус. От звездного неба до тулз блэка. Эту коробку нужно переконвертировать в func_brush Зададим этой коробке имя, к примеру sky
Теперь у этой браши можно менять прозрачность от 0 до 255

Добавим аутпуты на таймере.

Код: Выделить всё

 "OnTimer" "sky,Alpha,150,2,-1"
		"OnTimer" "sky,Alpha,175,2.5,-1"
		"OnTimer" "sky,Alpha,150,59,-1"
		"OnTimer" "sky,Alpha,175,58.5,-1"
		"OnTimer" "sky,Alpha,225,57.5,-1"
		"OnTimer" "sky,Alpha,50,61,-1"
		"OnTimer" "sky,Alpha,25,61.5,-1"
		"OnTimer" "sky,Alpha,255,4,-1"
		"OnTimer" "sky,Alpha,200,3,-1"
		"OnTimer" "sky,Alpha,225,3.5,-1"
		"OnTimer" "sky,Alpha,75,0.5,-1"
		"OnTimer" "sky,Alpha,100,1,-1"
		"OnTimer" "sky,Alpha,125,1.5,-1"
		"OnTimer" "sky,Alpha,50,0,-1"
		"OnTimer" "sky,Alpha,125,59.5,-1"
		"OnTimer" "sky,Alpha,100,60,-1"
		"OnTimer" "sky,Alpha,75,60.5,-1"
		"OnTimer" "sky,Alpha,0,62,-1"
		"OnTimer" "sky,Alpha,200,58,-1"
Растянув по времени затемнение и пропадание мы придадим большую реалистичность процессу.

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

Сам я не использую коробку в скайбоксе. Вместо коробки я использую вращающийся полый шар - модель на внутреннюю поверхность которой можно нанести любую нужную текстуру. Это дает ночное вращающееся небо.


Данный способ имеет смысл применять только если карта открытого типа. Так как нет смысла делать это для карт без скабоксов, где все действие - в помещениях.

Есть большой недостаток в данном способе.
light_environment отвечает за освещение не только брашей но и пропстатиков. Соотвественно модели в проп статике будут неосвещенными даже днем, поскольку параметр выставлен Ambient 200 200 200 10.

Выход - либо делать проп динамики либо менять текстуры моделей на свои.
Так например если в .vmt заменить "LightmappedGeneric" на "unlitgeneric", то модели будут независимы от освещения.


Пример


Данным способом я делал карты на играх Obsidian Conflict, Synergy, TF2

Ответить