„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks

KĂŒsimuste pĂ”hjal alustame suurt artiklite sarja serverivabade arvutustehnoloogiate rakendamisest reaalsete rakenduste arendamiseks. Selles sarjas kĂ€sitleme rakenduse arendamist, testimist ja lĂ”ppkasutajatele tarnimist, kasutades kaasaegseid abinĂ”usid: rakenduse mikroteenuste arhitektuuri (serverivaba variandina, tuginedes OpenFaaS), klastrile kubernetes rakenduse juurutamiseks, andmebaasile MongoDB, mis keskendub pilveklastrile ja selle rakendamisele, samuti pilvebussile NATS. Rakendus realiseerib mĂ€ngu "BĂŒliinid", mis on ĂŒks populaarse salongimĂ€ngu "Mafia" variante.

Mis on "BĂŒliinid"?

See on mĂ€ngu "Mafia", tuntud ka kui "Werewolf", variant. Selle aluseks on meeskonnamĂ€ng, kus osalised peavad samm-sammult vĂ€lja selgitama, kes on kes, ja proovima vĂ”ita. Kahjuks, kui mĂ€ngitakse veebis, kaob isiklik suhtlemine, mis on mĂ€ngu oluline osa. Klassikalise "Mafia" reeglid on ĂŒsna lihtsad, seetĂ”ttu lisatakse tavaliselt muid tegelasi, et mĂ€ng oleks rohkem mittelineaarne ja huvitav, kuid ĂŒldiselt sĂ€ilitavad nad originaali pĂ”hijooned, nĂ€iteks pĂ€eva jaöö vahetust, kĂ€igud ainult öösel ning liidud osalejate vahel. Samuti on mĂ€ngu vĂ”rgus mĂ€ngimise oluline erinevus see, et mĂ€ngujuht (mĂ€ngumeister, jutustaja) on tavaliselt arvutiprogramm.

MĂ€ngu kirjeldus

MĂ€ngureeglid, mida ma tahan teostada, on pĂ€rit vanast irc-botist, mille ma sĂ€ilitasin oma isiklikus arhiivis umbes 10 aastat tagasi. "BĂŒliinidel" on eellugu, millega iga mĂ€ng algab:

Kolmesaja seitsmenda kuningriigi, kolmesaja kĂŒmnenda riigi taga, seitsme mere taga elasid mĂ”ned kĂŒlad, kus elavad Vapper noormes ja Ilus neiud. Nad kĂŒlvasid vilja ja kĂ€isid lĂ€hikonnas metsas seeni ja marju korjamas... Nii see kestis sajast sajasse, kuni hirmus katastroof raputas Maad ja kurjus hakkas maailmas laienema! Ööd said pikkadeks ja kĂŒlmadeks ning pimeduses koitis metsast ning jĂ”udis kĂŒladesse halbu ja hirmutavaid olendeid. Kuskilt lendas Zmej Gorynych ning hakkas kaunit katholikas varastama ja kĂŒlaelanikelt kĂ”ike vÀÀrtuslikku Ă€ra vĂ”tma. Kahjur, ahne Baba Yaga, kes lendas oma teiba abil kaugelt metsast, segas elanike mĂ”istuse, ja isegi mĂ”ned loobusid oma ametist ning lĂ€ksid metsa röövida, moodustades seal bande. HĂ€rrad kohtusid Lehie, kes oskas puiduks ja pÔÔsasteks muutuda, hakkas jĂ€lgima rahu armastavaid talupoegi ja teenima röövlite kasu, nuhkides, kas head noormehed ei kavanda midagi oma asulate vabastamiseks Ă”udustest. Head noormehed ja Punased neiud, vĂ€sinud röövlite rĂŒnnakutest ning kohutavatest surmadest hirmuĂ€ratva Üksik Silm, kogusid kulda ja kutsusid naaberlinnast tuntud vĂ”itlejat — Ivan-TsarjevitĆĄ, kes lubas vabastada kĂŒla röövlitest. Metsas asuvas laantes pÀÀstis Ivan vĂ€ltimatust hukkumisest Hall Hunt, kes oli langenud röövlite lĂ”ksu. Vastutasuks lubas Hunt teavitada TsarjevitĆĄit eri metsakoletistest. Mööda sĂ”itis tuntud ravitseja Vasilisa Tark, ja nĂ€hes hĂ€da — jĂ€i hoolitsema rĂŒnnakute ohvrite eest. Metsa taga ilmus must loss, kus, nagu kuuldavasti, elas Koshchei Surematu, kes iga öö kĂŒlastas kĂŒlasid ja lummas Head Noormehed ja Punased Neiud, et nad ei julgeks kuulata tema kĂ€sku ja kĂ”ik tegid nii, nagu tema kĂ€skis. Ja Elutuks Metsa asus Kass-Bajun, ja igaĂŒks, kes temaga kohtus, uinus surmaval unel pĂ€rast tema muinasjutte vĂ”i hukkus tema rauast kĂŒĂŒniste tĂ”ttu.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Kolmandas kuningriigis

Nagu juba nĂ€ha, jagunevad mĂ€ngijad mitmeks rĂŒhmaks:

  • rahumeelsed elanikud (Head Noormehed, Punased Neiud, Ivan-TsarjevitĆĄ, Hall Hunt ja Vasilisa Tark)
  • röövlid (kui sellised röövlid, aga ka Baba-Jaga ja Lehie)
  • iseseisvad (Zmey-Gorynych, Üksik Silm, Tsaritan-Liug, Koshchei Surematu, Kass-Bajun)

MĂ€ngu eesmĂ€rk, nagu ĂŒlalpool öeldud, on ellu jÀÀda ja vĂ”ita. Vastased peavad mingil moel mĂ€ngust lahkuma, samas kui iseseisvad peavad samuti ellu jÀÀma mĂ€ngu lĂ”puni. MĂ€ngus on kuld, omamoodi mĂ€nguvaluuta, mida mĂ€ngijad teenivad ainult mĂ€ngu jooksul. VĂ”itjad saavad kulda. Mida rohkem kulda, seda kĂ”rgem on mĂ€ngija reiting.

RÀÀgin veidi rohkem isiksuste kirjeldamisest.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Hea Noormees

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Punane Neiu

Hea Noormees ja Punane Neiu — mĂ€ngu kĂ”ige traditsioonilisem ja peamine roll. Need on rahuliku elu elanikud, kes öösel magavad ja pĂ€eval töötavad. Öösel rĂŒndavad neid röövlid, Zmei Gorynych ja teised rollid, ning Vasilisa Premudraia ravib neid. VĂ€ikese tĂ”enĂ€osusega vĂ”ivad Hea noormees vĂ”i Punane neiu ellu jÀÀda rĂŒnnaku ajal ilma kaotusteta (vĂ”imalik, et kaotavad kulda), kuid nad saavad kĂ”ik teada mĂ€ngija hĂŒĂŒdnime jĂ€rgmisel pĂ€eval pĂ€rast rĂŒnnakukaitset. Öösel ei tegutse need mĂ€ngijad, vaid analĂŒĂŒsivad mĂ€nguolukorda mĂ€nguchatis. PĂ€eval otsustavad need mĂ€ngijad hÀÀletuse teel, kes neist ei ole Hea noormees vĂ”i Punane neiu. MĂ€ngija, kelle poolt hÀÀletas enamus teisi mĂ€ngijaid, lahkub mĂ€ngust, allesjÀÀnud saavad vĂ”i kaotavad kulda. Kui mĂ€ngijad ei vali kedagi enamus hÀÀlt, ei hukkuda ĂŒkski mĂ€ngija.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Ivan Tsarevich

Ivan Tsarevich — algselt anonĂŒĂŒmne rahulike elanike kaitsja. Öösel kontrollib ta teiste mĂ€ngijate rolle, kuna tunneb ainult ĂŒhte enda liitlast — Halli Hunti. Otsekohe Halli Hundi kaasabil (kes samuti vĂ”ib kontrollida teiste mĂ€ngijate rolle) vĂ”ib Ivan Tsarevich, kontrollimise asemel, öösel tappa teise tegelase. Kui kontrollimise tulemusena nĂ€eb Ivan Tsarevich Hea Noormehe vĂ”i Puna Neiu rolli mĂ€ngijal, vĂ”ib ta kutsuda need enda juurde ja tutvustada Halli Hundile ning teistele Headele Noormeestele ja Punastele Neidudele. Ivanit vĂ”ib hĂ€irida Tsarevna-Ćœaba, kes vĂ”ib teda öösel ahvatleda, ega reeda tema rolli teistele mĂ€ngijatele pĂ€eval. Kui Ivan leiab ise Tsarevna-Ćœaba, vĂ”ib ta talle pakkuda liitumist rahulike elanikega, kuid kui Tsarevna keeldub, sureb ta Ivani kĂ€e lĂ€bi. Zmei Gorynych vĂ”ib samuti takistada Ivan Tsarevichi kontrolle, kuid erinevalt Tsarevna-Ćœabast rÀÀgib ta pĂ€eval teistele mĂ€ngijatele, kes neist on Ivan Tsarevich. PĂ€eval ei erine Ivan Tsarevich kuidagi teistest Heade Noormeestest.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Hall Hunt

Hall Hunt — Ivan Tsarevich's assistant, whose keen sense helps Ivan find other Dobrye Molodtsy and Krasnye Devitsy. The Gray Wolf tells these players who Ivan Tsarevich is, and also informs about other players with the roles of Dobrye Molodtsy and Krasnye Devitsy. If the Wolf discovers a robber or another opponent, he immediately informs Ivan Tsarevich so that he can take action the next night. If the Princess Frog attacks the Wolf, he turns into an ordinary Dobryy Molodets and cannot check anyone, and the Princess does not know that it was actually the Gray Wolf, since the Wolf does not sleep at night. However, the Wolf himself learns during the day who the players are—Princess Frog, and can try to persuade the other Dobrye Molodtsy and Krasnye Devitsy who were brought to Ivan Tsarevich to vote for the execution of the Princess Frog. Also, the next night he can try anonymously to persuade the Princess Frog to side with the peaceful residents, so she doesn't harm any of them. At night, the Wolf can sacrifice himself to save Ivan Tsarevich or Vasilisa the Wise if he suspects that they might suddenly come under attack by robbers, or have been zombified by Koshchey (the Wolf has innate immunity to Koshchey's spells), but the Wolf is out of the game after the self-sacrifice.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Vasilisa Tark

Vasilisa Tark — plays for the peaceful residents, but they do not know about her, as Vasilisa is very modest. Also, Vasilisa the Wise, when healing, does not ask questions and, like a good doctor, treats everyone. But if Koshchey, LikhĐŸ or Leshiy drinks her medicine—it will be their last day, as Vasilisa only heals people. Zmey Gorynych or Kot Bayun will also not be helped by Vasilisa the Wise's medicine, but it will not harm them either. Also, at night, she is not bothered by Kot Bayun, as Vasilisa does not go to the Lifeless Forest for medicinal herbs. Moreover, the feminine charms of the Princess Frog do not affect Vasilisa. If her patient is attempted to be killed twice, medicine will prove powerless. Vasilisa will not save anyone from magical attacks, for example, from LikhĐŸ's curse. During the day, Vasilisa behaves like a Krasnaya Devitsa, and only a fleeting, slightly sorrowful glance may hint that she is the best healer in the Three-Nine Kingdom.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Robber

Robbers, erinevalt kĂ”igist eelnevatest rollidest, tunnevad ĂŒksteist, kuna elavad samas Koldes, ning tunnevad ka Lendoravat ja Babu-Jagat, mistĂ”ttu saavad nad esimesest kĂ€igust alates ĂŒhtselt tegutseda. Kuid ainult JĂ”hkrikohus tegutseb öösiti ega hÀÀleta pĂ€eval, samal ajal kui teised Röövlid teeseldavad usinalt Heade Poiste ja Punaste Neitsite rolli. Kui JĂ”hkrikohus langeb mĂ€ngust vĂ€lja mingil pĂ”hjusel, asendab teda kohe ĂŒks ĂŒlejÀÀnud Röövlitest. Esiteks pĂŒĂŒavad Röövlid neutraliseerida Ivan-Tsarjevit, enne kui too suudab koguda piisavalt jĂ”udu Heade Poiste ja Punaste Neitsite toel Röövlitele aktiivseks vastupanuks pĂ€eval.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Lendorav

Lendorav öösiti nuhib Röövlite jaoks, edastades neile leitud rolle nende Kolde piirkonnas, kuid pĂ€eval ei hÀÀleta, kuna ei ela kĂŒlas. Teised mĂ€ngijad vĂ”ivad Lendorava ĂŒle hÀÀletada ja seega ta hukata. Kuna Lendorav on soost pĂ€rit, ei saa teda printsess-Ă€ssik teinud, ja kui ta ĂŒritab, mĂ€rkab Lendorav tema maja, ja kĂŒlainimesed saavad teada, kes ta tĂ”eliselt on. Lendoraval pole pĂ”hjust karta KoĆĄĆĄej'i loitse, kuid Vasilisa vĂ”ib temast surmavalt paraneda. Kui Rikkalike Kass proovib Lendorava kallale tungida, riskib ta oma rauast kĂŒĂŒnte kaotamisega, ja siis peab Kass ohvreid uinuvalt nurruma.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Baba Yaga

Baba Yaga töötavad koos Röövlitega, öösiti nĂ”iduvad: nad vĂ”ivad kas saata haiguse teistele mĂ€ngijatele vĂ”i kaitsta mĂ”nda liitlast rĂŒnnaku eest. Tema loits on isegi tugevam kui Liku needus. PĂ€eval on Babu-Jaga samuti aktiivne: tema kaitse all olevat ei saa hukkuda isegi enamuse hÀÀltega. Siiski on pĂ€eva kaitsmiseks vajalikud maagilised juured piiratud, mistĂ”ttu Babu-Jaga ei saa kedagi, sealhulgas ennast, mĂ€ngu jooksul rohkem kui kolm korda kaitsta. Sel ajal pĂ€eval teeseldab Babu-Jaga tavalist Punast Neitsit ja hÀÀletab koos kĂ”igi teistega.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Madu-GorynytĆĄ

Madu-GorynytĆĄ öösel lendab ĂŒle kĂŒlateede, metsade ja soo ja paneb toime rööve, paljastades pĂ€eval röövel. PĂ€eval magab Zmei, seetĂ”ttu ei hÀÀleta, kuid teda vĂ”ivad enamus hÀÀlt kutsega hukata. Zmei on kĂ”igile vĂ€ga ohtlik, eriti röövlitele ja Ivan TsarevitĆĄile. Zmei ei hooli, keda röövida, kuid kui Hunt vĂ”i Leshiy ta paljastavad, vĂ”ib temast saada vÀÀrtuslik liitlane. Kui Zmei öösel tappa, on vĂ”imalik saada vÀÀrtuslik ese - Zmei Nahk, mis kaitseb selle omanikku kord fĂŒĂŒsilise rĂŒnnaku eest.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Üksik Silm

Üksik Silm öösel tapab kĂ”iki, kes talle teel ette jÀÀvad, ja kelle ta tapma ei suuda (Leshiy, Kot-Bayun vĂ”i Zmei Gorynych) - need needistab, nii et igaĂŒks, kes pĂŒĂŒab neitsi helistada tĂ€nasel ööl, sureb pĂ€eva jooksul. Isegi needistatud sureb, vĂ€lja arvatud Kot-Bayun, kes lihtsalt heidab magama, et jĂ”udu koguda, jÀÀdes jĂ€rgmisel ööl vahele. Ainult Baba-Yaga suudab kedagi needistamisest pÀÀsta. Needus ei mĂ”ju ka sellele, kes vĂ”idab Kot-Bayuni: tema, nagu Kot, heidab lihtsalt magama, jĂ€ttes kĂ€igu vahele.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Kuninga Liblikas

Kuninga Liblikas ei suuda mĂ€ngus vĂ”ita, kuid suudab öösel ahvatleda teisi mĂ€ngijaid ja teenida selle kĂ€igus palju raha. Ahvatletud jĂ€tab kĂ€igu vahele. Liblikas ei saa ahvatleda Vasilisa Premudrujat, samuti peaks ta vĂ€ltima Leshiy't, kes reedab ta kĂ”igile jĂ€rgmisel pĂ€eval. Kui Ivan TsarevitĆĄ vĂ”i Röövlite Ülem leiavad Liblikat, vĂ”ivad nad kutsuda teda rahumeelsete elanike vĂ”i Röövlite poole, kusjuures Ivan ei aktsepteeri Liblikalt keeldumist, kuid Ülem ei ole nii nĂ”udlik. Kuid Liblikas on piisavalt kaval ja vĂ”ib muutuda kahekordseks agentideks, sest hoolimata sellest, et ta ĂŒksi ei suuda vĂ”ita, on see suurepĂ€rane vĂ”imalus kulda koguda, kuna vĂ”imalused mĂ€ngu lĂ”puni jĂ”uda suurenevad! PĂ€eval teeseldab Kuninga Liblikas Punast Neitsit ja hÀÀletab koos teistega.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Koshchei Surematu

Koshchei Surematu elabib oma lossis. Öösel jalutab ta ĂŒmber naabruses asuvates kĂŒlades ja zombistab HĂ€id Noormehi ning Punaseid TĂŒtarlapsi, kes liituvad temaga ja tĂ€idavad kĂ”iki kĂ€ske. Kui nad keeldub sĂ”numit kirjutamast pĂ€evavalguses nĂ€iteks hÀÀletama, nagu Koshchei kĂ€sib, sureb Koshchei Teenija. Seega suudab Koshchei mĂ”jutada pĂ€evaseid hÀÀletustulemusi, kuigi isiklikult ta ei hÀÀleta. Kui Koshchei tapetakse, sureb ka kĂ”ik tema ohvrid. Vasilisa suudab Koshchei Teenijat tervendada, kes naaseb oma algsesse rolli. Zmei Gorynychil ja Huntidel on loomulik immuunsus zombistumise vastu, mistĂ”ttu Koshchei ei saa neid endale teenima saada. Samuti suudab Hunt pÀÀsta Ivani vĂ”i Vasilisa, ohverdades iseennast. Hunti pÀÀstetud saavad Hunti immuunsuse zombistumise vastu.

„Uued BĂŒlletÀÀnid”. Dev, ops ja uudishimulike inimeste jaoks
Kass-Bajun

Kass-Bajun elab metsas ja jahtib öösel. PĂ€eval magab oma pesas, seega ei osale ta hÀÀletustes. Kuid pĂ€eval vĂ”ivad nad hÀÀletamise tulemusel hukkuda. Kass vĂ”ib rĂŒnnata kahe meetodiga: nurrumine — ja siis tema ohver jÀÀb magama ega saa öösel liikuda ega jĂ€rgmisel pĂ€eval hÀÀletada, vĂ”i tapmine kohe raudkĂ€ppadega. RaudkĂ€pad ei mĂ”ju Zmei Gorynychile ning rĂŒnnates Leshyt, vĂ”ib Kass jÀÀda lausa ilma kĂ€ppadeta! Lihh ei saa Kassi needida, kes pĂ€rast needust lihtsalt ĂŒks öö magab. Kui keegi suudab Kass-Bayuni vĂ”ita, siis tervendab see igast haigusest ja vaevusest, sealhulgas Lihhi needusest. See Kassi vĂ”ime sĂ€ilib mĂ€ngija juures kuni mĂ€ngu lĂ”puni. Koshchei Teenijad ei saa pĂ€eval Kassi poolt hÀÀletada, kuid vĂ”ivad kaudselt teada saada, kes Kass on, ilma et nad sellest Koshcheile teataks. Kass-Bayun ei sĂ”lmi liite Ivani vĂ”i Röövlitega, seega on nad Kassi jaoks esmatĂ€htis sihtmĂ€rk.

Kasutatud tehnoloogiad

MĂ€ngu arendamiseks valisin serverita arvutustehnoloogiad (serverless) OpenFaaSi pĂ”hjal, kuna see on piisavalt lihtne mĂ€ngu korraldamiseks ja samas piisavalt arenenud, et kirjutada keerulisi mĂ€ngureegleid ilma liigsete keerukusteta. Kasutan ka Kubernetes'i klastrit, kuna see rakendusdekitsemise viis vĂ”imaldab ĂŒsna lihtsalt ja usaldusvÀÀrselt saavutada kiiret rakenduste seadistamist ja kerget skaleerimist. MĂ€nguloogika loomiseks saab kasutada ainult OpenFaaSi, kuid proovin ka teha Muinasjutukirjutajat eraldi konteinerina, et vĂ”rrelda teostamise keerukust. Peamiseks programmeerimiskeeleks mikroteenuste ja funktsioonide jaoks valisin Go, kuna olen seda ammu Ă”ppinud oma vabal ajal Perl'i asendamiseks, ning kasutajate suhtlemiseks mikroteenuste ja funktsioonidega kasutatakse js-i mingi raamistiku pĂ”hjal. LĂ”plikust otsusest rÀÀgin vastavas artiklis seeria jooksul. Funktsioonidevaheliseks suhtlemiseks valisin NATS.io, kuna olen juba varem kokku puutunud ja sellel on piisavalt lihtne integreerimine Kubernetes'isse.

Teade

  • Sissejuhatus
  • Arenduskeskkonna seadistamine, ĂŒlesande jagamine funktsioonideks
  • Backend tööde teostamine
  • Frontend tööde teostamine
  • CICD seadistamine, testimise korraldamine
  • MĂ€ngu prooviseansi korraldamine
  • Summary

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster