Size: a a a

Rust GameDev — русскоговорящее сообщество

2021 July 03

R

Roman in Rust GameDev — русскоговорящее сообщество
Каждую систему еще и написать надо. И это куда дольше, чем добавить в функцию регистрации
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Самое смешное что в юнитёвой ECS есть то что ты хочешь, но у нас в проекте мы запрещаем автосоздание всех систем и создаём их вручную рутинными строчками кода. Но у нас есть особенности что иногда мы хотим уничтожать и создавать системы динамически, что не в каждом проекте нужно. С другой стороны, это как раз пример того что макросом не сделаешь. А ещё ты можешь хотеть для отдельных стадий (скажем, стадия боя и стадия меты) создавать вообще отдельный World. Очень быстро твой макрос обрастёт такими подробностями что ещё десять раз пожалеешь о своей затее)
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Ну и вообще, у меня всегда было мнение что явная точка входа лучше чем неявная
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Опять же можно дебажить когда всё сломалось закомментировав регистрацию части систем и постепенно их подключая
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
А когда этот код генерируется, я не очень понимаю как это контроллировать
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Или например ты захочешь headless сервер сделать
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
с вручную написанной точкой входа ты тривиально не будешь включать системы рендера для него, в случае макроса понадобятся странные костыли
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
А ещё ты можешь захотеть AB-тестить или фичетогглить что-нибудь, и в этом случае ты будешь регистрировать только при определённых флагах свою систему, и опять же этот контроль будет доступен только в динамике, а никак не в статике
источник

VS

Vladimir SHCHerba in Rust GameDev — русскоговорящее сообщество
Тут можно взглянуть на Boost.DI, он позволяет часть зависимостей на этапе компиляции разрешать, а часть в рантайме. Это, конечно, не раст, но какие-то идеи можно почерпнуть.
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
Не знаю, это все должно прекрасно уживаться вместе и уживается в другом проекте)

А насчет отключения систем динамического, то это можно реализовать тегами. Если нужно отключать систему прям совсем, то помечаешь систему тегом и тег вырубаешь. Если для конкретных объектов, то то же самое проделываешь с объектами.

И с макросом это не должно превратится в бардак ибо вещь проверенная)
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
Ну у меня тоже ни что не мешает так делать - просто закомментил систему и все
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Пошёл в модуль где она определена и закомментил там
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
а если тебе надо это сделать с десятком систем, значит сделал это в десяти файлах
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
потом случился вечер и ты пошёл на сельскую дискотеку
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
утром ты забыл о том что именно и где комментировал
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
И точно так же с тегами
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
тебе пришлось их обрабатывать в десятке файлов вместо одного
источник

ВМ

Виталий Медоваров... in Rust GameDev — русскоговорящее сообщество
Чем сильнее ты размазываешь такие зависимости, тем больше у тебя будет проблем. Особенно когда систем станет много
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
неа, все будет красиво довольно-таки
https://pastebin.com/v7QYpjaE
источник

НЧ

Неизвестный Человек... in Rust GameDev — русскоговорящее сообщество
Спасибо, посмотрю
источник