📊 Статистика: 12 коммитов , ~4000 добавлений, ~6000 удалений 😮
В этот раз изменения не менее глобальные, но пожалуй начну с самых важных и неприятных новостей.
🚨 Мод мигрирует на NeoForge + Fabric 1.21.1, поддержка 1.20.1 и других версий прекращена.
❌ Система блоков кода забрасывается на неопределённый срок.
Теперь насчёт причин, в первую очередь, я устал:
Я долго сидел на Stonecutter (система сборки модов) в надежде, что это упростит мне разработку мультиверсионных модов и планировал после стабильных версий добавить дополнительную ветку для 1.21.1, но в этом и проблема, сам Stonecutter существенно тормозит компиляцию и сборку проектов. У меня есть 4 основных подпроекта для работы движка и для каждого из них ещё подпроекты под версии игры, для которых, в свою очередь ещё и подпроекты Forge/Fabric. Сейчас я вернулся на чистый Architectury и время компиляции уменьшилось с 2-3 минут до 15 секунд, да и сама IDE стала подхватывать контекст проекта куда быстрее и мне не нужно каждые пару часов сбрасывать индексы и ждать, пока IDEA их починит. На первый взгляд было бы разумнее сначала доделать 1.20.1, а потом уже переходить на 1.21.1, чтобы для тех, кто ещё там работает был бы хоть какой-то рабочий билд, но увы, в тех условиях продолжать дальше допиливать движок почти нереально, а тратить потом ещё 1-2 недели на ручной порт я не хочу, так что думаю 1.21.1 сейчас наиболее актуальный вариант, да и в случае чего с неё будет проще портировать мод на 26.2+, если большинство модов начнут переносить туда.
Теперь по поводу блоков кода, пока я хочу перенаправить основные силы на новую систему скриптинга, а после него посмотреть на подход к блокам кода со стороны. Есть у меня мысль, как их совместить и не делать 2 разные системы с разной документацией)
Но есть и довольно много плюсов за эту неделю:
➕ Источники света теперь потребляют на ~20% меньше производительности
➕ Я уже целиком перенёс движок на Fabric 1.21.1 (для NeoForge там ещё нужно пара небольших правок, но они будут готовы уже завтра)
➕ Скриптинг теперь будет на моём языке Katari, который основан на Kotlite (упрощённый Kotlin). Суть в том, что вместо компиляции теперь используется кастомный сериализуемый интерпретатор с приостанавливаемыми функциями. Это нужно, чтобы сделать более простой и удобный синтаксис, вместо того, чтобы городить стейтмашины, корутины, плагины для компилятора, неудобный DSL и т.п. теперь просто большая часть языка и стандартной библиотеки ограничена, но в замен весь его функционал стал стабильнее, плюс это позволяет мне добавлять новые операторы, которых нет в оригинальном языке. Подробнее можете почитать тут, по сути это мой аналог нарративным языкам, вроде Ink или Yarn Spinner, которые используются во всяких Unity / Godot, но с более гибким функционалом.
Кроме того, новый скриптовой движок весит всего 2МБ, вместо 80МБ в случае оригинального компилятора. Возиться с аддонами тоже теперь нет необходимости.
В общем, очередные глобальные изменения, ради будущего движка. Как считаете, хорошее это решение, или Холлоу опять за старое? 💻
