Jak funguje AI Doupě – webová fantasy hra s umělou inteligencí
V tomto článku bych chtěl popsat, jak technicky funguje můj projekt AI Doupě. Jedná se o webovou fantasy hru inspirovanou hraním Dračího doupěte, kde hráč komunikuje s umělou inteligencí, která funguje jako vypravěč.
Cílem projektu je vytvořit hru, kde si hráč může založit vlastní dobrodružství, vytvořit postavu a postupně procházet fantasy světem. Hráč píše, co chce jeho postava udělat, a AI na to reaguje jako vypravěč. Popisuje prostředí, nepřátele, následky rozhodnutí a posouvá příběh dál.
Základní rozdělení projektu
Celý projekt je rozdělený na dvě hlavní části:
- frontend,
- backend.
Frontend je část, kterou vidí hráč v prohlížeči. Backend je serverová část, která zpracovává požadavky, ukládá data a komunikuje s umělou inteligencí.
Díky tomuto rozdělení může hráč pohodlně hrát přes webové rozhraní, zatímco server na pozadí řeší logiku hry, ukládání dobrodružství a komunikaci s OpenAI modelem.
Frontend – herní rozhraní v prohlížeči
Frontend je vytvořený pomocí Vue 3 a Vite. Je to část aplikace, kterou hráč přímo používá.
Ve frontendu se nachází například:
- přihlášení hráče,
- vytvoření nové hry,
- výběr postavy,
- chat s vypravěčem,
- zobrazení statistik postavy,
- inventář,
- zobrazení aktuálního stavu hry.
Hráč tedy nevidí jen obyčejné textové pole, ale celé herní rozhraní. Na jedné straně je chat, kde probíhá příběh, a vedle toho panel s informacemi o postavě. Hráč tak může sledovat životy, manu, útok, obranu, zlato, zkušenosti i předměty v inventáři.
Když hráč napíše akci, například že chce zaútočit na nepřítele, prohledat místnost nebo promluvit s postavou, frontend tuto zprávu odešle na backend.
Backend – serverová část hry
Backend je napsaný v Node.js pomocí Expressu. Tato část běží na serveru a stará se o to, aby hra správně fungovala.
Backend zajišťuje například:
- příjem zpráv od hráče,
- načtení aktuálního stavu hry,
- komunikaci s OpenAI API,
- uložení odpovědi od AI,
- ukládání chatů a dobrodružství,
- práci s uživateli,
- načítání ras a povolání.
Backend je tedy prostředník mezi hráčem a umělou inteligencí. Hráč nikdy neposílá zprávu přímo do OpenAI. Nejprve ji přijme můj server, připraví potřebné informace a až potom odešle požadavek modelu.
To je důležité hlavně kvůli bezpečnosti a kontrole hry. API klíč k OpenAI musí zůstat pouze na serveru a nesmí být viditelný ve webovém prohlížeči.
Jak probíhá jedna akce hráče
Když hráč napíše do hry nějakou akci, celý proces probíhá přibližně takto:
- Hráč napíše, co chce jeho postava udělat.
- Frontend odešle zprávu na backend.
- Backend načte aktuální stav hry.
- Backend připraví zadání pro AI.
- OpenAI model vygeneruje odpověď vypravěče.
- Backend odpověď uloží do chatu.
- Frontend zobrazí odpověď hráči.
Díky tomu může hra reagovat na různé situace. Hráč není omezený jen na několik předem připravených tlačítek nebo možností. Může psát vlastní akce a AI se na ně snaží reagovat podle kontextu příběhu.
OpenAI jako fantasy vypravěč
Nejdůležitější částí projektu je použití modelů od OpenAI. Ty slouží jako fantasy vypravěč.
Model dostane informace o tom, co se ve hře děje, kdo je hráčova postava, jaké má vybavení, v jaké je situaci a co chce právě udělat. Na základě toho vygeneruje odpověď.
AI může například popsat boj, objevování nové lokace, rozhovor s postavou nebo následky špatného rozhodnutí. Díky tomu se každé dobrodružství může vyvíjet trochu jinak.
Cílem není jen obyčejný chat s AI, ale vytvoření systému, který bude připomínat skutečné hraní fantasy RPG. AI zde funguje jako vypravěč, který vede příběh, ale zároveň reaguje na rozhodnutí hráče.
Ukládání dat
Hra zatím ukládá data do souborů na serveru. Používají se hlavně JSON soubory.
V souborech jsou uložené například:
- rasy,
- povolání,
- uživatelé,
- chaty,
- uložená dobrodružství,
- stav postavy.
To je pro vývoj jednoduché a přehledné řešení. Do budoucna by bylo možné přejít na klasickou databázi, pokud by hra měla více hráčů nebo složitější systém ukládání.
Momentálně je pro mě důležité hlavně to, aby se dal snadno testovat příběh, inventář, postavy a základní logika hry.
Postava, inventář a herní stav
Součástí hry je také systém postavy. U postavy se sledují různé hodnoty, například:
- životy,
- mana,
- útok,
- obrana,
- zlato,
- zkušenosti,
- inventář,
- aktuální stav v příběhu.
Inventář obsahuje předměty, které může hráč během hry získat. Může jít například o zbraně, zbroj, nástroje, jídlo, lektvary nebo cennosti.
Díky tomu hra není jen textový rozhovor, ale má i základní RPG systém. Hráč může získávat předměty, zlepšovat postavu a postupovat příběhem.
Provoz na serveru
Hru chci provozovat na vlastním serveru. Nejvhodnější řešení je spustit ji v Linuxovém prostředí, například v Debian nebo Ubuntu kontejneru na Proxmoxu.
Pro vývoj se aplikace dá spustit jednoduše přes:
npm run dev
Pro reálný provoz je ale lepší vytvořit produkční build frontendu a backend spouštět jako službu. K tomu se dá použít například PM2, který udrží Node.js aplikaci spuštěnou i po restartu.
Frontend se může servírovat přes Nginx a backend může běžet na pozadí jako API server. Nginx pak může sloužit jako reverse proxy, aby se celá aplikace dala používat přes jednu webovou adresu.
Bezpečnost a další úpravy
Protože je projekt zatím ve vývoji, jsou některé věci, které bude potřeba před veřejným spuštěním ještě opravit a vylepšit.
Mezi důležité věci patří hlavně:
- neukládat hesla jako čistý text,
- přesunout tajné klíče do
.env, - zabezpečit OpenAI API klíč,
- opravit pevně nastavené adresy typu
localhost, - zlepšit ukládání uživatelů,
- připravit projekt na veřejný provoz.
To jsou věci, které nejsou tolik vidět na první pohled, ale jsou velmi důležité, pokud má být hra někdy dostupná veřejně.
Současný stav projektu
Projekt zatím testuji v soukromém kruhu. Chci nejdříve zjistit, jak se hra chová při delším hraní, jak dobře AI drží příběh a co bude potřeba upravit.
Už nyní hra obsahuje základní webové rozhraní, chat s AI, systém postavy, inventář a ukládání dobrodružství. Do budoucna bych chtěl přidat více funkcí, například lepší soubojový systém, úkoly, mapy, obchodníky, nepřátele a propracovanější práci se stavem světa.
Až bude projekt hotový, rozhodnu se, jestli hru zpřístupním veřejně pro ostatní hráče, nebo zveřejním zdrojové kódy. Záleží na tom, jak projekt dopadne a jakým směrem se bude dál vyvíjet.
Závěr
AI Doupě je můj pokus spojit klasické fantasy hraní s moderní umělou inteligencí. Hráč píše vlastní akce, AI funguje jako vypravěč a server se stará o ukládání hry, postavy a celého dobrodružství.
Technicky jde o webovou aplikaci s frontendovou částí ve Vue a backendem v Node.js. OpenAI modely pak pomáhají vytvářet příběh a reakce na rozhodnutí hráče.
Projekt je stále ve vývoji, ale postupně se z něj stává funkční fantasy hra, kde si hráč může vytvořit vlastní dobrodružství a zažít příběh, který se vyvíjí podle jeho rozhodnutí.





