"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj

Pro multnombraj petoj de legantoj, granda serio da artikoloj komenciĝas pri la uzo de senservila komputika teknologio por disvolvi veran aplikaĵon. Ĉi tiu ciklo kovros aplikaĵdisvolviĝon, testadon kaj liveron al finuzantoj uzante modernajn ilojn: mikroserva aplikaĵarkitekturo (en senservila versio, bazita sur OpenFaaS), areto kubernetoj por aplikaĵa deplojo, datumbazo MongoDB, temigis nubgrupon kaj aplikiĝon, same kiel nubbuson NATS. La aplikaĵo efektivigas la ludon "Epopeoj", unu el la variantoj de la populara salona ludo "Mafio".

Kio estas "Epopeoj"?

Ĉi tio estas varianto de la ludo "Mafio", ankaŭ konata kiel "Homlupo". Ĝi baziĝas sur teama ludo en kiu partoprenantoj devas lerni paŝon post paŝo kiu estas kiu kaj provi venki. Bedaŭrinde, ludante interrete, malaperas tia grava komponanto de la ludo kiel persona interago, kaj la reguloj de la klasika "Mafio" estas sufiĉe simplaj, tial, por pli nelinia kaj interesa ludado, aliaj karakteroj estas kutime aldonitaj, sed ĝenerale la ĉefaj trajtoj de la originala "Mafio" estas konservitaj, ekzemple, la ŝanĝo de tago kaj nokto, movoj nur nokte, kaj ankaŭ aliancoj inter partoprenantoj. Alia grava diferenco inter ludado interrete estas ke la gastiganto (alinome Ludmajstro, Rakontanto) estas kutime komputila programo.

Ludo Priskribo

La reguloj de la ludo, kiujn mi volas efektivigi, estas prenitaj de malnova irc-bot, kiun mi konservis en mia persona arkivo antaŭ proksimume 10 jaroj. "Epopeoj" havas fonrakonton per kiu ĉiu ludo komenciĝas:

En la fora regno, en la trideka ŝtato, trans la sep maroj, vivis kaj vivis pluraj vilaĝoj, kaj en ili Bonaj uloj и Belaj knabinoj. Ili semis panon kaj iris al la ĉirkaŭa arbaro por pluki fungojn kaj berojn... Kaj tio daŭris de jarcento al jarcento, ĝis terura katastrofo skuis la Teron kaj malbono ekdisvastiĝis tra la mondo! La noktoj fariĝis longaj kaj malvarmaj, kaj en la mallumo, malafablaj kaj teruraj estaĵoj vagis la arbaron kaj vagis en la vilaĝon. Alvenis de ie Drako kaj ekkutimiĝis ŝteli Ruĝajn junulinojn kaj forpreni ĉion valoran de la vilaĝanoj. Malutila kaj avida Baba Yaga, kiu flugis sur mortero el foraj arbaroj, konfuzis la mensojn de la loĝantoj, kaj eĉ kelkaj rezignis sian metion kaj iris en la arbaron por rabi, formante bandon tie. La fiuloj renkontis Koboldo, kiu sciis iĝi arboj kaj arbustoj, li komencis monitori pacajn vilaĝanojn kaj servi la rabistojn, flarante ĉu la Bonuloj intencas ion por forigi siajn setlejojn de malbonaj spiritoj. Bonuloj kaj belaj junulinoj, lacaj de la atakoj de la Rabistoj, kaj teruraj mortoj ĉe la manoj de la teruraj Impulsa Unuokula, kolektis oron kaj invitis faman luktiston el najbara urbo - Ivan Tsarevich, kiu promesis senigi la vilaĝon de rabistoj. En maldensejo en la arbaro, Ivano savis de certa morto Griza Lupo, kiu falis en la fosaĵkaptilon de la Rabistoj. Kontraŭe, la Lupo promesis informi la Caron pri diversaj arbaraj malbonaj spiritoj. Fama resaniganto preterpasis Vasilisa la Saĝa, kaj kiam ŝi vidis problemon, ŝi restis por flegi la loĝantojn, kiuj suferis pro la atakoj de la impetemaj. Malantaŭ la arbaro aperis nigra palaco, en kiu, laŭ onidiroj, li ekloĝis Koschei la Senmorta, ĉiunokte li vizitis la vilaĝojn kaj sorĉis la Bonulojn kaj Ruĝajn Junulinojn, por ke ili ne kuraĝu malobei liajn ordonojn, ili faru ĉion, kiel li diris. Kaj ekloĝis en la Senviva Arbaro Kato Baiyun, kaj ĉiuj, kiuj renkontis lin, endormiĝis post liaj rakontoj aŭ mortis pro liaj feraj ungegoj.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Far Far Fora regno

Kiel vi jam povas vidi, ludantoj estas dividitaj en plurajn grupojn:

  • civiluloj (Bonaj Uloj, Ruĝaj Junulinoj, Ivan Tsarevich, Griza Lupo kaj Vasilisa la Saĝa)
  • rabistoj (la rabistoj mem, same kiel Baba Yaga kaj Leshy)
  • sendependa (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

La celo de la ludo, kiel menciite supre, estas resti viva kaj venki. Kontraŭuloj devas forlasi la ludon unu manieron aŭ alian, kaj nepartianoj ankaŭ devas resti vivantaj ĝis la fino de la ludo. La ludo havas oron, specon de ludvaluto kiun ludantoj gajnas nur ene de la ludo. La gajnintoj ricevas oron. Ju pli da oro, des pli alta la rangigo de la ludanto.

Mi iom pli detale detenos pri la priskribo de la roluloj.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Bona ulo

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Ruĝa Junulino

Bona ulo и Ruĝa Junulino - la plej disvastigita kaj ĉefa rolo en la ludo. Ĉi tiuj estas civiluloj, kiuj dormas nokte kaj laboras tage. Dum la nokto ili estas atakitaj fare de unu el la rabistoj, la Serpento Gorynych kaj aliaj roloj, kaj Vasilisa la Saĝa resanigas ilin. Kun iom da probableco, la Bona Ulo aŭ la Ruĝeca Junulino povas postvivi la atakon sen difekto (eble perdante oron en la procezo), tamen, ĉiuj rekonos la moknomon de la ludanto la venontan tagon post la atako. Nokte, ĉi tiuj ludantoj ne faras ajnajn movojn, sed analizas la ludsituacion surbaze de mesaĝoj en la ludbabilejo. Dum la tago, ĉi tiuj ludantoj decidas voĉdonante kiu el ili ne estas la Bona Ulo aŭ la Ruĝa Junulo. La ludanto voĉdonita de la plimulto de aliaj ludantoj forlasas la ludon, la ceteraj ludantoj ricevas aŭ perdas oron. Se ludantoj ne elektas iun ajn per plimulta voĉdono, neniu ludanto estos ekzekutita.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Ivan Tsarevich

Ivan Tsarevich - komence anonima defendanto de civiluloj. Nokte li kontrolas la rolojn de aliaj ludantoj, ĉar li konas nur unu el siaj aliancanoj - la Grizan Lupon. Kun la rekta partopreno de la Griza Lupo (kiu ankaŭ povas kontroli la rolojn de aliaj ludantoj), Ivan Tsarevich, anstataŭ kontroli, povas mortigi alian karakteron nokte. Se, kiel rezulto de la kontrolo, Ivan Tsarevich vidas la rolon de Bona Ulo aŭ Ruĝa Junulino en ludanto, tiam li povas inviti ilin al sia loko kaj prezenti ilin al la Griza Lupo kaj aliaj Bonuloj kaj Ruĝaj Junulinoj. Ivan povas esti influita de la Ranprincino, kiu povas delogi lin nokte, sen rivelado de sia rolo al aliaj ludantoj dum la tago. Se Ivan mem malkovras la Ranprincinon, li povas inviti ŝin por aliĝi al la civiluloj, sed se la princino rifuzas, ŝi mortas ĉe la manoj de Ivan. La Serpento-Gorynych ankaŭ povas malhelpi la ĉekojn de Ivan-Tsarevich, sed, male al la Ranprincino, dum la tago li rakontos al la aliaj ludantoj kiu el ili estas Ivan-Tsarevich. Dumtage, Ivan Tsarevich ne diferencas de aliaj Bonuloj.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Griza lupo

Griza lupo - asistanto de Ivan Tsarevich, kies akra flarsento helpas al Ivan trovi aliajn Bonulojn kaj Ruĝajn junulinojn. Griza Lupo rakontas al ĉi tiuj ludantoj, kiu estas Ivan la Caro, kaj ankaŭ informas pri aliaj ludantoj kun la roloj de Good Fellows kaj Red Maidens. Se la Lupo malkovras rabiston aŭ alian malamikon, li tuj informas Ivan Tsarevich por ke li povu ekagi la venontan nokton. Se la Lupo estas atakita fare de la Ranprincino, li iĝas ordinara Bona Ulo kaj ne povas kontroli iun ajn, kaj la Princino ne scios ke ĝi estis fakte la Griza Lupo, ĉar la Lupo ne dormas nokte. Tamen, la Lupo mem ekscios dum la tago, kiu el la ludantoj estas la Rano-Princino, kaj povas provi persvadi la ceterajn Bonulojn kaj Ruĝajn Junulinojn, kiujn li venigis al Ivan Tsarevich, voĉdoni por la ekzekuto de la Rano. Princino. Ankaŭ la venontan nokton, li povas provi anonime persvadi la Ranprincinon al la flanko de civiluloj tiel ke ŝi ne tuŝu ajnan da ili. La Lupo povas oferi sin nokte por savi Ivano Caron aŭ Vasilisa la Saĝan, se li supozas ke ili subite falos sub la atako de rabistoj, aŭ estis zombigitaj fare de Koshchei (la Lupo havas denaskan imunecon al la ĉarmoj de Koshchei), sed post kiam la sindono, kiun la Lupo forlasas el la ludo.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Vasilisa la Saĝa

Vasilisa la Saĝa - ludas por civiluloj, sed ili ne scias pri ŝi, ĉar Vasilisa estas tre modesta. Ankaŭ, Vasilisa la Saĝa, kiam ŝi traktas, ne faras demandojn kaj, kiel bona kuracisto, traktas ĉiujn. Sed se Koschey, Likho aŭ Leshy trinkos ŝian medikamenton, ili ne vivos pli longe ol unu tagon, ĉar Vasilisa nur traktas homojn. La medikamento de Vasilisa la Saĝa ankaŭ ne helpos la serpenton Gorynych aŭ la Kat-Bayun, sed ili ankaŭ ne alportos damaĝon. Ankaŭ, Kot-Bayun ne tuŝas Vasilisa nokte, ĉar Vasilisa ne iras al la Senviva Arbaro por aĉeti kuracherbojn. Krome, la inaj ĉarmoj de la Ranprincino ne funkcias ĉe Vasilisa. Se ili dufoje provus mortigi ŝian pacienton, medicino estus senpova. Vasilisa ne savos vin de magiaj atakoj, ekzemple de la Dashing-malbeno. Dum la tago, Vasilisa kondutas kiel Ruĝa Junulino, kaj nur pasema, iomete malĝoja rigardo povas iom sugesti ke ŝi estas la plej bona resaniganto en la Malproksima Regno.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Fripono

Rabistoj, male al ĉiuj antaŭaj roloj, ili konas unu la alian, ĉar ili vivas en la sama Kaverno, kaj ankaŭ konas Leshy kaj Baba Yaga, tiel ke ili povas agi en koncerto rekte de la unua movo. Sed nur la Gvidanto de la bando faras agojn nokte kaj ne voĉdonas tage, dum la resto de la Rabistoj diligente ŝajnigas esti Bonaj Uloj kaj Ruĝaj Junulinoj. Se la Gvidanto forlasas la ludon pro iu kialo, unu el la ceteraj Friponoj tuj prenas lian lokon. Antaŭ ĉio, la Rabistoj provas malfunkciigi Ivanon la Caron ĝis li kolektis sufiĉe da fortoj de Good Fellows kaj Red Maidens por aktive alfronti la Rabistojn dumtage.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Koboldo

Koboldo nokte li spionas por la Rabistoj, informante ilin pri la roloj trovitaj en ilia Kaverno, sed tage li ne voĉdonas, ĉar li ne loĝas en la vilaĝo. Tamen, aliaj ludantoj povas voĉdoni por Leshy kaj tiel ekzekuti lin. Ĉar la Leshy venas de la marĉoj, li ne povas esti delogita fare de la Ranprincino, kaj se li provas, la Leshy markos ŝian domon, kaj la vilaĝanoj malkovros kiu ŝi vere estas. Leshem ne devus timi la sorĉon de Koshchei, sed Vasilisa povas resanigi lin al morto. Se Cat-Bayun provas ataki Leshy, li riskas perdi siajn ferajn ungegojn, kaj tiam la Kato devos luli la viktimojn por dormi kun nur sia ronronado.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Baba Yaga

Baba Yaga Li ankaŭ laboras kune kun la Rabistoj kaj gisas sorĉojn dum la nokto: li povas aŭ sendi malsanon al aliaj ludantoj aŭ protekti unu el siaj aliancanoj kontraŭ atako. Ŝia sorĉado estas eĉ pli forta ol la malbeno de Likh. Dumtage, Baba Yaga ankaŭ aktivas: iu ajn sub ŝia protekto ne povas esti ekzekutita eĉ per plimulta voĉdono. Tamen, la provizo de magiaj radikoj por taga protekto estas limigita, do Baba Yaga ne povas protekti iun ajn, inkluzive de si, pli ol tri fojojn por ludo. Dum la tago, Baba Yaga ŝajnigas esti ordinara Red Maiden kaj voĉdonas kun ĉiuj aliaj.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Drako

Drako nokte li flugas super vilaĝoj, arbaroj kaj marĉoj kaj okupiĝas pri rabo, rivelante la rolon de la rabita tage. Dum la tago, la Serpento dormas, do li ne voĉdonas, sed li povas esti ekzekutita per plimulta voĉo. La serpento estas tre danĝera por ĉiuj, precipe por la Rabistoj kaj Ivan Tsarevich. La serpento ne zorgas pri kiu li prirabas, sed se li estas malkovrita fare de la Lupo aŭ la Leshy, li povas iĝi valora aliancano. Se vi mortigas la Serpenton nokte, vi povas, kun iom da probableco, ricevi tre valoran objekton - la Serpenta Haŭto, kiu protektos sian posedanton unufoje kontraŭ fizika atako.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Impulsa Unuokula

Impulsa Unuokula nokte li mortigas ĉiun kiu eniras lian vojon, kaj kiun ajn li ne povas mortigi (Leshy, Kota-Bayun, aŭ la Serpento Gorynych) li malbenas, tiel ke iu ajn kiu provas komuniki kun la damnito tiun saman nokton mortos dum la tago. . La damnita mem mortas ankaŭ ĉi-kaze, nur Kot-Bayun ne mortas, kiu simple enlitiĝas por akiri forton, transsaltante sian vicon la sekvan nokton. Nur Baba Yaga povas savi Likh de la malbeno. La malbeno ne influas tiun, kiu venkis la Kat-Bayun: li, kiel la Kato, simple enlitiĝas kaj transsaltas turnon.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Princino Rano

Princino Rano ne povas gajni la ludon, sed li povas gajni multe da mono delogante aliajn ludantojn nokte. La tentita maltrafas sian vicon. La rano ne povas delogi Vasilisa la Saĝan, kaj ŝi ankaŭ devus eviti Leshy, kiu perfidos ŝin al ĉiu la venontan tagon. Se Ivan la Caro aŭ la Gvidanto de la Rabistoj trovas la Ranon, ili povas inviti civilulojn aŭ la Rabistojn al sia flanko, dum Ivan ne akceptos la rifuzon de la Rano, sed la Gvidanto ne estas tiom elektema. Sed la Princino estas sufiĉe ruza, ŝi povas fariĝi duobla agento, ĉar malgraŭ tio, ke ŝi ne povas venki sola, ĉi tio estas bonega ŝanco gajni oron, ĉar la ŝancoj pluvivi ĝis la fino de la ludo multe pliiĝas! Dum la tago, la Ranprincino ŝajnigas esti la Ruĝeca Junulino kaj voĉdonas kun ĉiu kune.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Koschei la Senmorta

Koschei la Senmorta loĝas en sia kastelo. Nokte, li piediras tra la ĉirkaŭaj vilaĝoj kaj zombifas Good Fellows kaj Red Maidens, kiuj venas en lian servon kaj sendispute plenumas ĉiujn ordojn. Rifuzante plenumi ordonon, ekzemple, voĉdoni dumtage malsame ol tio, kion diris Koshchei, aŭ skribi mesaĝojn en la babilejo dumtage, se Koshchei malpermesis tion, la Servisto de Koshchei mortas. Tiel, Koschey kapablas influi la balotrezultojn dumtage, kvankam li mem ne voĉdonas persone. Se Koshchei estas mortigita, ĉiuj liaj viktimoj ankaŭ mortas. Vasilisa povas kuraci serviston Koshchei, kiu tiam revenas al sia origina rolo. La Serpento-Gorynych kaj la Lupo havas denaskan imunecon al zombiĝo, tiel ke Koschey, kiom ajn li volas, ne povas iĝi ilin sia servo. La Lupo ankaŭ povas helpi al Ivan aŭ Vasilisa el problemo oferante sin. Savita de la Lupo akiras Wolf-imunecon al zombiĝo.

"Novaj Epopeoj". Por devs, ops kaj scivolemaj homoj
Kato Baiyun

Kato Baiyun loĝas en la arbaro, ĉasas nokte. Tage li dormas en sia kavo, do li ne partoprenas en balotado. Tamen, tage li povas esti ekzekutita per plimulta voĉdono. La kato povas ataki en du manieroj: ronroni - kaj tiam ĝia viktimo endormiĝas kaj ne povas marŝi nokte, kaj ne povas voĉdoni la sekvan tagon - aŭ mortigi rekte per feraj ungegoj. Ataki per ungegoj ne funkcias ĉe la Serpento-Gorynych, kaj post atakado de Leshy, la Kato povas esti tute sen ungegoj! Impulso ne povas malbeni la Katon, kiu post la malbeno simple dormos dum unu nokto. Se iu sukcesas venki Kota-Bayun, li resaniĝos de iu malsano aŭ malsano, inkluzive de la malbeno de Likh. Ĉi tiu Kat-kapablo restas ĉe la ludanto ĝis la fino de la ludo. La servistoj de Koshchei ne povas voĉdoni por la Kato dum la tago, sed ili povas nerekte malkovri kiu la Kato estas sen informado de Koshchei pri ĝi. Kot-Bayun ne eniĝas en aliancoj kun Ivan aŭ la Rabistoj, tiel ke ili estas la primara celo por Kot.

Uzitaj teknologioj

Por skribi la ludon, mi elektis senservila komputika teknologio bazita sur OpenFaaS, ĉar ĝi estas sufiĉe simpla por organizi la ludon, kaj samtempe sufiĉe progresinta por skribi kompleksajn ludregulojn sen nenecesaj komplikaĵoj. Mi ankaŭ uzos Kubernetes-grupon, ĉar ĉi tiu metodo de deplojado de aplikoj faras ĝin sufiĉe simpla kaj fidinda akiri rapidan deplojon kaj la kapablon facile grimpi. Por krei la ludlogikon, vi nur povas sukcesi kun OpenFaaS, sed mi ankaŭ provos fari la Storyteller kiel aparta ujo por kompari la kompleksecon de la efektivigo. Kiel la ĉefan programlingvon por mikroservoj kaj funkcioj, mi elektis Go, ĉar mi delonge studas ĝin en mia libera tempo por anstataŭigi Perl, kaj js estos uzata surbaze de certa kadro por uzantinterago kun mikroservoj kaj funkcioj. Mi rakontos al vi pri la fina decido en la responda artikolo en la serio. Por komuniki funkciojn unu kun la alia, mi elektis NATS.io, ĉar mi jam renkontis ĝin antaŭe, kaj ĝi havas sufiĉe facilan integriĝon en Kubernetes.

Anonco

  • Enkonduko
  • Agordi la evoluan medion, malkonstruante la taskon en funkciojn
  • Backend laboro
  • Frontend-laboro
  • Starigante CICD, organizante testadon
  • Komencu provludan sesion
  • Rezultoj

fonto: www.habr.com

Aldoni komenton