„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms

Dėl daugybės skaitytojų prašymų prasideda daugybė straipsnių apie be serverio skaičiavimo technologijos naudojimą kuriant tikrą programą. Šis ciklas apims taikomųjų programų kūrimą, testavimą ir pristatymą galutiniams vartotojams naudojant šiuolaikinius įrankius: mikropaslaugų taikomųjų programų architektūrą (versijoje be serverio, pagrįsta OpenFaaS), klasteris kubernetes taikomųjų programų diegimui, duomenų bazei MongoDB, orientuota į debesų grupavimą ir taikymą, taip pat debesų magistralę NATS. Programa įgyvendina žaidimą „Epics“, vieną iš populiaraus saloninio žaidimo „Mafia“ variantų.

Kas yra „epai“?

Tai žaidimo „Mafia“, dar vadinamo „Vilkolakčiu“, variantas. Jis pagrįstas komandiniu žaidimu, kurio dalyviai turi žingsnis po žingsnio išmokti, kas yra kas, ir stengtis laimėti. Deja, žaidžiant internete toks svarbus žaidimo komponentas kaip asmeninis bendravimas dingsta, o klasikinės „Mafijos“ taisyklės gana paprastos, todėl, kad žaidimas būtų netiesiškesnis ir įdomesnis, dažniausiai pridedami kiti personažai, tačiau apskritai išsaugomi pagrindiniai originalios „mafijos“ bruožai, pavyzdžiui, dienos ir nakties kaita, judėjimai tik naktį, taip pat dalyvių aljansai. Kitas svarbus skirtumas tarp žaidimo internete yra tas, kad pagrindinis kompiuteris (dar žinomas kaip Game Master, Storyteller) paprastai yra kompiuterio programa.

Žaidimo aprašymas

Žaidimo taisyklės, kurias noriu įgyvendinti, paimtos iš seno irc boto, kurį prieš maždaug 10 metų išsaugojau asmeniniame archyve. „Epics“ turi istoriją, nuo kurios prasideda kiekvienas žaidimas:

Tolimoje karalystėje, trisdešimtoje valstybėje, už septynių jūrų, gyveno ir gyveno keli kaimai, o juose Geri bičiuliai и Gražios merginos. Jie sėjo duonos ir eidavo į aplinkinį mišką grybauti ir uogauti... Ir tai tęsėsi iš šimtmečio į šimtmetį, kol Žemę supurtė baisi katastrofa ir blogis pradėjo plisti visame pasaulyje! Naktys pasidarė ilgos ir šaltos, o tamsoje nedori ir baisūs padarai slankiojo miške ir klajojo į kaimą. Iš kažkur atvyko drakonas ir įprato vogti Raudonąsias mergeles ir atimti iš kaimo gyventojų viską, kas vertinga. Kenksmingas ir godus Baba Yaga, kuris skraidė ant minosvaidžio iš tolimų miškų, sujaukė gyventojų protus, o kai kurie net atsisakė savo amato ir nuėjo į mišką plėšti, ten subūrė gaują. Nedorėliai susitiko Goblinas, kuris mokėjo pavirsti medžiais ir krūmais, pradėjo stebėti taikius kaimo gyventojus ir tarnauti plėšikams, uostydamas, ar Gerieji bičiuliai nori ką nors išvaduoti iš savo gyvenviečių nuo piktųjų dvasių. Geros bičiulės ir gražios mergelės, pavargusios nuo plėšikų antskrydžių ir baisių mirčių nuo baisių rankų. Ryškus vienaakis, rinko auksą ir pakvietė garsų imtynininką iš kaimyninio miesto - Ivanas Tsarevičius, kuris pažadėjo išvaduoti kaimą nuo plėšikų. Miško proskynoje Ivanas išgelbėjo nuo tikros mirties Pilkas vilkas, kuris pateko į Plėšikų duobę. Už tai Vilkas pažadėjo pranešti Carevičiui apie įvairias miško piktąsias dvasias. Praėjo garsus gydytojas Vasilisa Išmintingoji, o pamačiusi bėdą liko slaugyti nuo braškių priepuolių nukentėjusių gyventojų. Už miško atsirado juodi rūmai, kuriuose, pasak gandų, jis ir apsigyveno Koschei Nemirtingasis, kas vakarą lankydavosi kaimuose ir kerėdavo Geruosius draugus ir Raudonąsias mergeles, kad jos nedrįstų nepaklusti jo įsakymams, viską darytų taip, kaip jis pasakė. Ir apsigyveno Negyvajame miške Katė Baiyun, o visi jį sutikę užmigo po jo pasakojimų arba mirė nuo jo geležinių nagų.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Toli Toli karalystė

Kaip jau matote, žaidėjai skirstomi į kelias grupes:

  • civiliai (gerieji draugai, raudonosios mergelės, Ivanas Tsarevičius, pilkasis vilkas ir Vasilisa Išmintingoji)
  • plėšikai (patys plėšikai, taip pat Baba Yaga ir Leshy)
  • nepriklausomas (gyvatė-Gorynych, veržli vienaakis, varlė princesė, Koschey the Immortal, Cat-Bayun)

Žaidimo tikslas, kaip minėta aukščiau, yra likti gyvam ir laimėti. Priešininkai turi vienaip ar kitaip palikti žaidimą, o nepriklausomi asmenys taip pat turi likti gyvi iki žaidimo pabaigos. Žaidime yra auksas, tam tikra žaidimo valiuta, kurią žaidėjai uždirba tik žaidimo metu. Nugalėtojai gauna auksą. Kuo daugiau aukso, tuo aukštesnis žaidėjo reitingas.

Šiek tiek plačiau apsistosiu prie veikėjų aprašymo.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Geras vaikis

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Raudonoji mergelė

Geras vaikis и Raudonoji mergelė - labiausiai paplitęs ir pagrindinis vaidmuo žaidime. Tai civiliai, kurie naktį miega, o dieną dirba. Naktį juos užpuola vienas iš plėšikų – Gyvatė Gorynych ir kiti vaidmenys, o Vasilisa Išmintingoji juos išgydo. Esant nedidelei tikimybei, Gerasis bičiulis arba Raudonoji mergelė gali išgyventi ataką be žalos (galbūt nepraras aukso), tačiau visi atpažins žaidėjo slapyvardį kitą dieną po atakos. Naktį šie žaidėjai nedaro jokių judesių, o analizuoja žaidimo situaciją pagal pranešimus žaidimo pokalbyje. Dienos metu šie žaidėjai balsuodami nusprendžia, kuris iš jų nėra Gerasis bičiulis ar Raudonoji mergelė. Žaidėjas, už kurį balsavo dauguma kitų žaidėjų, palieka žaidimą, likę žaidėjai gauna arba praranda auksą. Jei žaidėjai balsų dauguma nieko nepasirinks, nė vienam žaidėjui mirties bausmė nebus įvykdyta.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Ivanas Tsarevičius

Ivanas Tsarevičius – iš pradžių anoniminis civilių gynėjas. Naktį jis tikrina kitų žaidėjų vaidmenis, nes pažįsta tik vieną savo sąjungininką - Pilką vilką. Tiesiogiai dalyvaujant pilkajam vilkui (kuris taip pat gali patikrinti kitų žaidėjų vaidmenis), Ivanas Tsarevičius, užuot tikrinęs, naktį gali nužudyti kitą veikėją. Jei po patikrinimo Ivanas Tsarevičius žaidėjuje mato Gerojo kolegos ar Raudonosios mergelės vaidmenį, jis gali pakviesti juos į savo vietą ir supažindinti su Pilkuoju vilku ir kitais geraisiais kolegomis bei raudonosiomis mergelėmis. Ivanui gali trukdyti varlė princesė, kuri gali jį suvilioti naktį, dieną neatskleisdama savo vaidmens kitiems žaidėjams. Jei pats Ivanas atras varlių princesę, jis gali pakviesti ją prisijungti prie civilių, bet jei princesė atsisako, ji miršta nuo Ivano rankų. Gyvatė-Gorynych taip pat gali trukdyti Ivano-Tsarevičiaus patikrinimams, tačiau, skirtingai nei varlė princesė, dienos metu jis pasakys kitiems žaidėjams, kuris iš jų yra Ivanas-Tsarevičius. Dienos metu Ivanas Tsarevičius niekuo nesiskiria nuo kitų gerų kolegų.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Pilkas vilkas

Pilkas vilkas - Ivano Tsarevičiaus padėjėjas, kurio aštri uoslė padeda Ivanui susirasti kitų gerų bičiulių ir raudonųjų mergelių. Pilkasis vilkas pasakoja šiems žaidėjams, kas yra Ivanas Tsarevičius, taip pat informuoja apie kitus žaidėjus, atliekančius „Good Fellows“ ir „Red Maidens“ vaidmenis. Jei Vilkas aptinka plėšiką ar kitą priešą, jis nedelsdamas praneša Ivanui Tsarevičiui, kad jis kitą naktį galėtų imtis veiksmų. Jei vilką užpuola varlė princesė, jis virsta paprastu geru bičiuliu ir negali nieko patikrinti, o princesė nesužinos, kad tai iš tikrųjų buvo Pilkasis Vilkas, nes Vilkas naktimis nemiega. Tačiau pats Vilkas per dieną išsiaiškins, kuri iš žaidėjų yra varlių princesė, ir gali pabandyti įtikinti likusius geruosius bičiulius ir raudonąsias mergeles, kurias atvedė Ivanui Carevičiui, balsuoti už varlės egzekuciją. Princesė. Taip pat kitą naktį jis gali bandyti anonimiškai įkalbėti varlių princesę į civilių pusę, kad ji nė vieno iš jų nepaliestų. Vilkas gali naktį paaukoti save, kad išgelbėtų Ivaną Carevičių ar Vasilisą Išmintingąją, jei mano, kad jie staiga pateks į plėšikų puolimą arba juos zombiuos Koščejus (vilkas turi įgimtą imunitetą Koščejaus kerams), bet Vilkas, pasiaukojęs, iškrenta iš žaidimo.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Vasilisa Išmintingoji

Vasilisa Išmintingoji - vaidina civiliams, bet jie apie ją nežino, nes Vasilisa yra labai kukli. Taip pat Vasilisa Išmintingoji, kai gydo, neklausinėja ir, kaip gera gydytoja, gydo visus. Bet jei Koschey, Likho ar Leshy išgers jos vaistus, jie negyvens ilgiau nei vieną dieną, nes Vasilisa gydo tik žmones. Išmintingosios Vasilisos vaistai taip pat nepadės nei gyvatei Gorynych, nei Cat-Bayun, tačiau jie taip pat nepadarys žalos. Be to, Kot-Bayun naktį neliečia Vasilisos, nes Vasilisa neina į Negyvąjį mišką pirkti vaistinių žolelių. Be to, moteriški varlės princesės žavesiai Vasilisai neveikia. Jei jie bandytų nužudyti jos pacientą du kartus, medicina būtų bejėgė. Vasilisa neišgelbės jūsų nuo magiškų išpuolių, pavyzdžiui, nuo Dashing prakeikimo. Dieną Vasilisa elgiasi kaip Raudonoji mergelė, ir tik trumpalaikis, šiek tiek liūdnas žvilgsnis gali šiek tiek sufleruoti, kad ji yra geriausia Tolimosios Tolimosios Karalystės gydytoja.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Nesąžiningi

Plėšikai, skirtingai nei visi ankstesni vaidmenys, jie pažįsta vienas kitą, nes gyvena tame pačiame guolyje, taip pat pažįsta Leshy ir Baba Yaga, todėl gali veikti kartu nuo pat pirmo žingsnio. Tačiau tik gaujos vadas atlieka veiksmus naktimis, o dieną nebalsuoja, o likusieji Plėšikai uoliai apsimeta Gerosiomis draugėmis ir Raudonosiomis mergelėmis. Jei lyderis dėl kokios nors priežasties palieka žaidimą, vienas iš likusių Rogues iš karto užima jo vietą. Visų pirma, Plėšikai bando išjungti Ivaną Carevičių, kol jis surinks pakankamai jėgų iš „Gerų kolegų“ ir „Raudonųjų mergaičių“, kad galėtų aktyviai kovoti su Plėšikais per dieną.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Goblinas

Goblinas naktį jis šnipinėja Plėšikus, pranešdamas jiems apie jų guolyje rastus vaidmenis, bet dieną nebalsuoja, nes negyvena kaime. Tačiau kiti žaidėjai gali balsuoti už Leshy ir taip jam įvykdyti mirties bausmę. Kadangi Lešis kilęs iš pelkių, jo negali suvilioti varlė princesė, o jei jis pabandys, Lešis pažymės jos namus, o kaimo gyventojai sužinos, kas ji iš tikrųjų. Lešemas neturėtų bijoti Koshchei burtų, bet Vasilisa gali jį išgydyti iki mirties. Jei Cat-Bayun bandys užpulti Lešį, jis rizikuoja prarasti geležinius nagus, o tada Katinas turės užmigdyti aukas vien savo murkimu.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Baba Yaga

Baba Yaga Jis taip pat dirba kartu su plėšikais ir burti naktimis: gali siųsti ligas kitiems žaidėjams arba apsaugoti vieną iš savo sąjungininkų nuo užpuolimo. Jos raganavimas dar stipresnis už Likho prakeiksmą. Dienos metu Baba Yaga taip pat yra aktyvi: niekas jos saugomas negali būti įvykdytas net balsų dauguma. Tačiau stebuklingų šaknų, skirtų dienos apsaugai, pasiūla yra ribota, todėl Baba Yaga negali apsaugoti nieko, įskaitant save, daugiau nei tris kartus per žaidimą. Dieną Baba Yaga apsimeta paprasta Raudonąja mergele ir balsuoja su visais kitais.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
drakonas

drakonas naktį jis skraido virš kaimų, miškų ir pelkių ir užsiima plėšimais, atskleisdamas apiplėštojo vaidmenį dieną. Dieną Gyvatė miega, todėl nebalsuoja, bet gali būti nubaustas balsų dauguma. Gyvatė yra labai pavojinga visiems, ypač plėšikams ir Ivanui Tsarevičiui. Gyvatei nerūpi, ką jis apiplėšia, bet jei jį atras Vilkas ar Lešys, jis gali tapti vertingu sąjungininku. Jei nužudysite Gyvatę naktį, su tam tikra tikimybe galite gauti labai vertingą daiktą - Gyvatės odą, kuri vieną kartą apsaugos jos savininką nuo fizinio užpuolimo.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Ryškus vienaakis

Ryškus vienaakis naktį jis žudo visus, kurie jam trukdo, o ko negali nužudyti (Leshy, Kota-Bayun ar Gyvatė Gorynych), keikia, kad kiekvienas, kuris tą pačią naktį bandys bendrauti su prakeiktuoju, mirs dieną. . Pats prakeiktasis šiuo atveju taip pat miršta, nemiršta tik Kot-Bayun, kuris tiesiog eina miegoti pasisemti jėgų, praleisdamas savo eilę kitą naktį. Tik Baba Yaga gali išgelbėti Likhą nuo prakeikimo. Prakeikimas neturi įtakos tam, kuris nugalėjo Cat-Bayun: jis, kaip ir Katinas, tiesiog eina miegoti ir praleidžia posūkį.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Princesė varlė

Princesė varlė negali laimėti žaidimo, bet jis gali uždirbti daug pinigų viliodamas kitus žaidėjus naktį. Suviliotas praleidžia savo eilę. Varlė negali suvilioti Vasilisos Išmintingosios, ji taip pat turėtų vengti Lešio, kuris kitą dieną ją visiems išduos. Jei Ivanas Carevičius ar Plėšikų vadas suranda varlę, jie gali pasikviesti civilius ar plėšikus į savo pusę, o Ivanas nepriims varlės atsisakymo, tačiau vadas nėra toks išrankus. Tačiau princesė yra gana gudri, ji gali tapti dviguba agente, nes nepaisant to, kad ji negali laimėti viena, tai yra puiki galimybė laimėti auksą, nes šansai išgyventi iki žaidimo pabaigos labai padidėja! Dieną varlė princesė apsimeta Raudonąja mergele ir balsuoja su visais kartu.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Koschei Nemirtingasis

Koschei Nemirtingasis gyvena savo pilyje. Naktimis jis vaikšto po aplinkinius kaimus ir zombinuoja Geruosius bičiulius bei Raudonąsias mergeles, kurios ateina į jo tarnybą ir neabejotinai vykdo visus įsakymus. Atsisakius vykdyti įsakymą, pavyzdžiui, balsuoti per dieną kitaip, nei pasakė Koščejus, arba dienos metu rašyti žinutes pokalbyje, jei Koščejus tai uždraudė, Koščejaus tarnas miršta. Taigi Koschey gali daryti įtaką balsavimo rezultatams dienos metu, nors pats nebalsuoja. Jei Koščejus nužudomas, miršta ir visos jo aukos. Vasilisa gali išgydyti tarną Koščejų, kuris vėliau grįžta į pradinį vaidmenį. Gyvatė-Gorynych ir Vilkas turi įgimtą imunitetą zombiavimui, todėl Koschey, kad ir kaip norėtų, negali jų paversti savo tarnyba. Vilkas taip pat gali padėti Ivanui ar Vasilisai iš bėdos, aukodamas save. Saved by the Wolf įgyja Vilko imunitetą zombiavimui.

„Nauji epai“. Kūrėjams, operacijoms ir smalsiems žmonėms
Katė Baiyun

Katė Baiyun gyvena miške, medžioja naktimis. Dieną jis miega savo įduboje, todėl balsavime nedalyvauja. Tačiau dienos metu jis gali būti įvykdytas balsų dauguma. Katė gali pulti dviem būdais: murkti – tada jos auka užmiega ir negali vaikščioti naktį, o kitą dieną negali balsuoti – arba žudyti tiesiai geležiniais nagais. Puolimas nagais gyvatė-Gorynych neveikia, o užpuolus Lešį katė gali likti visai be nagų! Dashing negali prakeikti Katės, kuri po prakeikimo tiesiog miegos vieną naktį. Jei kas nors sugebės nugalėti Kota-Bayuną, jis bus išgydytas nuo bet kokios ligos, įskaitant Likh prakeikimą. Šis katės gebėjimas išlieka žaidėjui iki žaidimo pabaigos. Koščejaus tarnai negali balsuoti už Katę dienos metu, tačiau gali netiesiogiai sužinoti, kas yra ta Katė, apie tai nepranešę Koščei. Kot-Bayun nesudaro sąjungų su Ivanu ar plėšikais, todėl jie yra pagrindinis Koto taikinys.

Naudojamos technologijos

Žaidimui parašyti pasirinkau be serverio kompiuterinę technologiją, pagrįstą OpenFaaS, nes ji pakankamai paprasta organizuoti žaidimą ir tuo pačiu pakankamai pažangi, kad būtų galima parašyti sudėtingas žaidimo taisykles be nereikalingų komplikacijų. Taip pat naudosiu „Kubernetes“ klasterį, nes šis programų diegimo būdas leidžia gana paprastai ir patikimai greitai įdiegti ir lengvai keisti mastelį. Norėdami sukurti žaidimo logiką, galite apsieiti tik su „OpenFaaS“, bet aš taip pat pasistengsiu „Storyteller“ padaryti kaip atskirą konteinerį, kad būtų galima palyginti įgyvendinimo sudėtingumą. Kaip pagrindinę mikropaslaugų ir funkcijų programavimo kalbą pasirinkau Go, nes ilgą laiką studijavau jį laisvalaikiu, kad pakeisčiau Perl, o js bus naudojamas pagal tam tikrą vartotojo sąveikos su mikropaslaugomis ir funkcijomis sistemą. Apie galutinį sprendimą papasakosiu atitinkamame serijos straipsnyje. Norėdami bendrauti tarpusavyje, pasirinkau NATS.io, nes jau buvau su juo susidūręs ir jis gana lengvai integruojamas į Kubernetes.

Skelbimas

  • įvedimas
  • Kūrimo aplinkos nustatymas, užduoties suskaidymas į funkcijas
  • Užpakalinis darbas
  • Frontend darbas
  • CICD nustatymas, testavimo organizavimas
  • Pradėkite bandomojo žaidimo sesiją
  • rezultatai

Šaltinis: www.habr.com

Добавить комментарий