reckfellENGINE

Сборка движка с C#: glue, API и SDK

Текущие требования .NET, порядок генерации, состав комплекта и ошибки проверки.

На этой странице

C# комплект состоит из нативного редактора/шаблонов с включённой интеграцией, сгенерированных привязок, managed API, инструментов и SDK-пакетов. Успешная сборка одного EXE не подтверждает готовность всего комплекта.

Текущие требования

В Source/modules/mono/global.json запрошен .NET SDK 10.0.100 с rollForward=latestMajor. ReckfellSharp, ReckfellSharpEditor и инструменты редактора нацелены на net10.0. Старого требования «.NET SDK 8+» для этого дерева недостаточно. Проверяйте фактически выбранный SDK из каталога managed-проектов, где применяется global.json.

Командная строка
dotnet --info
python modules/mono/build_scripts/build_assemblies.py --help

Вторую команду выполняйте из Source. SDK нужен для сборки; состав runtime у поставляемого редактора/игры проверяется отдельно. Имя mono в параметрах и путях — имя текущего модуля, его не нужно самостоятельно переименовывать в dotnet.

Порядок действий

  1. Соберите нативный editor с module_mono_enabled=yes и нужной архитектурой/precision. Для экспорта нужны соответствующие template_debug/template_release с тем же модулем.
  2. Тем же редактором сгенерируйте C# API из его ClassDB. Делайте это из каталога без запуска игрового проекта. Генерация создаёт исходники; она не собирает DLL managed API.
  3. Проверьте журнал генерации и полученные файлы. При изменении зарегистрированных типов, методов или параметров старые привязки нельзя считать актуальными только по номеру продукта.
  4. Запустите build_assemblies.py для managed решений и проверьте результаты. Согласуйте precision и deprecated с нативной конфигурацией.
  5. Подготовьте целый комплект редактора/экспорта и проверьте открытие проекта, сборку C#, выполнение и экспорт.

Для уже настроенного Windows x64 окружения последовательность выглядит так; имя editor замените фактическим именем своего результата:

PowerShell
python -m SCons platform=windows target=editor arch=x86_64 module_mono_enabled=yes
$editor = "./bin/reckfell.windows.editor.x86_64.mono.console.exe"
& $editor --headless --generate-mono-glue modules/mono/glue
python modules/mono/build_scripts/build_assemblies.py --reckfell-output-dir bin --reckfell-platform windows --werror

Эти полные команды сборки здесь не выполнялись. При диагностике генерации использован установленный редактор и отдельный выход QA; рабочие файлы Source и установленный SDK не заменялись.

Ожидаемые артефакты

Генератор пишет C# API под ReckfellSharp/ReckfellSharp/Generated и ReckfellSharp/ReckfellSharpEditor/Generated относительно заданного каталога glue. Для обычной сборки пути привязаны к modules/mono/glue.

build_assemblies.py собирает managed решения и копирует API, XML/PDB и вспомогательные файлы в ReckfellSharp/Api/Debug и Release внутри reckfell-output-dir. Инструменты и NuGet-пакеты формируются соответствующими MSBuild-проектами/targets. Не считайте произвольный выходной каталог автоматически готовым переносимым дистрибутивом.

Для редактора нужны подходящие API и инструменты рядом с нативным бинарником; при распространении сохраняйте требуемые файлы runtime и зависимости. Поставка C# игры проверяется отдельно от запуска на машине с установленным SDK.

Параметры build_assemblies.py

ПараметрНазначение
--reckfell-output-dirОбязательный каталог выходных данных API
--reckfell-platformПлатформенная настройка managed инструментов; не выполняет кросс-компиляцию нативного движка
--precision=doubleСогласование с нативным precision=double; по умолчанию single
--no-deprecatedСогласование с нативным deprecated=no
--dev-debugDebug-конфигурация инструментов; API собирается по собственной последовательности Debug/Release
--push-nupkgs-localКопирование пакетов в локальный источник; также включает очистку кеша соответствующих версий через targets
--werrorТребование считать предупреждения компиляции ошибками в поддерживаемых этапах

Не меняйте версию продукта 1.0.0 ради обхода NuGet-кеша и не удаляйте весь общий кеш как обязательный шаг. Разделяйте наборы пакетов разных сборок: фиксируйте источник, версии и хеши; при необходимости используйте отдельный NUGET_PACKAGES для рабочей среды. Локальный источник настраивается через NuGet.Config. Пакеты одного номера из разных сборок могут иметь разное содержимое.

Реально обнаруженные ошибки генерации

Проверенный вызов из каталога без игрового проекта создал 1187 файлов C#, напечатал сообщение об успешной генерации и вернул код 0. При этом журнал содержит 24 ERROR и 174 WARNING. Среди них неразрешённые ссылки на члены во встроенной XML-документации и ссылки Core-описаний на редакторские типы.

Этот запуск зафиксирован как неуспешная генерация, а не исправный SDK. Файлы остались в QA и не были установлены. Сверяйте журнал, наличие ожидаемых файлов, компиляцию managed API и выполнение проекта; код 0 и сообщение «successfully generated» сами по себе недостаточны. В текущем обработчике CLI выход с 0 возможен после сообщений об ошибках.

Генератор также сохраняет скрытые служебные обёртки, включая известные заглушки ReckfellExtension. Наличие объявления метода в C# не подтверждает его функциональность: см. API ресурса расширения.

Диагностика

СимптомЧто проверить
SDK/target framework не найденВыбранный dotnet, global.json и net10.0
Native editor не понимает флаг glueПравильный бинарник, включённый mono и поддерживаемый режим генерации
Генератор создал файлы с ERROR в журналеНе принимать комплект; выяснить конкретные ссылки/типы и проверить сборку API
API mismatch при запускеСогласованность нативного API, glue, managed DLL, precision и deprecated
Restore использует старый пакетИсточники NuGet, конкретная версия, кеш выбранной среды и хеш пакета
Работает только на машине разработчикаПолнота поставки runtime, инструментов и экспортного комплекта

В этой проверке выполнялись --help, dotnet --info и изолированная генерация glue. Нативный движок, managed решения движка, пакеты и экспортная игра заново не собирались.

Далее: общая конфигурация SCons, сборка Windows.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.