Экспорт игры для Windows
C# Debug/Release, шаблоны x64, отдельный и встроенный PCK, состав пакета и проверка запуска.
Что должно получиться
Экспорт создаёт приложение для Windows, а не копию редактора. В этом руководстве используется Reckfell 1.0.0, C# и архитектура x86_64. Экспортёр также предлагает x86_32 и arm64, но для них нужны соответствующие шаблоны и отдельная проверка на целевой системе. Наличие пункта в списке не означает, что нужный шаблон установлен.
Подготовить проект
- Укажите главный документ в настройках проекта и проверьте его запуск. Сохраните изменённые документы и ресурсы.
- Соберите C#. В проекте должен существовать ожидаемый
.sln, связанный с.csproj: текущий C#-экспортёр обнаруживает .NET-проект по файлу решения. Одного.csprojнедостаточно. См. настройку C#. - Откройте Project → Export, добавьте Windows Desktop и назовите профиль
Windows Desktop. Имя профиля используется в командах ниже. - Выберите
binary_format/architecture = x86_64. Через Editor → Manage Export Templates проверьте шаблоны 1.0.0 для Debug и Release этой архитектуры. - Для первой проверки оставьте экспорт всех ресурсов. Если читаете JSON через FileAccess, добавьте
*.jsonв фильтр включения файлов. Это отдельная настройка от списка ресурсов.
В настройках C# выберите dotnet/embed_build_outputs = true, если хотите упаковать результаты C#-сборки в PCK. По умолчанию этот параметр выключен; тогда рядом с приложением могут появиться отдельные каталоги данных C#. Сохраняйте их.
Первый экспорт
Выберите Export Project, сохраните файл Game.exe в отдельную папку вне исходного проекта и сначала выполните Debug-экспорт. Для минимальной проверки можно выключить application/modify_resources и codesign/enable, чтобы пока не менять значок, метаданные и подпись.
| Результат | Что с ним делать |
|---|---|
Game.exe | Запускать приложение |
Game.pck, если PCK не встроен | Держать рядом с Game.exe, с тем же базовым именем |
Game.console.exe, если включён console wrapper | Запускать для просмотра диагностического вывода; это помощник, не замена основному EXE |
| Дополнительные DLL и каталоги данных | Передавать вместе с остальными результатами экспорта |
Не переименовывайте отдельно EXE или PCK. Для передачи игры упакуйте всю выходную папку в ZIP. ZIP-архив с файлами приложения и ZIP, используемый как основной ресурсный pack, — разные вещи.
Debug и Release из PowerShell
Поменяйте три пути на свои. Профиль Windows Desktop уже должен существовать. Команды запускают установленный редактор; сборка исходников движка не требуется.
$engineExe = 'C:/Tools/Reckfell/Runtime/Reckfell Engine.console.exe'
$projectDir = 'C:/Projects/MyGame'
$buildDir = 'C:/Builds/MyGame'
New-Item -ItemType Directory -Force -Path "$buildDir/Debug", "$buildDir/Release" | Out-Null
& $engineExe --headless --path $projectDir --editor --export-debug 'Windows Desktop' "$buildDir/Debug/Game.exe"
if ($LASTEXITCODE -ne 0) { throw 'Debug export failed' }
& $engineExe --headless --path $projectDir --editor --export-release 'Windows Desktop' "$buildDir/Release/Game.exe"
if ($LASTEXITCODE -ne 0) { throw 'Release export failed' }Относительный выходной путь отсчитывается от папки проекта, а не от текущей папки терминала. Проверьте журнал, даже если файл EXE появился: неполный результат не считается готовой сборкой.
Встроенный и отдельный PCK
binary_format/embed_pck добавляет данные PCK в EXE. Это независимо от dotnet/embed_build_outputs: первый параметр размещает pack, второй — результаты C#-сборки. Встраивание PCK не отменяет возможные внешние зависимости расширений или рендера.
Для текущего Windows-экспортёра размер EXE вместе со встроенными данными должен быть меньше 4 GiB: значение от 4 GiB отклоняется при исправлении PE-заголовка. Этот предел проверен по исходникам; большой пакет на границе не запускался. Для крупных данных используйте отдельный PCK.
Значок, метаданные и подпись
При включённом application/modify_resources экспортёр меняет ресурсы EXE. application/icon имеет приоритет над проектными настройками Windows-значка и общего значка. Для собственной ICO-версии см. значок Windows.
Подпись включается через codesign/enable. На Windows путь к SignTool задаётся в export/windows/signtool; данные сертификата задаются в профиле. Переменные RECKFELL_WINDOWS_CODESIGN_IDENTITY_TYPE, RECKFELL_WINDOWS_CODESIGN_IDENTITY и RECKFELL_WINDOWS_CODESIGN_PASSWORD переопределяют соответствующие конфиденциальные параметры. Не помещайте пароль в опубликованную команду или журнал.
Изменение значка и подпись проверяйте на окончательном файле отдельно: описанные ниже запуски выполнялись без этих операций.
Проверить перед передачей
Запустите и Debug, и Release из выходных папок. Перенесите всю папку в другое место и повторите запуск. Проверьте стартовый документ, загрузку ресурсов по строковым путям, JSON/CSV, C#-поведение, управление, звук и сохранение в user://.
Затем проверьте пакет на целевом компьютере: другая видеокарта, установленный .NET и отсутствие редактора могут изменить условия запуска. Локальная проверка не заменяет этот шаг.
| Симптом | Проверить сначала |
|---|---|
| Шаблон не найден | Версию, архитектуру, Debug/Release и установленный файл шаблона |
| EXE появился, C# не работает | .sln, ошибки publish, настройки .NET и дополнительные файлы экспорта |
| Не найден основной pack | Имя и расположение Game.pck либо настройку Embed PCK |
| В редакторе данные есть, в игре нет | Режим выбора ресурсов, фильтры включения и исключения; пути, вычисляемые в коде |
| Есть только PCK | Использован Export PCK/ZIP вместо Export Project |
Проверенный пример: Windows x64 C# Debug с отдельным PCK и Release со встроенным PCK, с dotnet/embed_build_outputs = true. Обе сборки запускались из посторонней рабочей папки и читали ресурс, UTF-8 JSON и настройки проекта. Это проверка упаковки и выполнения C#, а не графики, подписи или установки на чистый компьютер.