Перейти к контенту

Погода и освещение


The ReapeR

Рекомендуемые сообщения

Мониторы, конечно же, у всех студийные и калиброванные, освещение - строго по ГОСТу, ну и, главное, глаза клонированные.

 

Ролик у меня выглядит препоганейше.

 

Да тут совсем не в этом дело. В том же Atmosfear Cromm Cruac корректировал параметры освещения в user.ltx для получения более сочной картинки, контрастных теней и годной имитации привыкания глаз к свету и темноте, единоразово изменяв их через скрипт. The.

Изменено пользователем The ReapeR

Поделиться этим сообщением


Ссылка на сообщение

Кстати, соляночный скриптик переписанный надо кому - упрощенный-ускоренный, + с управлением вероятности погоды не только переписыванием конфигов, но и "одним движением" ?


 

 

https://dl.dropboxusercontent.com/u/27871782/level_weathers.script

 

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

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

 

Что сделано и как оно работает: во-первых, развернуто в плоские функции, ибо ООП там не нужно ни зачем вообще, во-вторых - динамический апдейт. это значит, что снесен весь мусор типа

  Показать

и соответствующая ему содомия в биндере актора. Хотите использовать без переделок - надо ее вернуть.

 

Раз уж здесь требуют расписать построчно, распишу.

 

  Показать

Библиотечные функции локализуются, дабы меньше томозило.

С той же целью ini файл открывается один раз при подцеплении скрипта.

 

Табличка уровней - такая же, как в оригинале - это уровни, где погода статическая. На ее основе считается переменная l_indoor и если она определена, то погода берется из game.ltx, а не вычисляется динамически.

 

  Показать

табличка t_prob - собственно, позволяет поменять вероятность выбора той или иной погоды глобально, а не перелопачивать каждый раз все конфиги.

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

 


 

 

Eдем дальше, теперь - с конца:

function init()

  Показать

- чтение конфигов.

Таблица суффиксов (уровней с динамической погодой) из environments.ltx (мы его открыли при подцеплении скрипта), таблица переходов и их вероятностей. Впрочем, вероятности теперь можно в конфигах не писать, по тому как есть табличка в скрипте, универсальная. Так что нам нужно только время, и на что переключаться можно.

 

  Показать

 

end - из game.ltx читаем постпроцессы типа желтизны на янтаре, и запускаем, а также статическую погоду для подземных уровней. И, наконец, вешаем на динамический апдейт код самого апдейта.


 

 

Не знаю, что там кто будет формировать - по мне так кроме самого скрипта вообще больше ничего не надо.

Собственно, самая интересная часть здесь - апдейт.

 

В логике того, что было, способен разобраться, наверное, только Создатель. Плюс там останки кучи каких-то древних модов, которые вообще ни за чем не нужны. Так что, все переделано в одну единственную функцию.

function update()

  Показать

- если время что-то делать не подошло, не делаем ничего. А вот если подошло, то выбираем таблицу погод для СЛЕДУЮЩЕГО раза. Даже если находимся под землей, или прямо сейчас происходит выброс. Зачем это надо - кроме упрощения кода можно прицепить, например, к новостям прогноз погоды. Не "фэйковый", а реальный. Ну и кроме того, плохая идея, когда при каждой загрузке сэйва погода - разная получается.

  Показать

- а вот если "предсказанной" погоды нет - только тогда считаем на основе загруженной таблицы. И если не под землей, и не выброс - устанавливаем. А если под землей - ставим нужную, но для поверхности дальше все равно идет рассчет нового "прогноза":

  Показать

- собственно, это и был прогноз погоды. Все.

end

 


 

 

В init() после строки table_sort( trans_t, function( a, b ) return a[1] < b[1] end ) -- из конфигов читается как попало, поэтому сортируем по времени

 

Добавил:

trans_n = trans_n + 1; trans_t[trans_n] = { 1440, trans_t[1][2], trans_t[1][3] } -- синтетическая секция для 24-х часов.

-- Надо, чтобы был корректный переход со "стандартным" конфигом.

 

Спасибо Карлан за то, что обратил внимание, и за тестирование с этим самым "стандартным" конфигом из Dynamic Weather v0.9.4

Изменено пользователем Murarius
  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение

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

Вот вариант с учетом известных проблем с конфигами (в комментариях все подробности)
https://dl.dropboxusercontent.com/u/27871782/level_weathers_bad_cofigs.script

В идеале, конечно, лучше бы конфиги починить, а сон делать через исправленную set_curent_time() в _g.script:

  Показать



Этот - именно для тех, кто любит чинить кривые, но зато Священные и Неприкосновенные конфиги скриптами.

 

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

Изменено пользователем Dennis_Chikin
  • Нравится 1
  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение

Забавно, но, во-первых, "явных ошибок синтаксиса" не видит компилятор LUA, а во-вторых он с этими "ошибками" как-то проработал у меня целых 7 лет уже, и еще у 2-х человек минимум.

 

Другое дело, там в посте вроде было расписано, в чем отличие от всем привычного, и WeatherManager в этом файле, действительно, больше нет.

 

То есть, от bind_stalker требуется наличие функции task_add(), а в скрипте имеется функция init(), которую кто-то должен дернуть для запуска. Не важно, кто, по большому счету. Как удобнее будет использующему скрипт.

 

То есть, описание требуется прочитать внимательно.

 

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

 

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

  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

Фар плэйн - это расстояние, на котором рисуются элементы пейзажа. Фог дистанс - это расстояние заливки цветом тумана.

 

https://www.dropbox.com/s/datlapi5x4b6xn6/rainy.png?dl=0

 

А вот денсити - это заляпывание картинки непосредственно перед носом.

 

Собственно, на картинке денсити на нуле, дабы не тормозило, дистенс фога - то-ли 80, то-ли 100. Плейн - 280, поскольку мапперов у нас дофига, но вот локи на треугольники вменяемого размера разбить - "а зачем, если можно этот плэйн выставить в 100500, и лет через 20 непременно появятся видюхи, которые при этом не тормозят, и воют вентилятором может быть даже чуть тише стратегического бомбера на взлете ?"

Изменено пользователем Dennis_Chikin
  • Смешно 1

Поделиться этим сообщением


Ссылка на сообщение

Таких как ДМХ - на этом форуме действительно нет. Все вопросы  -  на сайт к авторам.

А в принципе, просто узнаем текущую секцию через level.get_weather(), и меняем в этой и В СОСЕДНИХ по тому же конфигу.

 

Если вопрос: "куда вписать level.get_weather() и как искать в конфигах" - курсов информатики на этом форуме, опять же, нет. Парадокс: пара-тройка учителей информатики техникумов были, но вот курсов - нет.

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...