96 lines
4.2 KiB
Markdown
96 lines
4.2 KiB
Markdown
# Soubory
|
|
|
|
Adresář obsahuje soubory se zdrojovými kódy, sestavené spustitelné aplikace a zdrojový kód pro textovou část diplomové práce. Doporučujeme použít už sestavené soubory, které jsou připravené pro "čistou" instalaci `ubuntu-desktop-24.04.ova`.
|
|
|
|
# Sestavení
|
|
|
|
Veškeré spustitelné soubory jsou pro Linux. Už sestavené soubory jsou v adresáři `build/`. Zdrojové kódy jsou v adresáři `src/`. Projekt lze sestavit klasicky lokálně nebo kompletně přes Docker.
|
|
|
|
## Lokálně
|
|
|
|
Pro standartní sestavení je potřeba Conan, CMake a moderní kompiler, jako CLang nebo GCC. Projekt využívá verzi C++23.
|
|
|
|
Conan slouží pro získání konkrétních verzí balíčků jako ProtoBuf a SDL3. Sestavení tak začíná tím, že Conan potřebné balíčky stáhne a vytvoří konfigurační soubory pro CMake. Lze použít tento příkaz, který konfigurační soubory umístí do adresáře `./build/`.
|
|
|
|
```bash
|
|
$ conan install . --output-folder=build --build=missing -s build_type=Debug
|
|
```
|
|
|
|
Poté je potřeba adresář `build/` připravit pro CMake.
|
|
|
|
```bash
|
|
$ cmake -S . -B ./build -DCMAKE_TOOLCHAIN_FILE="build/conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Debug
|
|
```
|
|
|
|
Nakonec lze projekt sestavit pomocí:
|
|
|
|
```bash
|
|
$ cmake --build ./build
|
|
```
|
|
|
|
|
|
|
|
## Docker
|
|
|
|
Druhou variantou je použít Docker. V adresáři zdrojových kódů je podadresář `docker/`. Ten obsahuje Dockerfile pro sestavení i export spustitelných souborů. Pro sestavení nás zajímá jeho fáze `builder`. Sestavíme obraz `tw_builder` s tagem `jammy` pomocí příkazu:
|
|
|
|
```
|
|
$ docker build -f docker/Dockerfile --target builder -t tw_builder:jammy .
|
|
```
|
|
|
|
Pro získání sestavených souborů z Docker obrazu je nejjednodušší použít poslední fázi `export` Dockerfile a definovat `--output`. Konkrétně v tomto případě budou soubory vyexportovány do podadresáře `./dist/`.
|
|
|
|
```
|
|
$ docker build -f docker/Dockerfile --target export --output type=local,dest=dist .
|
|
```
|
|
|
|
|
|
# Spuštění
|
|
|
|
Pro spuštění již připravených spustitelných souborů v adresáři `build/`, není třeba na připravené "čisté" instalaci Ubuntu 22 nic měnit.
|
|
|
|
## Server
|
|
|
|
Pro hru více hráčů je nutné mít spuštěný `tw_server`. Ten také najdeme v adresáři `build/`. Pro jeho spuštění je třeba mít nainstalovanou knihovnu `libpq5`. V připravené instalaci Ubuntu 22 stačí tento balíček nainstalovat.
|
|
|
|
```
|
|
# apt install libpq5
|
|
```
|
|
|
|
Server po spuštění vypíše port, který pro hráče otevřel. Příklad výstupu po spuštění:
|
|
|
|
```
|
|
[2026-08-05 16:28:09.874] [info] quicr-port=8101 cluster-port=8102 timescaledb=disabled
|
|
[2026-08-05 16:28:10.034] [info] Running on port: 8101
|
|
[2026-08-05 16:28:10.035] [info] ZoneClusterLink listening on port 8102
|
|
[2026-08-05 16:28:10.063] [info] Registered as zone 1 (-5000,-5000) (0,5000)
|
|
```
|
|
|
|
Zajímá nás řádek s `Running on port`.
|
|
|
|
V adresáři `src/` je připraven Docker compose, kterým lze spustit databázový server s TimescaleDB a Grafanu. Pro spuštění obou lze použít příkaz:
|
|
|
|
```
|
|
$ docker compose up grafana timescaledb
|
|
```
|
|
|
|
Aby server věděl, jak se má k databázi připojit, je nutné definovat proměnnné `TIMESCALEDB_HOST` a `TIMESCALEDB_PASSWORD`. Pokud jste spustili TimescaleDB pomocí našeho Docker compose, pak heslo je `mmo`.
|
|
|
|
```
|
|
$ TIMESCALEDB_HOST=127.0.0.1 TIMESCALEDB_PASSWORD=mmo ./tw_server
|
|
```
|
|
|
|
Webovou aplikaci Grafana najdete na `localhost:3000` s heslem `admin` a uživatelským jménem `admin`. Pro vytvoření datové zdroje pro spuštěnou databázi je nutné použít doménové jméno v Docker compose. Tedy adresa databáze bude `timescaledb:5432`. Metriky jsou v tabulce `ZoneMetrics`.
|
|
|
|
## Klient
|
|
|
|
Aplikace klienta je `tw_client`. Po spuštění uvidíte textové pole pro zadání adresy serveru, včetně portu. Klikněte na `Connect` pro připojení na server. Pokud se podaří, dostanete se do hry a uvidíte hráče jako červené kostky.
|
|
|
|
## Stress-testing
|
|
|
|
V adresáři `build/` je připravený i spustitelný soubor pro stress-testing, který naváže a simuluje určitý počet připojení na konkrétní server. Simulovaní hráči se i pohybují. Příklad testu pro server na 127.0.0.1:8101 s 300 simulovanými hráči.
|
|
|
|
```
|
|
$ ./tw_mock_client 300 127.0.0.1 8101
|
|
```
|