Počítejte s námi

Co je Abaku

Matematika je ve světě IT nepostradatelná, a proto jsme se rádi podíleli na hře ABAKU, jejímž cílem je ukázat dětem na základních školách matematiku v zábavnějším světle a podnítit vznik nových vědomostí. Díky ABAKU se žáci mohou “učit hrou” a učiteli se dostává podrobného přehledu o vývoji znalostí jednotlivců.

Fungování hry

Aplikace je výukovým nástrojem a je plně naplňuje okřídlené heslo: “Škola hrou”. Hra funguje na principu podobném hry Scrabble. Na hrací desku klade hráč kameny s čísly za účelem vytvoření rovnic. Jaké je překvapení, když vytvoříte více příkladů, než kolik jste zamýšleli… (např. kolik příkladů najdete v čísle: “211839” ? Náš engine jich tam najde aspoň 6.)

NÁVRH - Jak to celé vzniká

ABAKU není nová hra, vlastně se jedná o její pátou verzi. Nicméně poprvé je vytvářená pro anglicky mluvící trh. Co je však důležitější než kdy dříve, je rychlost aplikace samotné (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 kvalita umělé inteligence, na kterou jsou kladeny vyšší nároky, včetně schopnosti taktiky - strategie, adaptování se na zkušenost protihráče.

Vývzvy aneb - A co děti? Mají si s kým hrát?

Největší výzvou pro Qest byl vývoj umělé inteligence - robota protihráče, který zvládne hrát hru na několika úrovních (od začátečníky, až po pokročilé). Základem hry je tak herní mechanismus, který se stará o vyhodnocování tahů a s tím spojené animace zobrazení jednotlivých příkladů. To vše pro několik hráčů naráz. Umělou inteligenci (robota), jsme museli naučit hrát hru “dle pravidel”, reagovat na schopnosti protihráče (tj. kombinovat různé strategie vedoucí k vítězství) a v neposlední řadě dětského hráče neustále vzdělávat v aritmetice. Ovšem nejen robot může být spolu, či protihráč. Protihráčem mohou být i další 3 lidé. Ve hře umožňujeme hrát opravdový multiplayer a z technologického hlediska nám nevadí, pokud všichni hráči nevydrží “až do konce” (třeba se vzdají, nebo jim selže připojení) - i na to jsme připraveni. Můžete si tak hrát sám, se sourozencem, nebo s někým cizím. Pro zapálené studenty máme spuštěnou ligu s týdenními či měsíčními tabulkami a regulérním bodováním a hodnocením ela. Součástí hry je i chat, takže se můžete o dojmech ze hry rovnou podělit s ostatními hráči.

ABAKU doma a v zahraničí

Architektura hry je postavena na požadavku univerzálnosti. Hra se tedy bez větších potíží dá přenést do ostatních koutů světa, kde se businessové požadavky liší. Na českém trhu funguje i stará aplikace určená veřejnosti. Tu by investor rád zachoval což pro Qest znamená nacházet univerzálnější přístupy i ohledně sdílení kódu pro více různých produkčních prostředí.

Řešení a užité technologie

Vše začalo od návrhu architektury. Aneb jak ideálně skloubit použití veřejné a neveřejné aplikace a různých produkčních prostředí, jak mít více způsobů registrace napříč státy. Důležitou součástí je škálovatelnost - vzhledem k vysokým počtu škol jak v ČR, tak v zahraničí může být počet uživatelů několik tisíc i několik desítek tisíc a tím se násobně zvyšuje počet hraných her. Na to vše je třeba být připraven.

Návrh architektury (architektura jako kód)

Architekturu jsme postavili na serverless řešení od AWS. Nosnou myšlenkou bylo především zajistit škálovatelnost jednotlivých částí, vedení statistik o užití aplikace uživateli s možnostmi SQL či jiných dotazů a obecně zajištění nárazového uživání aplikace. Navrhli jsme tedy systém microservices a postupně budovali jejich propojení.

Uživatelé

Pro registraci a administraci uživatelů používám předpřipravenou službu Cognito od AWS. Díky tomu jsme byli schopni přidávat další role v systému a počítáme tak se snadnou rozšiřitelností.

Notifikace, chat a realtimovost

V rámci aplikace funguje chat, chatovací místnosti, a spousta dalších eventů (např. nově přiřazená úloha, automatické spojení hráčů). Na tyto události uživáme technologii Pub/Sub.

kód

Samotný kód je již psané v typescript v prostředí Node.js a React.js. Komunikaci mezi backendem a Frontendem zajišťuje GraphQL.

Výsledek

bude zábavná, děti ji budou chtít samy od sebe hrát, a nejen v době Coronavirové umožní vzdělávání i z domova.

Co přineslo abaku nám?

Kromě zlepšení matematických schopností našich testerů, jsme se zdokonalili v technologii GraphQL, ale i v dalších nových technologiích jako je např. Pub/Sub. Plně jsme zde mohli využít možností, které nabízí serverless technologie, konkrétně AWS. Jelikož s Abaku počítáme jako s globální aplikací, tak architektura byla budget-driven.

Technologie

Node.js, React, Typescript, AWS, Cognito, Pub/Sub, GraphQL,.