"Nuwe Epics". Vir devs, ops en nuuskierige mense

"Nuwe Epics". Vir devs, ops en nuuskierige mense

As gevolg van talle versoeke van lesers, begin 'n groot reeks artikels oor die gebruik van bedienerlose rekenaartegnologie om 'n regte toepassing te ontwikkel. Hierdie siklus sal toepassingsontwikkeling, toetsing en aflewering aan eindgebruikers dek met behulp van moderne gereedskap: mikrodienstoepassingsargitektuur (in 'n bedienerlose weergawe, gebaseer op OpenFaaS), groepie goewerneur vir toepassing ontplooiing, databasis MongoDB, gefokus op wolkgroepering en toepassing, sowel as wolkbus NATS. Die toepassing implementeer die speletjie "Epics", een van die variante van die gewilde salonspeletjie "Mafia".

Wat is "Epics"?

Dit is 'n variant van die spel "Mafia", ook bekend as "Weerwolf". Dit is gebaseer op 'n spanspeletjie waarin deelnemers stap vir stap moet leer wie is wie en probeer wen. Ongelukkig, wanneer jy aanlyn speel, verdwyn so 'n belangrike komponent van die spel soos persoonlike interaksie, en die reëls van die klassieke "Mafia" is redelik eenvoudig, daarom, vir 'n meer nie-lineêre en interessante spel, word ander karakters gewoonlik bygevoeg, maar oor die algemeen word die hoofkenmerke van die oorspronklike "Mafia" bewaar, byvoorbeeld die verandering van dag en nag, beweeg slegs in die nag, sowel as alliansies tussen deelnemers. Nog 'n belangrike verskil tussen speel aanlyn is dat die gasheer (ook bekend as Game Master, Storyteller) gewoonlik 'n rekenaarprogram is.

Beskrywing van die spel

Die spelreëls wat ek wil implementeer, is geneem uit 'n ou irc-bot wat ek sowat 10 jaar gelede in my persoonlike argief gestoor het. "Epics" het 'n agtergrond waarmee elke wedstryd begin:

In die verre koninkryk, in die dertigste staat, anderkant die sewe seë, het verskeie dorpies gewoon en gewoon, en daarin Goeie maats и Mooi meisies. Hulle het brood gesaai en na die omliggende woud gegaan om sampioene en bessies te pluk... En dit het van eeu tot eeu voortgeduur, totdat 'n verskriklike katastrofe die Aarde geskud het en boosheid oor die hele wêreld begin versprei het! Die nagte het lank en koud geword, en in die donker het onvriendelike en verskriklike wesens deur die woud rondgeswerf en die dorpie binnegedwaal. Van iewers af aangekom Draak en het die gewoonte gekry om Rooimeisies te steel en alles waardevol van die dorpenaars weg te neem. Skadelik en gulsig Baba Yaga, wat op 'n mortier uit verafgeleë woude gevlieg het, het die gemoedere van die inwoners verwar, en selfs sommige het hul kuns laat vaar en die bos ingegaan om te roof, en daar 'n bende gevorm. Die skurke het ontmoet Kabouter, wat geweet het hoe om in bome en bosse te verander, het hy begin om vreedsame dorpenaars te monitor en die rowers te bedien, terwyl hy uitgesnuffel het of die Good Fellows iets in die hande gehad het om hul nedersettings van bose geeste te bevry. Goeie maats en pragtige meisies, moeg vir die strooptogte van die Rowers, en verskriklike sterftes aan die hand van die verskriklike Skitterende Eenoog, goud ingesamel en 'n bekende stoeier van 'n naburige stad genooi - Ivan Tsarevich, wat belowe het om die dorpie van rowers te bevry. In 'n oopte in die woud het Ivan van 'n gewisse dood gered Grys ​​Wolf, wat in die putval van die Rowers geval het. In ruil daarvoor het die Wolf belowe om die Tsarevich in te lig oor verskeie bose bose geeste. ’n Bekende geneser het verbygegaan Vasilisa die Wyse, en toe sy moeilikheid sien, het sy gebly om die inwoners te verpleeg wat gely het onder die aanvalle van die stoutmoediges. Agter die bos het 'n swart paleis verskyn, waarin hy hom volgens gerugte gevestig het Koschei die dodelose, elke aand het hy die dorpe besoek en die Good Fellows en Red Maidens betower sodat hulle nie sou waag om sy bevele te verontagsaam nie, hulle sou alles doen soos hy gesê het. En in die Lewelose Bos gevestig Kat Baiyun, en almal wat hom ontmoet het, het ná sy verhale aan die slaap geraak of aan sy ysterkloue gesterf.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Verreweg koninkryk

Soos u reeds kan sien, word spelers in verskeie groepe verdeel:

  • burgerlikes (Good Fellows, Red Maidens, Ivan Tsarevich, Grey Wolf en Vasilisa the Wise)
  • rowers (die rowers self, sowel as Baba Yaga en Leshy)
  • onafhanklik (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

Die doel van die spel, soos hierbo genoem, is om aan die lewe te bly en te wen. Teenstanders moet die wedstryd op een of ander manier verlaat, en onafhanklikes moet ook lewendig bly tot aan die einde van die wedstryd. Die spel het goud, 'n soort spelgeldeenheid wat spelers slegs binne die spel verdien. Die wenners ontvang goud. Hoe meer goud, hoe hoër is die speler se gradering.

Ek sal in 'n bietjie meer besonderhede stilstaan ​​by die beskrywing van die karakters.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Goeie kêrel

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Rooi Meisie

Goeie kêrel и Rooi Meisie - die mees wydverspreide en hoofrol in die spel. Dit is burgerlikes wat snags slaap en bedags werk. Snags word hulle deur een van die rowers, die Slang Gorynych en ander rolle aangeval, en Vasilisa die Wyse genees hulle. Met 'n geringe waarskynlikheid kan die Good Fellow of die Red Maiden die aanval sonder skade oorleef (moontlik goud in die proses verloor), maar almal sal die speler se bynaam die volgende dag na die aanval herken. Snags maak hierdie spelers geen bewegings nie, maar ontleed die spelsituasie op grond van boodskappe in die spelklets. Gedurende die dag besluit hierdie spelers deur te stem wie van hulle nie die Good Fellow of die Red Maiden is nie. Die speler waarvoor die meerderheid ander spelers gestem het, verlaat die spel, die oorblywende spelers ontvang of verloor goud. Indien spelers niemand met meerderheidstem kies nie, sal geen speler tereggestel word nie.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Ivan Tsarevich

Ivan Tsarevich - aanvanklik 'n anonieme verdediger van burgerlikes. Snags kyk hy na die rolle van ander spelers, aangesien hy net een van sy bondgenote ken - die Grys Wolf. Met die direkte deelname van die Grey Wolf (wat ook die rolle van ander spelers kan nagaan), kan Ivan Tsarevich, in plaas daarvan om na te gaan, 'n ander karakter in die nag doodmaak. As, as gevolg van die tjek, Ivan Tsarevich die rol van 'n Good Fellow of 'n Rooi Meisie in 'n speler sien, dan kan hy hulle na sy plek nooi en hulle aan die Grys Wolf en ander Good Fellows en Red Maidens voorstel. Ivan kan ingemeng word deur die Paddaprinses, wat hom snags kan verlei, sonder om sy rol gedurende die dag aan ander spelers te openbaar. As Ivan self die Paddaprinses ontdek, kan hy haar nooi om by die burgerlikes aan te sluit, maar as die Prinses weier, sterf sy aan die hand van Ivan. Die Serpent-Gorynych kan ook met Ivan-Tsarevich se tjeks inmeng, maar, anders as die Paddaprinses, sal hy gedurende die dag vir die ander spelers sê wie van hulle Ivan-Tsarevich is. Gedurende die dag verskil Ivan Tsarevich nie van ander Good Fellows nie.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Grys ​​wolf

Grys ​​wolf - assistent van Ivan Tsarevich, wie se skerp reuksintuig Ivan help om ander Good Fellows en Red Maidens te vind. Grey Wolf vertel hierdie spelers wie Ivan die Tsarevich is, en lig ook in oor ander spelers met die rolle van Good Fellows en Red Maidens. As die Wolf 'n rower of ander vyand ontdek, stel hy Ivan Tsarevich dadelik in kennis sodat hy die volgende aand kan optree. As die Wolf deur die Paddaprinses aangeval word, verander hy in 'n gewone Good Fellow en kan niemand kyk nie, en die Prinses sal nie weet dat dit eintlik die Grys Wolf was nie, aangesien die Wolf nie snags slaap nie. Die Wolf sal egter self gedurende die dag uitvind wie van die spelers die Paddaprinses is, en kan probeer om die res van die Good Fellows en Red Maidens, wat hy na Ivan Tsarevich gebring het, te oorreed om vir die teregstelling van die Padda te stem. Prinses. Ook die volgende aand kan hy probeer om die Paddaprinses anoniem aan die kant van burgerlikes te oorreed sodat sy nie een van hulle raak nie. Die Wolf kan homself snags opoffer om Ivan Tsarevich of Vasilisa die Wyse te red, as hy aanneem dat hulle skielik onder die aanval van rowers sal val, of deur Koshchei gezombifiseer is (die Wolf het 'n ingebore immuniteit teen Koshchei se sjarme), maar die Wolf, na selfopoffering, val uit die spel.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Vasilisa die Wyse

Vasilisa die Wyse - speel vir burgerlikes, maar hulle weet nie van haar nie, aangesien Vasilisa baie beskeie is. Ook, Vasilisa die Wyse, wanneer sy behandel, vra nie vrae nie en behandel, soos 'n goeie dokter, almal. Maar as Koschey, Likho of Leshy haar medisyne drink, sal hulle nie langer as een dag leef nie, aangesien Vasilisa net mense behandel. Die medisyne van Vasilisa die Wyse sal ook nie die slang Gorynych of die Cat-Bayun help nie, maar hulle sal ook nie skade bring nie. Kot-Bayun raak ook nie aan Vasilisa in die nag nie, aangesien Vasilisa nie na die Lewelose Woud gaan om medisinale kruie te koop nie. Daarbenewens werk die vroulike sjarme van die Paddaprinses nie op Vasilisa nie. As hulle haar pasiënt twee keer probeer doodmaak, sou medisyne magteloos wees. Vasilisa sal jou nie van magiese aanvalle red nie, byvoorbeeld van die Dashing-vloek. Bedags gedra Vasilisa hom soos 'n Rooi Meisie, en net 'n vlietende, effens hartseer kyk kan 'n bietjie laat blyk dat sy die beste geneser in die Verre Koninkryk is.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Skelm

rowers, anders as alle vorige rolle, ken hulle mekaar, aangesien hulle in dieselfde Laer woon, en ook Leshy en Baba Yaga ken, sodat hulle vanaf die eerste beweging saam kan optree. Maar net die Leier van die bende voer snags aksies uit en stem nie bedags nie, terwyl die res van die Rowers ywerig voorgee dat hulle Good Fellows en Red Maidens is. As die Leier die wedstryd om enige rede verlaat, neem een ​​van die oorblywende Skelms onmiddellik sy plek in. Eerstens probeer die Rowers om Ivan die Tsarevich uit te skakel totdat hy genoeg kragte van Good Fellows en Red Maidens versamel het om aktief die Rowers gedurende die dag te konfronteer.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Kabouter

Kabouter snags spioeneer hy vir die Rowers en lig hulle in oor die rolle wat in hul Laer gevind word, maar bedags stem hy nie, aangesien hy nie in die dorp woon nie. Ander spelers kan egter vir Leshy stem en hom so teregstel. Aangesien die Leshy uit die moerasse kom, kan hy nie deur die Paddaprinses verlei word nie, en as hy probeer, sal die Leshy haar huis merk, en die dorpenaars sal uitvind wie sy werklik is. Leshem moet nie bang wees vir Koshchei se towerspreuk nie, maar Vasilisa kan hom doodmaak. As Kot-Bayun Leshy probeer aanval, loop hy die risiko om sy ysterkloue te verloor, en dan sal Kot die slagoffers aan die slaap moet sus met net sy spin.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Baba Yaga

Baba Yaga Hy werk ook saam met die Rowers en toor in die nag: hy kan óf siekte aan ander spelers stuur óf een van sy bondgenote teen aanvalle beskerm. Haar heksery is selfs sterker as Likh se vloek. Bedags is Baba Yaga ook aktief: enigiemand onder haar beskerming kan nie eens met 'n meerderheidstem tereggestel word nie. Die aanbod van towerwortels vir dagbeskerming is egter beperk, dus kan Baba Yaga niemand, insluitend haarself, meer as drie keer per wedstryd beskerm nie. Gedurende die dag gee Baba Yaga voor dat hy 'n gewone Rooi Meisie is en stem saam met almal anders.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Draak

Draak snags vlieg hy oor dorpe, woude en moerasse en pleeg roof, wat die rol van die beroofde gedurende die dag openbaar. Gedurende die dag slaap die Slang, dus stem hy nie, maar hy kan met 'n meerderheidstem tereggestel word. Die slang is baie gevaarlik vir almal, veral vir die Rowers en Ivan Tsarevich. Die slang gee nie om wie hy beroof nie, maar as hy deur die Wolf of die Leshy ontdek word, kan hy 'n waardevolle bondgenoot word. As jy die Slang in die nag doodmaak, kan jy, met 'n mate van waarskynlikheid, 'n baie waardevolle item ontvang - die Slangvel, wat sy eienaar een keer teen fisiese aanvalle sal beskerm.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Skitterende Eenoog

Skitterende Eenoog snags maak hy almal dood wat in sy pad kom, en wie hy ook al nie kan doodmaak nie (Leshy, Kota-Bayun, of die Slang Gorynych) vloek hy, sodat elkeen wat daardie selfde nag met die verdoemde probeer kommunikeer, gedurende die dag sal sterf . Die verdoemde self sterf ook in hierdie geval, net Kot-Bayun sterf nie, wat sommer gaan slaap om krag te kry, en die volgende aand sy beurt oorslaan. Net Baba Yaga kan Likh van die vloek red. Die vloek raak nie die een wat die Cat-Bayun verslaan het nie: hy gaan net soos die Kat bed toe en slaan 'n draai oor.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Prinses Padda

Prinses Padda kan nie die speletjie wen nie, maar hy kan baie geld verdien deur ander spelers snags te verlei. Die versoekte mis sy beurt. Die padda kan nie vir Vasilisa die Wyse verlei nie, en sy moet ook Leshy vermy, wat haar die volgende dag aan almal sal verraai. As Ivan die Tsarevich of die Leier van die Rowers die Padda vind, kan hulle burgerlikes of die Rowers na hulle kant toe nooi, terwyl Ivan nie die Padda se weiering sal aanvaar nie, maar die Leier is nie so kieskeurig nie. Maar die Prinses is nogal slinks, sy kan 'n dubbele agent word, want ten spyte van die feit dat sy nie alleen kan wen nie, is dit 'n uitstekende kans om goud te wen, want die kanse om tot die einde van die wedstryd te oorleef, verhoog baie! Bedags gee die Paddaprinses voor as die Rooi Meisie en stem saam met almal.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Koschei die dodelose

Koschei die dodelose woon in sy kasteel. Snags stap hy deur die omliggende dorpe en zombifiseer Good Fellows en Red Maidens, wat in sy diens kom en sonder twyfel alle opdragte uitvoer. Deur te weier om 'n bevel uit te voer, byvoorbeeld om gedurende die dag anders te stem as wat deur Koshchei gesê is, of om gedurende die dag boodskappe in die chat te skryf as Koshchei dit verbied het, sterf Koshchei se Kneg. Koschey kan dus die uitslae van stemming gedurende die dag beïnvloed, al stem hy self nie. As Koshchei vermoor word, sterf al sy slagoffers ook. Vasilisa kan dienaar Koshchei genees, wat dan terugkeer na sy oorspronklike rol. Die Slang-Gorynych en die Wolf het 'n ingebore immuniteit teen zombifikasie, so Koschey, maak nie saak hoe graag hy wil nie, kan hulle nie in sy diens verander nie. Die Wolf kan ook vir Ivan of Vasilisa uit die moeilikheid help deur homself op te offer. Saved by the Wolf verkry Wolf immuniteit teen zombifikasie.

"Nuwe Epics". Vir devs, ops en nuuskierige mense
Kat Baiyun

Kat Baiyun woon in die bos, jag in die nag. Bedags slaap hy in sy holte, dus neem hy nie deel aan stemming nie. Hy kan egter bedags met 'n meerderheidstem tereggestel word. Die kat kan op twee maniere aanval: spin - en dan raak sy slagoffer aan die slaap en kan nie snags loop nie, en kan nie die volgende dag stem nie - of doodmaak met ysterkloue. Om met kloue aan te val, werk nie op die Slang-Gorynych nie, en nadat hy Leshy aangeval het, kan die Kat glad nie kloue gelaat word nie! Dashing kan nie die Kat vervloek nie, wat na die vloek bloot vir een nag sal slaap. As iemand daarin slaag om Kota-Bayun te verslaan, sal hy genees word van enige siekte of siekte, insluitend die vloek van Likh. Hierdie Cat-vermoë bly by die speler tot aan die einde van die speletjie. Koshchei se bediendes kan nie gedurende die dag vir die Kat stem nie, maar hulle kan indirek uitvind wie die Kat is sonder om Koshchei daaroor in te lig. Kot-Bayun sluit nie alliansies met Ivan of die Rowers aan nie, so hulle is die primêre teiken vir Kot.

Tegnologieë wat gebruik word

Om die speletjie te skryf, het ek bedienerlose rekenaartegnologie gebaseer op OpenFaaS gekies, aangesien dit eenvoudig genoeg is om die speletjie te organiseer, en terselfdertyd gevorderd genoeg is om komplekse spelreëls sonder onnodige komplikasies te skryf. Ek sal ook 'n Kubernetes-kluster gebruik, aangesien hierdie metode om toepassings te ontplooi dit redelik eenvoudig en betroubaar maak om vinnige ontplooiing te kry en die vermoë om maklik te skaal. Om die spellogika te skep, kan jy net met OpenFaaS klaarkom, maar ek sal ook probeer om die Storyteller as 'n aparte houer te maak om die kompleksiteit van die implementering te vergelyk. As die hoofprogrammeertaal vir mikrodienste en funksies, het ek gekies Go, aangesien ek dit al lank in my vrye tyd bestudeer het om Perl te vervang, en js sal gebruik word op grond van 'n sekere raamwerk vir gebruikersinteraksie met mikrodienste en funksies. Ek sal jou vertel van die finale besluit in die ooreenstemmende artikel in die reeks. Om funksies met mekaar te kommunikeer, het ek NATS.io gekies, want ek het dit al voorheen teëgekom en dit het redelik maklike integrasie in Kubernetes.

aankondiging

  • Inleiding
  • Die opstel van die ontwikkelingsomgewing, die opbreek van die taak in funksies
  • Agterkant werk
  • Frontend werk
  • Opstel van CICD, organisering van toetse
  • Begin 'n proefspeletjiesessie
  • Resultate van

Bron: will.com

Voeg 'n opmerking