# 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 ```