Экспорт для Linux: сборка и комплект файлов
Архитектуры, шаблоны, PCK, C#-публикация, права исполнения и диагностика запуска.
Экспорт для Linux создаёт запускаемый файл из Linux-шаблона и данные проекта. Это не копирование редактора и не компиляция исходников движка. Факт успешного экспорта ещё не подтверждает запуск на целевой системе.
Подготовить и экспортировать
- Сохраните проект, назначьте главный уровень или стартовый префаб и проверьте локальный запуск.
- В Project → Export добавьте пресет Linux. Нужен Linux-шаблон версии 1.0.0 выбранной архитектуры и режима debug/release. Пункт платформы в меню не доказывает наличие шаблонов.
- Задайте
binary_format/architecture. По умолчанию x86_64. Шаблон, сторонние native-библиотеки и C#-публикация должны соответствовать целевой архитектуре. - Проверьте Resources/фильтры экспорта. Оставьте хотя бы один формат текстур:
texture_format/s3tc_bptcилиtexture_format/etc2_astc. По умолчанию первый включён, второй выключен. Поддержку выбранного формата проверяйте на GPU целевой машины, а не только по архитектуре CPU. - Выберите Export Project и отдельную выходную папку вне исходников проекта. Для релиза отключите Export With Debug, для диагностики оставьте включённым. Не подменяйте debug-шаблон release-шаблоном и наоборот.
- Перенесите весь результат на Linux, распакуйте в отдельную папку и запустите из терминала. Проверьте старт, загрузку уровней, сохранения, звук и графику на целевой машине.
При использовании собственных шаблонов включите Advanced Options и задайте custom_template/debug и custom_template/release. Экспортёр сверяет архитектуру custom ELF с пресетом. Windows .exe не является Linux-шаблоном. Имена стандартных шаблонов имеют вид linux_debug.x86_64 и linux_release.x86_64; наличие этих имён в коде не означает, что файлы установлены.
Выбрать архитектуру
| Значение | Целевой CPU |
|---|---|
x86_64 | 64-битный x86. |
x86_32 | 32-битный x86; нужны соответствующие библиотеки и загрузчик. |
arm64 | 64-битный ARM. |
arm32 | 32-битный ARM. |
rv64 | 64-битный RISC-V. |
ppc64 | 64-битный PowerPC. |
loongarch64 | 64-битный LoongArch. |
Это список вариантов пресета, а не перечень готовых и проверенных сборок. Для каждого нужен подходящий шаблон. Текущий .NET-плагин формирует ветки публикации для x86_64, x86_32, arm64 и arm32; это тоже не гарантия наличия .NET runtime pack и всех native-зависимостей. Наличие rv64, ppc64 или loongarch64 в общем меню не подтверждает C#-экспорт для них. Linux-экспорт также не гарантирует совместимость с произвольной BSD-системой.
Какие файлы передавать
При имени MyGame.x86_64 и выключенном binary_format/embed_pck экспортёр создаёт MyGame.pck рядом. Не переименовывайте только один из этих файлов. В зависимости от проекта рядом могут находиться каталог data_… с C#-публикацией и native .so библиотеки. Сохраняйте структуру всего выходного каталога.
| Настройка или действие | Результат |
|---|---|
binary_format/embed_pck = false | Данные в отдельном PCK; значение по умолчанию. |
binary_format/embed_pck = true | PCK встроен в исполняемый файл. Это не встраивает автоматически все внешние библиотеки и данные C#. |
Export Project с расширением .zip | Linux-экспортёр упаковывает результат экспорта проекта в ZIP. |
| Export PCK/ZIP | Только данные проекта; это не самостоятельная запускаемая игра. |
debug/export_console_wrapper | 0 — без wrapper, 1 — только debug, 2 — debug и release. По умолчанию 1; wrapper имеет расширение .sh. |
На 32-битном экспорте встроенный PCK должен быть меньше 4 GiB. Для большого проекта используйте подходящую архитектуру или отдельный PCK вместо обхода проверки переименованием файла.
C# и зависимости
Для C# нужен подходящий .NET export template и SDK на компьютере сборки. Плагин запускает dotnet publish под целевой runtime identifier и проверяет наличие сборки проекта или NativeAOT-библиотеки. Ошибки MSBuild/publish исправляйте до упаковки; копирование Windows-результата публикации не заменяет Linux-публикацию.
dotnet/embed_build_outputs по умолчанию false: опубликованные файлы передаются рядом с исполняемым файлом в сгенерированной структуре data_…. При true они помещаются в ресурсы проекта; при этом сторонние native-расширения всё равно могут требовать внешних файлов. binary_format/embed_pck и dotnet/embed_build_outputs — разные настройки. Не удаляйте .so и другие файлы только потому, что основной PCK встроен.
Шаблон и зависимости задают требования к системным библиотекам. Проверяйте пакет на целевом дистрибутиве: запуск на машине сборки не проверяет ABI, загрузчик, графический драйвер или зависимости другой системы.
Запустить и найти причину ошибки
Откройте терминал в распакованной папке. Для примера с именем MyGame.x86_64:
chmod +x ./MyGame.x86_64
./MyGame.x86_64Команды предназначены для Linux; они не выполнялись в Windows-проверке. После распаковки права исполнения могут зависеть от архиватора и файловой системы. Штатный Linux-exporter задаёт режим 0755, но проверяйте перенесённый файл.
| Симптом | Проверка |
|---|---|
Permission denied | Право исполнения, доступ к каталогам и mount-опция noexec; один chmod не исправляет noexec. |
Exec format error | Архитектура и формат ELF, затем соответствие native-зависимостей. |
Файл существует, но No such file or directory | Проверьте путь и наличие ELF-загрузчика, требуемого сборкой. |
| Не найден PCK | Имя/расположение PCK и сохранность всего каталога после переноса. |
Не загружается C# или .so | Полнота data/native-файлов, правильный target публикации и сообщения загрузчика. |
| Ошибка создания Vulkan/OpenGL устройства | Драйвер и поддержка выбранного renderer на целевом GPU. |
Причины ошибок исполнения описаны в Linux execve(2). Для удалённого запуска через SSH см. Remote Deploy. Для ключа RECKFELL_SCRIPT_ENCRYPTION_KEY и шифрования нужны согласованные шаблоны и настройки: шифрование PCK.
В установленном Windows-редакторе проверены создание отдельного Linux-пресета, значения опций и изменение его настроек. Упаковка, .NET publish, права файлов и запуск на Linux сверены только по исходникам и документации ОС; готовый Linux-пакет, целевая ABI/графика и поддержка всех архитектур этим прогоном не проверены.