„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele

Luhtud lugejate soovidele algab suur artiklite tsĂŒkkel serverivabade arvutuste tehnoloogia rakendamisest reaalse rakenduse arendamiseks. Selles tsĂŒklis kĂ€sitletakse rakenduse arendamist, testimist ja lĂ”ppkasutajatele toimetamist kaasaegsete vahendite abil: rakenduse mikroteenuste arhitektuuri (serverivabas variandis, pĂ”hinedes OpenFaaS), rakenduse juurutamise klastrit kubernetes , andmebaasi MongoDB, mis on suunatud pilve klasterdamise ja rakenduse kasutamisele ning pilve bussile NATS. Rakenduses on teostatud mĂ€ng "Byliny", ĂŒks variant populaarse salongimĂ€ngu "Mafia".

Mis on "Byliny"?

See mĂ€ng on «Mafia», tuntud ka kui «Werewolf». Selle aluseks on meeskonnamĂ€ng, kus osalejad peavad samm-sammult vĂ€lja selgitama, kes on kes, ja pĂŒĂŒavad vĂ”ita. Kahjuks kaob vĂ”rgu mĂ€ngimisel oluline aspekt, nimelt isiklik suhtlemine, ning klassikaliste «Mafia» reeglid on piisavalt lihtsad, mistĂ”ttu lisatakse tavaliselt teiste tegelastega suuremateks mittelineaarseteks ja huvitavateks mĂ€ngukogemusteks, kuid ĂŒldiselt sĂ€ilivad originaalse «Mafia» pĂ”hijooned, nĂ€iteks pĂ€eva ja öö vahetamine, kĂ€igud ainult öösel ning liidud osalejate vahel. Samuti on vĂ”rgu mĂ€ngimise oluliseks erinevuseks see, et mĂ€ngujuht (kes on ka MĂ€ngu Meister, Jutuvestja) on tavaliselt arvutiprogramm.

MĂ€ngu kirjeldus

MĂ€ngureeglid, mida ma soovin ellu viia, on vĂ”etud vanast irc-botist, mille ma sĂ€ilitasin isiklikus arhiivis umbes 10 aastat tagasi. «BĂŒliinidel» on eelugu, millega iga mĂ€ng algab:

Kolmesajas ja kolmekĂŒmnes kuningriigis, seitsmeteistkĂŒmne mere taga, elas mitu kĂŒla, kus elasid Noored mehed ja Kaunid neiud. Nad nadasid vilju ja kĂ€isid lĂ€hedal metsas seeni ja marju korjamas
 Nii jĂ€tkus see sajandeid, kuni kohutav katastroof raputas Maad ja kurjus hakkas levima maailma! Ööd muutusid pikkadeks ja kĂŒlmadeks ning pimeduses luusis metsas ja eksles kĂŒlla hirmuĂ€ratavaid ja jubedaid olendeid. Kusagilt ilmus Tinatark ja hakkas varastama kauneid neiud ning röövima kĂŒlarahvalt kĂ”ike vÀÀrtuslikku. Kahjulik ja ahne Baba-Jaga, kes saabus oma lendavast korvist kaugetest metsadest, segas rahva mĂ”tteid ning isegi mĂ”ned loobusid oma ametist ning lĂ€ksid metsa röövliteks, moodustades seal salakaubikute jĂ”ugu. Ükski kurjategija ei kohtunud Leshyga, kes oskas muutuda puudeks ja pÔÔsasteks, hakkas jĂ€lgima rahulikku talurahvast ja teenima röövivalvureid, nuhkides, kas head noored mehed mĂ”lgutavad mĂ”tteid nende asulate vabastamisest kurjusest. Head mehed ja kaunid neiud, vĂ€sinud röövlite kallaletungidest ja kohutavatest surmadest Ă”udse Ühe Silmaga Kurjast, kogusid nad kulda ja kutsusid naaberlinna tuntud vĂ”itlejat — Ivan-TsarevitĆĄ, kes lubas vabastada kĂŒla röövlitest. Metsas heinamaal pÀÀstis Ivan enne vĂ€ltimatut hukkumist Halli Hunti, kes sattus röövlite lĂ”ksu. Sellele vastutasuks lubas Hunt teatada Tsaaripojale erinevatest metsaolenditest. KĂ”rval sĂ”itis lĂ€bi tuntud ravitseja Vasilisa Tark, ja kui ta nĂ€gi hĂ€da — jĂ€i ta aitama elanikke, kes kannatasid rikka rĂŒnnakute all. Metsa taga ilmus must loss, kus, nagu kuulujutud rÀÀgivad, asus Koshchei Immatuuri, igal ööl kĂ€is ta kĂŒlas ja keelas Hea Noormehi ja Ilusaid Neid, et nad ei julgeks tema kĂ€sku eirata; kĂ”ik tegid nii, nagu ta kĂ€skis. Ja Elutuks Metsas asus Kass-BaŃŽĐœ, ja igaĂŒks, kes teda kohtas, uinus surmava une tĂ”ttu tema muinasjuttudest vĂ”i hukkus tema raudkĂŒĂŒniste tĂ”ttu.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Kolme kĂŒlastus kuningriik

Nagu juba nÀha, jagunevad mÀngijad mitmetesse gruppidesse:

  • rahumeelsed elanikud (Head Noormehed, Ilusad Neid, Ivan-Tsaaripoeg, Hall Hunt ja Vasilisa Tark)
  • röövlid (tĂ”elised röövlid, samuti Baba-Yaga ja Leshi)
  • iseseisvad (Zmey-Gorynych, Üksik Silm, Printsess-Konn, Koshchei Immatuuri, Kass-BaŃŽĐœ)

MÀngu eesmÀrk, nagu eespool mainitud, on ellu jÀÀda ja vÔita. Vastased peavad kas vÔi mingil moel mÀngust lahkuma, samas kui iseseisvatel tegelastel tuleb samuti mÀngu lÔpuni ellu jÀÀda. MÀngus on kuld, eriline mÀnguvaluuta, mida mÀngijad teenivad ainult mÀngu kÀigus. VÔitjad saavad kulda. Mida rohkem kulda, seda kÔrgem on mÀngija reiting.

Teen vĂ€ikese ĂŒlevaate tegelastest.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Hea Poiss

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Punase Salli TĂŒtarlaps

Hea Poiss ja Punase Salli TĂŒtarlaps — mĂ€ngu kĂ”ige tavalisem ja peamine roll. Need on rahuarmastavad elanikud, kes öösel magavad ja pĂ€eval töötavad. Öösel rĂŒndavad neid röövlarĂŒhmad, ZmĐ”Đč Đ“ĐŸŃ€Ń‹ĐœŃ‹Ń‡ ja teised rollid, samas kui Vasilisa Premudraya neid ravib. Teatud, vĂ€ikese tĂ”enĂ€osusega vĂ”ivad Head noored vĂ”i Punane neiu rĂŒnnaku ĂŒle elada ilma kahjude saamata (vĂ”ib-olla kaotades selle tĂ”ttu kulda), kuid kĂ”ik saavad teada mĂ€ngija hĂŒĂŒdnime jĂ€rgmisel pĂ€eval pĂ€rast kaitset. Öösel ei tee need mĂ€ngijad mingeid kĂ€ike, vaid analĂŒĂŒsivad mĂ€ngusituatsiooni, lĂ€htudes mĂ€nguchatist saadud sĂ”numitest. PĂ€eval otsustavad need mĂ€ngijad hÀÀletamise teel, kes neist ei ole Head noored vĂ”i Punane neiu. MĂ€ngija, kelle poolt hÀÀletas enamus teisi mĂ€ngijaid, lahkub mĂ€ngust; jĂ€relejÀÀnud saavad vĂ”i kaotavad kulda. Kui mĂ€ngijad ei valinud kedagi enamus hÀÀlega, ei saa ĂŒkski mĂ€ngija hukkuda.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Ivan-CaarĐ”ĐČоч

Ivan-CaarĐ”ĐČоч — algselt anonĂŒĂŒmne rahu kaitse. Öösiti kontrollib teiste mĂ€ngijate rolle, kuna tunneb ainult ĂŒhte oma liitlast — Hall Hunt. Koostöös Halli Hundi (kes samuti vĂ”ib kontrollida teiste mĂ€ngijate rolle) saab Ivan-TsarĐ”ĐČоч öösel kedagi tappa, mitte kontrollida. Kui Ivan-TsarĐ”ĐČоч kontrolli kĂ€igus nĂ€eb mĂ€ngijalt HĂ€id Poisse vĂ”i Punaseid TĂŒtarlapsi, vĂ”ib ta kutsuda nad enda juurde ja tutvustada neid Hallile Hundile ja teistele HĂ€id Poisse ja Punaseid TĂŒtarlastele. Ivanit vĂ”ib hĂ€irida TsaaritĂŒtar-Konn, kes vĂ”ib teda öösel petta, samas kuna ei reeda tema rolli teistele mĂ€ngijatele pĂ€eval. Kui Ivan avastab ise TsaaritĂŒtar-Konna, vĂ”ib ta talle pakkuda, et liituda rahutega, kuid kui TsaaritĂŒtar keeldub, sureb ta Ivani kĂ€e lĂ€bi. Zmey-Gorynych vĂ”ib samuti Ivan-TsarĐ”ĐČich'i kontrollidele takistada, kuid erinevalt TsaaritĂŒtar-Konnast ĂŒtleb ta pĂ€eva jooksul teistele mĂ€ngijatele, kes neist on Ivan-TsarĐ”ĐČоч. PĂ€eval ei erine Ivan-TsarĐ”ĐČоч teistest HĂ€id Poisse.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Hall Hunt

Hall Hunt — Ivan Tsarevich'i abiline, kelle terav nina aitab Ivanil leida teisi Head Noormehed ja Punased TĂŒtarlapsed. Hall Hunt ĂŒtleb neile mĂ€ngijatele, kes on Ivan Tsarevich, ning teavitab ka teistest mĂ€ngijatest, kelle rollid on Head Noormehed ja Punased TĂŒtarlapsed. Kui Hunt avastab röövli vĂ”i mĂ”ne muu vaenlase, teavitab ta sellest kohe Ivan Tsarevich'i, et too jĂ€rgmisel ööl meetmeid vĂ”taks. Kui Hundi rĂŒndab Printsess-Konn, muutub ta tavaliseks Head Noormeheks ja ei saa kedagi kontrollida, ning Printsess ei saa teada, et tegelikult oli see Hall Hunt, sest Hunt ei maga öösel. Kuid Hunt teada, kes mĂ€ngijatest on Printsess-Konn, ja vĂ”ib pĂŒĂŒda veenda teisi Head Noormehed ja Punased TĂŒtarlapsed, keda Ivan Tsarevich'i juurde tĂ”i, hÀÀletama Printsess-Konna hukkamise poolt. Samuti vĂ”ib ta jĂ€rgmisel ööl proovida anonĂŒĂŒmselt veenda Printsess-Konna rahuvalvurite poole, et ta ei puutuks kedagi neist. Hunt vĂ”ib öösel ennast ohverdada, et pÀÀsta Ivan Tsarevich vĂ”i Vasilisa Tark, kui ta kahtlustab, et nad satuvad röövlite rĂŒnnaku alla, vĂ”i et nad on Koơčeiga zombitatud (Hundil on loomulik immuunsus Koơče ĂŒksteise sarmide vastu), kuid pĂ€rast eneseohverdamist jÀÀb Hunt mĂ€ngust vĂ€lja.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Vasilisa Tark

Vasilisa Tark — mĂ€ngib rahuvalvaja rolli, kuid nad ei tea temast, sest Vasilisa on vĂ€ga tagasihoidlik. Samuti on Vasilisa Tark, kui ta ravib, ei kĂŒsi kĂŒsimusi ja nagu hea arst ravib kĂ”iki jĂ€rjest. Kuid kui KoĆĄĆĄei, Liho vĂ”i LeĆĄkij joob tema ravimit, ei ela nad enam pĂ€evagi, kuna Vasilisa ravib ainult inimesi. Zmej Gorynči vĂ”i Kot-Bajunile ei too Vasilisa Tark ravim samuti abi, kuid ei too ka kahju. Lisaks ei hĂ€iri Kot-Bajun Vasilisat öösel, kuna Vasilisa ei kĂ€i elujĂ”uliste ravimtaimede pĂ€rast Elutuks Metsaks nimetatud kohas. Samuti ei mĂ”ju printsess Konnade naiselikud vĂ”luvood Vasilisele. Kui Vasilisa patsienti ĂŒritatakse tappa kaks korda, jÀÀb meditsiin jĂ”uetuks. Vasilisa ei pÀÀsta ka maagiliste rĂŒnnakute, nĂ€iteks Liho needuste eest. PĂ€eval kĂ€itub Vasilisa nagu Punane Neiu ja ainult hetkeline, kergelt kurb pilk vĂ”ib natuke vihjata, et ta on parim ravitseja Kolmandas kuningriigis.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Röövel

Röövlid, erinevalt kĂ”igist teistest rollidest tunnevad nad ĂŒksteist, kuna elavad samas Urgas, ja tunnevad ka Loodusvaimu ja Baba-Jaga, mistĂ”ttu saavad nad esimesest kĂ€igust alates ĂŒhiselt tegutseda. Kuid ainult RĂŒhma Juht tegutseb öösel ja ei hÀÀleta pĂ€eval, samas kui teised Röövlid pĂŒĂŒdlevad innukalt headeks Poisteks ja Punasteks Neidudeks. Kui Juht mĂ€ngust vĂ€lja langeb, asendab teda kohe ĂŒks allesolevatest Röövlitest. EelkĂ”ige pĂŒĂŒavad Röövlid vĂ€lja viia Ivan TsarevitĆĄi, enne kui ta on kogunud piisavalt jĂ”udu Headest Poistest ja Punastest Neidudest, et hommikusest vastuhakkamisest Röövlitele vastu seista.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Loodusvaim

Loodusvaim öös nuhivad röövlite heaks, teatades neile leitud rollidest nende peidupaigas, kuid pĂ€eva jooksul ei hÀÀleta, kuna elab kĂŒlaski. Siiski saavad teised mĂ€ngijad hÀÀletada LeĆĄi poolt ja seelĂ€bi hukata ta. Kuna LeĆĄ on soost pĂ€rit, ei saa teda Kuninganna-Roheline konn petta, ja kui ta proovima peaks, siis LeĆĄ mĂ€rgistab tema kodu, ning kĂŒlaelanikud saavad teada, kes ta tegelikult on. LeĆĄil ei ole pĂ”hjust karta KoĆĄei ettekujutusi, kuid Vasilisa vĂ”ib temaga liiga kaugele minna. Kui Kass-Bajun proovib LeĆĄile rĂŒnnata, vĂ”ib ta kaotada oma teravad kĂŒĂŒnised ja peab seejĂ€rel oma ohvreid uinuma vaid möödaminnes.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Baba-Jaga

Baba-Jaga samuti töötab koos Röövlitega, öösel loitsib: vĂ”ib kas teistele mĂ€ngijatele haigusi saata vĂ”i kaitsta mĂ”ne liitlasest mĂ€ngija rĂŒnnaku eest. Tema loits on isegi tugevam kui Lihotoomise needus. PĂ€eval on Baba-Yaga samuti aktiivne: seda, keda ta kaitseb, ei saa isegi enamuse hÀÀletusega hukata. Siiski on pĂ€evaste kaitsete maagiliste juurte reserves piiratud, nii et Baba-Yaga ei saa kedagi, sealhulgas ennast, rohkem kui kolm korda mĂ€ngu jooksul kaitsta. Samuti pĂ€eval teeb Baba-Yaga endast tavalise Punase Neitsi ja hÀÀletab koos kĂ”igi teistega.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
KĂŒhasĂŒda

KĂŒhasĂŒda öösel lendab kĂŒlas, metsades ja sooferades ning tegeleb röövimisega, paljastades pĂ€eval rĂŒndaja rolli. PĂ€eval magab KĂŒhasĂŒda, seega ei hÀÀleta, kuid teda saab enamuse hÀÀletusega hukata. KĂŒhasĂŒda on kĂ”igile vĂ€ga ohtlik, eriti Röövlitele ja Ivan Tsarevichile. KĂŒhasĂŒdale on ĂŒkskĂ”ik, keda röövida, kuid kui ta paljastatakse Hunt vĂ”i Lehis, vĂ”ib temast saada vÀÀrtuslik liitlane. Kui tappa KĂŒhasĂŒda öösel, on tĂ”enĂ€osus saada vĂ€ga vÀÀrtuslik ese — KĂŒhasĂŒdame Nahk, mis kaitseb selle omanikku korra fĂŒĂŒsilise rĂŒnnaku eest.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Üksik Loodus

Üksik Loodus ööl tapab kĂ”iki, kes talle ette jÀÀvad, ja need, keda ta ei saa tappa (Leshy, Kot-Bayun vĂ”i Zmey Gorynych) — need, kellele ta need needuse paneb, surevad, kui keegi proovib nendega selle sama öö jooksul suhelda. Ka pĂ”hjus, mille tĂ”ttu needus pandud, sureb, kuid Kot-Bayun ei sure — ta lihtsalt heidab magama, et jĂ”udu koguda, jĂ€ttes jĂ€rgmise öö vahele. Ainult Baba-Yaga suudab Lihi needusest pÀÀsta. Needus ei mĂ”juta ka seda, kes on Kot-Bayuni vĂ”itnud: tema, nagu Kot, lihtsalt heidab magama ja jĂ€tab kĂ€igu vahele.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Printsess-Konn

Printsess-Konn ei saa mĂ€ngus vĂ”ita, aga vĂ”ib öösel palju raha teenida, sĂŒdamejĂ”hkraks tehes teisi mĂ€ngijaid. Petetud mĂ€ngija jĂ€tab oma kĂ€igu vahele. Konn ei saa Vassilisa Tarkaga petta ja peaks vĂ€ltima LeĆĄijat, kes reedab ta jĂ€rgmisel pĂ€eval. Kui Ivan TsarevitĆĄ vĂ”i Röövli Pealik leiavad Konna, vĂ”ivad nad kutsuda ta rahu pĂ€rast vĂ”i röövlite poole, samas kui Ivan ei aktsepteeri Konna keeldumist, aga Pealik ei ole nii valiv. Kuid Printsess on piisavalt nutikas, et saada topeltagendiks, sest kuigi ta ĂŒksi ei suuda vĂ”ita - on see suurepĂ€rane vĂ”imalus kulla kogumiseks, kuna vĂ”imalused mĂ€ngu lĂ”puni jĂ”udmiseks tĂ”usevad palju! PĂ€eval teeseldab Printsess-Konn Punast Neidu ja hÀÀletab koos kĂ”igi teistega.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Koshchei Immatuuri

Koshchei Immatuuri elabub oma lossis. Öösel kĂ”nnib ta ĂŒmbritsevates kĂŒlades ning zombitab Head Noormehed ja Punased Neitsid, kes liituvad temaga ja tĂ€idavad kohustuslikult kĂ”ik ĂŒlesanded. Kui nad keeldusid nĂ€iteks hÀÀletamast pĂ€eval teistmoodi, kui Koshchei kĂ€skis, vĂ”i kirjutamast sĂ”numeid pĂ€evavalges vestluses, kui Koshchei seda keelas, siis Koshchei Teenija hukkub. Nii suudab Koshchei mĂ”jutada pĂ€evase hÀÀletuse tulemusi, kuigi ta ise isiklikult ei hÀÀleta. Kui Koshchei tapetakse, sureb ka kĂ”ik tema ohvrid. Vasilisa suudab ravida Koshchei Teenijat, kes naaseb oma algsesse rolli. Zmei-Gorynychil ja Huntidel on kaasasĂŒndinud immuunsus zombitseerimise vastu, seega ei saa Koshchei ega saa neid oma teenistusse pöörata. Samuti saab Hunt pÀÀsta Ivani vĂ”i Vasilisat, end ohverdades. PÀÀstetud Hunt omandab Hundi immuunsuse zombitseerimise vastu.

„Uued Byliinid“. Dev'ile, ops'ile ja uudishimulikele inimestele
Kass-BaŃŽĐœ

Kass-BaŃŽĐœ elab teab, öösiti jahtida. PĂ€eval magab enda augus, seega hÀÀletamisel ei osale. Kuid pĂ€eval vĂ”ivad teda enamus hÀÀletusega hukata. Kass saab rĂŒnnata kahel viisil: mĂŒrisedes - ja siis tema ohver uinub ja ei saa öösel liikuda, samas kui ka hÀÀletada jĂ€rgmisel pĂ€eval - vĂ”i kohe terava kĂŒĂŒntega tappa. KĂŒĂŒntega rĂŒnnak ei toimi Zmej-Gorynych'i vastu ja kui rĂŒndab Leshyt, vĂ”ib Kass isegi vajuda kĂŒĂŒnteta! Lihit ei saa Kassi Ă€ra needida, kes pĂ€rast needust lihtsalt ĂŒhe öö magab. Kui keegi suudab Kass-Bayunia vĂ”ita, ravib see kĂ”iki haigusi ja vaevusi, sealhulgas Lihi needust. See Kassi vĂ”ime jÀÀb mĂ€ngijale mĂ€ngu lĂ”puni. Koshchei teenrid ei saa pĂ€eval Kassi vastu hÀÀletada, kuid saavad kaudselt teada, kes Kass on, seda Koshcheile teatamata. Kass-Bayun ei moodusta liite Ivani vĂ”i Röövlitega, seega on nad Kassi jaoks esmatĂ€htis siht.

Kasutatud tehnoloogiad

MĂ€ngu loomiseks valisin serveriteta arvutustehnoloogia (serverless) OpenFaaS-i pĂ”hjal, kuna see on piisavalt lihtne mĂ€ngu korraldamiseks ja samas piisavalt arenenud, et kirjutada komplekseid mĂ€ngureegleid ilma liigsete keerukusteta. Kasutan ka Kubernetes klastrit, sest see rakenduste juurutamise viis vĂ”imaldab ĂŒsna lihtsalt ja usaldusvÀÀrselt saavutada kiiret juurutamist ning sujuvat skaleerimist. MĂ€nguloogika loomiseks saab piirduda ainult OpenFaaS-iga, kuid proovin ka teha Muinasjutulooja eraldi konteinerina, et vĂ”rrelda teostus keerukust. Peamiseks programmeerimiskeeleks mikroteenuste ja funktsioonide jaoks valisin Go, kuna olen seda juba pikka aega oma vabal ajal Ă”ppinud Perl'i asemele, ja kasutajate suhtlemiseks mikroteenuste ja funktsioonidega kasutab js mĂ”ne raamistiku pĂ”hjal. LĂ”pliku otsuse kohta rÀÀgin vastavas artiklis seeriast. Funktsioonide omavaheliseks suhtlemiseks valisin NATS.io, kuna olen sellega juba varem kokku puutunud ja sellel on Kubernetes'iga piisavalt lihtne integreerimine.

Teade

  • Sissejuhatus
  • Arenduse keskkonna seadistamine, ĂŒlesande jagamine funktsioonideks
  • Tööd backendis
  • Tööd frontendis
  • CICD seadistamine, testimise korraldamine
  • ProovimĂ€ngu sessiooni kĂ€ivitamine
  • KokkuvĂ”te

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster