"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek

Számos olvasói kérésnek köszönhetően nagy cikksorozat indul a szerver nélküli számítástechnika valódi alkalmazás kifejlesztésére való felhasználásáról. Ez a ciklus magában foglalja az alkalmazások fejlesztését, tesztelését és a végfelhasználókhoz való eljuttatását modern eszközök segítségével: mikroszolgáltatási alkalmazásarchitektúra (szerver nélküli verzióban, OpenFaaS), klaszter Kubernetes alkalmazások telepítéséhez, adatbázishoz MongoDB, amely a felhőfürtözésre és -alkalmazásokra, valamint a felhőbuszra összpontosít NATS. Az alkalmazás megvalósítja az „Epics” játékot, a „Mafia” népszerű társasjáték egyik változatát.

Mik azok az „eposzok”?

Ez a „Mafia”, más néven „vérfarkas” játék egy változata. Egy csapatjátékon alapul, amelyben a résztvevőknek lépésről lépésre meg kell tanulniuk, hogy ki kicsoda, és meg kell próbálniuk nyerni. Sajnos az online játék során a játék olyan fontos összetevője eltűnik, mint a személyes interakció, és a klasszikus „maffia” szabályai meglehetősen egyszerűek, ezért a nem-lineárisabb és érdekesebb játékmenet érdekében általában más karaktereket is hozzáadnak, de általában megmaradnak az eredeti „maffia” főbb jellemzői, például a nappal és éjszaka váltakozása, csak éjszakai mozgások, valamint a résztvevők közötti szövetségek. Egy másik fontos különbség az online játék között, hogy a fogadó (más néven Game Master, Storyteller) általában egy számítógépes program.

A játék leírása

Az általam megvalósítani kívánt játékszabályok egy régi irc botból származnak, amelyet körülbelül 10 éve mentettem a személyes archívumba. Az "Epics"-nek van egy háttértörténete, amellyel minden játék kezdődik:

A távoli királyságban, a harmincadik államban, a hét tengeren túl számos falu élt és élt, és bennük Jó fickók и Gyönyörű lányok. Kenyeret vetettek, és a környező erdőbe mentek gombászni és bogyót szedni... És ez így folytatódott évszázadról századra, mígnem szörnyű katasztrófa rázta meg a Földet, és a gonosz el nem kezdett terjedni az egész világon! Az éjszakák hosszúak és hidegek lettek, a sötétben pedig barátságtalan és szörnyű lények járkáltak az erdőben, és betévedtek a faluba. Valahonnan érkezett Sárkány és rászokott arra, hogy vörös leányokat lopjon, és mindent elvitt a falusiaktól, ami értékes. Káros és kapzsi Baba Yaga, amely messzi erdőkből mozsáron repült, megzavarta a lakosok elméjét, sőt néhányan feladták mesterségüket, és bementek az erdőbe rabolni, ott bandát alkotva. A gazemberek találkoztak Kobold, aki tudta, hogyan lehet fákká és bokrokká válni, elkezdte figyelni a békés falusiakat és kiszolgálni a rablókat, kiderítette, vajon a Jótársak tesznek-e valamit, hogy megszabadítsák településeiket a gonosz szellemektől. Jó fickók és gyönyörű lányok, belefáradtak a rablók portyáiba és szörnyű halálba a szörnyűek kezétől Lenyűgöző félszemű, aranyat gyűjtött és meghívott egy híres birkózót a szomszéd városból - Ivan Tsarevics, aki megígérte, hogy megszabadítja a falut a rablóktól. Egy erdő tisztásán Ivan megmentett a biztos haláltól Szürke farkas, aki a Rablók gödörcsapdájába esett. Cserébe a Farkas megígérte, hogy tájékoztatja a cárevicset a különféle erdei gonosz szellemekről. Egy híres gyógyító ment el mellette Bölcs Vaszilisas amikor látta a bajt, ott maradt ápolni a rohamokat elszenvedett lakókat. Az erdő mögött megjelent egy fekete palota, amelyben a pletykák szerint meg is telepedett Koschei a halhatatlanok, minden este bejárta a falvakat és megbabonázta a Jóbarátokat és Vörös Leányokat, hogy ne merjenek nem engedelmeskedni a parancsának, mindent úgy csinálnak, ahogy mondta. És letelepedett az Élettelen Erdőben Baiyun macska, és mindenki, aki találkozott vele, elaludt a meséi után, vagy meghalt a vaskarmaiban.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Távoli királyság

Mint már látható, a játékosokat több csoportra osztják:

  • civilek (Good Fellows, Red Maidens, Ivan Tsarevich, Gray Wolf és Vasilisa the Wise)
  • rablók (maguk a rablók, valamint Baba Yaga és Leshy)
  • független (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Halhatatlan, Cat-Bayun)

A játék célja, ahogy fentebb említettük, az életben maradás és a győzelem. Az ellenfeleknek így vagy úgy el kell hagyniuk a játékot, és a függetleneknek is életben kell maradniuk a játék végéig. A játék aranyat tartalmaz, egyfajta játékpénzt, amelyet a játékosok csak a játékon belül keresnek. A nyertesek aranyat kapnak. Minél több arany, annál magasabb a játékos értékelése.

Kicsit részletesebben kitérek a karakterek leírására.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Jó fickó

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Red Maiden

Jó fickó и Red Maiden - a játékban a legelterjedtebb és főszerep. Ezek civilek, akik éjjel alszanak, nappal pedig dolgoznak. Éjszaka megtámadja őket az egyik rabló, a Gorynych kígyó és más szerepek, és Bölcs Vaszilisa meggyógyítja őket. Kis valószínűséggel a Good Fellow vagy a Red Maiden sérülés nélkül túléli a támadást (esetleg aranyat veszít a folyamat során), azonban a támadást követő napon mindenki felismeri a játékos becenevét. Éjszaka ezek a játékosok nem mozognak, hanem a játék chat üzenetei alapján elemzik a játék helyzetét. A nap folyamán ezek a játékosok szavazással döntik el, melyikük nem a Good Fellow vagy a Red Maiden. Az a játékos, akire a többi játékos többsége szavazott, elhagyja a játékot, a többi játékos aranyat kap vagy veszít. Ha a játékosok nem választanak ki senkit többségi szavazással, egyetlen játékost sem végeznek ki.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Ivan Tsarevics

Ivan Tsarevics - kezdetben a civilek névtelen védelmezője. Éjszaka ellenőrzi a többi játékos szerepét, mivel csak egy szövetségesét ismeri - a Szürke Farkast. A Szürke Farkas közvetlen részvételével (aki más játékosok szerepét is ellenőrizheti) Ivan Tsarevics az ellenőrzés helyett egy másik karaktert ölhet meg éjszaka. Ha az ellenőrzés eredményeként Ivan Tsarevics egy jófiú vagy egy vörös lány szerepét látja egy játékosban, akkor meghívhatja őket a helyére, és bemutathatja őket a Szürke Farkasnak és a többi jótársnak és vörös lánynak. Ivánt megzavarhatja a Békahercegnő, aki éjszaka el tudja csábítani, anélkül, hogy nappal felfedné a szerepét a többi játékos előtt. Ha Iván maga fedezi fel a Békahercegnőt, meghívhatja a civilek közé, de ha a hercegnő ezt megtagadja, Iván kezeitől hal meg. A Serpent-Gorynych is megzavarhatja Ivan-Tsarevics csekkjét, de a Békahercegnővel ellentétben a nap folyamán elmondja a többi játékosnak, hogy melyikük Ivan-Tsarevics. Napközben Ivan Tsarevics nem különbözik a többi jófiútól.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
szürke farkas

szürke farkas - Ivan Tsarevics asszisztense, akinek éles szaglása segít Ivannak találni más jóbarátokat és vörös lányokat. Szürke Farkas elmondja ezeknek a játékosoknak, hogy ki az Iván, a cárevics, és tájékoztat a többi játékosról is, akik a Good Fellows és a Red Maidens szerepét töltik be. Ha a Farkas rablót vagy más ellenséget fedez fel, azonnal értesíti Ivan Tsarevicset, hogy másnap este intézkedhessen. Ha a Farkast megtámadja a békahercegnő, közönséges jófiúvá válik, és nem tud senkit ellenőrizni, és a hercegnő nem fogja tudni, hogy valójában a Szürke Farkas volt, mivel a Farkas nem alszik éjjel. Maga a Farkas azonban a nap folyamán megtudja, hogy melyik játékos a Békahercegnő, és megpróbálhatja rávenni a többi Jótársat és Vörös Leányt, akiket Ivan Tsarevicsnek hozott, hogy szavazzanak a Béka kivégzésére. Hercegnő. Másnap este is megpróbálhatja névtelenül rávenni a békahercegnőt a civilek oldalára, hogy ne érjen hozzájuk. A farkas feláldozhatja magát éjszaka, hogy megmentse Ivan Carevicset vagy Bölcs Vasziliszát, ha azt feltételezi, hogy hirtelen rablók támadása alá esnek, vagy Koscsej zombivá tette őket (a farkasnak veleszületett immunitása van Koscsej bájaival szemben), de miután az önfeláldozás a Farkas kiesik a játékból.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Bölcs Vaszilisa

Bölcs Vaszilisa - civileknek játszik, de nem tudnak róla, mivel Vasilisa nagyon szerény. A Bölcs Vaszilisza is, amikor kezel, nem kérdez, és mint egy jó orvos, mindenkit kezel. De ha Koschey, Likho vagy Leshy issza a gyógyszerét, nem élnek tovább egy napnál, mivel Vasilisa csak embereket kezel. A Bölcs Vasilisa gyógyszere sem segít a kígyón, a Gorynych-en vagy a Cat-Bayun-on, de nem is okoznak kárt. Ezenkívül Kot-Bayun éjszaka nem érinti Vasilisát, mivel Vasilisa nem megy az Élettelen erdőbe gyógynövényeket vásárolni. Ráadásul a békahercegnő női varázsai nem működnek Vasilisán. Ha kétszer megpróbálnák megölni a páciensét, az orvostudomány tehetetlenné válna. Vasilisa nem ment meg a mágikus támadásoktól, például a Dashing átoktól. Napközben Vasilisa úgy viselkedik, mint egy Vörös Lány, és csak egy röpke, kissé szomorú tekintet utalhat arra, hogy ő a legjobb gyógyító a Távoli Királyságban.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Gazember

Rablók, minden korábbi szereppel ellentétben ismerik egymást, hiszen ugyanabban az odúban élnek, és ismerik Leshyt és Baba Yagát is, így már az első lépéstől fogva együtt tudnak játszani. De csak a banda vezére hajt végre akciókat éjszaka, és nem szavaz nappal, míg a többi rablók szorgalmasan úgy tesznek, mintha jóbarátok és Red Maidens lennének. Ha a Vezető bármilyen okból kilép a játékból, a megmaradt Zsiványok egyike azonnal átveszi a helyét. Először is, a rablók megpróbálják letiltani Ivánt, a cárevicset, amíg össze nem gyűjt elég erőt a Good Fellows-tól és a Red Maidens-től, hogy a nap folyamán aktívan szembeszálljon a rablókkal.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Kobold

Kobold éjszaka kémkedik a Rablók után, tájékoztatja őket az odújukban talált szerepekről, de nappal nem szavaz, mivel nem lakik a faluban. Más játékosok azonban szavazhatnak Leshyre, és így kivégezhetik. Mivel Leshy a mocsarakból származik, a Békahercegnő nem tudja elcsábítani, és ha megpróbálja, Leshy megjelöli a házát, és a falubeliek megtudják, ki is ő valójában. Leshemnek nem kell félnie Koscsej varázslatától, de Vaszilisa halálra tudja gyógyítani. Ha Kot-Bayun megpróbálja megtámadni Leshyt, azt kockáztatja, hogy elveszíti vaskarmait, és Kotnak csak a dorombolásával kell elaltatnia az áldozatokat.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Baba Yaga

Baba Yaga Együtt dolgozik a rablókkal, és éjszaka varázsol: vagy betegséget küldhet más játékosoknak, vagy megvédheti egyik szövetségesét a támadásoktól. Boszorkánysága még Likh átkánál is erősebb. Napközben Baba Yaga is aktív: senkit, aki a védelme alatt áll, még többségi szavazattal sem lehet kivégezni. A nappali védelem mágikus gyökerei azonban korlátozottak, így a Baba Yaga játékonként háromnál többször nem védhet meg senkit, beleértve önmagát is. Napközben Baba Yaga közönséges Red Maidennek adja ki magát, és mindenkivel együtt szavaz.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Sárkány

Sárkány éjszaka falvak, erdők és mocsarak felett repül, és rablásba kezd, felfedi a kirabolt napközbeni szerepét. Napközben a Kígyó alszik, így nem szavaz, de többségi szavazással kivégezhető. A kígyó nagyon veszélyes mindenkire, különösen a Rablókra és Ivan Tsarevicsre. A kígyót nem érdekli, kit rabol ki, de ha a Farkas vagy a Leshy felfedezi, értékes szövetségessé válhat. Ha éjszaka megölöd a kígyót, nagy valószínűséggel egy nagyon értékes tárgyat kaphatsz - a Kígyóbőrt, amely egyszer megvédi gazdáját a fizikai támadástól.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
híresen félszemű

híresen félszemű éjszaka mindenkit megöl, aki az útjába kerül, és akit nem tud megölni (Leshy, Kota-Bayun vagy a kígyó Gorynych), átkozza, hogy aki még aznap este megpróbál kommunikálni az átkozottal, az nappal meghal. . Maga az elátkozott is ebben az esetben meghal, csak Kot-Bayun nem hal meg, aki egyszerűen lefekszik erőre kapni, másnap este kihagyva a sorát. Csak Baba Yaga mentheti meg Likh-t az átoktól. Az átok nem érinti azt, aki legyőzte a Cat-Bayunt: ő, akárcsak a macska, egyszerűen lefekszik, és kihagy egy kört.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Béka hercegnő

Béka hercegnő nem nyerheti meg a játékot, de sok pénzt kereshet azzal, hogy éjszaka elcsábítja a többi játékost. A megkísértett kihagyja a sorát. A béka nem tudja elcsábítani Bölcs Vasziliszát, és kerülnie kell Leshy-t is, aki másnap mindenkinek elárulja. Ha Ivan cárevics vagy a rablók vezére megtalálja a békát, akkor civileket vagy rablókat hívhatnak maguk mellé, míg Iván nem fogadja el a Béka elutasítását, de a Vezér nem olyan válogatós. De a hercegnő elég ravasz, kettős ügynök válhat belőle, mert annak ellenére, hogy egyedül nem tud nyerni, ez kiváló esély az aranyszerzésre, mert nagyban megnő a túlélés esélye a játék végéig! Napközben a békahercegnő úgy tesz, mintha a Vörös Leány lenne, és mindenkivel együtt szavaz.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Koschei a halhatatlanok

Koschei a halhatatlanok kastélyában lakik. Éjszakánként végigsétál a környező falvakon, és elzombizálja a Good Fellow-okat és a Red Maideneket, akik szolgálatába állnak, és megkérdőjelezhetetlenül teljesítenek minden parancsot. Ha nem hajlandó végrehajtani egy parancsot, például, hogy napközben másként szavazzon, mint amit Koscsej mondott, vagy hogy napközben üzeneteket írjon a chatbe, ha Koscsej megtiltotta, Koscsej szolgája meghal. Így Koschey a nap folyamán képes befolyásolni a szavazás eredményét, bár ő maga nem szavaz. Ha Koscsejt megölik, az összes áldozata is meghal. Vaszilisa meggyógyíthatja Koscsej szolgát, aki ezután visszatér eredeti szerepébe. A Kígyó-Gorynych és a Farkas veleszületett immunitása van a zombizással szemben, így Koschey, bármennyire is akarja, nem tudja őket szolgálatába állítani. A Farkas önmaga feláldozásával is kisegítheti Ivant vagy Vasilisát a bajból. A Saved by the Wolf Wolf immunitást szerez a zombizással szemben.

"Új eposzok". Fejlesztőknek, operátoroknak és kíváncsi embereknek
Baiyun macska

Baiyun macska erdőben él, éjszaka vadászik. Napközben az üregében alszik, így nem vesz részt a szavazásban. Napközben azonban többségi szavazással kivégezhetik. A macska kétféleképpen támadhat: dorombol – majd áldozata elalszik és éjszaka nem tud járni, másnap pedig nem tud szavazni – vagy egyenesen vaskarmokkal öl. A karmokkal való támadás nem működik a Snake-Gorynych-en, és Leshy megtámadása után a macska egyáltalán karmok nélkül maradhat! A Dashing nem átkozhatja meg a macskát, aki az átok után egyszerűen aludni fog egy éjszakát. Ha valakinek sikerül legyőznie Kota-Bayunt, minden betegségből meggyógyul, beleértve Likh átkát is. Ez a Cat képesség a játék végéig a játékosnál marad. Koscsej szolgái napközben nem szavazhatnak a macskára, de közvetve megtudhatják, ki a macska anélkül, hogy erről Koscsejt értesítenék. Kot-Bayun nem köt szövetséget Ivannal vagy a rablókkal, így ők az elsődleges célpontok Kot számára.

Használt technológiák

A játék megírásához az OpenFaaS-re épülő szerver nélküli számítástechnikát választottam, mivel elég egyszerű a játék megszervezéséhez, ugyanakkor kellően fejlett ahhoz, hogy bonyolult játékszabályokat írjon fel felesleges bonyodalmak nélkül. Kubernetes-fürtöt is fogok használni, mivel az alkalmazások telepítésének ezzel a módszerével meglehetősen egyszerű és megbízható a gyors telepítés és a könnyű méretezhetőség. A játék logikájának kialakításához csak OpenFaaS-sel lehet boldogulni, de megpróbálom a Storyteller-t is külön konténerként elkészíteni, hogy összehasonlítsam a megvalósítás bonyolultságát. A mikroszolgáltatások és funkciók fő programozási nyelveként ezt választottam Go, mivel szabadidőmben sokáig tanulmányozom, hogy lecseréljem a Perl-t, és a js-t egy bizonyos keret alapján fogják használni a mikroszolgáltatásokkal és funkciókkal való felhasználói interakcióhoz. A végső döntésről a sorozat megfelelő cikkében fogok mesélni. A funkciók egymás közötti kommunikálásához a NATS.io-t választottam, mert korábban már találkoztam vele, és viszonylag könnyen integrálható a Kubernetesbe.

Közlemény

  • Bevezetés
  • A fejlesztői környezet kialakítása, a feladat funkciókra bontása
  • Háttérmunka
  • Frontend munka
  • CICD felállítása, tesztelés szervezése
  • Indítson próbajátékot
  • Eredményei

Forrás: will.com

Hozzászólás