Об этом проекте
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, а очистка и форматирование никогда не запускаются автоматически.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.