Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lighting updates, new starlight #12891

Merged
merged 17 commits into from
Mar 12, 2024
Merged

Lighting updates, new starlight #12891

merged 17 commits into from
Mar 12, 2024

Conversation

volas
Copy link
Member

@volas volas commented Feb 25, 2024

Описание изменений

Твики света и новая версия света от звезд - теперь цветная! Спасибо TG и Beestation за некоторые наработки и идеи.

Превью

Мне лень делать видео.

Tau Ceti Station 2024-02-25 001435
Tau Ceti Station 2024-02-25 001408
Tau Ceti Station 2024-02-25 001538

Основные изменения:

  • Сервер инициализируется быстрее, в основном за счет убийства корявого create_all_lighting_objects() и спавна /atom/movable/lighting_object по требованию.
  • За счет этого удалось включить динамический свет для всего космоса (!) без особых последствий.
  • Так как теперь lighting_object не всегда присутствует на карте, для темноты добавлен отдельный слой на экран клиента.
  • Starlight работает на плейнах и был повышен до звания Environment Lighting. Он теперь красивее, с большими возможностями, и почти не затратен для сервера. В связи с этим, конфиг для включения старлайта был удален.
  • Были добавлены эффекты на глобальный свет для ивента radstorm и на вызов нарси.
  • Был переписан не динамический свет, убрано не очевидное дублирование параметров у зон и тайлов. Теперь задаётся от зоны. Таким зонам добавлен свой environment свет, так что Голодек выглядит лучше.

Environment Lighting это вторая "легкая" система освещения на плейнах, не зависимая от обычного динамического света, но совместимая с ней. Может использоваться как глобальный внешний натуральный свет, уникальный для каждого Z-уровня: свет от звезд, планетарные день/ночь. Отдельно возможно задавать независимое фоновое освещение для зон.

Глобальный свет можно централизовано обновлять для всех клиентов, в том числе плавно с применением анимаций. Это позволяет создавать авроры (пример можно посмотреть по ссылке у Beestation ниже), или какие-то еще эффекты.

Сам фреймворк еще нуждается в упорядочивании, сейчас меня на это не хватило. Возможно стоит перенести холдер в SSenvironment, или еще лучше объединить SSenvironment и SSmapping. И я отложил мап конфиг с индивидуальными настройками карт, так как пока не представляю, как лучше реализовать.

Известные проблемы, которые я не решу в рамках PR-а:

  • Камеры опять сломаны. Я минимизировал проблему, они вполне юзабельны, но не представляю как починить нормально. Нужно как-то научиться прокидывать /fullscreen/ в них.
  • Космический свет просвечивает сквозь наши шаттлы - выглядит красиво, декларирую это как фичу.
  • Анимация перехода освещения при смене z-уровней может выглядить коряво, если на самом уровне тоже присутствует анимация (аврора). Есть вариант убрать её вовсе перед мержем, но мне кажется не критично и я бы оставил.
  • Надо обновить космос/паралакс и сделать так, чтоб он не красился от обычных источников освещения.

Почему и что этот ПР улучшит

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

Авторство

Это оригинальный PR, но в основе лежат идеи и некоторый код с BeeStation: BeeStation/BeeStation-Hornet#9577, и TG-station tgstation/tgstation#78877

Чеинжлог

🆑

  • rscadd: Новый цветной внешний свет, несколько апдейтов света обычного, пишите багрепорты если что-то сломалось.
  • rscadd: Во время радиационного шторма можно любоваться авророй за окном.

@TauKitty
Copy link
Contributor

TauKitty commented Feb 25, 2024

Changelog status: ✔️

@TauKitty TauKitty requested a review from a team February 25, 2024 01:16
@volas volas marked this pull request as draft February 25, 2024 01:17
@AzzyDreemurr13
Copy link
Contributor

AzzyDreemurr13 commented Feb 26, 2024

Cейчас на сандбоксе был и если были вопросы насчёт производительности, то лагов я не заметил (быстро облетал, стрельба, обычная ходьба) при условии, что у меня крайне слабый пк.

@volas volas changed the title [WiP] Starlight, environment lighting Lighting updates, new starlight Feb 28, 2024
@volas volas added the Test Merge Candidate ПР с этим лэйблом будет или уже находится с тест мерже label Feb 28, 2024
@volas volas marked this pull request as ready for review February 28, 2024 18:12
@muWander
Copy link
Contributor

muWander commented Mar 1, 2024

говорят ночное зрение у таяр не работает (которое обычно в полной темноте включается)

@maleyvich
Copy link
Contributor

после тестмержа этого пра неожиданно поломался сон, позже напишу ишуй да

@Deahaka
Copy link
Contributor

Deahaka commented Mar 1, 2024

Сон поломался раньше.

@volas
Copy link
Member Author

volas commented Mar 1, 2024

Спасибо за багрепорты, хотя многие вещи я тестил но последние патчи что-то всё же сломали. Я посмотрю на выходных и верну в ТМ.

@UDaV73rus
Copy link
Member

В параллаксе звезды сделать не окрашенными возможно?

@volas
Copy link
Member Author

volas commented Mar 1, 2024

я пока не знаю, как, но это цель в перспективе. Особенно если будут туманности и прочие обновления параллакса.

@UDaV73rus
Copy link
Member

UDaV73rus commented Mar 1, 2024

туманчик отдельным слоем и так есть!
были наработки с ивентами отображающимися в параллаксе, но никто кодерской помощи не пообещал, по этому не стал доделывать

Видосы

видик со звуком

clowns.mp4
2021-09-07_15-47-01.mp4

@volas
Copy link
Member Author

volas commented Mar 1, 2024

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

@@ -126,6 +126,7 @@ var/global/static/list/radial_question = list(
var/global/list/hex_by_color

// Use /hex2color(hex) for find color
// what palette are these colors from? why we need it?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это вроде я делал. Тут всякие html-вские цвета и их rgb. Юзается для фичи с дальтонизмом и проводами

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

главная проблема - они не соответствуют web-палитре, так что где-то еще это использовать возможно плохая идея и имя hex2color вводит в заблуждение. Оставил комментарий как предупреждение

Comment on lines 298 to 304
if(variable == "dynamic_lighting")
new_value = tgui_alert(usr, "dynamic_lighting",, list("DYNAMIC_LIGHTING_DISABLED", "DYNAMIC_LIGHTING_ENABLED", "DYNAMIC_LIGHTING_FORCED"))
new_value = tgui_alert(usr, "dynamic_lighting",, list("ENABLED", "DISABLED"))
switch(new_value)
if("DYNAMIC_LIGHTING_DISABLED")
new_value = DYNAMIC_LIGHTING_DISABLED
if("DYNAMIC_LIGHTING_ENABLED")
new_value = DYNAMIC_LIGHTING_ENABLED
if("DYNAMIC_LIGHTING_FORCED")
new_value = DYNAMIC_LIGHTING_FORCED
if("ENABLED")
new_value = TRUE
if("DISABLED")
new_value = FALSE
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это наверное можно и убрать. Как-то бесмысленно для була делать такое)

@@ -491,17 +491,15 @@
return
O.set_light(l_power = var_new)
if("dynamic_lighting")
if(!isarea(O) && !isturf(O))
to_chat(usr, "This can only be used on instances of type /area and /turf")
if(!isarea(O))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это наверное можно и убрать. Как-то бесмысленно для була делать такое)

volas added 2 commits March 8, 2024 03:19
… it breaks, but it fixes some client.color filters like nightvision or invert.
@volas volas added the Test Merge Candidate ПР с этим лэйблом будет или уже находится с тест мерже label Mar 9, 2024
@volas
Copy link
Member Author

volas commented Mar 12, 2024

К этому еще надо будет вернуться, но в целом готово для мержа.

@volas volas merged commit 08b998b into TauCetiStation:master Mar 12, 2024
12 checks passed
TauKitty added a commit to TauCetiStation/ClassicChangelog that referenced this pull request Mar 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Config Update Sprites Test Merge Candidate ПР с этим лэйблом будет или уже находится с тест мерже UI User Interface
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants