Ранняя стадия · 70 механик готово · 35 частично

Сервер Minecraft на Rust.
Плагины Paper работают без переписывания.

Движок, сеть, генерация и свет — на Rust, без GC-пауз. Настоящий paper-api.jar живёт в JVM внутри процесса сервера. Всё в одном бинарнике: данные игры и API плагинов уже внутри.

chunkwake setup --dir ./server

Windows x86_64 · Linux x86_64 (musl) · Java 25+ только для плагинов

chunkwake doctor~/server
$chunkwake doctor --dir ./server
server.properties ok
embedded vanilla data 26.3
port 25565
java 25 (plugins) found
ready in 34 ms
paper-api.jar embedded · 1 binary
●engine: rust · plugins: jvm · ticking: 20 tps
Бенчмарк

Один стенд. Два сервера.

Не синтетика: одинаковый мир, одинаковые боты и одинаковые сценарии. Переключайте замеры и смотрите, где именно появляется разница.

Ваниль 26.36.6–11.4 с
Chunkwake0.6–0.9 с
×12быстрее · Ниже — лучше
От процесса до готовности принимать игроков. Данные игры уже в бинарнике. Ryzen 9 7945HX, release, плоский мир, обзор 2, 20 ботов, разминка 20 с, замер 45 с, два прогона. Анимация ускорена, пропорции между замерами сохранены. Полная методика и сырые данные ↗
Совместимость

Обычные плагины Paper на многопоточном ядре.

Chunkwake запускает плагины Paper и при этом строит движок вокруг Rust и tokio.

ЯдроПлагины Paper/FoliaМногопоточность
PaperОбычные плагиныОдин главный поток
FoliaТолько folia-supportedРегионы
ChunkwakethisPaper и Folia APIПо этапам

Граница совместимости — плагины, которые лезут во внутренности NMS и CraftBukkit. Ванильные классы лежат в classpath, часть таких плагинов работает; полностью это не обещается.

Что уже работает

Мир, механики и плагины уже работают.

Генерация мира, редстоун, мобы, инвентарь и плагины уже реализованы. Построчная матрица со статусами — в документации.

worldgen

Мир

  • Ванильная генерация оверворлда
  • Нижний мир и Край
  • Anvil в обе стороны
  • Свет, спавн, граница мира
  • Деревни и структуры
tick

Механики

  • Редстоун и поршни
  • Жидкости, огонь, случайные тики
  • Мобы, снаряды, опыт
  • Печи, наковальня, станции
  • Таблички и книги
jvm

Плагины

  • Настоящий paper-api.jar
  • События в порядке Paper
  • Планировщики Folia
  • Maven libraries, loader/bootstrapper
  • NMS-классы в classpath
ops

Эксплуатация

  • Один бинарник
  • setup, doctor, config set
  • Резервные копии и откат
  • Встроенный дашборд метрик
  • Ванильные команды
Полная фич-матрица: 70 готово · 35 частично · 7 не начато.Открыть матрицу
Разработчикам плагинов

Плагины собираются и работают как на Paper.

В classpath лежит официальный paper-api.jar. Реализовано поведение API, поэтому код собирается и работает как на Paper.

  • Bukkit и Paper события в порядке Paper, с отменой и подменой данных.
  • GlobalRegionScheduler, RegionScheduler, AsyncScheduler и EntityScheduler для всех плагинов.
  • plugin.yml и paper-plugin.yml, libraries из Maven, loader и bootstrapper.
  • PDC, Metadatable, реестры, теги, атрибуты и каналы плагинов.

Плагинам нужна Java 25+. Сервер найдёт её по java-path, CHUNKWAKE_JAVA или PATH.

.java / .kt
public final class HelloPlugin extends JavaPlugin {
  @Override
  public void onEnable() {
    getServer().getPluginManager().registerEvents(new Listener() {
      @EventHandler(priority = EventPriority.NORMAL)
      public void onJoin(PlayerJoinEvent event) {
        event.getPlayer().sendMessage("chunkwake is awake");
      }
    }, this);
  }
}
plugin.ymlyaml
name: HelloPlugin
version: 1.0.0
main: dev.chunkwake.hello.HelloPlugin
api-version: "26.3"
Устройство

Ядро на Rust, плагины в JVM.

Ядро и мир живут в Rust. Плагины — в настоящей JVM рядом, через JNI-мост. Если на событие нет слушателей, Rust его никуда не отправляет.

workspacetree
crates/
├── protocol    пакеты 26.3, NBT, текстовые компоненты
├── net         соединения, игра, команды, события
├── worldgen    шум, биомы, поверхности, структуры
├── world       чанки, палитры, Anvil, свет
├── bridge      JVM через JNI, встроенный API
├── server      бинарник: CLI, setup, консоль, бэкапы
├── metrics     метрики и дашборд
└── lab         сравнение с ванилью и бенчмарки

java/
├── api-impl    Bukkit / Paper / Folia поверх Rust
└── test-plugin живые проверки событий
runtime graphнаведи на узел
Около 170 тыс. строк Rust и 14 тыс. строк Java.
Дальше

Что запланировано.

Этих возможностей пока нет в релизе. Описание — в ARCHITECTURE.md.

01STM-тик

Параллельный тик с Paper-семантикой

Плагины видят один главный поток, а исполняются параллельно.

02Islands

Динамические острова вместо регионов

Мир делится по нагрузке, а не по фиксированной сетке Folia.

03Event log

Мир как журнал событий

Откат и повтор изменений вместо резервных копий целиком.

04Panama

Мост на FFM с общей памятью

Следующее поколение границы между Rust и JVM.

Все этапы и текущий фокус

Попробуй на своём сервере.

Сборка релиза появится здесь, как только выйдет первый тег. Пока — из исходников за пару минут.

chunkwake setup --dir ./server