City Defense

O hře › Technologie

Na čem City Defense běží: použité technologie

City Defense je čistě webová hra: mapa, 3D město, hledání cest nepřátel, simulace i test botem běží v prohlížeči hráče. Server jen posílá statické soubory. Hra stojí na MapLibre GL JS (mapa), Three.js (3D), vektorových dlaždicích OpenFreeMap z dat OpenStreetMap, TypeScriptu a Vite.

Aktualizováno

City Defense hraješ zdarma přímo v prohlížeči – bez stahování a bez registrace. První mise: Brno, náměstí Svobody.

Hrát zdarma

Přehled technologií

ČástTechnologieK čemu slouží
MapaMapLibre GL JS 6vektorová mapa, kamera, načítání dlaždic, atribuce
Mapová dataOpenStreetMap → schéma OpenMapTiles → hosting OpenFreeMap (styl Liberty)ulice, budovy s výškami, povrchy, vodní plochy
3D grafikaThree.js (WebGL 2)budovy, zem, stromy, sutě, postavy, věže a efekty
Částicethree.quarkskouř, výbuchy a prach při bourání
3D modelyglTF (.glb) s kompresí meshoptimizer, příprava v glTF Transformpostavy a věže témat (CC0)
TexturyKTX2 / Basis Universalfotografické textury realistického stylu (CC0)
KódTypeScript, Vite 8, bez frameworkucelá hra jako jedna webová aplikace
Paralelní výpočtyWeb Workersstavba 3D města a země, test mise botem
Hledání místPhoton (komoot)vyhledání adresy v editoru mise
TestyVitestpřes tisíc automatických testů, regrese na skutečných dlaždicích
HostingCloudflare Workers (statické soubory)doručení souborů hry přes CDN

Mapa: MapLibre a vektorové dlaždice

Mapu kreslí MapLibre GL JS, otevřená knihovna pro vektorové mapy v prohlížeči. Podklad je styl Liberty od OpenFreeMap, který servíruje vektorové dlaždice ve schématu OpenMapTiles vytvořené z dat OpenStreetMap. Nejpodrobnější dlaždice mají zoom 14.

Hra si nic nestahuje předem. Ulice, budovy, povrchy a vodu čte z dlaždic, které mapa stejně načetla pro zobrazení (funkce querySourceFeatures). Ikony obchodů a restaurací ze stylu schovává, aby mapa působila čistě a boj byl čitelný.

Herní svět z mapových dat

3D ve stejném plátně jako mapa

Three.js kreslí do stejného WebGL kontextu jako MapLibre, jako vlastní vrstvy mapy: zem, město se stromy a postavy. Díky společné hloubce budovy správně zakrývají nepřátele. Nepřítel schovaný za domem je vidět jako barevná silueta („rentgen“).

Web Workery: těžká práce mimo hlavní vlákno

Geometrii města, ruiny, hromady sutí a masku povrchů země (po 1 m, v Brně 1 400 × 1 400 buněk) staví Web Worker, aby se hra při načítání nezasekávala. Ve workerech běží i test mise botem: na počítači se čtyřmi a více jádry hrají oba boti současně.

Textury KTX2

Realistický styl má pět polí textur ve formátu KTX2 (Basis Universal): 11 omítek a zdí, 3 fasády výškových budov, 7 krytin střech, 3 druhy sutí a 11 povrchů země. Celkem 3,24 MB. Stahují se jen při volbě realistického stylu a grafická karta je dostane ve formátu, který umí. Převodník (transkodér) je součástí hry, nic se nenačítá z cizích CDN.

Hosting: statické soubory, výpočet u hráče

Hra je statický web na Cloudflare Workers s doménou citydefense.app. Server nic nepočítá – simulace, trasy, 3D i boti běží v prohlížeči hráče. Z prohlížeče se volají jen dvě cizí služby: dlaždice OpenFreeMap a v editoru vyhledávání Photon. Hra nemá účty ani vlastní databázi. Mise se ukládají v prohlížeči a sdílejí odkazem.

Testy

Čistou logiku hry hlídá přes tisíc automatických testů ve Vitestu. Regresní testy běží na čtyřech skutečných dlaždicích Brna uložených v repozitáři (síť ulic, budovy, povrchy země). Balanční test hraje misi počítačovými boty a hlídá, aby obtížnost zůstala v dohodnutém pásmu. Shadery kontroluje glslang.

Časté otázky

Potřebuje hra výkonný počítač?

Stačí prohlížeč s WebGL 2. Výchozí je vysoká kvalita i na telefonu; když hra na slabším zařízení seká, sama ubere ostrost a stíny a mezi vlnami nabídne nízkou kvalitu. Nízkou jde zvolit i na úvodní obrazovce.

Proč se mise chvíli načítá?

Hra nejdřív počká na mapové dlaždice, pak z nich postaví síť ulic, budovy, výškovou mapu a 3D město. Realistický styl navíc stáhne 3,24 MB textur.