"Novi epiki". Za razvijalce, operaterje in radovedneže

"Novi epiki". Za razvijalce, operaterje in radovedneže

Zaradi številnih zahtev bralcev se začenja obširna serija člankov o uporabi brezstrežniške računalniške tehnologije za razvoj prave aplikacije. Ta cikel bo zajemal razvoj aplikacij, testiranje in dostavo končnim uporabnikom z uporabo sodobnih orodij: mikrostoritvena arhitektura aplikacij (v različici brez strežnika, ki temelji na OpenFaaS), grozd Kubernetes za postavitev aplikacij, baza podatkov MongoDB, osredotočeno na gručenje v oblaku in aplikacije ter vodilo v oblaku NATS. Aplikacija izvaja igro "Epics", eno od različic priljubljene salonske igre "Mafia".

Kaj so "Bylins"?

To je različica igre "Mafia", znana tudi kot "Volkodlak". Temelji na timski igri, v kateri se morajo udeleženci korak za korakom učiti, kdo je kdo, in poskušati zmagati. Na žalost pri igranju na spletu izgine tako pomembna komponenta igre, kot je osebna interakcija, pravila klasične "mafije" pa so precej preprosta, zato se za bolj nelinearno in zanimivo igranje običajno dodajo drugi liki, vendar na splošno so ohranjene glavne značilnosti izvirne "mafije", na primer menjava dneva in noči, premikanje samo ponoči, pa tudi zavezništva med udeleženci. Druga pomembna razlika med igranjem na spletu je, da je gostitelj (aka Game Master, Storyteller) običajno računalniški program.

Opis igre

Pravila igre, ki jih želim implementirati, so vzeta iz starega irc bota, ki sem ga shranil v svoj osebni arhiv pred približno 10 leti. "Epics" imajo zgodbo, s katero se začne vsaka igra:

V daljnem kraljestvu, v trideseti državi, onkraj sedmih morij, je živelo in živelo več vasi in v njih Dobri prijatelji и Lepa dekleta. Sejali so kruh in hodili v okoliški gozd nabirat gobe in jagode ... In to se je nadaljevalo iz stoletja v stoletje, dokler ni Zemlje pretresla strašna katastrofa in se je zlo začelo širiti po svetu! Noči so postale dolge in mrzle in v temi so se po gozdu sprehajala neprijazna in strašna bitja, ki so zatavala v vas. Prispelo od nekod Zmaj in se navadil, da krade rdeče deklice in vaščanom odnaša vse dragoceno. Škodljiv in požrešen Baba Yaga, ki je priletel na minomet iz daljnih gozdov, je zmedel misli prebivalcev in celo nekateri so opustili svojo obrt ter odšli v gozd ropat in tam ustanovili tolpo. Zlobneži so se srečali Goblin, ki se je znal spreminjati v drevesa in grmovje, je začel opazovati miroljubne vaščane in služiti roparjem ter vohati, ali dobri fantje kaj nameravajo rešiti njihova naselja zlih duhov. Dobri fantje in lepe dekle, utrujeni od napadov roparjev in strašnih smrti v rokah groznih Drzni enooki, zbral zlato in povabil slavnega rokoborca ​​iz sosednjega mesta - Ivan carjevič, ki je obljubil, da bo vas rešil roparjev. Na jasi v gozdu je Ivana rešil pred gotovo smrtjo Sivi volk, ki je ujel v roparsko past Roparjev. V zameno je volk obljubil, da bo carjeviča obvestil o različnih gozdnih zlih duhovih. Mimo je šel slavni zdravilec Vasilisa Modra, in ko je videla težave, je ostala negovati stanovalce, ki so trpeli zaradi napadov drznih. Za gozdom se je pojavila črna palača, v kateri se je po govoricah naselil Koschei Nesmrtni, vsak večer je obiskoval vasi in čaral Dobrce in Rdeče Device, da si ne bi drznile ubogati njegovih ukazov, vse bi naredile tako, kot je rekel. In se naselil v Gozdu brez življenja Maček Baiyun, in vsi, ki so ga srečali, so po njegovih pripovedih zaspali ali umrli od njegovih železnih krempljev.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Far Far Away kraljestvo

Kot že vidite, so igralci razdeljeni v več skupin:

  • civilisti (Dobri prijatelji, Rdeče deklice, Ivan Tsarevich, Sivi volk in Vasilisa Modra)
  • roparji (sami roparji, pa tudi Baba Yaga in Leshy)
  • neodvisen (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

Cilj igre, kot je omenjeno zgoraj, je ostati živ in zmagati. Nasprotniki morajo tako ali drugače zapustiti igro, prav tako neodvisni morajo ostati živi do konca igre. Igra ima zlato, nekakšno igralno valuto, ki jo igralci zaslužijo samo znotraj igre. Zmagovalci prejmejo zlato. Več kot je zlata, višja je igralčeva ocena.

Nekoliko podrobneje se bom ustavil pri opisu likov.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Dober kolega

"Novi epiki". Za razvijalce, operaterje in radovedneže
Red Maiden

Dober kolega и Red Maiden - najbolj razširjena in glavna vloga v igri. To so civilisti, ki ponoči spijo, podnevi pa delajo. Ponoči jih napade eden od roparjev, kača Gorynych in druge vloge, in Vasilisa Modra jih ozdravi. Z majhno verjetnostjo lahko Good Fellow ali Rdeča Devica preživita napad brez škode (morda bi pri tem izgubila zlato), vendar bodo naslednji dan po napadu vsi prepoznali igralčev vzdevek. Ponoči ti igralci ne delajo nobenih potez, ampak analizirajo situacijo v igri na podlagi sporočil v klepetu igre. Tekom dneva se ti igralci z glasovanjem odločijo, kateri od njih ni Good Fellow ali Rdeča Devica. Igralec, za katerega je glasovala večina drugih igralcev, zapusti igro, preostali igralci prejmejo ali izgubijo zlato. Če igralci nikogar ne izberejo z večino glasov, noben igralec ne bo usmrčen.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Ivan carjevič

Ivan carjevič - sprva anonimni zagovornik civilistov. Ponoči preverja vloge drugih igralcev, saj pozna samo enega svojega zaveznika - sivega volka. Z neposredno udeležbo sivega volka (ki lahko preveri tudi vloge drugih igralcev) lahko Ivan Tsarevich namesto preverjanja ponoči ubije drugega lika. Če Ivan Tsarevich kot rezultat preverjanja vidi vlogo dobrega kolega ali rdeče deklice v igralcu, jih lahko povabi k sebi in jim predstavi sivega volka ter druge dobre prijatelje in rdeče deklice. V Ivana se lahko vmeša Žaba princesa, ki ga lahko zapelje ponoči, podnevi pa ne razkrije njegove vloge drugim igralcem. Če Ivan sam odkrije žabjo princeso, jo lahko povabi, da se pridruži civilistom, če pa princesa zavrne, umre v Ivanovih rokah. Kača-Gorynych lahko posega tudi v preglede Ivana-Carjeviča, vendar bo za razliko od žabje princese čez dan drugim igralcem povedal, kateri od njih je Ivan-Carevič. Čez dan se Ivan Tsarevich ne razlikuje od drugih dobrih prijateljev.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Sivi volk

Sivi volk - pomočnik Ivana Tsareviča, katerega izostren voh pomaga Ivanu najti druge dobre prijatelje in rdeče deklice. Sivi volk pove tem igralcem, kdo je Ivan Tsarevich, in obvešča tudi o drugih igralcih z vlogami Dobrih fantov in Rdečih devic. Če Volk odkrije roparja ali drugega sovražnika, o tem nemudoma obvesti Ivana Carjeviča, da lahko naslednjo noč ukrepa. Če volka napade žabja princesa, se ta spremeni v navadnega dobrega kolega in ne more nikogar nadzirati, princesa pa ne bo vedela, da je bil to pravzaprav sivi volk, saj volk ponoči ne spi. Toda sam volk bo tekom dneva ugotovil, kateri od igralcev je žabja princesa, in bo lahko poskušal prepričati preostale dobre prijatelje in rdeče deklice, ki jih je pripeljal k Ivanu carjeviču, da glasujejo za usmrtitev žabe. princesa Tudi naslednjo noč lahko poskuša anonimno prepričati Žabjo princeso na stran civilistov, da se nobenega od njih ne dotakne. Volk se lahko ponoči žrtvuje, da bi rešil Ivana Tsareviča ali Vasiliso Modro, če domneva, da bosta nenadoma padla pod napad roparjev ali ju je zombiral Koščej (Volk ima prirojeno odpornost na Koščejeve čare), vendar po požrtvovalnost Volk izpade iz igre.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Vasilisa Modra

Vasilisa Modra - igra za civiliste, vendar ne vedo zanjo, saj je Vasilisa zelo skromna. Tudi Vasilisa Modra, ko zdravi, ne postavlja vprašanj in kot dober zdravnik zdravi vse. Toda če Koschey, Likho ali Leshy pijejo njeno zdravilo, ne bodo živeli dlje kot en dan, saj Vasilisa zdravi samo ljudi. Zdravilo Vasilise Modre tudi ne bo pomagalo kači Gorynych ali Cat-Bayun, vendar tudi ne bodo prinesle škode. Prav tako se Kot-Bayun ponoči ne dotika Vasilise, saj Vasilisa ne gre v gozd brez življenja, da bi kupila zdravilna zelišča. Poleg tega ženski čari žabje princese ne delujejo na Vasilisi. Če bi dvakrat poskušali ubiti njenega pacienta, bi bila medicina nemočna. Vasilisa vas ne bo rešila pred čarobnimi napadi, na primer pred prekletstvom Dashing. Čez dan se Vasilisa obnaša kot Rdeča Devica in le bežen, rahlo žalosten pogled lahko nekoliko namigne, da je najboljša zdravilka v daljnem kraljestvu.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Prevarant

Razbojniki, za razliko od vseh dosedanjih vlog, se poznata, saj živita v istem Brlogu, poznata pa tudi Leshyja in Babo Yago, tako da lahko delujeta usklajeno že od prvega giba. Toda samo vodja tolpe izvaja akcije ponoči in ne glasuje podnevi, ostali Roparji pa se pridno pretvarjajo, da so dobri fantje in rdeče deklice. Če vodja iz kakršnega koli razloga zapusti igro, eden od preostalih Rogues takoj prevzame njegovo mesto. Najprej poskušajo Roparji onemogočiti Ivana Tsareviča, dokler ne zbere dovolj sil Dobrih Fellows in Rdečih devic, da bi se čez dan aktivno spopadli z Roparji.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Goblin

Goblin ponoči vohuni za Roparji in jih obvešča o vlogah, ki jih najdejo v njihovem Brlogu, podnevi pa ne voli, saj ne živi v vasi. Lahko pa drugi igralci glasujejo za Leshyja in ga tako usmrtijo. Ker Leshy prihaja iz močvirij, ga Žaba princesa ne more premamiti, in če poskusi, bo Leshy označil njeno hišo, vaščani pa bodo izvedeli, kdo je v resnici. Leshem se ne bi smel bati Koščejevega uroka, a Vasilisa ga lahko ozdravi do smrti. Če bo Kot-Bayun poskušal napasti Leshyja, tvega, da bo izgubil svoje železne kremplje, nato pa bo moral Kot žrtev uspavati samo s svojim predenjem.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Baba Yaga

Baba Yaga Deluje tudi skupaj z Roparji in ponoči čara: drugim igralcem lahko pošlje bolezen ali zaščiti enega od svojih zaveznikov pred napadom. Njeno čarovništvo je celo močnejše od Likhovega prekletstva. Čez dan je aktivna tudi Baba Yaga: nikogar pod njeno zaščito ni mogoče usmrtiti niti z večino glasov. Vendar pa je zaloga čarobnih korenin za dnevno zaščito omejena, tako da Baba Yaga ne more zaščititi nikogar, vključno s seboj, več kot trikrat na igro. Čez dan se Baba Yaga pretvarja, da je navadna Rdeča deklica in glasuje z vsemi drugimi.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Zmaj

Zmaj ponoči preletava vasi, gozdove in močvirja ter se ropa in razkriva vlogo oropanih podnevi. Čez dan kača spi, zato ne glasuje, lahko pa se usmrti z večino glasov. Kača je zelo nevarna za vse, še posebej za Roparje in Ivana Tsarevicha. Kači je vseeno, koga bo oropal, a če jo odkrijeta Volk ali Leshy, lahko postane dragocen zaveznik. Če kačo ponoči ubijete, lahko z nekaj verjetnosti prejmete zelo dragocen predmet - kačjo kožo, ki bo lastnika enkrat zaščitila pred fizičnim napadom.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Drzni enooki

Drzni enooki ponoči ubije vse, ki se mu znajdejo na poti, in kogar ne more ubiti (Leshy, Kota-Bayun ali Serpent Gorynych), preklinja, tako da vsak, ki poskuša komunicirati s prekletim tisto noč, umre čez dan. . V tem primeru umre tudi sam preklet, le Kot-Bayun ne umre, ki preprosto gre v posteljo, da pridobi moč, naslednjo noč pa preskoči svojo vrsto. Samo Baba Yaga lahko reši Likha pred prekletstvom. Prekletstvo ne vpliva na tistega, ki je premagal Cat-Bayuna: on, tako kot Cat, preprosto gre v posteljo in preskoči zavoj.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Žabja princesa

Žabja princesa ne more zmagati v igri, lahko pa zasluži veliko denarja z zapeljevanjem drugih igralcev ponoči. Skušani zgreši svoj čas. Žaba ne more zapeljati Vasilise Modre, prav tako bi se morala izogibati Leshyju, ki jo bo naslednji dan vsem izdal. Če Ivan carjevič ali vodja roparjev najdeta žabo, lahko na svojo stran povabita civiliste ali roparje, medtem ko Ivan ne bo sprejel žabje zavrnitve, a vodja ni tako izbirčen. Toda princesa je precej zvita, lahko postane dvojna agentka, saj kljub temu, da ne more zmagati sama, je to odlična priložnost za pridobitev zlata, saj se možnosti preživetja do konca igre močno povečajo! Čez dan se Žaba princesa pretvarja, da je Rdeča devica in glasuje z vsemi skupaj.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Koschei Nesmrtni

Koschei Nesmrtni živi v svojem gradu. Ponoči se sprehaja po okoliških vaseh in zombifikira dobre prijatelje in rdeče deklice, ki pridejo v njegovo službo in brezpogojno izpolnjujejo vse ukaze. Z zavrnitvijo izvršitve ukaza, na primer glasovanja čez dan drugače, kot je povedal Koščej, ali pisanja sporočil v klepetu čez dan, če je Koščej to prepovedal, Koščejev služabnik umre. Tako lahko Koschey čez dan vpliva na rezultate glasovanja, čeprav sam ne glasuje. Če je Koshchei ubit, umrejo tudi vse njegove žrtve. Vasilisa lahko ozdravi služabnika Koščeja, ki se nato vrne v prvotno vlogo. Kača-Gorynych in volk imata prirojeno odpornost na zombifikacijo, zato ju Koschey, ne glede na to, koliko hoče, ne more spremeniti v svojo službo. Volk lahko pomaga Ivanu ali Vasilisi iz težav tudi tako, da se žrtvuje. Saved by the Wolf pridobi odpornost na volka proti zombificiranju.

"Novi epiki". Za razvijalce, operaterje in radovedneže
Maček Baiyun

Maček Baiyun živi v gozdu, lovi ponoči. Čez dan spi v svojem duplu, zato se ne udeležuje glasovanja. Čez dan pa ga je mogoče usmrtiti z večino glasov. Mačka lahko napade na dva načina: prede - in potem njena žrtev zaspi in ponoči ne more hoditi, naslednji dan pa ne more glasovati - ali pa naravnost ubije z železnimi kremplji. Napad s kremplji ne deluje na Snake-Gorynych in po napadu na Leshyja lahko mačka sploh ostane brez krempljev! Dashing ne more prekleti Mačka, ki bo po prekletstvu eno noč le prespal. Če komu uspe premagati Kota-Bayuna, bo ozdravljen kakršne koli bolezni, vključno s prekletstvom Likha. Ta sposobnost Cat ostane pri igralcu do konca igre. Koščejevi služabniki čez dan ne morejo glasovati za Mačka, lahko pa posredno ugotovijo, kdo je Maček, ne da bi Koščeja o tem obvestili. Kot-Bayun ne sklepa zavezništev z Ivanom ali Roparji, zato so oni glavna tarča Kota.

Uporabljene tehnologije

Za pisanje igre sem izbral brezstrežniško računalniško tehnologijo, ki temelji na OpenFaaS, saj je dovolj enostavna za organizacijo igre, hkrati pa dovolj napredna za pisanje kompleksnih pravil igre brez nepotrebnih zapletov. Uporabil bom tudi gručo Kubernetes, saj ta način uvajanja aplikacij omogoča precej enostavno in zanesljivo hitro uvajanje in možnost enostavnega prilagajanja. Če želite ustvariti logiko igre, se lahko spopadete le z OpenFaaS, vendar bom poskušal narediti tudi Storyteller kot ločen vsebnik za primerjavo kompleksnosti izvedbe. Kot glavni programski jezik za mikrostoritve in funkcije sem izbral Go, saj ga v prostem času že dolgo študiram, da bi nadomestil Perl, js pa bo uporabljen na podlagi določenega okvira za interakcijo uporabnika z mikrostoritvami in funkcijami. O končni odločitvi vam bom povedal v ustreznem članku v seriji. Za medsebojno komunikacijo funkcij sem izbral NATS.io, ker sem se z njim že srečal in ima dokaj enostavno integracijo v Kubernetes.

Obvestilo

  • Predstavitev
  • Postavitev razvojnega okolja, razčlenitev naloge na funkcije
  • Zaledno delo
  • Frontend delo
  • Postavitev CICD, organizacija testiranja
  • Začnite poskusno igro
  • Rezultati

Vir: www.habr.com

Dodaj komentar