Complete local voxel MVP with server, client, MCP, packages and world interchange
This commit is contained in:
@@ -1,30 +1,60 @@
|
||||
# Shacraft Core
|
||||
|
||||
Самостоятельный открытый воксельный движок на Rust. Главный приоритет — низкое и предсказуемое потребление **серверной оперативной памяти**. Сервер Shacraft служит первым практическим применением; ядро не привязано к его мирам, аккаунтам и минииграм.
|
||||
Самостоятельный открытый воксельный движок на Rust и работающий локальный MVP: сервер с несколькими мирами, собственный WebGL2-клиент, Spleef, отдельный MCP, каталог Java 26.2, пакеты расширений и конвертер миров. Приоритет — измеренное потребление **серверной RAM**.
|
||||
|
||||
Проект начинается заново локально: исходники из зависшей облачной среды не восстановлены. Сведения о ранее выполненных сборках и тестах не являются результатами этого репозитория.
|
||||
## Запустить
|
||||
|
||||
## Текущий результат: этап 1 — хранилище
|
||||
|
||||
Реализованы самостоятельная Rust-библиотека и локальный CLI: компактные секции, ограниченный кэш, сохранение, неизменяемые снимки, независимые экземпляры миров, атомарные правки, ревизии, идемпотентность, undo/reset и диагностика. Это основа движка; игровой сервер, графический клиент, MCP, каталог Minecraft и конвертер ещё предстоят.
|
||||
Требуются Rust 1.96+, C-компилятор для SQLite и браузер с WebGL2. Java и Node для игры не нужны. Первый запуск скачает Cargo-зависимости и соберёт release; следующие используют готовый бинарный файл.
|
||||
|
||||
```bash
|
||||
cd /home/emil/Desktop/shacraft-core
|
||||
bash scripts/verify.sh
|
||||
cargo run -p shacraft-tools -- --data data/demo demo
|
||||
bash scripts/run.sh --data data --listen 127.0.0.1:4000
|
||||
```
|
||||
|
||||
Для повторной демонстрации укажите новый пустой каталог. [Команды, измерение и JSON-lines API](docs/DEVELOPMENT.md). JSON-lines API предназначен для локальной проверки хранилища и не является MCP.
|
||||
Открыть **http://127.0.0.1:4000**. WASD — движение, пробел — прыжок, мышь — обзор, ЛКМ/ПКМ — убрать/поставить блок, E — библиотека, T — чат, F3 — диагностика. Если браузер не даёт захват мыши, обзор работает перетаскиванием. Мир выбирается слева сверху. Для Spleef два игрока входят в одну арену и запускают матч через меню. Лобби, галерея всех типов блоков и две арены создаются автоматически.
|
||||
|
||||
Код доступен под MIT или Apache-2.0 на выбор. Оригинальные ресурсы Minecraft в проект не входят.
|
||||
Вся работа хранится в `--data`. Для остановки используйте Ctrl+C. Подтверждённые правки сохраняются до ответа сервера; проверены аварийные остановки и восстановление.
|
||||
|
||||
## Контекст и порядок чтения
|
||||
## Что входит
|
||||
|
||||
1. [Требования](docs/REQUIREMENTS.md) — что запросил пользователь.
|
||||
2. [План](docs/PLAN.md) — этапы и условия перехода.
|
||||
3. [Решения](docs/DECISIONS.md) — принятые решения и их границы.
|
||||
4. [Интерфейсы](docs/CONTRACT.md) — рабочие контракты компонентов.
|
||||
5. [Текущее состояние](docs/STATUS.md) — проверенные результаты и ближайшая работа.
|
||||
6. [Память и хранение](docs/MEMORY_AND_STORAGE.md), [совместимость](docs/COMPATIBILITY.md), [приёмка](docs/ACCEPTANCE.md).
|
||||
- `shacraft-core`: компактные секции 16³, общий ограниченный кэш, SQLite/WAL/FULL, неизменяемые снимки, независимые изменения миров, ревизии, идемпотентные правки, undo/reset. Без графики и сети.
|
||||
- `shacraft-server`: авторитетные движение, формы столкновений и взаимодействия, WebSocket/HTTP, сохраняемые сущности и настройки, законченный цикл Spleef.
|
||||
- `client/`: собственный рендерер, библиотека материалов, игроки и сущности, чат, переключение миров, переподключение, загрузка и проверка пакетов.
|
||||
- `shacraft-mcp`: настоящий отдельный stdio MCP с 17 инструментами, ресурсами и prompt; строительство по плану, чтение, отмена, сущности, арены, метрики и PNG результата.
|
||||
- `shacraft-content`: **1 196 блоков, 32 366 состояний, 158 типов сущностей Java 26.2**, DataVersion 4903. Официальные идентификаторы и измеренные коллизии, авторские модели. Плюс блок trampoline.
|
||||
- `shacraft-compat`: Anvil и Sponge `.schem` v3 в обе стороны, типизированный NBT, сохранение оригинала, отчёты о преобразованиях и перенос правок сущностей.
|
||||
- `packages/`: собственные текстуры, звук, шейдер и исполняемый WASM-модуль прыжка с ограничениями памяти и fuel.
|
||||
|
||||
Работа ведётся локально в `/home/emil/Desktop/shacraft-core`. Продакшен-серверы и существующие проекты лаунчера не изменяются автоматически.
|
||||
Ванильные AI, redstone, инвентари и симуляция жидкостей не входят в этот MVP. Контекстные формы отмечены отдельно. Конвертер после правок использует явный `best-effort`; неизменённый оригинал может вернуть побайтно. Это не обещание полной совместимости с механиками Minecraft или модами NeoForge. Оригинальные ресурсы и код Minecraft не распространяются.
|
||||
|
||||
## MCP и конвертация
|
||||
|
||||
```bash
|
||||
cargo build --release --locked --workspace
|
||||
# В конфигурации MCP-клиента запускается этот процесс:
|
||||
target/release/shacraft-mcp --server http://127.0.0.1:4000 --data data
|
||||
|
||||
# Импорт в новый каталог, затем запуск сервера с --data data/imported:
|
||||
target/release/shacraft-compat import-anvil /path/to/java-world data/imported
|
||||
# Экспорт выполняется при остановленном сервере, в отсутствующий каталог:
|
||||
target/release/shacraft-compat export-anvil data/imported artifacts/java-export --mode best-effort
|
||||
```
|
||||
|
||||
Токен Control API создаётся в `data/control.token` (0600 на Unix) и не передаётся браузеру. [MCP](docs/MCP.md), [форматы и команды конвертера](docs/interop.md), [сервер и протокол](docs/SERVER.md), [расширение пакетами](docs/PACKAGES.md).
|
||||
|
||||
## Проверить
|
||||
|
||||
```bash
|
||||
# Rust, Clippy, аварийное восстановление, JS и реальные HTTP/WebSocket-клиенты:
|
||||
bash scripts/verify.sh
|
||||
# Release-стенд с заранее заданными бюджетами:
|
||||
cargo build --release --workspace --locked
|
||||
node scripts/benchmark_server.mjs --output artifacts/server-benchmark.json
|
||||
```
|
||||
|
||||
Node 22+ нужен для сетевых/JS-проверок, Python 3 — для проверки аварийного хранения. Настоящий MCP SDK и независимая Java/NBT-проверка описаны в [VERIFICATION](docs/VERIFICATION.md). Проверенные числа и ограничения находятся там; сравнение с Paper не заявляется без сопоставимого стенда.
|
||||
|
||||
## Контекст
|
||||
|
||||
[Требования](docs/REQUIREMENTS.md) · [исходный план](docs/PLAN.md) · [решения](docs/DECISIONS.md) · [контракты ядра](docs/CONTRACT.md) · [состояние и ограничения](docs/STATUS.md) · [контент](docs/CONTENT.md).
|
||||
|
||||
Проект заново реализован локально после зависания прежней среды. План сохранён до кода отдельным коммитом. Лицензия кода и собственных ресурсов — **MIT или Apache-2.0** на выбор. Существующий лаунчер и продакшен-серверы не изменяются этой поставкой.
|
||||
|
||||
Reference in New Issue
Block a user