"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele

Lugejate arvukate taotluste tõttu on algamas suur artiklite sari serverita arvutustehnoloogia kasutamisest reaalse rakenduse arendamiseks. See tsükkel hõlmab rakenduste arendamist, testimist ja lõppkasutajatele edastamist, kasutades kaasaegseid tööriistu: mikroteenuse rakenduse arhitektuur (serverita versioonis, mis põhineb OpenFaaS), kobar kubernetes rakenduste juurutamiseks, andmebaas MongoDB, mis on keskendunud pilve klasterdamisele ja -rakendustele, samuti pilvebussile NATS. Rakendus rakendab mängu "Epics", mis on üks populaarse salongimängu "Mafia" variante.

Mis on "eeposed"?

See on variant mängust "Mafia", tuntud ka kui "Libahunt". See põhineb meeskonnamängul, milles osalejad peavad samm-sammult õppima, kes on kes ja püüdma võita. Kahjuks kaob võrgus mängides mängust selline oluline komponent nagu isiklik suhtlemine ja klassikalise “Mafia” reeglid on üsna lihtsad, seetõttu lisatakse mittelineaarsema ja huvitavama mänguviisi jaoks tavaliselt teisi tegelasi, kuid üldiselt säilivad algse "Maffia" põhijooned, näiteks päeva ja öö vaheldumine, liikumised ainult öösel, aga ka osalejatevahelised liidud. Teine oluline erinevus võrgus mängimise vahel on see, et host (teise nimega Game Master, Storyteller) on tavaliselt arvutiprogramm.

Mängu kirjeldus

Mängureeglid, mida soovin rakendada, on võetud ühest vanast irc-botist, mille salvestasin oma isiklikku arhiivi umbes 10 aastat tagasi. "Eepostel" on tagalugu, millega iga mäng algab:

Kauges kuningriigis, kolmekümnendas osariigis, seitsme mere taga elas ja elas mitu küla ja neis Head kaaslased и Ilusad tüdrukud. Külvasid leiba ja läksid ümbritsevasse metsa seeni ja marju korjama... Ja nii jätkus sajandist sajandisse, kuni Maad raputas kohutav katastroof ja kurjus hakkas levima üle maailma! Ööd muutusid pikaks ja külmaks ning pimedas luusisid metsas ebasõbralikud ja kohutavad olendid, kes rändasid külla. Kuskilt saabunud Zmey Gorynych ja sai harjumuseks varastada punaseid piigasid ja võtta külaelanikelt kõik väärtuslik ära. Kahjulik ja ahne Baba Yaga, mis lendas mördil ​​kaugetest metsadest, ajas elanike meeled segadusse ja isegi mõned loobusid oma käsitööst ja läksid metsa röövima, moodustades seal jõugu. Kurjategijad kohtusid Goblin, kes teadis, kuidas puudeks ja põõsasteks muutuda, hakkas ta rahumeelseid külaelanikke jälgima ja röövleid teenindama, nuusutades, kas head kaaslased kavatsevad oma asulaid kurjadest vaimudest vabastada. Head kaaslased ja ilusad neiud, väsinud röövlirünnakutest ja kohutavatest surmadest kohutavate käes Tore ühesilmne, kogus kulda ja kutsus kuulsa maadleja naaberlinnast - Ivan Tsarevitš, kes lubas küla röövlitest vabastada. Metsa lagendikul päästis Ivan kindlast surmast Hall hunt, kes langes Röövlite lõksu. Vastutasuks lubas Hunt teavitada Tsarevitšit erinevatest metsakurjadest vaimudest. Möödus kuulus ravitseja Tark Vasilisa, ja kui ta häda nägi, jäi ta tormiliste rünnakute all kannatanud elanikke põetama. Metsa taha ilmus must palee, kuhu ta kuulujuttude järgi elama asus Koschei Surmatu, igal õhtul käis ta külas ja võlus häid kaaslasi ja punaseid piigasid, et need ei julgeks tema käsku eirata, teeksid kõik nii, nagu ta ütles. Ja asus elama Elutu metsa Kass Baiyun, ja kõik, kes teda kohtasid, jäid pärast tema jutte magama või surid tema raudküünistesse.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Kauge-kauge kuningriik

Nagu juba näete, on mängijad jagatud mitmeks rühmaks:

  • tsiviilisikud (Good Fellows, Red Maidens, Ivan Tsarevitš, Hall Hunt ja Vasilisa Tark)
  • röövlid (röövlid ise, aga ka Baba Yaga ja Leshy)
  • sõltumatud (Snake-Gorynych, Snake-One-Eyed, Konnaprintsess, Koschey the Immortal, Cat-Bayun)

Mängu eesmärk, nagu eespool mainitud, on elus püsida ja võita. Vastased peavad nii või teisiti mängust lahkuma ja ka sõltumatud peavad mängu lõpuni ellu jääma. Mängus on kuld, omamoodi mänguvaluuta, mida mängijad teenivad ainult mängu sees. Võitjad saavad kulla. Mida rohkem kulda, seda kõrgem on mängija reiting.

Peatun veidi lähemalt tegelaste kirjeldusel.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Hea kaaslane

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Punane neiu

Hea kaaslane и Punane neiu - kõige levinum ja peamine roll mängus. Need on tsiviilisikud, kes magavad öösel ja töötavad päeval. Öösel ründab neid üks röövlitest, Madu Gorynych ja muud rollid ning Vasilisa Tark ravib nad. Väikese tõenäosusega suudab Hea Fellow või Red Maiden rünnaku kahjustusteta üle elada (võib-olla kaotab selle käigus kulla), kuid kõik tunnevad mängija hüüdnime ära järgmisel päeval pärast rünnakut. Öösel ei tee need mängijad ühtegi liigutust, vaid analüüsivad mänguolukorda mänguvestluse sõnumite põhjal. Päeva jooksul otsustavad need mängijad hääletades, kumb neist pole Hea Fellow või Red Maiden. Mängija, kelle poolt hääletas enamik teisi mängijaid, lahkub mängust, ülejäänud mängijad saavad kulla või kaotavad selle. Kui mängijad häälteenamusega kedagi ei vali, siis ühtki mängijat ei hukata.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Ivan Tsarevitš

Ivan Tsarevitš – esialgu anonüümne tsiviilisikute kaitsja. Öösiti kontrollib ta teiste mängijate rolle, kuna tunneb ainult üht oma liitlast - Halli hunti. Halli hundi (kes saab ka teiste mängijate rolle kontrollida) otsesel osalusel saab Ivan Tsarevitš kontrollimise asemel öösel teise tegelase tappa. Kui Ivan Tsarevitš näeb kontrolli tulemusena mängijas hea kaaslase või punase neiu rolli, võib ta nad enda juurde kutsuda ja tutvustada neile Halli Hundi ja teistele headele kaaslastele ja punastele neidudele. Ivani võib segada Konnaprintsess, kes suudab teda öösel võrgutada, ilma et ta päeval oma rolli teistele mängijatele avaldaks. Kui Ivan ise konnaprintsessi avastab, võib ta kutsuda ta tsiviilisikute hulka, kuid kui printsess keeldub, sureb ta Ivani käe läbi. Serpent-Gorynych võib segada ka Ivan-Tsarevitši tšekke, kuid erinevalt konnaprintsessist ütleb ta päeva jooksul teistele mängijatele, kes neist on Ivan-Tsarevitš. Päevasel ajal ei erine Ivan Tsarevitš teistest headest kaaslastest.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Hall hunt

Hall hunt - Ivan Tsarevitši assistent, kelle terav haistmismeel aitab Ivanil leida teisi häid kaaslasi ja punaseid piigasid. Hall Hunt räägib neile mängijatele, kes on Ivan Tsarevitš, ning annab teada ka teistest headest kaaslastest ja punastest piigadest. Kui hunt avastab röövli või muu vaenlase, teatab ta sellest kohe Ivan Tsarevitšile, et too saaks järgmisel ööl tegutseda. Kui hunti ründab konnaprintsess, muutub ta tavaliseks heaks kaaslaseks ega saa kedagi kontrollida ning printsess ei saa teada, et see oli tegelikult hall hunt, kuna hunt ei maga öösel. Hunt ise saab aga päeva jooksul teada, kes mängijatest on konnaprintsess, ning võib proovida veenda ülejäänud häid kaaslasi ja punaseid piigasid, kelle ta Ivan Tsarevitši juurde tõi, hääletama Konna hukkamise poolt. Printsess. Ka järgmisel õhtul võib ta proovida konnaprintsessi anonüümselt veenda tsiviilisikute poolele, et too kedagi neist ei puudutaks. Hunt võib end öösel ohverdada Ivan Tsarevitši või Targa Vasilisa päästmiseks, kui ta eeldab, et nad satuvad ootamatult röövlite rünnaku alla või on Koštšei zombistunud (hundil on Koštšei võlude suhtes kaasasündinud puutumatus), kuid pärast seda eneseohverduse Hunt langeb mängust välja.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Tark Vasilisa

Tark Vasilisa - mängib tsiviilisikute jaoks, kuid nad ei tea temast, kuna Vasilisa on väga tagasihoidlik. Ka Vasilisa Tark, kui ta ravib, ei esita küsimusi ja nagu hea arst, ravib kõiki. Kuid kui Koschey, Likho või Leshy joovad tema ravimit, ei ela nad kauem kui üks päev, kuna Vasilisa ravib ainult inimesi. Targa Vasilisa ravim ei aita ka madu Gorynychi ega Cat-Bayuni, kuid nad ei too ka kahju. Samuti ei puuduta Kot-Bayun Vasilisat öösel, kuna Vasilisa ei lähe Elutusse metsa ravimtaimi ostma. Lisaks ei tööta Vasilisa peal konnaprintsessi naiste võlud. Kui nad prooviksid tema patsienti kaks korda tappa, oleks meditsiin jõuetu. Vasilisa ei päästa teid maagilistest rünnakutest, näiteks Dashingi needusest. Päeval käitub Vasilisa nagu Punane Neitsi ning ainult põgus, veidi kurb pilk võib vihjata, et ta on Kaug-Kauge Kuningriigi parim ravitseja.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Rogue

RöövlidErinevalt kõigist varasematest rollidest tunnevad nad üksteist, kuna elavad samas koopas, ning tunnevad ka Leshyt ja Baba Yagat, nii et nad saavad kohe esimesest liigutusest koos tegutseda. Kuid ainult jõugu juht teeb toiminguid öösel ja ei hääleta päeval, ülejäänud röövlid aga usinalt teesklevad, et nad on Head Fellows ja Red Maidens. Kui liider mingil põhjusel mängust lahkub, võtab üks allesjäänud Kurjadest kohe tema asemele. Esiteks üritavad Röövlid Ivan Tsarevitšit keelata, kuni ta on kogunud headelt kaaslastelt ja punastelt neidudelt piisavalt jõudu, et päeva jooksul röövlitega aktiivselt vastu astuda.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Goblin

Goblin öösel luurab ta Röövlite heaks, teavitades neid nende koopast leitud rollidest, kuid päeval ta ei hääleta, kuna ta ei ela külas. Teised mängijad võivad aga Leshy poolt hääletada ja seega ta hukata. Kuna Leshy on pärit soodest, ei saa teda konnaprintsess võrgutada ja kui ta proovib, märgib Leshy tema maja ära ja külaelanikud saavad teada, kes ta tegelikult on. Leshem ei peaks Koštšei loitsu kartma, kuid Vasilisa võib ta surnuks ravida. Kui Kot-Bayun üritab Leshyt rünnata, võib ta kaotada oma raudsed küünised ja siis peab Kot ohvrid vaid oma nurrumisega magama uinuma.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Baba Yaga

Baba Yaga Samuti töötab ta koos röövlitega ja loitsib öösel: ta võib saata teistele mängijatele haigusi või kaitsta mõnda oma liitlast rünnaku eest. Tema nõidus on isegi tugevam kui Likhi needus. Päeval on aktiivne ka Baba Yaga: kedagi tema kaitse all olevat ei saa hukata isegi häälteenamusega. Päevaseks kaitseks mõeldud maagiliste juurte pakkumine on aga piiratud, nii et Baba Yaga ei saa kaitsta kedagi, sealhulgas iseennast, rohkem kui kolm korda mängu kohta. Päeval teeskleb Baba Yaga tavalist punast neiut ja hääletab koos kõigi teistega.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Draakon

Draakon öösel lendab ta üle külade, metsade ja soode ning tegeleb röövimisega, paljastades päeval röövitava rolli. Päeval Madu magab, nii et ta ei hääleta, kuid ta võib hukata häälteenamusega. Madu on väga ohtlik kõigile, eriti Röövlitele ja Ivan Tsarevitšile. Madu ei hooli, keda ta röövib, kuid kui hunt või Leshy ta avastavad, võib temast saada väärtuslik liitlane. Kui tapate mao öösel, võite suure tõenäosusega saada väga väärtusliku eseme - maonaha, mis kaitseb selle omanikku kord füüsilise rünnaku eest.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Tore ühesilmne

Tore ühesilmne öösel tapab ta kõik, kes tema teele satuvad, ja keda ta ei suuda tappa (Leshy, Kota-Bayun või Madu Gorynych), ta neab, nii et igaüks, kes üritab samal õhtul neetud inimesega suhelda, sureb päeval . Neetud ise saab ka sel juhul surma, ei sure ainult Kot-Bayun, kes läheb lihtsalt magama, et jõudu koguda, jättes järgmisel õhtul oma käigu vahele. Ainult Baba Yaga suudab Likhi needusest päästa. Needus ei mõjuta seda, kes Kass-Bayuni alistas: ta, nagu kass, läheb lihtsalt magama ja jätab pöörde vahele.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Printsess Konn

Printsess Konn ei saa mängu võita, kuid ta saab öösiti teisi mängijaid võrgutades teenida palju raha. Kiusatu jätab oma korra vahele. Konn ei suuda Vasilisat Tarka võrgutada ja ta peaks vältima ka Leshyt, kes ta järgmisel päeval kõigile reedab. Kui Ivan Tsarevitš või Röövlijuht Konna leiavad, võivad nad kutsuda enda kõrvale tsiviilisikuid või röövleid, samas kui Ivan ei nõustu konna keeldumisega, kuid juht pole nii valiv. Kuid printsess on üsna kaval, temast võib saada topeltagent, sest hoolimata asjaolust, et ta ei saa üksi võita, on see suurepärane võimalus kulda saada, sest võimalused mängu lõpuni ellu jääda suurenevad oluliselt! Päeval esineb Konnaprintsess Punase Neitsina ja hääletab kõigiga koos.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Koschei Surmatu

Koschei Surmatu elab oma lossis. Öösiti kõnnib ta läbi ümberkaudsete külade ja zombies head Fellows ja Red Maidens, kes tulevad tema teenistusse ja täidavad vastuvaidlematult kõiki korraldusi. Keeldudes täitmast käsku, näiteks hääletamast päeval teisiti, kui Koštšei ütles, või kirjutamast päeva jooksul vestlusesse sõnumeid, kui Koštšei seda keelab, sureb Koštšei sulane. Seega suudab Koschey päeva jooksul hääletamistulemusi mõjutada, kuigi ta ise ei hääleta. Kui Koštšei tapetakse, surevad ka kõik tema ohvrid. Vasilisa saab ravida sulane Koštšei, kes seejärel naaseb oma algsesse rolli. Madu-Gorynychil ja Hundil on kaasasündinud puutumatus zombistumise vastu, nii et Koschey, ükskõik kui palju ta ka ei tahaks, ei saa neid oma teenistuseks muuta. Hunt võib ennast ohverdades ka Ivani või Vasilisat hädast välja aidata. Saved by the Wolf omandab Hundi immuunsuse zombistumise vastu.

"Uued eeposed". Arendajatele, operaatoritele ja uudishimulikele
Kass Baiyun

Kass Baiyun elab metsas, peab öösiti jahti. Päeval magab ta oma lohus, seega hääletamisel ei osale. Päevasel ajal saab ta aga hukata häälteenamusega. Kass võib rünnata kahel viisil: nurruda – ja siis tema ohver jääb magama ega saa öösel kõndida ega saa järgmisel päeval hääletada – või tappa otse raudküüstega. Snake-Gorynychil küünistega ründamine ei toimi ja pärast Leshy ründamist võib kass üldse küünisteta jääda! Dashing ei saa kiruda Kassi, kes pärast needust lihtsalt magab ühe öö. Kui kellelgi õnnestub Kota-Bayun võita, saab ta terveks mis tahes haigusest, sealhulgas Likhi needusest. See kassivõime jääb mängijale kuni mängu lõpuni. Koštšei teenijad ei saa päeval Kassi poolt hääletada, küll aga saavad nad kaudselt teada, kes see Kass on, ilma Koštšeid sellest teavitamata. Kot-Bayun ei sõlmi liite Ivani ega röövlitega, seega on nemad Koti peamine sihtmärk.

Kasutatud tehnoloogiad

Mängu kirjutamiseks valisin OpenFaaS-il põhineva serverivaba arvutitehnoloogia, kuna see on piisavalt lihtne mängu korraldamiseks ja samal ajal piisavalt arenenud, et kirjutada keerulisi mängureegleid ilma tarbetute komplikatsioonideta. Kasutan ka Kubernetese klastrit, kuna see rakenduste juurutamise meetod muudab kiire juurutamise ja hõlpsa skaleerimise üsna lihtsaks ja usaldusväärseks. Mänguloogika loomiseks saab hakkama ainult OpenFaaS-iga, kuid proovin ka Storytelleri teha eraldi konteinerina, et võrrelda teostuse keerukust. Mikroteenuste ja funktsioonide peamise programmeerimiskeelena valisin Go, kuna olen seda juba pikka aega vabal ajal Perli asendamiseks uurinud ja js-i hakatakse kasutama teatud raamistiku alusel kasutaja interaktsiooniks mikroteenuste ja funktsioonidega. Lõplikust otsusest räägin teile sarja vastavas artiklis. Funktsioonide omavaheliseks suhtlemiseks valisin NATS.io, kuna olin sellega juba varem kokku puutunud ja see on Kubernetesesse üsna lihtsalt integreeritav.

Kuulutus

  • Sissejuhatus
  • Arenduskeskkonna seadistamine, ülesande jaotamine funktsioonideks
  • Taustatöö
  • Frontend töö
  • CICD seadistamine, testimise korraldamine
  • Alustage proovimängu seanssi
  • Tulemused

Allikas: www.habr.com

Lisa kommentaar