"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat

Irakurleen eskaera ugariren ondorioz, artikulu sorta handi bat hasten da zerbitzaririk gabeko informatika teknologiaren erabilerari buruzko benetako aplikazio bat garatzeko. Ziklo honetan aplikazioen garapena, probak eta azken erabiltzaileei entregatzea landuko da tresna modernoak erabiliz: mikrozerbitzuen aplikazioen arkitektura (zerbitzaririk gabeko bertsioan, OpenFaaS), multzoa kubernetes aplikazioak hedatzeko, datu-basea MongoDB, hodei multzoan eta aplikazioan zentratua, baita hodeiko busean ere NATS. Aplikazioak "Epics" jokoa inplementatzen du, "Mafia" saloi joko ezagunaren aldaeretako bat.

Zer dira "Bylins"?

Hau "Mafia" jokoaren aldaera bat da, "Werewolf" izenez ere ezaguna. Talde-joko batean oinarritzen da eta bertan parte-hartzaileek pausoz pauso nor den nor den ikasi eta irabazten saiatu behar dute. Zoritxarrez, sarean jolasten denean, interakzio pertsonala bezalako jokoaren osagai garrantzitsu bat desagertzen da, eta "Mafia" klasikoaren arauak nahiko sinpleak dira, beraz, jokatzeko ez-lineal eta interesgarriago baterako, beste pertsonaia batzuk gehitzen dira normalean, baina oro har, jatorrizko "Mafiaren" ezaugarri nagusiak mantentzen dira, adibidez, egunaren eta gauaren aldaketa, gauez bakarrik mugitzea, baita parte-hartzaileen arteko aliantzak ere. Sarean jolasten duen beste desberdintasun garrantzitsu bat ostalaria (Game Master, Storyteller) normalean ordenagailu programa bat izan ohi da.

Game Description

Inplementatu nahi ditudan joko-arauak duela 10 urte inguru nire artxibo pertsonalean gordetako irc bot zahar batetik hartuak dira. "Epopeiak"-ek joko bakoitza hasten den atzeko istorio bat du:

Urruneko erreinuan, hogeita hamargarren estatuan, zazpi itsasoetatik haratago, hainbat herri bizi eta bizi ziren, eta haietan Lagun onak ΠΈ Neska ederrak. Ogia erein eta inguruko basora joan ziren perretxikoak eta baia hartzera... Eta honek mendez mende jarraitu zuen, hondamendi izugarri batek Lurra astindu eta gaitza munduan zehar hedatzen hasi zen arte! Gauak luze eta hotzak bihurtu ziren, eta ilunpean izaki gaizto eta ikaragarriak basoan ibili ziren eta herrian sartu ziren. Nonbaitetik heldua herensuge eta neska gorriak lapurtzeko eta herrikoei balio duen guztia kentzeko ohitura hartu zuen. Kaltegarria eta gutizia Baba Yaga, urrutiko basoetatik mortero baten gainean hegan egiten zuena, biztanleen gogoa nahastu zuen, eta batzuek ere beren artisautza utzi eta basora lapurtzera joan ziren, han koadrila bat osatuz. Gaiztoak elkartu ziren Iratxoa, zuhaitz eta zuhaixka bihurtzen zekiena, herri baketsuak kontrolatzen eta lapurrak zerbitzatzen hasi zen, One Fellows beren bizilekuak izpiritu gaiztoetatik kentzeko zerbait egiten ote zuten jakinez. Lagun onak eta neskatila ederrak, Lapurren erasoez nekatuta, eta ikaragarrien eskutik heriotza ikaragarriak Begibakarreko lasterka, urrea bildu eta inguruko hiri bateko borrokalari ospetsu bat gonbidatu zuen - Ivan Tsarevitx, herria lapurrak kenduko zituela agindu zuena. Basoko soilgune batean, Ivanek heriotza segurutik salbatu zuen Otso Grisa, Lapurren zuloko tranpan erori zena. Horren truke, Otsoak basoko espiritu gaizto ezberdinei buruz Tsarevich-ari jakinaraziko ziola agindu zion. Sendatzaile famatu bat pasa zen Vasilisa Jakintsua, eta arazoak ikusi zituenean, lasterketen erasoak pairatu zituzten bizilagunak zaintzen geratu zen. Basoaren atzean jauregi beltz bat agertu zen, eta bertan, zurrumurruen arabera, kokatu zen Koschei Heriogabea, gauero herriak bisitatzen zituen eta Lagun Onak eta Dontzela Gorriak liluratzen zituen, bere aginduak ez betetzera ausartu ez zitezen, dena egingo zuten berak esan bezala. Eta Bizirik gabeko Basoan kokatu zen Cat Baiyun, eta ezagutu zuten guztiak bere ipuinen ondoren lokartu ziren edo burdinazko atzaparretatik hil ziren.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Urrun Urrun erreinua

Ikus dezakezunez, jokalariak hainbat taldetan banatzen dira:

  • zibilak (Good Fellows, Red Maidens, Ivan Tsarevich, Grey Wolf eta Vasilisa the Wise)
  • lapurrak (lapurrak beraiek, baita Baba Yaga eta Leshy ere)
  • independentea (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

Jokoaren helburua, goian esan bezala, bizirik jarraitzea eta irabaztea da. Aurkariek nola edo hala utzi behar dute partida, eta independenteek ere bizirik egon behar dute partida amaitu arte. Jokoak urrea du, jokalariek jokoaren barruan bakarrik irabazten duten joko-moneta moduko bat. Irabazleek urrea jasotzen dute. Zenbat eta urre gehiago, orduan eta handiagoa jokalariaren balorazioa.

Pertsonaien deskribapenean pixka bat gehiago sakonduko dut.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Lagun ona

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Dontzela Gorria

Lagun ona ΠΈ Dontzela Gorria - jokoan gehien hedatu eta nagusiena. Hauek gauez lo egiten duten eta egunez lan egiten duten zibilak dira. Gauez lapurretako batek, Gorynych Serpent eta beste rol batzuek erasotzen dituzte, eta Vasilisa Jakintsuak sendatzen ditu. Probabilitate txiki batekin, Good Fellow edo Red Maiden erasoan kalterik gabe biziraun dezakete (baliteke prozesuan urrea galduz), hala ere, denek ezagutuko dute jokalariaren goitizena erasoaren hurrengo egunean. Gauez, jokalari hauek ez dute inolako mugimendurik egiten, jokoaren txatean dauden mezuetan oinarrituta jokoaren egoera aztertzen dute. Egunean zehar, jokalari hauek bozkatuz erabakitzen dute zein ez den Lagun Ona edo Dontzela Gorria. Beste jokalarien gehiengoak bozkatu duen jokalariak partida uzten du, gainerako jokalariek urrea jasotzen edo galtzen dute. Jokalariek gehiengoaren bidez inor aukeratzen ez badute, ez da jokalaririk exekutatuko.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Ivan Tsarevitx

Ivan Tsarevitx - hasieran zibilen defendatzaile anonimoa. Gauez beste jokalarien rolak egiaztatzen ditu, bere aliatuetako bakarra ezagutzen baitu: Otso Grisa. Otso Grisaren parte-hartze zuzenarekin (beste jokalarien rolak ere egiaztatu ditzake), Ivan Tsarevitxek, egiaztatu beharrean, beste pertsonaia bat hil dezake gauez. Txekearen ondorioz, Ivan Tsarevitxek Jokalari Onaren edo Dontzela Gorri baten papera ikusten badu, bere tokira gonbida ditzake eta Otso Grisa eta beste Lagun On eta Dontzela Gorria aurkez ditzake. Ivan Igel Printzesak oztopatu dezake, gauez limurtu dezakeena, egunean zehar beste jokalariei bere rola azaldu gabe. Ivanek berak igel printzesa aurkitzen badu, zibilekin bat egitera gonbidatu dezake, baina printzesak uko egiten badio, Ivanen esku hilko da. Serpent-Gorynych-ek Ivan-Tsarevitxen txekeak ere oztopatu ditzake, baina, Igel Printzesak ez bezala, egunean zehar beste jokalariei esango die zein den Ivan-Tsarevitx. Egunean zehar, Ivan Tsarevich ez da beste lagun onen aldean.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Otso grisa

Otso grisa - Ivan Tsarevich-en laguntzailea, zeinaren usaimen zorrotzak Ivani beste lagun onak eta Dontzela Gorriak aurkitzen laguntzen dio. Otso Grisak jokalari hauei Ivan Tsarevich nor den esaten die, eta Good Fellows eta Red Maidens rolak dituzten beste jokalari batzuen berri ere ematen du. Otsoak lapurren bat edo beste etsai bat aurkitzen badu, berehala Ivan Tsarevich-i jakinaraziko dio hurrengo gauean neurriak har dezan. Otsoa Igel Printzesak erasotzen badu, Lagun On arrunt bat bihurtzen da eta ezin du inor egiaztatu, eta Printzesak ez du jakingo benetan Otso Grisa zenik, Otsoak ez baitu lo egiten gauez. Hala ere, Otsoak berak jakingo du egunean zehar jokalarietatik zein den Igelaren Printzesa, eta Ivan Tsarevitxengana ekarri zituen gainerako Lagun Onak eta Dontzela Gorriak konbentzitzen saiatuko da Igela exekutatzeko bozkatzeko. Printzesa. Hurrengo gauean ere, Igel Printzesa modu anonimoan zibilen alde konbentzitzen saiatu daiteke, haietako inor ukitu ez dezan. Otsoak bere burua sakrifikatu dezake gauez Ivan Tsarevich edo Vasilisa Jakintsua salbatzeko, lapurren erasopean bat-batean eroriko direla uste badu edo Koshcheik zonbifikatu baditu (Otsoak berezko immunitatea du Koshcheiren xarmaren aurrean), baina Otsoa, ​​bere burua sakrifikatu ondoren, jokotik kanpo geratzen da.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Vasilisa Jakintsua

Vasilisa Jakintsua - zibilentzat jokatzen du, baina ez dakite haren berri, Vasilisa oso apala baita. Gainera, Vasilisa Jakitunak, tratatzen duenean, ez du galderarik egiten eta, mediku on batek bezala, denak tratatzen ditu. Baina Koscheyk, Likhok edo Leshyk bere sendagaia edaten badute, ez dute egun bat baino gehiago biziko, Vasilisak pertsonak bakarrik tratatzen baititu. Vasilisa Jakintsuaren sendagaiak ere ez die Gorynych sugeari edo Cat-Bayun-ari lagunduko, baina ez dute kalterik ekarriko ere. Gainera, Kot-Bayunek ez du Vasilisa ukitzen gauez, Vasilisa ez baita Bizirik gabeko Basora joaten sendabelarrak erostera. Horrez gain, Frog Princess-en emakumezko xarmak ez dute funtzionatzen Vasilisan. Bere gaixoa bi aldiz hiltzen saiatuko balira, sendagaiak indarrik gabe geratuko lirateke. Vasilisak ez zaitu eraso magikoetatik salbatuko, adibidez Dashing madarikaziotik. Egunean zehar, Vasilisak Dontzela Gorri baten antzera jokatzen du, eta begirada iheskor eta triste samar batek bakarrik aditzera eman dezake Urrutiko Erreinuko sendatzailerik onena dela.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Zakarra

lapurrak, aurreko rol guztietan ez bezala, elkar ezagutzen dute, Lair berean bizi direnez, eta Leshy eta Baba Yaga ere ezagutzen dituzte, beraz, lehen mugimendutik bertatik kontzertuan jardun ahal izango dute. Baina koadrilako Buruak bakarrik egiten ditu ekintzak gauez eta ez du egunez bozkatzen, gainontzeko Lapurrak arduratsuki Lagun Onak eta Dontzela Gorriak direla itxuratzen duten bitartean. Liderrak edozein arrazoirengatik jokoa uzten badu, gainerako Rogueetako batek berehala hartuko du bere lekua. Lehenik eta behin, Lapurrak Ivan Tsarevich desgaitzen saiatzen ari dira, One Fellows eta Red Maidens-en indar nahikoa bildu arte egunean zehar Lapurrei aktiboki aurre egiteko.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Iratxoa

Iratxoa gauez Lapurrak zelatatzen ditu, haien Lairn aurkitutako rolen berri emanez, baina egunean ez du bozkarik ematen, ez baita herrian bizi. Hala ere, beste jokalariek Leshyren alde bozkatu dezakete eta horrela exekutatu. Leshy zingiratik datorrenez, ezin du igel printzesak liluratu, eta saiatzen bada, Leshy-k bere etxea markatuko du, eta herrikoek jakingo dute nor den benetan. Leshemek ez luke Koshcheiren sorginkeriaren beldur izan behar, baina Vasilisak hil arte senda dezake. Kot-Bayun Leshy erasotzen saiatzen bada, burdinazko atzaparrak galtzeko arriskua du, eta orduan Kot-ek biktimak lo egin beharko ditu bere purrustadarekin.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Baba Yaga

Baba Yaga Gainera, Lapurrekin batera lan egiten du eta gauez sorginkeriak egiten ditu: gaixotasunak beste jokalari batzuei bidal diezaieke edo bere aliatuetako bat erasoetatik babestu. Bere sorginkeria Likh-en madarikazioa baino are indartsuagoa da. Egunean zehar, Baba Yaga ere aktibo dago: bere babespean dagoen inor ezin da exekutatu gehiengoaren botoarekin ere. Hala ere, egunez babesteko sustrai magikoen eskaintza mugatua da, beraz, Baba Yagak ezin du inor babestu, bere burua barne, hiru aldiz baino gehiago joko bakoitzeko. Egunean zehar, Baba Yagak Maiden Gorri arrunt baten itxurak egiten ditu eta beste guztiekin bozkatzen du.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
herensuge

herensuge gauez herri, baso eta zingira gainetik hegan egiten du eta lapurreta egiten du, egunez lapurretaren papera agerian utziz. Egunean zehar, Sugeak lo egiten du, beraz, ez du botoa ematen, baina gehiengoz exekutatu daiteke. Sugea oso arriskutsua da guztiontzat, batez ere Lapurrak eta Ivan Tsarevichentzat. Sugeari berdin zaio nor lapurtzen duen, baina Otsoak edo Leshy-k aurkitzen badu, aliatu baliotsua izan daiteke. Gauez Sugea hiltzen baduzu, seguru asko elementu oso baliotsu bat jaso dezakezu - Snake Skin, bere jabea behin eraso fisikoetatik babestuko duena.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Begibakarreko lasterka

Begibakarreko lasterka gauez bere bidean jartzen diren guztiak hiltzen ditu, eta hil ezin duenak (Leshy, Kota-Bayun edo Gorynych Serpent) madarikatu egiten du, gau horretan bertan madarikatuarekin komunikatzen saiatzen dena egunean zehar hil dadin. . Madarikatua bera ere hiltzen da kasu honetan, Kot-Bayun bakarrik ez da hiltzen, indarrak hartzeko ohera joaten dena, hurrengo gauean bere txanda saltatuz. Baba Yagak bakarrik salba dezake Likh madarikaziotik. Madarikazioa ez dio eragiten Cat-Bayun garaitu zuenari: bera, Katua bezala, ohera joaten da eta txanda bat saltatzen du.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Igel printzesa

Igel printzesa ezin du partida irabazi, baina diru asko irabaz dezake gauez beste jokalariak seduzituz. Tentatuak bere txanda galdu du. Igelak ezin du Vasilisa Jakintsua seduzitu, eta hurrengo egunean denei traizionatuko dion Leshy ere saihestu beharko luke. Ivan Tsarevich-ak edo Lapurren Buruak Igela aurkitzen badute, zibilak edo Lapurrak haien alboan gonbida ditzakete, Ivanek ez du Igelaren ezezkoa onartuko, baina Liderra ez da hain hautakorra. Baina printzesa nahiko maltzurra da, agente bikoitza bihur daiteke, bakarrik irabazi ezin duen arren, urrea lortzeko aukera bikaina da, jokoaren amaierara arte bizirik irauteko aukerak asko handitzen direlako! Egunean zehar, Igel Printzesak Dontzela Gorria dela egiten du eta denekin batera bozkatzen du.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Koschei Heriogabea

Koschei Heriogabea bere gazteluan bizi da. Gauez, inguruko herrietan zehar ibiltzen da eta Good Fellows eta Red Maidens zonbifikatzen ditu, hauek bere zerbitzura sartu eta zalantzarik gabe agindu guztiak betetzen dituzte. Agindu bat betetzeari uko eginez, adibidez, egunean zehar botoa ematea Koshcheik esandakoaren arabera, edo egunean zehar txatean mezuak idaztea Koshcheik debekatuz gero, Koshcheiren Zerbitzaria hiltzen da. Hala, egunean zehar bozketen emaitzetan eragiteko gai da Koschey, berak bozkatu ez arren. Koshchei hiltzen bada, bere biktima guztiak ere hiltzen dira. Vasilisak zerbitzari Koshchei senda dezake, eta gero bere jatorrizko paperera itzultzen da. Snake-Gorynych eta Otsoak berezko immunitatea dute zonbifikazioaren aurrean, beraz, Koscheyk, nahi duen arren, ezin ditu bere zerbitzura bihurtu. Otsoak Ivan edo Vasilisa arazoetatik ateratzen lagun diezaioke bere burua sakrifikatuz. Saved by the Wolf-k Otsoaren immunitatea lortzen du zonbifikazioaren aurrean.

"Epopeia berriak". Garatzaileentzat, operatzaileentzat eta jende jakin-minarentzat
Cat Baiyun

Cat Baiyun basoan bizi da, gauez ehizatzen du. Egunean zehar bere zuloan lo egiten du, beraz, ez du bozketan parte hartzen. Hala ere, egunean zehar exekutatu ahal izango da gehiengoaren botoarekin. Katuak bi eratara eraso dezake: purrustada egin - eta orduan bere biktima loak hartzen du eta ezin du gauez ibili, eta ezin du biharamunean bozkatu - edo burdinazko atzaparrez hiltzea. Atzaparrez erasotzeak ez du funtzionatzen Snake-Gorynych-en, eta Leshyri eraso ondoren, Katua atzaparrik gabe gera daiteke! Dashing-ek ezin du katua madarikatu, madarikazio ostean gau batez lo egingo baitu. Norbaitek Kota-Bayun garaitzea lortzen badu, edozein gaixotasun edo gaixotasunetatik sendatuko da, Likh-en madarikazioa barne. Katuaren gaitasun hau jokalariarekin geratzen da jokoa amaitu arte. Koshcheiren zerbitzariek ezin diote Katuari botoa eman egunean zehar, baina zeharka jakin dezakete Katua nor den Koshcheiri horren berri eman gabe. Kot-Bayunek ez du aliantzarik egiten Ivan edo Lapurrekin, beraz, Kot-en helburu nagusia dira.

Erabilitako teknologiak

Jokoa idazteko, OpenFaaS-en oinarritutako zerbitzaririk gabeko konputazio teknologia aukeratu nuen, jokoa antolatzeko aski sinplea baita eta, aldi berean, joko-arau konplexuak alferrikako konplikaziorik gabe idazteko nahikoa aurreratua baita. Kubernetes kluster bat ere erabiliko dut, aplikazioak hedatzeko metodo honek nahiko erraza eta fidagarria egiten baitu inplementazio azkarra eta erraz eskalatzeko gaitasuna. Jokoaren logika sortzeko, OpenFaaS-ekin bakarrik atera zaitezke, baina Storyteller edukiontzi bereizi gisa egiten ere saiatuko naiz ezarpenaren konplexutasuna alderatzeko. Mikrozerbitzuen eta funtzioen programazio-lengoaia nagusi gisa, aukeratu nuen Go, nire denbora librean denbora luzez ikasten aritu naizenez Perl ordezkatzeko, eta js erabiliko da marko jakin batean oinarrituta erabiltzaileak mikrozerbitzuekin eta funtzioekin elkarrekintzarako. Azken erabakiaren berri emango dizut serieko dagokion artikuluan. Funtzioak elkarren artean komunikatzeko, NATS.io aukeratu nuen, aurretik topatu bainuen eta Kubernetes-en nahiko erraz integratzen duelako.

Anuntzio

  • Sarrera
  • Garapen-ingurunea konfiguratzea, zeregina funtzioetan banatuz
  • Backend lana
  • Frontend lana
  • CICD konfiguratzea, probak antolatzea
  • Hasi proba-joko saio bat
  • Emaitzak

Iturria: www.habr.com

Gehitu iruzkin berria