"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille

Lukijoiden lukuisten pyyntöjen vuoksi on alkamassa laaja artikkelisarja palvelimettoman laskentatekniikan käytöstä todellisen sovelluksen kehittämiseen. Tämä sykli kattaa sovelluskehityksen, testauksen ja toimituksen loppukäyttäjille nykyaikaisilla työkaluilla: mikropalvelusovellusarkkitehtuuri (palvelimettomassa versiossa, joka perustuu OpenFaaS), klusteri kuvernööri sovellusten käyttöönottoa varten, tietokanta MongoDB, joka keskittyy pilviklusterointiin ja -sovelluksiin sekä pilviväylään NATS. Sovellus toteuttaa pelin "Epics", joka on yksi suositun olohuonepelin "Mafia" muunnelmista.

Mitä ovat "eepokset"?

Tämä on muunnelma pelistä "Mafia", joka tunnetaan myös nimellä "Ihmissusi". Se perustuu joukkuepeliin, jossa osallistujien tulee oppia askel askeleelta kuka on kuka ja yrittää voittaa. Valitettavasti verkossa pelatessa niin tärkeä pelin osa kuin henkilökohtainen vuorovaikutus katoaa, ja klassisen "Mafian" säännöt ovat melko yksinkertaiset, joten epälineaarisemman ja mielenkiintoisemman pelin aikaansaamiseksi yleensä lisätään muita hahmoja, mutta yleensä alkuperäisen "mafian" pääpiirteet säilyvät, esimerkiksi päivän ja yön vaihtuvuus, liikkeet vain yöllä sekä liittoutumat osallistujien välillä. Toinen tärkeä ero verkossa pelaamisen välillä on se, että isäntä (alias Game Master, Storyteller) on yleensä tietokoneohjelma.

Pelin kuvaus

Pelin säännöt, jotka haluan toteuttaa, on otettu vanhasta irc-botista, jonka tallensin henkilökohtaiseen arkistooni noin 10 vuotta sitten. "Epicsillä" on taustatarina, jolla jokainen peli alkaa:

Kaukaisessa valtakunnassa, XNUMX. osavaltiossa, seitsemän meren takana, asui ja asui useita kyliä, ja niissä Hyvät kaverit и Kauniita tyttöjä. He kylvivät leipää ja menivät ympäröivään metsään sieniä ja marjoja... Ja tämä jatkui vuosisadasta vuosisadalle, kunnes kauhea katastrofi ravisteli maata ja paha alkoi levitä kaikkialle maailmaan! Yöt tulivat pitkiksi ja kylmiksi, ja pimeässä metsässä kulkivat epäystävälliset ja kauhistuttavat olennot ja vaelsivat kylään. Tuli jostain Käärme Gorynych ja tapani varastaa punaisia ​​​​neitoja ja viedä kyläläisiltä kaiken arvokkaan. Haitallinen ja ahne Baba Yaga, joka lensi kranaatilla kaukaisista metsistä, hämmensi asukkaiden mielet, ja jotkut jopa luopuivat ammatistaan ​​ja menivät metsään ryöstämään muodostaen siellä jengin. Pahat tapasivat Hiisi, joka osasi muuttua puiksi ja pensaiksi, hän alkoi tarkkailla rauhallisia kyläläisiä ja palvella ryöstöjä haistaen, aikoivatko Hyvät jäsenet jotain vapauttaa siirtokuntiaan pahoista hengistä. Hyvät kaverit ja kauniit neitsyt, väsyneitä ryöstöjen hyökkäyksiin ja kauheisiin kuolemiin hirvittävien käsissä Reipas yksisilmäinen, keräsi kultaa ja kutsui kuuluisan painijan naapurikaupungista - Ivan Tsarevitš, joka lupasi vapauttaa kylän rosvoista. Metsän aukiolla Ivan pelasti varmalta kuolemalta Harmaasusi, joka putosi Ryöstöjen ansaan. Vastineeksi susi lupasi ilmoittaa Tsarevitšille erilaisista metsän pahoista hengistä. Kuuluisa parantaja kulki ohi Vasilisa Viisas, ja nähdessään vaikeuksia hän jäi hoitamaan asukkaita, jotka olivat kärsineet räjähdysmiesten hyökkäyksistä. Metsän taakse ilmestyi musta palatsi, johon hän huhujen mukaan asettui Koschey Kuolematon, joka ilta hän vieraili kylissä ja lumosi Hyvät Fellows ja Red Maidens, jotta he eivät uskaltaisi olla tottelematta hänen käskyjään, he tekisivät kaiken kuten hän sanoi. Ja asettui elottomaan metsään Kissa Baiyun, ja jokainen, joka tapasi hänet, nukahti hänen tarinoidensa jälkeen tai kuoli hänen rautakynsiinsä.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Kaukana Kaukana valtakunta

Kuten jo näet, pelaajat on jaettu useisiin ryhmiin:

  • siviilit (Good Fellows, Red Maidens, Ivan Tsarevitš, Harmaa susi ja Vasilisa Viisas)
  • rosvot (ryöstäjät itse, samoin kuin Baba Yaga ja Leshy)
  • riippumaton (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

Pelin tavoitteena, kuten edellä mainittiin, on pysyä hengissä ja voittaa. Vastustajien on poistuttava pelistä tavalla tai toisella, ja myös riippumattomien on pysyttävä hengissä pelin loppuun asti. Pelissä on kultaa, eräänlaista pelivaluuttaa, jonka pelaajat ansaitsevat vain pelin sisällä. Voittajat saavat kultaa. Mitä enemmän kultaa, sitä korkeampi pelaajan luokitus.

Pysähdyn hieman tarkemmin hahmojen kuvaukseen.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Hyvä kaveri

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Punainen neito

Hyvä kaveri и Punainen neito - Pelin yleisin ja päärooli. Nämä ovat siviilejä, jotka nukkuvat yöllä ja työskentelevät päivällä. Yöllä heidän kimppuunsa hyökkää yksi rosvoista, käärme Gorynych ja muut roolit, ja Vasilisa Viisas parantaa heidät. Pienellä todennäköisyydellä Good Fellow tai Red Maiden selviää hyökkäyksestä ilman vahinkoa (mahdollisesti menettää kultaa prosessissa), mutta kaikki tunnistavat pelaajan lempinimen seuraavana päivänä hyökkäyksen jälkeen. Yöllä nämä pelaajat eivät tee liikkeitä, vaan analysoivat pelitilannetta pelin chatin viestien perusteella. Päivän aikana nämä pelaajat päättävät äänestämällä, kumpi heistä ei ole Good Fellow tai Red Maiden. Useimpien muiden pelaajien äänestämä pelaaja poistuu pelistä, loput pelaajat saavat tai menettävät kultaa. Jos pelaajat eivät valitse ketään enemmistöäänestyksellä, ketään pelaajaa ei teloiteta.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Ivan Tsarevitš

Ivan Tsarevitš - aluksi nimetön siviilien puolustaja. Yöllä hän tarkistaa muiden pelaajien roolit, koska hän tuntee vain yhden liittolaisistaan ​​- Harmaan susin. Harmaan suden (joka voi myös tarkistaa muiden pelaajien roolit) suoralla osallistumisella Ivan Tsarevitš voi tarkastuksen sijaan tappaa toisen hahmon yöllä. Jos Ivan Tsarevitš näkee tarkastuksen seurauksena pelaajassa Hyvän kaverin tai Punaisen Neidon roolin, hän voi kutsua heidät paikalleen ja esitellä heidät Harmaalle Susille ja muille Hyville Felloweille ja Red Maidenille. Sammakkoprinsessa voi häiritä Ivania, joka voi vietellä hänet yöllä paljastamatta rooliaan muille pelaajille päivällä. Jos Ivan itse löytää sammakkoprinsessan, hän voi kutsua hänet siviilien joukkoon, mutta jos prinsessa kieltäytyy, hän kuolee Ivanin käsiin. Käärme-Gorynych voi myös häiritä Ivan-Tsarevitšin sekkejä, mutta toisin kuin sammakkoprinsessa, hän kertoo päivän aikana muille pelaajille, kuka heistä on Ivan-Tsarevitš. Päivän aikana Ivan Tsarevitš ei eroa muista Hyvistä Felloweista.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Harmaa susi

Harmaa susi - Ivan Tsarevitšin avustaja, jonka terävä hajuaisti auttaa Ivania löytämään muita hyviä ystäviä ja punaisia ​​neitoja. Harmaa susi kertoo näille pelaajille, kuka Ivan Tsarevitš on, ja myös muista pelaajista Good Fellowsin ja Red Maidensin rooleissa. Jos susi löytää rosvon tai muun vihollisen, hän ilmoittaa asiasta välittömästi Ivan Tsarevitšille, jotta tämä voi ryhtyä toimiin seuraavana yönä. Jos sammakkoprinsessa hyökkää suden kimppuun, hän muuttuu tavalliseksi Hyväksi kaveriksi eikä voi tarkistaa ketään, eikä prinsessa tiedä, että se todella oli Harmaa susi, koska susi ei nuku öisin. Susi itse kuitenkin saa päivän aikana selville, kuka pelaajista on sammakkoprinsessa, ja voi yrittää saada muut Ivan Tsarevitšille tuomansa Good Fellows ja Red Maidens äänestämään sammakon teloituksen puolesta. Prinsessa. Myös seuraavana iltana hän voi yrittää suostutella sammakkoprinsessaa nimettömästi siviilien puolelle, jotta tämä ei koske ketään heistä. Susi voi uhrata itsensä yöllä pelastaakseen Ivan Tsarevitšin tai Vasilisa Viisaan, jos hän olettaa, että he joutuvat yhtäkkiä rosvojen hyökkäyksen kohteeksi tai että Koshchei on zombisoinut heidät (sudella on synnynnäinen immuniteetti Koshchein viehätysvoimaa kohtaan), mutta sen jälkeen uhrautumisesta susi putoaa pelistä.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Vasilisa Viisas

Vasilisa Viisas - pelaa siviileille, mutta he eivät tiedä hänestä, koska Vasilisa on erittäin vaatimaton. Myös Vasilisa Viisas hoitaessaan ei kysy kysymyksiä ja hyvän lääkärin tavoin hoitaa kaikkia. Mutta jos Koschey, Likho tai Leshy juo hänen lääkettään, he eivät elä yhtä päivää pidempään, koska Vasilisa hoitaa vain ihmisiä. Vasilisa viisaan lääke ei myöskään auta käärmettä Gorynychia tai Cat-Bayunia, mutta ne eivät myöskään aiheuta haittaa. Kot-Bayun ei myöskään koske Vasilisaan yöllä, koska Vasilisa ei mene Elottomaan metsään ostamaan lääkeyrttejä. Lisäksi sammakkoprinsessan naispuoliset hurmat eivät toimi Vasilisassa. Jos he yrittäisivät tappaa hänen potilaansa kahdesti, lääketiede olisi voimaton. Vasilisa ei pelasta sinua maagisista hyökkäyksistä, esimerkiksi Dashing-kirouksesta. Päivisin Vasilisa käyttäytyy kuin Punainen Neitsyt, ja vain ohikiitävä, hieman surullinen ilme voi vihjata hieman, että hän on Kaukan valtakunnan paras parantaja.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Rosvo

rosvoja, toisin kuin kaikki aiemmat roolit, he tuntevat toisensa, koska he asuvat samassa Lairissa, ja tuntevat myös Leshyn ja Baba Yagan, joten he voivat toimia yhdessä heti ensimmäisestä liikkeestä lähtien. Mutta vain jengin johtaja tekee tekoja yöllä eikä äänestä päivällä, kun taas muut Ryöstäjät ahkerasti teeskentelevät olevansa Hyviä Fellows ja Red Maidens. Jos johtaja lähtee pelistä jostain syystä, yksi jäljellä olevista Konnaista tulee välittömästi hänen tilalleen. Ensinnäkin Ryöstäjät yrittävät poistaa Ivan Tsarevitšistä, kunnes hän on kerännyt tarpeeksi joukkoja Good Fellowsista ja Red Maidensista kohdatakseen Ryöstäjät aktiivisesti päivän aikana.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
metsänpeikko

metsänpeikko yöllä hän vakoilee Ryöstöjä ja kertoi heille heidän luotaan löydetyistä rooleista, mutta päivällä hän ei äänestä, koska hän ei asu kylässä. Muut pelaajat voivat kuitenkin äänestää Leshyä ja siten teloittaa hänet. Koska Leshy tulee suolta, sammakkoprinsessa ei voi vietellä häntä, ja jos hän yrittää, Leshy merkitsee hänen talonsa, ja kyläläiset saavat selville, kuka hän todella on. Leshemin ei pitäisi pelätä Koshchein loitsua, mutta Vasilisa voi parantaa hänet kuolemaan. Jos Kot-Bayun yrittää hyökätä Leshyn kimppuun, hän saattaa menettää rautakynnensä, jolloin Kot joutuu tuudittamaan uhrit uneen vain kehräämällä.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Baba Yaga

Baba Yaga Hän työskentelee myös yhdessä rosvojen kanssa ja loitsuja yöllä: hän voi joko lähettää sairauksia muille pelaajille tai suojella yhtä liittolaisistaan ​​hyökkäyksiltä. Hänen noituutensa on jopa vahvempi kuin Likhin kirous. Päivän aikana Baba Yaga on myös aktiivinen: ketään hänen suojeluksessa olevia ei voida teloittaa edes enemmistöäänestyksellä. Maagisten juurien tarjonta päiväsuojaukseen on kuitenkin rajallinen, joten Baba Yaga ei voi suojella ketään, mukaan lukien itseään, enempää kuin kolme kertaa per peli. Päivän aikana Baba Yaga teeskentelee olevansa tavallinen Red Maiden ja äänestää kaikkien muiden kanssa.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Lohikäärme

Lohikäärme yöllä hän lentää kylien, metsien ja soiden yli ja ryhtyy ryöstöihin paljastaen ryöstetyn roolin päivällä. Päivän aikana käärme nukkuu, joten hän ei äänestä, mutta hänet voidaan teloittaa enemmistöäänestyksellä. Käärme on erittäin vaarallinen kaikille, erityisesti rosvoille ja Ivan Tsarevitšille. Käärme ei välitä kenet hän ryöstää, mutta jos susi tai Leshy löytää hänet, hänestä voi tulla arvokas liittolainen. Jos tapat käärmeen yöllä, voit jollain todennäköisyydellä saada erittäin arvokkaan esineen - Snake Skinin, joka suojaa omistajaansa kerran fyysiseltä hyökkäykseltä.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
tunnetusti yksisilmäinen

tunnetusti yksisilmäinen yöllä hän tappaa jokaisen, joka on hänen tielleen, ja ketä hän ei voi tappaa (Leshy, Kota-Bayun tai käärme Gorynych), hän kiroaa, jotta jokainen, joka yrittää kommunikoida kirotun kanssa samana yönä, kuolee päivällä . Kirottu itse myös kuolee tässä tapauksessa, vain Kot-Bayun ei kuole, joka menee yksinkertaisesti nukkumaan saadakseen voimaa ohittaen vuoronsa seuraavana yönä. Vain Baba Yaga voi pelastaa Likhin kiroukselta. Kirous ei vaikuta siihen, joka voitti Cat-Bayunin: hän, kuten Kissa, yksinkertaisesti menee nukkumaan ja ohittaa käännöksen.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Prinsessa sammakko

Prinsessa sammakko ei voi voittaa peliä, mutta hän voi ansaita paljon rahaa viettelemällä muita pelaajia yöllä. Kiusattu jättää vuoronsa väliin. Sammakko ei voi vietellä Vasilisa Viisasta, ja hänen tulee myös välttää Leshyä, joka kavaltaa hänet seuraavana päivänä kaikille. Jos Ivan Tsarevitš tai Ryöstöjen johtaja löytävät sammakon, he voivat kutsua siviilejä tai rosvoja puolelleen, kun taas Ivan ei hyväksy sammakon kieltäytymistä, mutta Johtaja ei ole niin nirso. Mutta prinsessa on melko ovela, hänestä voi tulla kaksoisagentti, koska huolimatta siitä, että hän ei voi voittaa yksin, tämä on erinomainen mahdollisuus saada kultaa, koska mahdollisuudet selviytyä pelin loppuun kasvaa huomattavasti! Päivän aikana sammakkoprinsessa teeskentelee olevansa Red Maiden ja äänestää kaikkien kanssa yhdessä.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Koschey Kuolematon

Koschey Kuolematon asuu linnassaan. Yöllä hän kävelee ympäröivien kylien läpi ja zombie Good Fellows ja Red Maidens, jotka tulevat hänen palvelukseensa ja toteuttavat kiistatta kaikki käskyt. Kieltäytymällä toteuttamasta käskyä esimerkiksi äänestämästä päivän aikana toisin kuin Koshchei sanoi, tai kirjoittamasta viestejä chattiin päivän aikana, jos Koshchei kieltää sen, Koshchein palvelija kuolee. Siten Koschey voi vaikuttaa äänestyksen tuloksiin päivän aikana, vaikka hän itse ei äänestä. Jos Koshchei tapetaan, myös kaikki hänen uhrinsa kuolevat. Vasilisa voi parantaa palvelija Koshchein, joka sitten palaa alkuperäiseen rooliinsa. Käärme-Gorynychilla ja Susilla on synnynnäinen immuniteetti zombifikaatiota vastaan, joten Koschey, vaikka kuinka paljon haluaisi, ei voi muuttaa niitä palvelukseensa. Susi voi myös auttaa Ivania tai Vasilisaa ulos ongelmista uhraamalla itsensä. Saved by the Wolf hankkii susi immuniteetin zombifikaatiota vastaan.

"Uusia eeppisiä". Kehittäjille, operaattoreille ja uteliaille ihmisille
Kissa Baiyun

Kissa Baiyun asuu metsässä, metsästää yöllä. Päivällä hän nukkuu ontelossaan, joten hän ei osallistu äänestykseen. Päivän aikana hänet voidaan kuitenkin teloittaa enemmistöäänestyksellä. Kissa voi hyökätä kahdella tavalla: kehrää - ja sitten sen uhri nukahtaa eikä voi kävellä yöllä, eikä voi äänestää seuraavana päivänä - tai tappaa suoraan rautakynnillä. Kynsillä hyökkääminen ei toimi Snake-Gorynychissä, ja Leshyn kimppuun hyökännyt kissa voi jäädä kokonaan ilman kynsiä! Dashing ei voi kirota Kissaa, joka kirouksen jälkeen yksinkertaisesti nukkuu yhden yön. Jos joku onnistuu voittamaan Kota-Bayunin, hän paranee mistä tahansa sairaudesta, mukaan lukien Likhin kirouksesta. Tämä Cat-kyky säilyy pelaajalla pelin loppuun asti. Koshchein palvelijat eivät voi äänestää Kissaa päivällä, mutta he voivat epäsuorasti selvittää, kuka kissa on ilmoittamatta siitä Koshcheille. Kot-Bayun ei solmi liittoja Ivanin tai rosvojen kanssa, joten he ovat Kotin ensisijainen kohde.

Käytetyt tekniikat

Pelin kirjoittamiseen valitsin OpenFaaS-pohjaisen palvelimettoman laskentatekniikan, koska se on riittävän yksinkertainen pelin järjestämiseen ja samalla riittävän edistynyt kirjoittaakseen monimutkaisia ​​pelisääntöjä ilman turhia komplikaatioita. Käytän myös Kubernetes-klusteria, koska tämä sovellusten käyttöönottomenetelmä tekee nopean käyttöönoton ja helpon skaalatauksen melko yksinkertaisen ja luotettavan. Pelilogiikan luomiseksi pärjää vain OpenFaaS:llä, mutta yritän myös tehdä Storytelleristä erillisen kontin, jossa vertailla toteutuksen monimutkaisuutta. Pääohjelmointikieleksi mikropalveluille ja toiminnoille valitsin Go, koska olen opiskellut sitä pitkään vapaa-ajallani korvatakseni Perlin, ja js:ää tullaan käyttämään tietyn kehyksen perusteella käyttäjien vuorovaikutukseen mikropalvelujen ja toimintojen kanssa. Kerron sinulle lopullisesta päätöksestä sarjan vastaavassa artikkelissa. Toimintojen kommunikointiin toistensa kanssa valitsin NATS.io:n, koska olin törmännyt siihen jo aiemmin ja se on suhteellisen helppo integroida Kubernetesiin.

ilmoitus

  • Esittely
  • Kehitysympäristön asettaminen, tehtävän jakaminen funktioiksi
  • Taustatyötä
  • Etutyötä
  • CICD:n perustaminen, testauksen järjestäminen
  • Aloita kokeilupeli
  • Tulokset

Lähde: will.com

Lisää kommentti