Abaku

Počítejte s námi

Nad hladinou se odehrává úžasný aritmetický souboj, díky němuž si děti mohou procvičovat počítání tím pro ně nejpřirozenějším způsobem - hrou. Pod hladinou však stojí palác důmyslně promyšlené architektury, mezi jehož sloužící patří i obyvatelé kmenu zvaného Umělá inteligence. Ti dokážou být těm nad hladinou plnohodnotnými protihráči a během několika málo sekund vyhodnotit protihráčovy schopnosti i strategie.

Podílíme se na vývoji této jedinečné webové aplikace ABAKU, elektronické verze jedné z nejlepších her na počítání vůbec, za kterou stojí společnost AL.21. Cílem projektu není nic menšího než naučit děti počítat. Jedná se o edukační nástroj určený dětem na základních školách, ale ze zkušeností víme, že si ji rád zahraje i leckterý dospělý.

Abaku

Abaku je hra, kterou lze hrát jak s živým protihráčem, tak s umělou inteligencí o různé obtížnosti. Obrovské využití má hra pro učitele, kteří mohou díky speciálním scénářům procvičovat různé početní dovednosti. Zároveň mají k dispozici i podrobné statistiky o vývoji znalostí jednotlivých žáků a kompletní uživatelskou správu.

Odvětví

Gaming

Klient

AL. 21 s.r.o.

Systém

Web

1

VÝZVA

Výzvou byla již samotná architektura. Do té se promítal i požadavek na univerzálnost kvůli různým businessovým modelům, které chce společnost aplikovat v odlišných částech světa.

Největší výzvou je ovšem hra samotná a umělá inteligence v ní. Základem hry je herní engine, který má na starost vyhodnocování správnosti tahu a následně s tím spojené animace zobrazení jednotlivých příkladů. To vše pro více hráčů.

Umělá inteligence se stará o simulování protihráče, který má být stejně dobrý jako jeho protihráč. Musí být nejen schopný hrát hru “dle pravidel”, ale i reagovat na schopnosti protihráče (tj. kombinovat různé strategie vedoucí k vítězství), a přitom stíhat vyhodnocení do několika málo sekund. Neméně podstatná je stále přítomná schopnost vzdělávat.

Rychlost a kvalita AI

Hra ABAKU není úplně nový produkt, ve skutečnosti se jedná o její pátou verzi. Poprvé je však vytvářena pro anglicky mluvící trh.

Tentokrát byl také kladen velký důraz na rychlost aplikace (zvláště pak robota suplujícího protihráče), možnost rozšíření a přeložení do více jazyků a především na kvalitu umělé inteligence, která musí být schopná vytvářet taktiky a adaptovat se na zkušenost protihráče.

Screenshot z Aplikace abaku.  Nastavení pro vytvoření nové hry.
2

PROCES

Ideální kombinace týmu

Snažíme se o co největší partnerství s klientem a máme rádi Scrum, což se nám v tomto projektu podařilo výborně spojit. Do vývojového týmu se tak přímo na pozici Product Ownera zapojil Petr - přímý zástupce investora a zároveň tělem i duší vývojář. Nejenže zná původní verze ABAKU aplikace, a s tím spojené “edge casy” jako své boty, ale také rozumí problémům a otázkám našeho týmu. Pro nás ideální kombinace. Petr je s námi na standupech, groominzích, na review schůzkách a je aktivní v návrhu celého designu.

Technologie

Základním kamenem je serverless řešení od AWS, programovací jazyk je hlavně TypeScript. Komunikace služeb a klienta běží přes GraphQL. Databáze přes DynamoDB.

Frontend:

TypeScript, React.js, GraphQL

Backend:

TypeScript, Node.js, GraphQL, AWS, DynamoDB

3

ŘEŠENÍ

Řešení je postavené na serverless AWS infrastruktuře. Bylo to nejefektivnější řešení, které zároveň umožňuje jednoduchou integraci s ostatními službami. Pro správu uživatelů jsme použili Cognito.

Aplikace je rozdělena do několika služeb, které spravují konkrétní funkcionalitu v doméně. K tomuto rozhodnutí nás vedl především požadavek klienta, který počítá s tím, že by se hra dala časem publikovat i mimo školní prostředí a zpřístupnit pro veřejnost, a také požadavek na škálovatelnost celého systému.

Na proces nasazování těchto služeb jsme použili AWS CloudFormation.

Screenshot z Aplikace abaku.  Nastavení pro vytvoření nové hry.
4

VÝSLEDEK

Projekt Abaku byl výzva nejen po stránce projektové ale i technologické. Celá aplikace je serverless a využívá celé plejády AWS služeb. Od API gateway, přes lambda funkce, Dynamo DB streams, IOT pubsub, až po AWS SQS. Výsledkem je vysoce škálovatelná realtime hra, která běží kompletně serverless s minimálními náklady.

Nesmírně důležitá část Abaku je Robot, neboli soupeř v podobě algoritmu na vyhodnocování tahů. Ten umožňuje hráči hrát proti virtuálnímu protivníkovi. Jeden z požadavků na Robota byl, aby byl schopen porazit i ty nejlepší hráče. Vzhledem k počtu možností ve hře a prvku náhody, bylo pro nás programování tohoto AI úžasnou výzvou.

Také chcete úspěšnou aplikaci?Napište Nám