Lucis
Лёгкий серверный движок освещения, который ускоряет любые задачи, связанные с освещением, вплоть до ~8-12 раз!
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 1,8 тыс.
- Подписчиков на Modrinth
- 12
- версия
- 1
- Обновлён
- 10 июля 202610 июл.
- Опубликован
- в 2026
Коротко о моде
Нужен на сервере; в игре — по желанию
Lucis
Lucis — это лёгкий серверный движок освещения. Он заменяет дорогостоящие части ванильного конвейера освещения Minecraft на более быструю региональную систему, рассчитанную на высокую пропускную способность обновлений, ускоренное освещение чанков и лучшую масштабируемость на многоядерных процессорах, что позволяет быстрее генерировать мир и спавнить огромные структуры без резких просадок TPS.
Изначально проект начинался как исследование, чтобы понять, как работает движок освещения Minecraft, но в итоге я переписал освещение, потому что оригинальное было слишком медленным для меня, и решил немного повеселиться, попытавшись что-то с этим сделать!
Я хотел спавнить огромные (реально огромные!) структуры в мире, но застрял на том, что ванильный движок освещения просто... ну, знаете, не ожидал ТАКОГО количества блоков для расчёта света и просто вешается, так что я попытался это решить.
Да, Starlight и ScalableLux существуют, вы можете использовать и их. Однако я хотел сам исследовать и заглянуть внутрь, а не использовать готовые решения. Итак, вот Lucis, который ускоряет освещение до ~8-12x по сравнению с ванилью и ~1.5x быстрее ScalableLux/Starlight!
Что делает Lucis?
Lucis оптимизирует освещение чанков во время генерации мира на этапе подготовки чанка, а также обновления блочного света и небесного света в рантайме после изменения блоков.
Вместо того чтобы полагаться только на ванильное поведение освещения при каждом обновлении, Lucis группирует изменения света по регионам, обрабатывает их асинхронно, где это возможно, а затем публикует получившиеся данные освещения обратно в движок освещения Minecraft пакетами.
Цель очень проста. Снизить затраты на освещение при интенсивных обновлениях блоков, загрузке чанков и изменениях небесного света.
Как это вообще работает?
Это очередной форк Starlight?
Нет, это другой подход к оптимизации расчётов света, где это возможно. Позвольте попытаться описать его.
Minecraft хранит свет по секциям и обновляет его всякий раз, когда блоки ставятся, удаляются, генерируются или изменяются. Хотя это хорошо работает для обычного геймплея, всё может стать медленным, когда игре приходится обрабатывать множество влияющих на свет блоков за короткое время или генерировать мир.
Lucis меняет это, собирая работу по освещению в регионы. Регион — это небольшая выделенная область чанков, которую можно обрабатывать как единое целое. Когда происходит обновление блока, Lucis записывает изменение, группирует его с соседними изменениями и отправляет эту работу в свою систему освещения в рантайме. Это позволяет не рассматривать каждое мелкое обновление как полностью отдельную операцию освещения.
Для освещения чанков Lucis может вычислять свет во время генерации мира, используя собственный путь пересчёта освещения. Он читает чанк и данные освещения соседних чанков, вычисляет небесный свет и блочный свет, а затем публикует готовые секции освещения обратно в поток освещения Minecraft.
Что касается изменений блоков в рантайме, Lucis использует собственную очередь света. Если много блоков меняется в течение одного тика или близко друг к другу, очередь позволяет Lucis обрабатывать их как сгруппированные региональные задачи. Это особенно полезно для плотных обновлений блоков, правок ландшафта, сгенерированных структур и изменений небесного света, вызванных крышами или большими проёмами.
Lucis также разделяет вычисление и публикацию. Тяжёлую работу можно выполнять вне основного пути обновления освещения, так что итоговые данные секций можно публиковать пакетами. Это уменьшает количество мелких задач освещения, которые должны проходить через поток освещения одна за другой. В результате снижаются накладные расходы, когда много изменений света происходит одновременно.
Главная техническая тонкость в том, что нам всё ещё нужно соблюдать состояния чанков Minecraft и правила движка освещения, чтобы не сломать множество других модов, которые так или иначе получают данные освещения или реализуют собственную систему. Lucis вычисляет новые данные освещения, отслеживает изменённые регионы, а затем передаёт результат обратно движку.
Бенчмарки
Бенчмарки запускались на Minecraft 1.21.1 с NeoForge 21.1.234, сравнивая Vanilla, ScalableLux и Lucis на одном и том же стенде — одинаковый сид, координаты и окружение.
Тестировалось на AMD Ryzen 3700x с 4 потоками, выделенными для Lucis.
ScalableLux оставлен по умолчанию с parallelism=-1 в конфиге.
Чем ниже ns/change, тем лучше.
| Нагрузка | Vanilla ns/change | ScalableLux ns/change | Lucis ns/change | Lucis против Vanilla | Lucis против ScalableLux |
|---|---|---|---|---|---|
block_toggle_border | 322846.1 | 43999.7 | 28881.8 | 11.18x | 1.52x |
dense_chunk_patch | 17766.0 | 3480.5 | 3002.3 | 5.92x | 1.16x |
edge_toggle | 80824.9 | 26701.6 | 18182.0 | 4.45x | 1.47x |
roof_toggle | 22076.0 | 4680.8 | 2441.8 | 9.04x | 1.92x |
sky_hole | 213509.0 | 119023.0 | 114414.0 | 1.87x | 1.04x |
Совместимость
Lucis старается поддерживать совместимость с другими модами, где это возможно, и вроде бы ничего не ломает, но что-нибудь в итоге может сломаться. Соблюдайте осторожность с большими сборками.
Известные заметки:
- ScalableLux (или любой форк Starlight) несовместим по определению. Нужно выбирать только Lucis или только ScalableLux, но не оба сразу. Попытка поставить оба приведёт к множеству крашей. Не пытайтесь засунуть оба в свою сборку, спасибо. Так это не работает.
- Sable совместим с Lucis. Сейчас Lucis не внедряет свой свет для участков Sable, так что они пока используют ванильное освещение для своих проекций. Возможно, это изменится позже, когда найдётся решение получше.
- Должен в основном нормально работать с большинством модов оптимизации worldgen, такими как Generator Accelerator, C2ME, Fast Noise и ModernFix (кое-какие патчи тоже, наверное, считаются). Lucis ускорит генерацию мира до +15-25% по скорости в разных сценариях. Круто, да?
Если мод тоже заменяет или сильно изменяет внутренности освещения Minecraft, то он с большой вероятностью будет конфликтовать с Lucis.
Сборки
Можно использовать в личных и публичных сборках, включая распространяемые, при условии соблюдения условий лицензии LGPLv3.
Частые вопросы
Как установить Lucis?
Установите NeoForge под свою версию Minecraft, скачайте Lucis под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Lucis?
У Lucis есть сборки для Minecraft 1.21.1.
Нужен ли Lucis на сервере?
Нужен на сервере; в игре — по желанию