aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 02d44204fbd7e5ddff8b0d9e2eb93382968bd880 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# FParkan

Открытый движок *Паркан: Железная стратегия* на Rust и Vulkan. Он читает
ресурсы установленной оригинальной игры. Сейчас приложение загружает миссию
и показывает её ландшафт и модели в статическом окне Vulkan.

## Запуск

Нужны Rust и драйвер видеокарты с поддержкой Vulkan. Игровые файлы в
репозиторий не входят.

```powershell
cargo run -p fparkan-game -- `
  --root 'C:\GOG Games\Parkan - Iron Strategy' `
  --mission 'MISSIONS\Autodemo.00\data.tma' --frames 240
```

`--frames` задаёт число кадров. `--preview-roots N` ограничивает число объектов,
`--legacy-camera-capture` читает сохранённую матрицу камеры,
`--static-animation-frame` и `--static-material-phase` выбирают позу и фазу
материала. `--readback-out target/frame.raw` сохраняет последний кадр GPU.
Без сохранённой камеры используется вид карты сверху.

## Разработка

```text
cargo fmt --all -- --check
cargo test --workspace
cargo check --workspace
```

Алгоритмы и форматы проверяются обычными Rust-тестами рядом с кодом.
Тесты с оригинальными ресурсами помечены `#[ignore]`; пути к двум частям
установки задаются через `FPARKAN_CORPUS_PART1_ROOT` и
`FPARKAN_CORPUS_PART2_ROOT`. Зависимости разрешает Cargo, локальный
`Cargo.lock` не хранится в Git.

Готовые SPIR-V шейдеры находятся рядом с исходниками GLSL.
Vulkan SDK нужен только для их пересборки и проверки с `--validation`.
При доступных в PATH инструментах SDK:

```powershell
glslangValidator -V adapters/fparkan-render-vulkan/shaders/triangle.vert -o adapters/fparkan-render-vulkan/shaders/triangle.vert.spv
glslangValidator -V adapters/fparkan-render-vulkan/shaders/triangle.frag -o adapters/fparkan-render-vulkan/shaders/triangle.frag.spv
spirv-val adapters/fparkan-render-vulkan/shaders/triangle.vert.spv
spirv-val adapters/fparkan-render-vulkan/shaders/triangle.frag.spv
```

## Книга и исходники

[Книга об устройстве движка](docs/index.md) объясняет форматы, математику,
загрузку мира и связь подсистем. Её можно читать прямо в репозитории;
`mkdocs.yml` задаёт представление на [сайте проекта](https://fparkan.popov.link).

`crates/` содержит форматы и игровые алгоритмы, `adapters/` — окно и Vulkan,
`apps/fparkan-game` — исполняемое приложение.

## Лицензия

[GNU GPL v2](LICENSE.txt).