Командная строка: импорт, запуск и проверка C#
Запустить нужный проект, передать аргументы и проверить завершение.
Используйте установленный исполняемый файл Reckfell Engine 1.0.0. Для C#-проекта нужны соответствующие SDK, восстановленные зависимости и успешная сборка .csproj. Командная строка не заменяет сборку C#.
PowerShell: пути с пробелами
Замените два пути своими абсолютными путями. $engineExe указывает на файл, а $projectDir — на каталог с project.reckfell:
$engineExe = 'C:\Tools\Reckfell\Reckfell Engine.console.exe'
$projectDir = 'C:\Projects\My Game'
& $engineExe --version
& $engineExe --helpОператор & запускает файл из строковой переменной. Не собирайте одну длинную строку команды и не используйте Invoke-Expression. В проверенной сборке --version возвращает 1.0.0; --help показывает доступные именно этой сборке параметры и их ограничения.
Импорт и запуск
& $engineExe --headless --path $projectDir --editor --import
if ($LASTEXITCODE -ne 0) { throw 'Resource import failed' }
& $engineExe --path $projectDir--path выбирает проект независимо от текущего каталога терминала. --editor --import ждёт импорта ресурсов и завершает процесс. Для видимого редактора используйте --editor без --import и без --headless. Последняя команда выше запускает главный уровень, указанный в проекте.
Для конкретного уровня передайте --scene 'asset://Levels/Main.rscene'; файл должен существовать в выбранном проекте. Не передавайте .cs в --script как замену запуска обычной Entity: приведённые ниже C#-примеры запускаются в уровне.
Аргументы игры
Всё после -- — пользовательские аргументы. Движок больше не интерпретирует их как свои параметры. Например, --headless после разделителя не включает headless-режим.
& $engineExe --headless --path $projectDir -- --smoke-testСохраните CliSmokeTest.cs, прикрепите его к Entity главного уровня и пересоберите C#-проект:
using Reckfell;
using System;
public partial class CliSmokeTest : Entity
{
public override void _Ready()
{
if (Array.IndexOf(OS.GetCmdlineUserArgs(), "--smoke-test") < 0) return;
ReckfellApi.Print("SMOKE_READY");
GetTree().Quit();
}
}Ожидаемый результат: в консоли появляется SMOKE_READY, процесс завершается с кодом 0. Без --smoke-test этот скрипт не завершает игру. Он доказывает загрузку уровня и выполнение _Ready, а не качество графики, физики или всей игры.
OS.GetCmdlineUserArgs() возвращает аргументы после разделителя; OS.GetCmdlineArgs() — аргументы движка без пользовательского хвоста. Значение с пробелами передавайте одним аргументом, например '--name=My Game'.
Ограничить запуск и получить журнал
| Параметр | Назначение |
|---|---|
--headless | Без окна, с headless-дисплеем и Dummy-аудио. Не является проверкой визуального результата или звука. |
--quit-after 3 | Завершение после трёх итераций обработки; это не три секунды и не утверждение об успешности сценария. |
--max-fps 60 | Устанавливает ограничение текущего FPS. Не гарантирует достижение 60 FPS. |
--log-file 'C:\Logs\run.log' | Явный путь журнала; родительский каталог должен быть доступен для записи. |
Для автоматизации проверяйте код процесса и собственный признак завершённого сценария. Один код 0 после --quit-after не доказывает, что тестовая логика успела выполниться. В своём обработчике ошибки возвращайте ненулевой код через GetTree().Quit(code); подробности — выход из игры.
Если не запускается
- Открывается другой проект: проверьте
--pathи наличие в каталогеproject.reckfell. - Путь с пробелами распадается: используйте переменную или один аргумент в кавычках.
- C#-тип не загружается: сначала исправьте ошибки сборки и проверьте соответствие SDK, затем импортируйте ресурсы.
- Параметр игнорируется: убедитесь, что он стоит до
--и доступен в выводе--helpданной сборки. Опции редактора не обязаны существовать в экспортном шаблоне.
Проверены реальные процессы: версия, справка, импорт из другого рабочего каталога, путь проекта с пробелами, аргументы игры, FPS, файл журнала, явный уровень, точный smoke-скрипт и три кадра обработки до --quit-after 3. Экспорт, графический редактор, остальные ключи и исполнение примеров именно оболочкой PowerShell не проверены: запуск тестов использует отдельные аргументы процесса.