„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek

Olvasóink kérése alapján egy nagy cikksorozatot indítunk a serverless számítási technológia alkalmazásáról a valós alkalmazások fejlesztésére. Ebben a cikksorozatban áttekintjük az alkalmazás fejlesztését, tesztelését és a végfelhasználókhoz való eljuttatását modern eszközök felhasználásával: a mikroszolgáltatások architektúráját (serverless változatban, az alapja OpenFaaS), klaszter kubernetes az alkalmazás telepítéséhez, adatbázisokat MongoDB, amelyek felhőalapú klaszterezésre és alkalmazásra orientáltak, valamint felhőbuszt NATS. Az alkalmazás a „Byliny” játékot valósítja meg, amely a népszerű szalonjáték, a „Mafia” egyik változata.

Mi az a „Byliny”?

Ez a „Mafia”, más néven „Farkasok” játéknak egy változata. Az alapja a csapatjáték, ahol a résztvevők lépésről lépésre felfedezik, ki kicsoda, és megpróbálnak győzni. Sajnos, amikor online játszanak, elveszik a játék egyik fontos eleme, a személyes interakció, és a klasszikus „Mafia” szabályai viszonylag egyszerűek, ezért általában más karaktereket adnak hozzá a még érdekesebb és nem-lineárisabb játékfolyamat érdekében, de az alapvető vonásokat, például a nappal és éjjel váltakozást, az éjszakai lépéseket, valamint a résztvevők közötti szövetségeket megőrzik. Ezenkívül az online játék egyik fontos különbsége, hogy a játékvezető (aki egyben a Játék Mestere, Mesélő) általában egy számítógépes program.

A játék leírása

A játék szabályai, amelyet meg szeretnék valósítani, egy régi irc-botból származnak, amelyet kb. 10 éve őrizgetek a személyes archívumban. A „Byliny”-nak van egy előzménye, amely minden játék kezdetén megtalálható:

A három királyságban, a harmincadik államban, a hét tenger mögött, több kis falu élt, ahol Jó legények és Szép leányok. Kenyértermeltek, és jártak a közeli erdőbe gombáért és bogyókért… Így folyt ez évszázadról évszázadra, míg egy szörnyű katasztrófa meg nem rázta a Földet, és a gonosz el nem kezdett terjedni a világban! Az éjszakák hosszúak és hidegek lettek, a sötétségben félelmetes és rossz teremtmények kóboroltak az erdőben és besétáltak a faluba. Valahonnan megérkezett a Hármas Sárkány és elkezdte elrabolni a Szép leányokat és mindent elvenni a falusiaktól. A káros és kapzsi Baba-Jaga, aki seprűjével a távoli erdőkből érkezett, megbontotta a falusiak értelmét, és még néhányan is elhagyták mesterségüket és elmentek az erdőbe rablásra, ott egy bandát alakítva. A vezérek találkoztak Leyshego, aki fává és bokorrá tudott változni, figyelte a békés falusiakat, és a rablóknak segített, kiszimatolva, hogy a Jóképű Legények készülnek-e valamire, hogy megszabadítsák településeiket a gonosztól. A Jóképű Legények és a Szép Leányok, akik fáradtak a Rablók támadásaitól és a borzalmas haláltól, amelyet a félelmetes Egyszemű Rontás, összegyűjtötték az aranyat, és meghívtak egy híres harcost a szomszéd városból — Iván-Cárevic, aki megígérte, hogy megszabadítja a falut a rablóktól. Az erdőben Iván megmentette a közelgő pusztulástól Szürke Farkas, aki a rablók csapdájába esett. Cserébe a Farkas megígérte, hogy értesíti a Cárevicet a különböző erdei gonoszokról. Egy híres gyógyító, Vasilisa A Bölcs, amikor meglátta a bajt, maradt, hogy ápolja a rablások alatt sérült falusiakat. Az erdő mögött megjelent egy fekete palota, ahol állítólag Kócsag A Halhatatlan, minden éjjel meglátogatta a falvakat és varázslattal sújtotta a Jóképű Legényeket és a Szép Leányokat, hogy ne merjenek ellentmondani az utasításainak, mindent úgy tettek, ahogyan ő mondta. A Holt Erdőben pedig megszállt Macska-Bajun, és mindenki, aki találkozott vele, mély álomba merült az ő meséitől, vagy meghalt a vas karmaitól.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
A Három Földrészen

Ahogy már látszik, a játékosok több csoportra oszlanak:

  • békés falusiak (Jóképű Legények, Szép Leányok, Iván-Cárevic, Szürke Farkas és Vasilisa A Bölcs)
  • rablók (maga a rabló, valamint Baba-Jaga és Leyshego)
  • függetlenek (Zmey-Horinych, Egyszemű Rontás, Hercegnő-Béka, Kócsag A Halhatatlan, Macska-Bajun)

A játék célja, ahogy már említettem, életben maradni és győzni. Az ellenfeleknek távozniuk kell a játékból, a függetleneknek pedig szintén életben kell maradniuk a játék végéig. A játékban arany található, egyfajta játékvaluta, amelyet a játékosok csak a játék során szereznek. A nyertesek aranyat kapnak. Minél több arany van, annál magasabb a játékos rangja.

Részletesebben is beszélek a karakterekről.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Jóképű Legény

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Szép Leány

Jóképű Legény és Szép Leány — a legelterjedtebb és alapvető szerep a játékban. Ezek békés állampolgárok, akik éjszaka alszanak, napközben pedig dolgoznak. Éjjel a rablók, a Sárkányfejű és más szerepek megtámadják őket, míg Vasilisa a Bölcs gyógyítja őket. Kis valószínűséggel a Kedves legény vagy a Piros leány életben maradhat a támadások alatt anélkül, hogy kárt szenvedne (lehetséges, hogy közben elveszítik a pénzüket), de másnap reggel mindenki megtudja a játékos álnevét a támadás után. Éjszaka ezek a játékosok nem végeznek lépéseket, hanem elemzik a játék helyzetét az játék chat üzenetei alapján. Napközben pedig ezek a játékosok szavazással döntik el, ki nem a Kedves legény vagy a Piros leány közül. Az a játékos, akire a többi játékos többsége szavazott, elhagyja a játékot, a maradók pedig kapnak vagy elveszítenek aranyat. Ha a játékosok nem választanak senkit a többségi szavazással, senki sem fog megölni.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Iván Cár

Iván Cár — eredetileg anonim védelmezője a békés állampolgároknak. Éjjel ellenőrzi más játékosok szerepét, mivel csak egy szövetségest ismer — a Szürke Farkast. A Szürke Farkas közvetlen részvételével (aki szintén ellenőrizheti más játékosok szerepét) Iván Cár, ahelyett, hogy ellenőrizne, éjszaka megölheti egy másik karaktert. Ha Iván Cár egy ellenőrzés során a Kedves Legényt vagy a Piros Leányt látja egy játékosnál, akkor meghívhatja őket magához, hogy bemutassa őket a Szürke Farkasnak és a többi Kedves Legénynek és Piros Leánynak. Ivan Cárt megzavarhatja a Hercegnő-Béka, aki éjszaka elcsábíthatja őt, anélkül, hogy más játékosoknak felfedné a szerepét napközben. Ha Iván felfedezi a Hercegnő-Békát, felajánlhatja neki, hogy csatlakozzon a békés állampolgárokhoz, de ha a Hercegnő visszautasítja, Ivan keze által elpusztul. A Sárkányfejű szintén zavarhatja Iván Cár ellenőrzéseit, de ellentétben a Hercegnő-Békával, napközben elmondja a többi játékosnak, ki közülük Iván Cár. Napközben Iván Cár semmiben sem különbözik a többi Kedves Legénytől.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Szürke Farkas

Szürke Farkas — Ivan Czarévics segítője, akinek éles szimata segít Ivannak megtalálni a többi Jó Legényt és Piros Lányt. A Szürke Farkas elmondja ezeknek a játékosoknak, ki Ivan Czarévics, és tájékoztatja őket a többi játékos szerepeiről, mint Jó Legények és Piros Lányok. Ha a Farkas betörőt vagy más ellenfelet észlel, azonnal értesíti Ivan Czarévicset, hogy a következő éjszaka intézkedjen. Ha a Farkasra rájön a Béka Hercegnő, ő egyszerű Jó Legénnyé változik, és nem tud senkit megvizsgálni, a Hercegnő pedig nem tudja, hogy valójában a Szürke Farkas az, mivel ő éjszaka nem alszik. Azonban a Farkas napközben megtudja, ki a játékosok közül a Béka Hercegnő, és próbálhatja meggyőzni a többi Jó Legényt és Piros Lányt, akiket Ivan Czarévicshez vezetett, hogy szavazzanak a Béka Hercegnő kivégzésére. A következő éjszaka próbálhatja titokban meggyőzni a Béka Hercegnőt, hogy a békés emberek oldalára álljon, hogy ne bántson meg senkit közülük. A Farkas éjszaka feláldozhatja magát, hogy megmentse Ivan Czarévicset vagy Vasilisa Preamudrát, ha úgy véli, hogy ők veszélybe kerülhetnek a betörők kezei alatt, vagy zombikká váltak Koszéj által (a Farkasnak veleszületett immunitása van Koszéj varázslataival szemben), de a Farkas a önfeláldozás után kiesik a játékból.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Vasilisa A Bölcs

Vasilisa A Bölcs — a békés emberek oldalán játszik, de ők nem tudnak róla, mivel Vasilisa nagyon szerény. Emellett Vasilisa Preamudra, amikor gyógyít, nem tesz fel kérdéseket, és mint egy jó orvos, mindenkit gyógyít. De ha a gyógyszerét Koszéj, Lihó vagy Leshiy issza meg, azoknak egy nappal sem élnek tovább, mivel Vasilisa csak embereket gyógyít. Zmey Gorynychnak vagy Kot-Bajunának a Vasilisa Preamudra gyógyszerei sem segítenek, de kárt sem okoznak. A Vasilisa éjjel nem érinti Kot-Bajun, mivel Vasilisa nem megy a Halott Erdőbe gyógyfüvekért. Ezenkívül a Béka Hercegnő női varázslatai sem hatnak Vasilisára. Ha a páciensét kétszer próbálják megölni, a medicina tehetetlen lesz. Vasilisa nem segít mágikus támadások, például Lihó átkai ellen sem. Napközben Vasilisa mint Piros Lány viselkedik, és csak egy pillanatnyi, kissé szomorú pillantás utalhat rá, hogy ő a legjobb gyógyító a Harmincadik Királyságban.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Betörő

Betörők, különbözően minden korábbi szereptől, ismerik egymást, mivel egy Logban élnek, és ismerik Leshiját és Baba Jagát, ezért azonnal összehangoltan tudnak cselekedni az első lépéstől kezdve. De csak a banda vezére cselekszik éjszaka és nem szavaz nappal, míg a többi Rabló szorgalmasan úgy tesz, mintha Jófiúk és Piros Lányok lennének. Ha a vezér valamilyen okból kiesik a játékból, a helyét azonnal az egyik megmaradt Rabló foglalja el. Elsősorban a Rablók arra törekednek, hogy megsemmisítsék Ivan-Tsarevichet, mielőtt elegendő erőt gyűjt a Jófiúk és Piros Lányok közül az aktív ellenálláshoz a Rablók ellen nappal.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Leshij

Leshij éjjel kémkedik a Rablók számára, értesítve őket a felfedezett szerepekről a Logjukban, de nappal nem szavaz, mert nem él a faluban. Más játékosok azonban szavazhatnak Leshijára, így ki is végezhetik őt. Mivel Leshija mocsárból származik, nem csábíthatja el a Hercegnőt-Béka, ha pedig megpróbálja, Leshija megjelöli a házát, így a falubeliek megtudják, ki is ő valójában. Leshijának nem kell félnie Koschej varázslataitól, de Vasilisa akár halálra is sebeit kezelheti őt. Ha Kot-Bajun megpróbálja megtámadni Leshiját, akkor kockáztatja, hogy elveszíti a vaskarmát, és utána csak dorombolással képes elaltatni az áldozatait.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Baba-Jaga

Baba-Jaga ugyanígy dolgozik együtt a Rablókkal, éjjel varázsol: képes vagy betegséget küldeni a többi játékosra, vagy megvédeni valakit a szövetségesei közül a támadástól. Az ő varázslata még erősebb, mint a Lihától származó átok. Nappal Baba Jaga is aktív: akit ő véd, azt még többségi szavazással sem lehet kivégezni. Azonban a napi védelmi varázslatának varázskörei korlátozottak, így Baba Jaga nem védhet senkit, beleértve saját magát is, háromnál több alkalommal a játék során. Nappal Baba Jaga egy szokványos Piros Lányként tűnik fel, és szavaz mindenkivel együtt.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Zmey-Gorynych

Zmey-Gorynych Éjjel falvak, erdők és mocsarak felett repked, és rablással foglalkozik, nappal pedig a kirabolt szerepét játssza. Nappal a Sárkány alszik, ezért nem szavaz, de a többségi szavazás miatt kivégzhetik. A Sárkány nagyon veszélyes mindenkire, különösen Rablókra és Iván Cárra. A Sárkánynak mindegy, kit rabol ki, de ha a Farkas vagy az Erdőszellem leleplezi, értékes szövetségessé válhat. Ha éjjel megölik a Sárkányt, van esély arra, hogy egy nagyon értékes tárgyat — Sárkánybőrt — kapjanak, ami egyszer megvédje a tulajdonosát a fizikai támadástól.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Egyszemű Kópé

Egyszemű Kópé éjjel mindenkit megöl, aki az útjába kerül, akit pedig nem tud megölni (Erdőszellemet, Cica-Bajuszt vagy a Sárkányt) — megátkoz, így aki megpróbál beszélni a megátkozottal aznap éjjel, halálra ítéltetik a következő nap folyamán. A megátkozott is meghal, de a Cica-Bajusz nem, ő csak lefekszik aludni, hogy pihenjen, kihagyva a következő éjszakát. Az átkot csak Baba-Jaga tudja törölni. Az átok nem érvényes arra, aki legyőzte a Cica-Bajuszt: ő, akárcsak a Cica, csak lefekszik aludni, kihagyva a következő fordulót.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Cárnő-Béka

Cárnő-Béka nem tud nyerni a játékban, viszont rengeteg pénzt kereshet, más játékosokat csábítva éjjel. A csábított játékos kihagyja a fordulót. A Béka nem tudja megszédíteni Vasilisa Prémudrát, és el kell kerülnie az Erdőszellemet, aki azonnal feljelenti a másnapi napra. Ha Iván Cár vagy a Rablók Vezére rátalál, felkérhetik, hogy álljon a békés emberek vagy a Rablók mellé, miközben Iván nem fogad el elutasítást, a Vezér viszont nem annyira válogatós. Ám a Cárnő elég ügyes, lehet dupla ügynök, mert hiába nem tud egyedül nyerni, — ez egy remek lehetőség aranyat gyűjteni, mivel az esélyek jelentősen nőnek a játék végéig való eljutáshoz! Nappal a Cárnő-Béka Vörös Leányként álcázza magát, és közösen szavaz a többiekkel.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Kócsag A Halhatatlan

Kócsag A Halhatatlan a kastélyában él. Éjjel a környező falvakban jár, és zombivá változtatja a Jó Fiatalokat és a Piros Leányokat, akik a szolgálatába állnak, és minden utasítást feltétel nélkül teljesítenek. Ha valaki megtagadja egy parancs végrehajtását, például ha másként szavazik napközben, mint ahogyan Kócsag mondta, vagy napközben üzeneteket küld a chatben, ha Kócsag ezt megtiltotta, akkor Kócsag Szolgája elpusztul. Így Kócsag képes befolyásolni a napközbeni szavazás eredményeit, még ha ő maga nem is szavaz. Ha Kócsagot megölik, minden áldozata is elpusztul. Vasilisa meggyógyíthatja Kócsag Szolgáját, aki ezután visszatér eredeti szerepéhez. Zmey-Gorynychnek és Farkasnak veleszületett immunitása van a zombivá változtatással szemben, így Kócsag minden igyekezete ellenére sem tudja őket a szolgálatába állítani. Ezenkívül a Farkas megmentheti Ivánt vagy Vasilisát, feláldozva önmagát. A Farkas által megmentettek Zombi-immunitást szereznek.

„Új Legendák”. Fejlesztőknek, üzemeltetőknek és kíváncsi embereknek
Macska-Bajun

Macska-Bajun az erdőben él, éjjel vadászik. Napközben a fészke mélyén alszik, így nem vesz részt a szavazásban. Azonban napközben a többségi szavazással halálra ítélhetik. A Macska kétféleképpen támadhat: dorombolva — ilyenkor áldozata elalszik, és nem tud éjjel járni, valamint másnap szavazni — vagy azonnal megölve, vas karmokkal. A karmokkal való támadás nem működik Zmey-Gorynych ellen, és ha a Macska Ljeshit támadja, akár még a karmait is elveszítheti! A Lihó nem tudja megátkozni a Macskát, aki a átok után csak egy éjszakát alszik. Ha valaki képes legyőzni a Macska-Bajunt, bármilyen betegségből és nyavalyából, beleértve a Lihó átkát is, meggyógyul. Ez a Macska képesség a játékosnál megmarad a játék végéig. Kócsag szolgái napközben nem szavazhatnak a Macskára, de közvetve megtudhatják, ki a Macska anélkül, hogy ezt Kócsagnak elmondanák. A Macska-Bajun nem szövetkezik Ivánnal vagy a Scelekkel, így ők a Macska számára elsősorban fontos célpontot jelentenek.

Használni kívánt technológiák

A játék fejlesztéséhez az OpenFaaS alapú serverless számítási technológiát választottam, mivel ez elég egyszerű a játék megszervezésére, ugyanakkor elég fejlett ahhoz, hogy bonyolult játékszabályokat írjak felesleges bonyodalmak nélkül. Emellett Kubernetes klasztert is használni fogok, mivel ez a módszer lehetővé teszi az alkalmazások egyszerű és megbízható telepítését, gyorsan és könnyen skálázhatók. A játékleírás létrehozásához elegendő lehet csak az OpenFaaS, de megpróbálom a Mesélőt külön konténerként készíteni, hogy összehasonlítsam a megvalósítás nehézségét. A mikroszolgáltatások és funkciók fő programozási nyelveként választottam Go, mivel már régóta tanulmányozom a szabadidőmben Perl helyett, és a felhasználók és a mikroszolgáltatások közötti interakciókhoz valamilyen keretrendszer alapú js-t fogok használni. Az végső döntésről a ciklus megfelelő cikkében fogok beszámolni. A funkciók közötti kommunikációhoz a NATS.io-t választottam, mivel már korábban is találkoztam vele, és az integrációja a Kubernetesbe elég könnyű.

Bejelentés

  • Bevezetés
  • Fejlesztési környezet telepítése, a feladatok funkciókra bontása
  • Backend munkák
  • Frontend munkák
  • CICD beállítása, tesztelés megszervezése
  • A játék próbaidőszakának indítása
  • Összegzés

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster