"Nije Epics". Foar devs, ops en nijsgjirrige minsken

"Nije Epics". Foar devs, ops en nijsgjirrige minsken

Troch tal fan oanfragen fan lêzers begjint in grutte searje artikels oer it brûken fan serverleaze komputertechnology om in echte applikaasje te ûntwikkeljen. Dizze syklus sil tapassingsûntwikkeling, testen en levering oan ein brûkers dekke mei moderne ark: microservice-applikaasje-arsjitektuer (yn in serverleaze ferzje, basearre op OpenFaaS), kluster kubernetes foar applikaasje ynset, databank MongoDB, rjochte op wolkklustering en tapassing, lykas wolkbus NATS. De applikaasje ymplementearret it spultsje "Epics", ien fan 'e farianten fan it populêre parlour-spiel "Mafia".

Wat binne "Epics"?

Dit is in fariant fan it spultsje "Mafia", ek wol bekend as "Werewolf". It is basearre op in teamspul wêryn dielnimmers stap foar stap leare moatte wa is wa en besykje te winnen. Spitigernôch, as jo online spielje, ferdwynt sa'n wichtige komponint fan it spul as persoanlike ynteraksje, en de regels fan 'e klassike "Mafia" binne frij ienfâldich, dêrom, foar in mear net-lineêre en nijsgjirrige gameplay wurde normaal oare karakters tafoege, mar yn 't algemien wurde de wichtichste skaaimerken fan' e orizjinele "Mafia" bewarre, bygelyks de feroaring fan dei en nacht, beweecht allinich nachts, lykas alliânsjes tusken dielnimmers. In oar wichtich ferskil tusken spyljen online is dat de host (aka Game Master, Ferhaleferteller) is meastal in kompjûter programma.

Game beskriuwing

De regels fan it spul dy't ik ymplementearje wol binne nommen út in âlde irc-bot dy't ik sawat 10 jier lyn yn myn persoanlik argyf bewarre. "Epics" hawwe in eftergrûn wêrmei elk spultsje begjint:

Yn it fiere keninkryk, yn de tritichste steat, foarby de sân seeën, wennen en wennen ferskate doarpen, en dêryn Goeie keardels и Moaie famkes. Se siedden brea en gongen nei it omlizzende bosk om paddestoelen en bessen te plukken... En dat gie troch fan ieu nei ieu, oant in skriklike katastrophe de Ierde skodde en it kwea oer de wrâld begûn te fersprieden! De nachten waerden lang en kâld, en yn it tsjuster swalken ûnfreonlike en ferskriklike skepsels de bosk en swalken it doarp yn. Ergens wei oankommen draak en krige de gewoante om Reade fammen te stellen en alles weardefolle fan de doarpsbewenners ôf te nimmen. Skealik en gierig Baba Yaga, dy't op in mortier fleach út fiere bosken, ferwarre de geasten fan 'e ynwenners, en sels guon joegen har ambacht op en gongen de bosk yn om te rôven, en foarmen dêr in bende. De smjunten moete Goblin, dy't wist yn beammen en boskjes te feroarjen, begûn er freedsume doarpsbewenners te tafersjoch te hâlden en de rôvers te tsjinjen, te snuffeljen oft de Good Fellows wat op 'e slach wiene om har delsettingen fan kweade geasten te befrijen. Goede keardels en moaie fammen, wurch fan 'e oerfallen fan' e Rover, en skriklike deaden troch de hannen fan 'e skriklike Dashing One-Eyed, sammele goud en noege in ferneamde wrakseler út in oanbuorjende stêd - Ivan Tsarevich, dy't tasein it doarp fan rôvers te befrijen. Yn in iepening yn 'e bosk Ivan rêden fan in wisse dea Griene Wolf, dy't yn 'e kûlefal fan 'e Rover foel. Yn ruil, de Wolf tasein te ynformearjen de Tsarevich oer ferskate bosk kweade geasten. In ferneamde healer kaam foarby Vasilisa de Wize, en doe't se problemen seach, bleau se om de bewenners te ferpleatsen dy't lêst hiene fan 'e oanfallen fan 'e dashing. Efter de bosk ferskynde in swart paleis, dêr't er neffens geroften him yn fêstige Koschei the Deathless, alle nachten bisocht er de doarpen en forhekse de Goede Keunsten en Reade Fammen, dat hja net oan syn oarders weagje, hja soene alles dwaen sa't er sei. En fêstige yn it libbenleaze bosk Kat Baiyun, en elkenien dy't him moete, foel nei syn ferhalen yn 'e sliep of stoar oan syn izeren klauwen.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Fier Far Away keninkryk

Sa't jo al sjen kinne, binne spilers ferdield yn ferskate groepen:

  • boargers (Good Fellows, Red Maidens, Ivan Tsarevich, Grey Wolf en Vasilisa de Wize)
  • rôvers (de rôvers sels, lykas Baba Yaga en Leshy)
  • ûnôfhinklik (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

It doel fan it spul, lykas hjirboppe neamd, is om yn libben te bliuwen en te winnen. Tsjinstanners moatte it spultsje op ien of oare manier ferlitte, en ûnôfhinkliken moatte ek yn libben bliuwe oant de ein fan it spul. It spul hat goud, in soarte fan spultsje faluta dat spilers fertsjinje allinnich binnen it spul. De winners krije goud. Hoe mear goud, hoe heger de wurdearring fan de spiler.

Ik sil in bytsje mear yngean op de beskriuwing fan de personaazjes.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Goeie keardel

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Red Maiden

Goeie keardel и Red Maiden - de meast wiidferspraat en haadrol yn it spul. Dit binne boargers dy't nachts sliepe en oerdeis wurkje. Nachts wurde se oanfallen troch ien fan 'e rôvers, de slang Gorynych en oare rollen, en Vasilisa de Wize genêst se. Mei wat lytse kâns kin de Good Fellow of de Reade Maiden de oanfal sûnder skea oerlibje (mooglik ferlieze goud yn it proses), lykwols, elkenien sil werkenne de spiler syn bynamme de oare deis nei de oanfal. Nachts meitsje dizze spilers gjin bewegingen, mar analysearje de spielsituaasje basearre op berjochten yn 'e spielchat. Oerdei beslute dizze spilers troch te stimmen wa fan harren net de Good Fellow of de Reade Maiden is. De spiler stimd foar troch de mearderheid fan oare spilers ferlit it spul, de oerbleaune spilers krije of ferlieze goud. As spilers net kieze immen troch mearderheid stimmen, gjin spiler wurdt útfierd.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Ivan Tsarevich

Ivan Tsarevich - yn earste ynstânsje in anonime ferdigener fan boargers. Nachts kontrolearret hy de rollen fan oare spilers, om't hy mar ien fan syn bûnsmaten wit - de Grize Wolf. Mei de direkte dielname fan 'e Grey Wolf (dy't ek de rollen fan oare spilers kin kontrolearje), kin Ivan Tsarevich, ynstee fan te kontrolearjen, nachts in oar karakter deadzje. As, as gefolch fan de kontrôle, Ivan Tsarevich sjocht de rol fan in Good Fellow of in Red Maiden yn in spiler, dan kin er útnoegje se nei syn plak en yntrodusearje se oan de Grize Wolf en oare Good Fellows en Reade Maidens. Ivan kin wurde bemuoid troch de Frog Princess, dy't kin ferliede him nachts, sûnder reveal syn rol oan oare spilers oerdeis. As Ivan sels de Kikkertprinsesse ûntdekt, kin er har útnoegje om by de boargers te kommen, mar as de prinsesse wegeret, stjert se yn 'e hannen fan Ivan. De Serpent-Gorynych kin ek ynterferearje mei de kontrôles fan Ivan-Tsarevich, mar, yn tsjinstelling ta de Frogprinses, sil hy oerdeis de oare spilers fertelle wa fan har Ivan-Tsarevich is. Oerdei is Ivan Tsarevich net oars as oare Good Fellows.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Griene wolf

Griene wolf - assistint fan Ivan Tsarevich, waans skerpe gefoel foar geur Ivan helpt om oare Good Fellows en Red Maidens te finen. Grey Wolf fertelt dizze spilers wa't Ivan de Tsarevich is, en ynformearret ek oer oare spilers mei de rollen fan Good Fellows en Red Maidens. As de Wolf in rôver of oare fijân ûntdekt, lit er Ivan Tsarevich daliks ynformearje, sadat er de oare nacht aksje ûndernimme kin. As de Wolf oanfallen wurdt troch de Kikkertprinses, feroaret er yn in gewoane Goede Fellow en kin er gjinien kontrolearje, en de Prinses sil net witte dat it eins de Grize Wolf wie, om't de Wolf nachts net sliept. De Wolf sels sil lykwols oerdeis útfine wa fan de spilers de Kikkertprinses is, en kin besykje de rest fan 'e Good Fellows en Reade Maidens, dy't er nei Ivan Tsarevich brocht hat, te oertsjûgjen om te stimmen foar de eksekúsje fan 'e Kikkert Prinsesse. Ek de oare nacht kin er besykje de Kikkertprinsesse anonym oan 'e kant fan boargers te oertsjûgjen, sadat se net ien fan har oanrekket. De Wolf kin him nachts offerje om Ivan Tsarevich of Vasilisa de Wize te rêden, as er der fan útgiet dat se ynienen ûnder de oanfal fan rôvers falle sille, of troch Koshchei zombifisearre binne (de Wolf hat in oanberne ymmuniteit foar Koshchei syn sjarmes), mar nei de selsopoffering sakket de Wolf út it spul.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Vasilisa de Wize

Vasilisa de Wize - spilet foar boargers, mar se witte net oer har, sûnt Vasilisa is hiel beskieden. Ek Vasilisa de Wize, as se behannelet, stelt gjin fragen en, lykas in goede dokter, behannelet elkenien. Mar as Koschey, Likho of Leshy har medisinen drinke, sille se net langer libje as ien dei, om't Vasilisa allinich minsken behannelet. De medisyn fan Vasilisa de Wize sil ek de slang Gorynych of de Cat-Bayun net helpe, mar se sille ek gjin skea bringe. Ek Kot-Bayun rekket Vasilisa nachts net, om't Vasilisa net nei it Lifeless Forest giet om genêskrêftige krûden te keapjen. Derneist wurkje de froulike sjarme fan 'e Frog Princess net op Vasilisa. As se besochten har pasjint twa kear te deadzjen, soe medisinen machteleas wêze. Vasilisa sil jo net rêde fan magyske oanfallen, bygelyks fan 'e Dashing-flok. Oerdei gedraacht Vasilisa him as in Reade Maiden, en allinich in flechtich, wat tryst blik kin in bytsje hingje dat se de bêste healer is yn it Far Far Away Kingdom.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Rogue

Rôvers, Oars as alle eardere rollen, se kenne inoar, sûnt se wenje yn deselde Lair, en ek kenne Leshy en Baba Yaga, sadat se kinne hannelje yn konsert rjocht út de earste beweging. Mar allinich de lieder fan 'e binde docht nachts aksjes en stimt net oerdeis, wylst de rest fan' e Roverers har iverich pretendearje as Good Fellows en Reade Maidens. As de Leader om hokker reden it spultsje ferlit, nimt ien fan 'e oerbleaune Rogues fuortendaliks syn plak yn. Alderearst besykje de Roverers Ivan de Tsarevich út te skeakeljen oant er genôch krêften sammele hat fan Good Fellows en Red Maidens om de Rovers aktyf te konfrontearjen oerdeis.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Goblin

Goblin nachts bispiede er foar de Rover, en ynformearret harren oer de rollen fûn yn harren Lair, mar oerdeis hy net stimme, sûnt hy wennet net yn it doarp. Oare spilers kinne lykwols op Leshy stimme en him sa útfiere. Om't de Leshy út 'e sompen komt, kin er net ferliede wurde troch de Kikkertprinses, en as er it besiket, sil de Leshy har hûs markearje, en sille de doarpsbewenners útfine wa't se echt is. Leshem moat net bang wêze foar de tsjoen fan Koshchei, mar Vasilisa kin him dea genêze. As Kot-Bayun besiket Leshy oan te fallen, riskearret er syn izeren klauwen te ferliezen, en dan sil Kot de slachtoffers yn 'e sliep moatte wedzjen mei allinnich syn spinnen.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Baba Yaga

Baba Yaga Hy wurket ek gear mei de Rovers en spreuken nachts: hy kin of stjoere sykte nei oare spilers of beskermje ien fan syn bûnsmaten út oanfal. Har hekserij is noch sterker as de flok fan Likh. Oerdei is Baba Yaga ek aktyf: elkenien ûnder har beskerming kin sels net troch in mearderheid fan stimmen terjochtsteld wurde. It oanbod fan magyske woartels foar beskerming oerdeis is lykwols beheind, sadat Baba Yaga gjinien mear dan trije kear per wedstriid kin beskermje, ynklusyf harsels. Oerdei docht Baba Yaga him foar as in gewoane Reade Maiden en stimt mei alle oaren.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
draak

draak nachts fljocht er oer doarpen, bosken en sompen en docht er oan oerfallen, wêrby't de rol fan 'e berôve oerdeis iepenbiere wurdt. Oerdei sliept de Slang, dus hy stimt net, mar hy kin útfierd wurde troch in mearderheid fan stimmen. De slang is tige gefaarlik foar elkenien, benammen foar de Rover en Ivan Tsarevich. De slang makket it net út wa't er berôvet, mar as er ûntdutsen wurdt troch de Wolf of de Leshy, kin er in weardefolle bûnsmaat wurde. As jo ​​de Snake nachts deadzje, kinne jo, mei wat kâns, in heul weardefol item krije - de Snake Skin, dy't har eigner ienris beskermje sil tsjin fysike oanfal.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Dashing One-Eyed

Dashing One-Eyed nachts deadet er elkenien dy't him yn 'e wei komt, en wa't er net deadzje kin (Leshy, Kota-Bayun, of de slange Gorynych) ferflokt er, sadat elkenien dy't dyselde nacht mei de ferdomde kommunisearje besiket oerdeis te stjerren. . De ferdomde sels stjert yn dit gefal ek, allinich stjert Kot-Bayun net, dy't gewoan op bêd giet om krêft te krijen, en de oare nacht syn beurt oerslaan. Allinnich Baba Yaga kin Likh rêde fan 'e flok. De flok hat gjin ynfloed op dejinge dy't de Cat-Bayun fersloech: hy, lykas de Kat, giet gewoan op bêd en slacht in beurt oer.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Prinses Kikkert

Prinses Kikkert kin net winne it spul, mar hy kin fertsjinje in soad jild troch in ferlieden oare spilers nachts. De fersochte mist syn beurt. De kikkert kin Vasilisa de Wize net ferliede, en se moat Leshy ek mije, dy't har de oare deis oan elkenien ferriedt. As Ivan de Tsarevitsj of de Lieder fan 'e Rovers de Kikkert fine, kinne se boargers of de Roverders oan har kant útnoegje, wylst Ivan de wegering fan 'e Kikkert net akseptearje sil, mar de Lieder is net sa kieskeurich. Mar de prinsesse is frij slûch, se kin in dûbele agint wurde, om't nettsjinsteande it feit dat se net allinich kin winne, dit is in poerbêste kâns om goud te winnen, om't de kânsen om te oerlibjen oant it ein fan it spul gâns tanimme! Oerdei docht de Kikkertprinses har foar as de Reade Faam en stimt mei elkenien tegearre.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Koschei the Deathless

Koschei the Deathless wennet yn syn kastiel. Nachts rint er troch de omlizzende doarpen en zombifisearret er Good Fellows en Reade Maidens, dy't yn syn tsjinst komme en sûnder twifel alle oarders útfiere. Troch te wegerjen om bygelyks in opdracht út te fieren om oerdei oars te stimmen as wat Koshchei fertelde, of oerdei berjochten yn it petear te skriuwen as Koshchei it ferbean hat, stjert Koshchei syn Tsjinner. Sa kin Koschey de útslaggen fan stimmen oerdei beynfloedzje, ek al stimt er sels net. As Koshchei fermoarde wurdt, stjerre ek al syn slachtoffers. Vasilisa kin tsjinstfeint Koshchei genêze, dy't dan weromkomt nei syn oarspronklike rol. De Snake-Gorynych en de Wolf hawwe in oanberne immuniteit foar zombifikaasje, dus Koschey, hoefolle hy ek wol, kin se net yn syn tsjinst meitsje. De Wolf kin Ivan of Vasilisa ek helpe út de problemen troch himsels op te offerjen. Saved by the Wolf krijt Wolf immuniteit foar zombifikaasje.

"Nije Epics". Foar devs, ops en nijsgjirrige minsken
Kat Baiyun

Kat Baiyun wennet yn 'e bosk, jacht by nacht. Oerdei sliept er yn syn holte, dat hy docht net mei oan it stimmen. Hy kin lykwols oerdei eksekutearre wurde mei in mearderheid fan stimmen. De kat kin op twa manieren oanfalle: purr - en dan falt syn slachtoffer yn 'e sliep en kin nachts net rinne, en kin de oare deis net stimme - of direkt deadzje mei izeren klauwen. Oanfallen mei klauwen wurket net op 'e Snake-Gorynych, en nei't Leshy oanfallen hat, kin de Kat hielendal sûnder klauwen litte! Dashing kin de Kat net flokke, dy't nei de flok gewoan ien nacht sliepe sil. As immen it slagget om Kota-Bayun te ferslaan, sil hy genêzen wurde fan elke sykte of sykte, ynklusyf de flok fan Likh. Dit Cat-fermogen bliuwt by de spiler oant it ein fan it spul. De feinten fan Koshchei kinne oerdei net op de Kat stimme, mar se kinne yndirekt útfine wa't de Kat is sûnder Koshchei dêroer te ynformearjen. Kot-Bayun giet gjin alliânsjes oan mei Ivan of de Rover, sadat se it primêre doel binne foar Kot.

Technologyen brûkt

Om it spultsje te skriuwen, keas ik serverleaze komputertechnology basearre op OpenFaaS, om't it ienfâldich genôch is om it spultsje te organisearjen, en tagelyk avansearre genôch om komplekse spulregels te skriuwen sûnder ûnnedige komplikaasjes. Ik sil ek in Kubernetes-kluster brûke, om't dizze metoade foar it ynsetten fan applikaasjes it frij ienfâldich en betrouber makket om rappe ynset te krijen en de mooglikheid om maklik te skaaljen. Om de logika fan it spultsje te meitsjen, kinne jo allinich mei OpenFaaS komme, mar ik sil ek besykje de Storyteller te meitsjen as in aparte kontener om de kompleksiteit fan 'e ymplemintaasje te fergelykjen. As de wichtichste programmeartaal foar mikrotsjinsten en funksjes, keas ik Go, sûnt ik haw studearre it foar in lange tiid yn myn frije tiid te ferfangen Perl, en js sil brûkt wurde basearre op in bepaald ramt foar brûkers ynteraksje mei microservices en funksjes. Ik sil jo fertelle oer it definitive beslút yn it oerienkommende artikel yn 'e searje. Om funksjes mei elkoar te kommunisearjen, keas ik NATS.io, om't ik it al earder tsjinkaam, en it hat frij maklik yntegraasje yn Kubernetes.

Meidieling

  • Ynlieding
  • It opsetten fan de ûntwikkelingsomjouwing, it opbrekken fan de taak yn funksjes
  • Backend wurk
  • Frontend wurk
  • CICD opsette, testen organisearje
  • Begjin in proefspultsje sesje
  • Resultaten

Boarne: www.habr.com

Add a comment