TauCetiStation / TauCetiClassic

Франкенштейн жив
GNU Affero General Public License v3.0
142 stars 417 forks source link

[Task] Оптимизация воды #9997

Open volas opened 2 years ago

volas commented 2 years ago

Не лагающая вода откроет путь к подводным картам, которых все очень ждут.

Сейчас у нас в билде используется старая система с билда европы, но она очень не оптимальна и грузит сервер на больших масштабах (каждый турф с водой процессится отдельно, даже если его не нужно процессить): https://github.com/TauCetiStation/TauCetiClassic/tree/master/code/modules/europa/fluids

В качестве энвиронмента это сейчас выглядит наверно как-то так: ``` /turf/environment/ocean flooded = TRUE ```

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

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

Если портировать или для примера, то стоит посмотреть: https://github.com/NebulaSS13/Nebula/blob/dev/code/controllers/subsystems/fluids.dm / https://github.com/Baystation12/Baystation12/blob/dev/code/controllers/subsystems/fluids.dm - насколько понимаю, развитие первоначальной системы с европы, что у нас. https://github.com/tgstation/tgstation/blob/master/code/controllers/subsystem/fluids.dm - тг имеют свою симуляцию жидкостей, но используют кажется для чего-то другого.

volas commented 2 years ago

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

Для подводной карты скрабберы и/или вентиляция должны работать в качестве слива, что бы не придумывать какие-то новые системы тут.

DarthSidiousPalpatine commented 2 years ago

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

kalazus commented 2 years ago

Тогда нужно переписывать систему газов на 1) тайловую, 2) она должна быть намного более полной чтобы газы перемещались с разной скоростью.

volas commented 2 years ago

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

Akellazp commented 2 years ago

А если сделать воду просто газом со своими свойствами.

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

volas commented 1 year ago

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