Concurrent Chunk Management Engine (Fabric)
Модификация Fabric, разработанная для улучшения производительности чанков в Minecraft.
Быстрое задание
Как далеко вы сможете убежать, прежде чем вас поймают толпы?
Проверка Minecraft
Подтвердите свой запуск
Пройдите быструю проверку, чтобы получить свой код.
Concurrent Chunk Management Engine (Fabric)
Механизм параллельного управления фрагментами (Fabric)
Модификация Fabric, разработанная для улучшения производительности чанков в Minecraft.
Ищете версии для NeoForge?
Тесты производительности для версии 1.21.10 с Terralith (21 ноября 2025 г.)
|2t-80t|1t-16t| |------|------| |
|
|
Итак, что же такое C2ME?
C2M-Engine, или сокращенно C2ME, — это модификация Fabric, разработанная для повышения производительности генерации чанков, ввода-вывода и загрузки. Это достигается за счет использования нескольких ядер ЦП параллельно. Для достижения наилучшей производительности рекомендуется использовать C2ME с Lithium и ScalableLux.
Что означает аббревиатура C2ME?
Механизм параллельного управления фрагментами (Concurrent chunk management engine) предназначен для повышения производительности игры за счет многопоточности и масштабируемости в отношении генерации мира и ввода-вывода фрагментов.
Ванильный паритет
C2ME не жертвует функциональностью или поведением оригинальной игры и не изменяет генерацию мира в угоду скорости. Однако из-за недетерминированности генерации мира в оригинальной игре, миры будут значительно отличаться от запуска к запуску, даже при одном и том же сиде. Это не ошибка с нашей стороны.
Хотя мы тщательно следим за тем, чтобы не изменять стандартное поведение, ошибки всё же неизбежны. Поэтому, если вы столкнетесь с проблемой, из-за которой C2ME отклоняется от задуманного стандартного поведения, не стесняйтесь сообщать о ней в системе.
Совместимость с модами и датапаками
Полностью поддерживаются датапаки для генерации мира, работающие на ванильной версии Minecraft. Пользовательские генераторы мира, реализованные в модах, обычно работают хорошо, но *могут* вызывать проблемы совместимости из-за нарушения некоторых проектных предположений, используемых авторами модов для дальнейшего ускорения генерации мира. Если вы, как автор мода для генерации мира, обнаружили, что ваш мод не работает, не стесняйтесь обращаться за помощью на наш сервер Discord (ссылка ниже). Мы готовы помочь авторам модов внедрить масштабируемую генерацию мира.
Санитайзер неопределенного поведения
C2ME включает в себя `CheckedThreadLocalRandom` для случайной генерации мира (входит в UWRAD), а также несколько других функций. Эти средства обнаружения существуют для предотвращения повреждения внутренних механизмов Minecraft модами и возникновения неустранимых проблем. Обнаружение должно почти всегда работать. “никогда не научится делать” Они дают ложные срабатывания, поэтому к ним следует относиться серьезно и сообщать соответствующим авторам модов.
Уведомление об использовании
Делайте резервные копии своих миров и оттачивайте навыки создания модов для игр.
Статус поддержки версий Minecraft
Полная поддержка предоставляется только для последней версии Minecraft и последней версии Minecraft Snapshot. Более старые версии Minecraft находятся в долгосрочной поддержке и будут получать критически важные исправления ошибок. Более старые версии Minecraft Snapshot не поддерживаются.
Поддержка
Наша система отслеживания ошибок: ссылка Наш сервер Discord: ссылка
Подробнее
Ознакомиться с файлом `README.md` можно здесь: https://github.com/RelativityMC/C2ME-fabric
Предыдущие тесты
Результаты тестирования версии 1.21.3 (24 ноября 2024 г.)
|2t-80t|1t-10t| |------|------| |
|
|
Footnotes: https://gist.github.com/ishland/9601a033afad4be5b17ffaed859577fd
Сноски
Сноски к контрольным показателям
Настройка эталона
Все тесты проводились на двухпроцессорной системе Intel(R) Xeon(R) Gold 5218R с максимальной частотой 2 ГГц под управлением Debian 13. ``` Версия OpenJDK "25.0.1" 2025-10-21 LTS Среда выполнения OpenJDK Zulu25.30+17-CA (сборка 25.0.1+8-LTS) Виртуальная машина сервера OpenJDK 64-бит Zulu25.30+17-CA (сборка 25.0.1+8-LTS, смешанный режим) ```
Использованный датапак: `Terralith_1.21.5_v2.5.13.zip` https://modrinth.com/datapack/terralith/version/RFNry3l0
Бенчмарк C2ME
Модификации Fabric, использованные для бенчмарка C2ME: ``` c2me-fabric-mc1.21.10-0.3.5.1.0.jar Chunky-Fabric-1.4.51.jar fabric-api-0.138.3+1.21.10.jar lithium-fabric-0.20.1+mc1.21.10.jar ScalableLux-0.1.6+fabric.c25518a-all.jar spark-1.10.152-fabric.jar vmp-fabric-mc1.21.10-0.2.0+beta.7.217-all.jar ``` Измененные настройки (`c2me.toml`): - `globalExecutorParallelism` установлено на количество потоков
Бумажный эталон
Используемый Paper: `paper-1.21.10-113.jar` Используемый плагин Paper: `Chunky-Bukkit-1.4.40.jar` Изменены настройки (`paper-global.yml`): - `worker-pool.io-threads = 4` - `worker-pool.worker-threads` установлено на количество потоков
Стандартный бенчмарк
Модификации Fabric, использованные для стандартного бенчмарка: ``` Chunky-Fabric-1.4.51.jar fabric-api-0.138.3+1.21.10.jar spark-1.10.152-fabric.jar ``` Дополнительные флаги JVM: `-Dmax.bg.threads=` установлено на количество потоков
Все тесты производительности выполняются во временной файловой системе (tmpfs) на сервере Overworld, при этом папка World очищается перед каждым запуском JVM. Начальное значение генератора случайных чисел: `114862964781274189`. Параметр `force-load-existing-chunks` включен в конфигурации Chunky.
Тест производительности 2-80 потоков
Флаги JVM: `-Xmx32G -Xms32G -Xss4m -Xshare:off -XX:+DisableExplicitGC -XX:+UseNUMA -XX:+UseZGC -XX:-ZUncommit -XX:+UseLargePages -XX:+UseTransparentHugePages -XX:+UnlockExperimentalVMOptions -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -Dchunky.maxWorkingCount=256` Только для стандартных тестов: `-Xmx64G -Xms64G` используется для предотвращения сбоев во время бенчмарка. Фаза разогрева: радиус блока 2048 с центром `0 0` (данные отбрасываются). Фаза измерения: радиус блока 4096 с `1000000 1000000` в центре (всего 263169 фрагментов)
| Плотность нитей | C2ME cps | Бумага cps | Ваниль cps | |--------------|----------|-----------|-------------| | 2 | 22.62 | 17.37 | 10.63 | | 4 | 45.02 | 34.17 | 12.67 | | 6 | 69.42 | 50.87 | 13.64 | | 8 | 89.94 | 63.14 | 13.26 | | 10 | 115.53 | 72.66 | 14.25 | | 12 | 135.93 | 78.63 | 14.58 | | 14 | 159.01 | 82.09 | 14.57 | | 16 | 182.38 | 84.76 | 14.22 | | 18 | 208.45 | 88.94 | | | 20 | 230.04 | 89.91 | | | 22 | 252.08 | 87.66 | | | 24 | 274.85 | 88.82 | | | 26 | 297.70 | 88.43 | | | 28 | 317.26 | 86.31 | | | 30 | 334.40 | 87.69 | | | 32 | 358.87 | 85.06 | | | 34 | 377.21 | 87.52 | | | 36 | 392.01 | 87.40 | | | 38 | 407.59 | 85.14 | | | 40 | 415.31 | 84.62 | | | 42 | 423.33 | 86.06 | | | 44 | 425.38 | 85.56 | | | 46 | 424.47 | 86.28 | | | 48 | 438.13 | 85.03 | | | 50 | 440.57 | 85.31 | | | 52 | 441.81 | 86.43 | | | 54 | 444.29 | 83.81 | | | 56 | 446.81 | 84.13 | | | 58 | 444.29 | 85.03 | | | 60 | 449.86 | 83.81 | | | 62 | 453.48 | 85.50 | | | 64 | 451.40 | 84.89 | | | 66 | 454.26 | 83.60 | | | 68 | 454.26 | 84.21 | | | 70 | 457.16 | 83.89 | | | 72 | 456.36 | 83.47 | | | 74 | 460.09 | 84.70 | | | 76 | 455.05 | 83.31 | | | 78 | 459.82 | 83.39 | | | 80 | 460.35 | 81.43 | 14.58 |
Тест производительности 1-16 потоков
Флаги JVM: `-Xmx16G -Xms16G -Xss4m -Xshare:off -XX:+DisableExplicitGC -XX:+UseNUMA -XX:+UseZGC -XX:-ZUncommit -XX:+UseLargePages -XX:+UseTransparentHugePages -XX:+UnlockExperimentalVMOptions -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -Dchunky.maxWorkingCount=256` Фаза прогрева: радиус блока 1024 с центром `0 0` (данные отбрасываются) Фаза измерения: радиус блока 2048 с центром `1000000 1000000` (66049 фрагментов в общий)
| Плотность нитей | C2ME cps | Бумага cps | Ваниль cps | |--------------|----------|-----------|-------------| | 1 | 11.62 | 8.05 | 7.37 | | 2 | 22.65 | 16.19 | 10.01 | | 3 | 33.46 | 24.45 | 11.46 | | 4 | 44.95 | 32.52 | 12.05 | | 5 | 56.94 | 40.65 | 12.41 | | 6 | 68.55 | 48.32 | 12.61 | | 7 | 79.82 | 54.95 | 12.83 | | 8 | 91.57 | 60.15 | 12.83 | | 9 | 104.76 | 63.88 | 13.08 | | 10 | 114.42 | 68.66 | 13.53 | | 11 | 126.83 | 70.72 | 13.01 | | 12 | 138.73 | 72.34 | 13.39 | | 13 | 148.35 | 75.57 | 13.58 | | 14 | 162.25 | 76.01 | 13.34 | | 15 | 172.34 | 76.27 | 13.56 | | 16 | 183.78 | 77.43 | 13.72 |