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
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.
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.
Hea kaaslane
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
Kuulutus
- Sissejuhatus
- Arenduskeskkonna seadistamine, ülesande jaotamine funktsioonideks
- Taustatöö
- Frontend töö
- CICD seadistamine, testimise korraldamine
- Alustage proovimängu seanssi
- Tulemused
Allikas: www.habr.com