feat: complete map viewer scene and static CTL pose preview
Complete the interactive mission viewer with environment rendering, audio events, dynamic shadows, free-flight camera controls, and per-component CTL pose sampling.
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
# FParkan
|
||||
|
||||
Открытый движок *Паркан: Железная стратегия* на Rust и Vulkan. Он читает
|
||||
ресурсы установленной оригинальной игры. Сейчас приложение загружает миссию
|
||||
и показывает её ландшафт и модели в статическом окне Vulkan.
|
||||
ресурсы установленной оригинальной игры. Сейчас приложение показывает
|
||||
интерактивную сцену выбранной карты: terrain, все доступные MSH-компоненты
|
||||
объектов, материалы, динамические тени, небо, погоду, lightning FX и звуковые
|
||||
события. Это просмотр карты с полной графической сценой; прохождение миссии и
|
||||
игровое поведение юнитов пока не запускаются, а модели показываются в статической
|
||||
позе, заданной сохранёнными настройками узлов прототипа.
|
||||
|
||||
## Запуск
|
||||
|
||||
@@ -10,16 +14,45 @@
|
||||
репозиторий не входят.
|
||||
|
||||
```powershell
|
||||
cargo run -p fparkan-game -- `
|
||||
cargo run --release -p fparkan-game -- `
|
||||
--root 'C:\GOG Games\Parkan - Iron Strategy' `
|
||||
--mission 'MISSIONS\Autodemo.00\data.tma' --frames 240
|
||||
--mission 'MISSIONS\Autodemo.00\data.tma'
|
||||
```
|
||||
|
||||
`--frames` задаёт число кадров. `--preview-roots N` ограничивает число объектов,
|
||||
`--legacy-camera-capture` читает сохранённую матрицу камеры,
|
||||
`--static-animation-frame` и `--static-material-phase` выбирают позу и фазу
|
||||
материала. `--readback-out target/frame.raw` сохраняет последний кадр GPU.
|
||||
Без сохранённой камеры используется вид карты сверху.
|
||||
Окно работает в интерактивном режиме до закрытия и по умолчанию загружает все
|
||||
корневые объекты миссии (`--preview-roots N` ограничивает их число только для
|
||||
диагностики).
|
||||
`WASD` перемещают камеру относительно её направления, `E/Q` поднимают и
|
||||
опускают её, `Shift` ускоряет, `Ctrl` замедляет движение. Удержание правой
|
||||
кнопки мыши включает relative-look; движение мыши вращает yaw/pitch. При
|
||||
потере фокуса обзор отключается и нажатые клавиши сбрасываются. `Esc`
|
||||
отпускает обзор или закрывает окно.
|
||||
|
||||
В каталоге миссии ищется `sky.ske`. Если файл найден, приложение читает её
|
||||
расписание и `sky.wea`; связанные MAT0/WEAR-материалы и
|
||||
`effects.rlb/env_lightning` загружаются из ресурсов игры. Без `sky.ske`
|
||||
окружение отключено; если файл есть, отсутствие `sky.wea`, `env_lightning` или
|
||||
связанного материала считается ошибкой. Параметр `--atmosphere-seconds N`
|
||||
задаёт начальное время; по умолчанию используется начало расписания. Когда
|
||||
окружение загружено, небо, солнце и
|
||||
луна, flares, молнии, дождь и снег, point lights, динамические тени и связанные
|
||||
звуковые события обновляются в каждом кадре.
|
||||
|
||||
`--frames N` ограничивает запуск числом кадров для smoke/readback-проверок;
|
||||
значение `0` означает бесконечный интерактивный запуск. `--legacy-camera-capture`
|
||||
читает сохранённый захват камеры и запускает воспроизводимый режим без
|
||||
free-flight управления. `--static-animation-frame <u16>` задаёт один кадр для
|
||||
всех узлов. Если параметр не указан, приложение берёт сохранённые настройки
|
||||
узлов из явной ссылки прототипа на `.ctl`; для узлов без такой настройки
|
||||
используется кадр `0`. Статическая поза не запускает игровой Control, AI или
|
||||
полное поведение юнитов.
|
||||
`--static-material-phase <u16>` выбирает фиксированную фазу материала.
|
||||
`--readback-out target/frame.raw` сохраняет последний кадр GPU. `--validation`
|
||||
включает Vulkan validation layers и завершает запуск с ошибкой при предупреждении
|
||||
или ошибке. Readback сохраняет байты в формате surface без преобразования;
|
||||
размер — `width × height × 4`. Порядок каналов и encoding определяются значением
|
||||
`readback_format` в выводе; на текущем GPU обычно используется
|
||||
`VK_FORMAT_R8G8B8A8_UNORM`.
|
||||
|
||||
## Разработка
|
||||
|
||||
|
||||
Reference in New Issue
Block a user