Об этом проекте

World Engine описывается как игровой движок на блокчейне и SDK Gamechain, построенный на архитектуре шардированного роллапа Argus Labs. В README указано, что проект находится в разработке и переписывается с нуля, поэтому текущий репозиторий представляет собой в первую очередь каркас для разработки, а не готовый движок. Настройка разработки сосредоточена вокруг proto и moon. После установки proto запуск `proto install` из корня репозитория устанавливает версии Go и moon, закреплённые в `.prototools`; шимы proto должны оставаться в PATH, чтобы `go` и `moon` разрешались в эти версии. Основные задачи доступны через moon: - `moon tasks` выводит список задач проекта. - `moon run world-engine:build` собирает пакеты Go. - `moon run world-engine:lint` запускает линтер и устанавливает закреплённую версию линтера. - `moon run world-engine:lint-fix` применяет исправления линтера. - `moon run world-engine:test` запускает все тесты Go. - `moon run world-engine:test-ci` записывает coverage.out и junit.xml. - `TEST_SEED=123 moon run world-engine:test` воспроизводит seed теста. golangci-lint устанавливается в игнорируемый каталог `bin/tools`, а gotestsum запускается через `go tool`. При падении тестов в лог записывается seed для воспроизведения. Кэширование задач moon отключено, чтобы рандомизированные тесты запускались каждый раз, при этом собственные кэши компиляции и тестов Go остаются включёнными. Сгенерированные клиенты — это отдельные проекты. `moon run proto-csharp:build` или `proto-csharp:pack` собирает или упаковывает клиент C# и требует .NET SDK; отладочные варианты используют `build-debug` и `pack-debug`. `moon run proto-ts:build` выполняет проверку типов клиента TypeScript и требует Node/npm, а также предварительного `npm install` в `proto/gen/ts`. Moon заменяет прежние Taskfiles. Имена задач используют дефисы, поэтому `test:ci` становится `world-engine:test-ci`. Задача C# `rebuild` очищает перед сборкой, а `update` сообщает об устаревших зависимостях, не изменяя их. Ошибки форматирования и анализа передаются вызывающей стороне. CI запускает те же задачи Go, что и локальная разработка. Рабочий процесс Box2D сохраняет собственную матрицу архитектур и явные цели `determinism-*`. Рабочие процессы выбирают явные цели вместо `moon ci`, сохраняя дорогостоящие проверки детерминизма в отдельной матрице. Сгенерированные клиенты можно выбирать явно на раннерах с установленными SDK, а очистка и форматирование никогда не запускаются автоматически.