aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-10-11 12:12:50 +0300
committerValentin Popov <valentin@popov.link>2026-10-11 12:12:50 +0300
commita8faba8aad441e87f8a8b94c148c01f9c075d621 (patch)
tree97aa4972990edba9991ff2e125edac3a7883f50f /README.md
parentaa51f3574d3d4d4e0fa59653eedd718fceb5d1bd (diff)
downloadfparkan-a8faba8aad441e87f8a8b94c148c01f9c075d621.tar.xz
fparkan-a8faba8aad441e87f8a8b94c148c01f9c075d621.zip
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.
Diffstat (limited to 'README.md')
-rw-r--r--README.md51
1 files changed, 42 insertions, 9 deletions
diff --git a/README.md b/README.md
index 02d4420..1ec8d08 100644
--- a/README.md
+++ b/README.md
@@ -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`.
## Разработка