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/`.
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:
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/`.
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í:
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`.
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`.
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.