"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí

Kvôli početným požiadavkám čitateľov sa začína rozsiahla séria článkov o využití bezserverovej výpočtovej technológie na vývoj skutočnej aplikácie. Tento cyklus bude zahŕňať vývoj aplikácií, testovanie a poskytovanie koncovým používateľom pomocou moderných nástrojov: mikroservisná aplikačná architektúra (vo verzii bez servera, založená na OpenFaaS), zhluk Kubernetes pre nasadenie aplikácie, databázy MongoDB, zameraný na cloud clustering a aplikácie, ako aj cloud bus PRÍRODY. Aplikácia implementuje hru „Epics“, jednu z variant populárnej spoločenskej hry „Mafia“.

Čo sú to „eposy“?

Toto je variant hry "Mafia", tiež známej ako "Vlkolak". Je založená na tímovej hre, v ktorej sa účastníci musia krok za krokom učiť, kto je kto a snažiť sa vyhrať. Bohužiaľ, pri hraní online zmizne taká dôležitá súčasť hry, ako je osobná interakcia, a pravidlá klasickej „Mafie“ sú pomerne jednoduché, preto sa pre nelineárnejšiu a zaujímavejšiu hru zvyčajne pridávajú ďalšie postavy, ale vo všeobecnosti sú zachované hlavné črty pôvodnej „mafie“, napríklad zmena dňa a noci, pohyb iba v noci, ako aj spojenectvá medzi účastníkmi. Ďalším dôležitým rozdielom medzi hraním online je, že hostiteľ (známy aj ako Game Master, Storyteller) je zvyčajne počítačový program.

Popis hry

Pravidlá hry, ktoré chcem implementovať, sú prevzaté zo starého irc bota, ktorý som si uložil do osobného archívu asi pred 10 rokmi. „Epics“ má svoj príbeh, ktorým každá hra začína:

V ďalekom kráľovstve, v tridsiatom štáte, za siedmimi morami žilo a žilo niekoľko dedín a v nich Dobrí kamaráti и Nádherné dievčatá. Zasiali chlieb a chodili do okolitého lesa zbierať huby a lesné plody... A takto to pokračovalo zo storočia na storočie, až kým Zemou neotriasla strašná katastrofa a zlo sa začalo šíriť po celom svete! Noci sa stali dlhými a chladnými a v tme sa lesom potulovali nevľúdne a hrozné stvorenia a zatúlali sa do dediny. Odniekiaľ prišiel Snake Gorynych a osvojil si zvyk kradnúť červené panny a brať dedinčanom všetko cenné. Škodlivý a chamtivý Baba Yaga, ktorý priletel na mínomet z ďalekých lesov, pomýlil mysle obyvateľov, ba niektorí zanevreli na remeslo a išli lúpiť do lesa, vytvorili tam bandu. Darebáci sa stretli Goblin, ktorý sa vedel premeniť na stromy a kríky, začal sledovať mierumilovných dedinčanov a obsluhovať zbojníkov, čuchajúc, či majú Dobrí kolegovia niečo na to, aby zbavili svoje osady zlých duchov. Dobrí chlapi a krásne panny, unavení nájazdmi lupičov a hroznou smrťou v rukách strašných Štýlový jednooký, zbieral zlato a pozval slávneho zápasníka zo susedného mesta - Ivan Tsarevič, ktorý sľúbil, že dedinu zbaví zbojníkov. Na čistinke v lese Ivan zachránil pred istou smrťou Šedý vlk, ktorý padol do pasce Zbojníkov. Vlk na oplátku sľúbil informovať Tsareviča o rôznych lesných zlých duchoch. Okolo prešiel známy liečiteľ Vasilisa Múdra, a keď videla problémy, zostala ošetrovať obyvateľov, ktorí trpeli útokmi tých ušľachtilých. Za lesom sa objavil čierny palác, v ktorom sa podľa povestí usadil Koschei nesmrteľný, každú noc navštevoval dediny a čaroval Dobrých druhov a Červené panny, aby sa neodvážili neposlúchnuť jeho príkazy, urobili všetko tak, ako povedal. A usadil sa v lese bez života Mačka Baiyun, a každý, kto ho stretol, po jeho rozprávkach zaspal alebo zomrel na jeho železné pazúry.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Ďaleké ďaleké kráľovstvo

Ako už môžete vidieť, hráči sú rozdelení do niekoľkých skupín:

  • civilisti (Dobrí kolegovia, Červené panny, Ivan Tsarevič, Sivý vlk a Vasilisa Múdra)
  • lupiči (samotní lupiči, ako aj Baba Yaga a Leshy)
  • nezávislý (Snake-Gorynych, Šikovný jednooký, Žabia princezná, Koschey nesmrteľný, Cat-Bayun)

Cieľom hry, ako už bolo spomenuté vyššie, je zostať nažive a vyhrať. Súperi musia opustiť hru tak či onak a nezávislí musia tiež zostať nažive až do konca hry. Hra má zlato, akúsi hernú menu, ktorú hráči zarábajú iba v rámci hry. Víťazi získajú zlato. Čím viac zlata, tým vyššie hodnotenie hráča.

Trochu podrobnejšie sa zastavím pri opise postáv.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Dobrý chlapík

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Červená panna

Dobrý chlapík и Červená panna - najrozšírenejšia a hlavná úloha v hre. Ide o civilistov, ktorí v noci spia a cez deň pracujú. V noci ich napadne jeden z lupičov, Had Gorynych a ďalšie role, a Vasilisa Múdra ich uzdraví. S malou pravdepodobnosťou môže Good Fellow alebo Red Maiden prežiť útok bez poškodenia (prípadne pri tom stratí zlato), ale každý spozná hráčovu prezývku nasledujúci deň po útoku. V noci títo hráči nerobia žiadne pohyby, ale analyzujú hernú situáciu na základe správ v hernom chate. Títo hráči počas dňa hlasovaním rozhodujú, kto z nich nie je Good Fellow alebo Red Maiden. Hráč, za ktorého hlasovala väčšina ostatných hráčov, opúšťa hru, zvyšní hráči dostanú alebo stratia zlato. Ak si hráči nevyberú nikoho väčšinovým hlasovaním, žiadny hráč nebude popravený.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Ivan Tsarevič

Ivan Tsarevič - spočiatku anonymný obranca civilistov. V noci kontroluje úlohy ostatných hráčov, keďže zo svojho spojenca pozná iba jedného - Sivého vlka. Za priamej účasti Šedého vlka (ktorý môže kontrolovať aj úlohy ostatných hráčov) môže Ivan Tsarevich namiesto kontroly v noci zabiť ďalšiu postavu. Ak v dôsledku kontroly Ivan Tsarevich vidí v hráčovi úlohu Dobrého chlapíka alebo Červenej panny, môže ich pozvať k sebe a predstaviť Šedému Vlkovi a iným Dobrým Členom a Červeným pannám. Ivanovi môže prekážať Žabia princezná, ktorá ho môže v noci zvádzať bez toho, aby cez deň prezradila jeho úlohu ostatným hráčom. Ak Ivan sám objaví žabiacu princeznú, môže ju pozvať, aby sa pridala k civilistom, no ak princezná odmietne, zomiera Ivanovými rukami. Had-Gorynych môže tiež zasahovať do kontrol Ivana-Careviča, ale na rozdiel od žabej princeznej počas dňa ostatným hráčom povie, ktorý z nich je Ivan-Carevič. Počas dňa sa Ivan Tsarevich nelíši od ostatných Good Fellows.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
šedý vlk

šedý vlk - asistent Ivana Tsareviča, ktorého bystrý čuch pomáha Ivanovi nájsť ďalších Dobrých spoločníkov a Červené panny. Sivý vlk týmto hráčom prezradí, kto je Ivan Tsarevič, a informuje aj o ďalších hráčoch v úlohách Good Fellows a Red Maidens. Ak Vlk objaví lupiča alebo iného nepriateľa, okamžite o tom informuje Ivana Careviča, aby mohol ďalšiu noc konať. Ak vlka napadne Žabia princezná, zmení sa na obyčajného Dobrého chlapíka a nemôže nikoho kontrolovať a princezná nebude vedieť, že to bol v skutočnosti Sivý vlk, keďže vlk v noci nespí. Sám Vlk však v priebehu dňa zistí, ktorý z hráčov je Žabia princezná, a môže sa pokúsiť presvedčiť zvyšok Dobrých družín a Červených panien, ktorých priviedol k Ivanovi Carevičovi, aby hlasovali za popravu Žabky. princezná. Aj ďalšiu noc sa môže pokúsiť anonymne presvedčiť Žabiu princeznú na stranu civilistov, aby sa žiadneho z nich nedotkla. Vlk sa môže v noci obetovať, aby zachránil Ivana Tsareviča alebo Vasilisu Múdreho, ak predpokladá, že náhle padnú pod útokom lupičov, alebo ich Koshchei zombifikuje (Vlk má vrodenú imunitu voči Koshcheiho kúzlam), ale Wolf po sebaobetovaní vypadne z hry.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Vasilisa Múdra

Vasilisa Múdra - hrá pre civilistov, ale nevedia o nej, pretože Vasilisa je veľmi skromná. Taktiež Vasilisa Múdra, keď lieči, nepýta sa a ako správna lekárka lieči každého. Ale ak Koschey, Likho alebo Leshy pijú jej liek, nebudú žiť dlhšie ako jeden deň, pretože Vasilisa lieči iba ľudí. Liečivo Vasilisy múdrej tiež nepomôže hadovi Gorynychovi alebo Cat-Bayunovi, ale ani neškodí. Kot-Bayun sa Vasilisy v noci nedotýka, pretože Vasilisa nechodí do lesa bez života kupovať liečivé byliny. Navyše, na Vasilisu nefungujú ženské kúzla Žabej princeznej. Ak by sa pokúsili zabiť jej pacienta dvakrát, medicína by bola bezmocná. Vasilisa vás nezachráni pred magickými útokmi, napríklad pred kliatbou Dashing. Vasilisa sa cez deň správa ako Červená panna a len letmý, trochu smutný pohľad môže trochu napovedať, že je tou najlepšou liečiteľkou v ďalekom kráľovstve.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Rogue

lupiči, na rozdiel od všetkých predchádzajúcich rolí sa poznajú, keďže žijú v jednom Doupěti a poznajú aj Leshy a Baba Yaga, takže môžu hrať v zhode hneď pri prvom ťahu. Ale iba vodca gangu robí akcie v noci a cez deň nehlasuje, zatiaľ čo zvyšok lupičov sa usilovne vydáva za Good Fellows a Red Maidens. Ak Vodca z akéhokoľvek dôvodu opustí hru, jeden zo zostávajúcich gaunerov okamžite zaujme jeho miesto. V prvom rade sa Zbojníci pokúšajú zneškodniť Ivana Tsareviča, kým nezhromažďuje dostatok síl od Dobrých členov a Červených panien, aby sa počas dňa aktívne postavil lupičom.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Goblin

Goblin v noci špehuje lupičov, informuje ich o úlohách nájdených v ich brlohu, ale cez deň nehlasuje, keďže nebýva v dedine. Ostatní hráči však môžu za Leshyho hlasovať a tak ho popraviť. Keďže Leshy pochádza z močiarov, nedá sa zviesť žabou princeznou a ak sa o to pokúsi, Leshy označí jej dom a dedinčania zistia, kto v skutočnosti je. Leshem by sa nemal báť Koshcheiho kúzla, ale Vasilisa ho môže vyliečiť na smrť. Ak sa Kot-Bayun pokúsi zaútočiť na Leshyho, riskuje, že stratí svoje železné pazúry a Kot bude musieť uspávať obete len svojím mrnčaním.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Baba Yaga

Baba Yaga Spolupracuje aj s lupičmi a v noci čaruje: môže buď poslať chorobu iným hráčom, alebo ochrániť jedného zo svojich spojencov pred útokom. Jej čarodejníctvo je ešte silnejšie ako Likhova kliatba. Počas dňa je aktívna aj Baba Yaga: nikoho pod jej ochranou nemožno popraviť ani väčšinovým hlasovaním. Zásoba magických koreňov na ochranu počas dňa je však obmedzená, takže Baba Yaga nemôže nikoho, vrátane seba, ochrániť viac ako trikrát za hru. Baba Yaga sa cez deň vydáva za obyčajnú Červenú pannu a hlasuje so všetkými ostatnými.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
drak

drak v noci lieta nad dedinami, lesmi a močiarmi a zapája sa do lúpeží, pričom cez deň prezrádza úlohu okradnutého. Cez deň Had spí, takže nehlasuje, ale môže byť popravený väčšinou hlasov. Had je veľmi nebezpečný pre všetkých, najmä pre Zbojníkov a Ivana Tsareviča. Hadovi je jedno, koho okradne, ale ak ho objaví Vlk alebo Leshy, môže sa stať cenným spojencom. Ak zabijete Hada v noci, môžete s určitou pravdepodobnosťou získať veľmi cenný predmet - Hadiu kožu, ktorá raz ochráni svojho majiteľa pred fyzickým útokom.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Štýlový jednooký

Štýlový jednooký v noci zabije každého, kto sa mu postaví do cesty a koho nemôže zabiť (Leshy, Kota-Bayun alebo had Gorynych), preklial, aby každý, kto sa v tú istú noc pokúsi s tým zatrateným komunikovať, zomrel cez deň. . Sám zatratený v tomto prípade tiež zomiera, nezomiera len Kot-Bayun, ktorý si jednoducho ide ľahnúť, aby nabral silu, ďalšiu noc preskočí rad. Len Baba Yaga môže zachrániť Likha pred kliatbou. Kliatba sa netýka toho, kto porazil Cat-Bayuna: on, rovnako ako Cat, jednoducho ide do postele a preskočí odbočku.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Princezná Žaba

Princezná Žaba nemôže vyhrať hru, ale môže zarobiť veľa peňazí zvádzaním iných hráčov v noci. Pokúšaný nestihne svoj rad. Žaba nemôže zviesť múdru Vasilisu a vyhýbať by sa mala aj Leshymu, ktorý ju na druhý deň všetkým prezradí. Ak Ivan Tsarevič alebo Vodca lupičov nájdu žabu, môžu na svoju stranu pozvať civilistov alebo lupičov, zatiaľ čo Ivan nebude akceptovať žabie odmietnutie, ale vodca nie je taký prieberčivý. Princezná je však dosť prefíkaná, môže sa stať dvojitým agentom, pretože napriek tomu, že nemôže vyhrať sama, je to vynikajúca šanca na získanie zlata, pretože šance na prežitie do konca hry sa výrazne zvyšujú! Žabia princezná sa cez deň vydáva za Červenú pannu a hlasuje so všetkými spolu.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Koschei nesmrteľný

Koschei nesmrteľný žije vo svojom zámku. V noci chodí po okolitých dedinách a zombifikuje Good Fellows a Red Maidens, ktorí prichádzajú do jeho služieb a bez akýchkoľvek pochybností plnia všetky príkazy. Odmietnutím vykonať príkaz, napríklad hlasovať počas dňa inak, ako povedal Koshchei, alebo písať správy do chatu počas dňa, ak to Koshchei zakázal, Koshcheiho sluha zomrie. Koschey tak môže počas dňa ovplyvňovať výsledky hlasovania, aj keď sám nehlasuje. Ak je Koshchei zabitý, zomrú aj všetky jeho obete. Vasilisa môže vyliečiť sluhu Koshchei, ktorý sa potom vráti do svojej pôvodnej úlohy. Had-Gorynych a Vlk majú vrodenú imunitu voči zombifikácii, takže Koschey, akokoľvek by chcel, ich nemôže premeniť na svoje služby. Vlk môže pomôcť Ivanovi alebo Vasilise z problémov aj tým, že sa obetuje. Saved by the Wolf získava Wolf imunitu voči zombifikácii.

"Nové eposy". Pre vývojárov, operátorov a zvedavých ľudí
Mačka Baiyun

Mačka Baiyun žije v lese, loví v noci. Cez deň spí vo svojej dutine, preto sa nezúčastňuje hlasovania. Počas dňa však môže byť vykonaný väčšinou hlasov. Mačka môže zaútočiť dvoma spôsobmi: mrnčať - a potom jej obeť zaspí a nemôže v noci chodiť a na druhý deň nemôže voliť - alebo priamo zabiť železnými pazúrmi. Útok pazúrmi na Snake-Gorynycha nefunguje a po útoku na Leshyho môže Mačka zostať úplne bez pazúrov! Dashing nemôže prekliať Mačka, ktorá po kliatbe jednoducho prespí jednu noc. Ak sa niekomu podarí poraziť Kota-Bayuna, vylieči sa z akejkoľvek choroby alebo choroby, vrátane kliatby Likh. Táto schopnosť Cat zostáva hráčovi až do konca hry. Koshcheiovi sluhovia nemôžu cez deň hlasovať za Mačka, ale môžu nepriamo zistiť, kto je Mačka bez toho, aby o tom Koshcheiho informovali. Kot-Bayun nevstupuje do aliancií s Ivanom alebo Zbojníkmi, takže sú pre Kota primárnym cieľom.

Použité technológie

Na napísanie hry som si vybral bezserverovú výpočtovú technológiu založenú na OpenFaaS, keďže je dostatočne jednoduchá na organizáciu hry a zároveň dostatočne pokročilá na to, aby bolo možné bez zbytočných komplikácií písať komplexné pravidlá hry. Použijem tiež klaster Kubernetes, pretože tento spôsob nasadzovania aplikácií umožňuje pomerne jednoduché a spoľahlivé rýchle nasadenie a možnosť jednoduchého škálovania. Na vytvorenie hernej logiky si vystačíte iba s OpenFaaS, ale pokúsim sa vytvoriť aj Rozprávač ako samostatný kontajner na porovnanie zložitosti implementácie. Ako hlavný programovací jazyk pre mikroslužby a funkcie som zvolil Go, keďže som to vo svojom voľnom čase študoval už dlhšiu dobu, aby som nahradil Perl, a js sa bude používať na základe určitého rámca pre interakciu používateľa s mikroslužbami a funkciami. O konečnom rozhodnutí vám poviem v príslušnom článku v sérii. Na vzájomnú komunikáciu funkcií som si vybral NATS.io, pretože som sa s ním už stretol a má pomerne jednoduchú integráciu do Kubernetes.

Oznámenie

  • Úvod
  • Nastavenie vývojového prostredia, rozdelenie úlohy na funkcie
  • Backendová práca
  • Frontendová práca
  • Založenie CICD, organizácia testovania
  • Začnite skúšobnú hru
  • Výsledky

Zdroj: hab.com

Pridať komentár