📊 Статистика: ~18 коммитов.
На этой неделе я по большей части занимался другими проектами не связанными (или связанными косвенно) с движком.
Первая и, пожалуй, самая важная работа была посвящена кастомным инструментам сборки, а именно - начало миграции со Stonecutter на HollowEngine Loom. Вторую часть я потратил на практику рендеринга освещения.
🆚 HollowEngine Loom
Как многие помнят, движок сейчас работает на Forge и Fabric для 1.20.1, а также есть секретная версия на Fabric 1.21.1 👀
Это возможно благодаря такому инструменту, как Stonecutter. Это что-то вроде препроцессора, который запускает сборку мода на разные версии и модлоадеры частично комментируя строчки кода в зависимости от определённых параметров. Но у него есть некоторые существенные недостатки, которые сильно раздражают при разработке, поэтому я сделал HollowEngine Loom - форк Architectury Loom, который позволяет писать под несколько модлоадеров в разных подпроектах. Я же, в свою очередь, расширил его функционал, чтобы он позволял писать сразу под несколько версий и сразу показывал в IDE методы и переменные со всех версий игры и сразу проверял, чтобы при компиляции не было такого, что на одной версии метод есть, а на другой - нет.
Ну, это если обобщённо, там довольно много удобств в сравнении с подходами использующими препроцессоры:
• Форматирование кода и сортировка импортов не ломает инструкции препроцессора в отличии от того же Stonecutter
• Анализируется общий jar со всех версий + специфические проверки веток, тем самым Вы можете сразу видеть какие проблемы возникают и на каких версиях!
• Код выглядит чисто, а не как свалка закомментированного кода, который можно легко поломать или допустить опечатку во время отладки.
• Автодополнения работают сразу для всех версий, а также я немного их доработал, чтобы явно видеть, на каких версиях они доступны.
В общем интересная штука, про которую я подробнее писал на своём Boosty, так что заглядывайте, если интересно 🙃
На текущий момент эта система готова где-то на 90% и я уже постепенно начал переносить на неё движок, так что уже со следующего билда мод начнёт выходить сразу на 2 версии: 1.20.1 и 1.21.1!
💡Источники света
После того как я осилил инстансинг для любых шейдерпаков, я захотел подробнее изучить тему связанную с цветным освещением, точечным и прожекторным (конусообразным) светом, объёмным туманом и т.п. И знаете, мне уже достаточно навыков, чтобы добавить это в ближайшие недели 🤔
Но проблема в том, что каждый шейдерпак использует свои подходы к рендерингу и освещению, так что чтобы внедрить туда свой всё же придётся модифицировать каждый уникальный шейдерпак. То есть я не могу провернуть тот же трюк, что с инстансингом, когда я делаю какую-то магию и фича начинает работать сразу на всех шейдерпаках. Но по крайней мере я бы мог сделать поддержку самых популярных шейдерпаков, вроде Complementary или BSL. Но пока сомневаюсь, что подобная возможность кому-либо будет нужна в ближайшее, так что вероятно отложу её в долгий ящик.