"Novi epovi". Za programere, operativce i znatiželjne ljude

"Novi epovi". Za programere, operativce i znatiželjne ljude

Na zahtjev publike, započinjemo veliku seriju članaka o korištenju tehnologije računalstva bez servera za razvoj aplikacija u stvarnom svijetu. Ova serija će obuhvatiti razvoj, testiranje i isporuku aplikacija krajnjim korisnicima korištenjem modernih alata: arhitekture mikroservisnih aplikacija (u verziji bez servera, temeljene na OpenFaaS), klaster kubernete za implementaciju aplikacije, baze podataka MongoDB, usmjeren na klasteriranje i primjenu u oblaku, kao i na sabirnicu u oblaku NATSAplikacija implementira igru ​​"Bylina", varijantu popularne društvene igre "Mafia".

Što su "Byline"?

Ovo je varijanta igre "Mafia", poznate i kao "Vukodlak". Temelji se na timskoj igri, gdje igrači moraju korak po korak shvatiti tko je tko i pokušati pobijediti. Nažalost, online igra eliminira ključni element osobne interakcije. Dok su pravila klasične "Mafije" prilično jednostavna, obično se dodaju drugi likovi kako bi igra bila nelinearnija i zanimljivija. Međutim, glavne značajke originalne "Mafije" uglavnom su sačuvane, poput ciklusa dana/noći, poteza samo tijekom noći i saveza između igrača. Još jedna važna razlika online igre je ta što je domaćin (također poznat kao Gospodar igre ili Pripovjedač) obično računalni program.

Opis igre

Pravila igre koju želim implementirati preuzeta su iz starog IRC bota kojeg sam spremio u svoju osobnu arhivu prije otprilike 10 godina. "Byliny" ima pozadinsku priču koja započinje svaku igru:

U dalekom kraljevstvu, u dalekoj državi, s one strane sedam mora, živjelo je nekoliko sela, i u njima Dobri momci и Lijepe djevojkeSijali su žito i odlazili u obližnju šumu brati gljive i bobice... I tako je to trajalo stoljećima, sve dok strašna katastrofa nije potresla Zemlju i zlo se počelo širiti svijetom! Noći su postale duge i hladne, a u tami su neljubazna i strašna stvorenja lutala šumom i lutala u selo. Odnekud su doletjela... Zmija Gorinič i počeo krasti lijepe djevojke i uzimati sve vrijedno od seljana. Štetan i pohlepan Baba Jaga, koji je doletio na minobacaču iz dalekih šuma, zbunio je umove stanovnika, a neki su čak napustili svoj zanat i otišli u šumu pljačkati, formirajući tamo bandu. Zlikovci su se susreli Leši, koji se mogao pretvarati u drveće i grmlje, počeo je špijunirati mirne seljane i služiti razbojnicima, njuškajući spremaju li Dobri Ljudi išta kako bi oslobodili svoja naselja zlih duhova. Dobri Ljudi i Lijepe Djeve, umorni od napada Razbojnika i strašnih smrti od ruku strašnih Odvažni Jednooki, sakupio zlato i pozvao poznatog hrvača iz susjednog grada - Ivan Carevič, koji je obećao da će selo riješiti razbojnika. Na čistini u šumi, Ivan ih je spasio od sigurne smrti. Sivi vuk, koji je upao u Razbojnikovu zamku. Zauzvrat, Vuk je obećao obavijestiti Careviča o raznim šumskim zlim duhovima. Prolazio je poznati iscjelitelj. Vasilisa Mudra, a kad je vidjela nevolju, ostala je njegovati stanovnike koji su patili od napada zlih. Iza šume pojavila se crna palača u kojoj se, prema glasinama, nastanio crnac. Koščej BesmrtniSvake noći posjećivao je sela i začaravao dobre ljude i lijepe djevojke kako se ne bi usudili neposlušati njegove naredbe, već bi činili sve kako kaže. I nastanio se u Beživotnoj šumi Mačka-Bajun, i svi koji su ga sreli padali su u mrtvi san nakon njegovih priča ili umirali od njegovih željeznih kandži.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Daleko Daleko kraljevstvo

Kao što vidite, igrači su podijeljeni u nekoliko skupina:

  • civili (Dobri momci, Crvene djevojke, Ivan Carevič, Sivi vuk i Vasilisa Mudra)
  • razbojnici (pravi razbojnici, kao i Baba Jaga i Leši)
  • neovisni (Zmija Gorinič, Jednooki Liho, Žaba princeza, Koščej Besmrtni, Mačak Bajun)

Cilj igre, kao što je gore navedeno, je ostati živ i pobijediti. Protivnici moraju biti eliminirani na ovaj ili onaj način, dok neovisni igrači također moraju preživjeti do kraja. Igra sadrži zlato, vrstu valute u igri koju igrači zarađuju samo unutar igre. Pobjednici dobivaju zlato. Što više zlata, to je igračev rejting viši.

Malo detaljnije ću se zaustaviti na opisu likova.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Dobar momak

"Novi epovi". Za programere, operativce i znatiželjne ljude
Crvena Djevica

Dobar momak и Crvena Djevica — najčešća i primarna uloga u igri. To su mirni građani koji spavaju noću, a danju rade. Noću ih napadaju razbojnici, Zmaj Gorinič i drugi igrači, a Vasilisa Mudra ih liječi. Postoji mala šansa da Dobri momak ili Crvena djevica prežive napad neozlijeđeni (moguće gubeći zlato), ali svi će znati nadimak igrača dan nakon napada/obrane. Noću ovi igrači ne čine nikakve poteze, već analiziraju situaciju u igri na temelju poruka u chatu igre. Tijekom dana ovi igrači glasaju kako bi odredili tko nije Dobri momak ili Crvena djevica. Igrač za kojeg glasa većina ostalih igrača napušta igru, a preostali igrači dobivaju ili gube zlato. Ako većina igrača ne odabere nekoga, nitko neće biti pogubljen.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Ivan Carević

Ivan Carević — isprva anonimni zaštitnik civila. Noću provjerava uloge drugih igrača, jer poznaje samo jednog saveznika — Sivoga Vuka. Uz izravno sudjelovanje Sivoga Vuka (koji također može provjeravati uloge drugih igrača), Ivan Carević, umjesto provjere, može noću ubiti drugog lika. Ako nakon provjere Ivan Carević vidi da igrač ima ulogu Dobrog Momaka ili Crvene Djevice, može ih pozvati k sebi i upoznati ih sa Sivim Vukom i drugim Dobrim Momacima i Crvenim Djevicama. Ivana može spriječiti Žabac, koja ga može zavesti noću bez da otkrije njegovu ulogu drugim igračima tijekom dana. Ako sam Ivan otkrije Žabac, može je pozvati da se pridruži civilima, ali ako Princeza odbije, Ivan je ubija. Zmaj-Gorinič također se može miješati u provjere Ivana Carevića, ali, za razliku od Žabaca, tijekom dana će drugim igračima reći tko je od njih Ivan Carević. Tijekom dana, Ivan Carević se ne razlikuje od ostalih Dobrih Momaka.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Sivi vuk

Sivi vuk — Ivanov Carevičev pomoćnik, čiji istančan njuh pomaže Ivanu da pronađe druge Dobre ljude i Lijepe djevojke. Sivi Vuk govori tim igračima tko je Ivan Carevič i također ih obavještava o drugim igračima koji igraju uloge Dobrih ljudi i Lijepih djevojaka. Ako Vuk uoči razbojnika ili drugog neprijatelja, odmah obavještava Ivana Careviča kako bi mogao poduzeti mjere sljedeće noći. Ako Vuka napadne Žabac, on se pretvara u običnog Dobrog Čovjeka i ne može nikoga provjeravati, a Princeza neće znati da je to zapravo bio Sivi Vuk, jer Vuk ne spava noću. Međutim, sam Vuk će tijekom dana saznati koji je igrač Žabac i može pokušati nagovoriti ostale Dobre ljude i Lijepe djevojke koje je doveo Ivanu Careviču da glasaju za pogubljenje Žabac. Sljedeće noći također može pokušati anonimno nagovoriti Žabac da stane na stranu civila, kako ne bi nikome naudila. Vuk se može žrtvovati noću kako bi spasio Ivana Careviča ili Vasilisu Mudru ako posumnja da će ih napasti razbojnici ili da ih je Koščej zombificirao (Vuk ima urođeni imunitet na Koščejeve čari), ali nakon žrtvovanja Vuk se eliminira iz igre.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Vasilisa Mudra

Vasilisa Mudra — svira za civile, ali oni ne znaju za nju, jer je Vasilisa vrlo skromna. Vasilisa Mudra također ne postavlja pitanja kada liječi i poput dobre liječnice liječi sve. Međutim, ako Koščej, Liho ili Leši popiju njezin lijek, neće živjeti dulje od jednog dana, jer Vasilisa liječi samo ljude. Lijek Vasilise Mudre neće pomoći Zmiji Goriniču ili Mačku Bajunu, ali im neće ni naštetiti. Mačak Bajun također ne smeta Vasilisi noću, jer Vasilisa ne ide u Beživotnu šumu po ljekovito bilje. Nadalje, ženski čari Žabe kraljevne ne djeluju na Vasilisu. Ako netko pokuša dvaput ubiti njezina pacijenta, njezin lijek neće djelovati. Vasilisa je također neće zaštititi od magičnih napada, poput Lihove kletve. Danju se Vasilisa ponaša kao Crvena Djevica i samo letimičan, pomalo tužan pogled može malo nagovijestiti da je ona najbolja iscjeliteljica u Dalekom Kraljevstvu.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Lupež

pljačkašiZa razliku od svih prethodnih uloga, članovi bande poznaju se međusobno jer dijele istu jazbinu, a poznaju i Lešja i Babu Jagu, tako da mogu djelovati usklađeno od prvog poteza. Međutim, samo Vođa bande izvodi akcije noću i ne glasa tijekom dana, dok se ostali Razbojnici marljivo pretvaraju da su Dobri Momaci i Lijepe Djeve. Ako je Vođa iz bilo kojeg razloga eliminiran, jedan od preostalih Razbojnika odmah zauzima njegovo mjesto. Razbojnici prvo pokušavaju onesposobiti Ivana Careviča prije nego što on uspije skupiti dovoljno Dobrih Momaka i Lijepih Djeva da se aktivno suprotstave Razbojnicima tijekom dana.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Zao

Zao Noću špijunira za Razbojnike, izvještavajući o ulogama otkrivenim u njihovom Brlogu, ali ne glasa tijekom dana jer ne živi u selu. Međutim, drugi igrači mogu glasati za Lešja, čime ga pogubljuju. Budući da Lešj dolazi iz močvara, ne može ga zavesti Žablja princeza, a ako ona pokuša, Lešj će obilježiti njezinu kuću, a seljani će otkriti njezin pravi identitet. Lešj se također ne mora bojati Koščejevih čari, ali Vasilisa ga može izliječiti do smrti. Ako Mačak Bajun pokuša napasti Lešja, riskira gubitak svojih željeznih kandži, prisiljavajući Mačka da uspava svoje žrtve samo svojim predenjem.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Baba Jaga

Baba Jaga Također surađuje s Razbojnicima, bacajući čarolije noću: može ili razboljeti druge igrače ili zaštititi saveznika od napada. Njezine čarolije su čak i jače od prokletstva Zla. Baba Jaga je aktivna i danju: svatko pod njezinom zaštitom ne može biti pogubljen, čak ni većinom glasova. Međutim, zaliha čarobnog korijenja za dnevnu zaštitu je ograničena, pa Baba Jaga ne može nikoga zaštititi, uključujući i sebe, više od tri puta po igri. Tijekom dana, Baba Jaga se prerušava u običnu Crvenu Djevu i glasa sa svima ostalima.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Zmija Gorinič

Zmija Gorinič Noću Zmija leti iznad sela, šuma i močvara, čineći pljačke, otkrivajući identitet opljačkane strane tijekom dana. Danju Zmija spava i stoga ne glasa, ali može biti pogubljena većinom glasova. Zmija je vrlo opasna za sve, posebno za Razbojnike i Ivana Careviča. Zmiju nije briga koga opljačka, ali ako Vuk ili Leši otkriju njegov identitet, može postati vrijedan saveznik. Ubijanjem Zmije noću postoji mogućnost dobivanja vrlo vrijednog predmeta - Zmijske kože, koja štiti svog vlasnika od fizičkog napada.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Brz jednooki

Brz jednooki Noću ubija sve koje sretne, a one koje ne može ubiti (Lešija, Mačka Bajuna ili Zmiju Goriniča) proklinje, tako da će svatko tko pokuša komunicirati s prokletim te noći umrijeti unutar dana. Prokleti također umire, osim Mačka Bajuna, koji jednostavno zaspi kako bi skupio snagu, preskačući potez sljedeće noći. Samo Baba Jaga može spasiti nekoga od Lihovog prokletstva. Prokletstvo također nema učinka na svakoga tko porazi Mačka Bajuna: on, poput Mačka, jednostavno zaspi i preskače potez.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Princeza žaba

Princeza žaba Ne može pobijediti u igri, ali može zaraditi mnogo novca zavodeći druge igrače noću. Svatko tko je zaveden propušta jedan potez. Žaba ne može zavesti Vasilisu Mudru, a trebala bi izbjegavati i Lešoga, koji će je sljedeći dan svima izdati. Ako Ivan Carevič ili Poglavica Razbojnika pronađu Žabu, mogu pozvati civile ili Razbojnike na svoju stranu. Ivan neće prihvatiti odbijanje Žabe, ali Poglavica je manje pronicljiv. Međutim, Princeza Žaba je dovoljno lukava da postane dvostruki agent. Iako ne može pobijediti sama, ovo je izvrsna prilika za zarađivanje zlata, jer su joj šanse da preživi do kraja igre znatno povećane! Tijekom dana, Princeza Žaba se prerušava u Crvenu Djevu i glasa sa svima ostalima.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Koščej Besmrtni

Koščej Besmrtni Živi u svom dvorcu. Noću luta okolnim selima, zombirajući Dobre Momake i Lijepe Djevice, koji mu zatim služe i bespogovorno izvršavaju njegove naredbe. Ako odbije poslušati naredbu, na primjer, glasati tijekom dana drugačije nego što je Koščej naredio, ili pisati poruke u chatu tijekom dana ako je Koščej to zabranio, Koščejev Sluga umire. Dakle, Koščej može utjecati na rezultate dnevnog glasanja, iako sam ne glasa. Ako Koščej bude ubijen, sve njegove žrtve također umiru. Vasilisa može izliječiti Koščejevog Slugu, koji se zatim vraća svojoj izvornoj ulozi. Zmija Gorinič i Vuk imaju urođeni imunitet na zombifikaciju, pa ih Koščej ne može pretvoriti u svoju službu čak i da želi. Vuk također može spasiti Ivana ili Vasilisu iz nevolje žrtvujući se. Oni koje Vuk spasi dobivaju Vučji imunitet na zombifikaciju.

"Novi epovi". Za programere, operativce i znatiželjne ljude
Mačka-Bajun

Mačka-Bajun Živi u šumi i lovi noću. Danju spava u šupljini svog drveta, tako da ne sudjeluje u glasanju. Međutim, može biti pogubljen većinom glasova tijekom dana. Mačka može napasti na dva načina: predenjem, što uzrokuje da žrtva zaspi i ne može se kretati tijekom noći, i glasanjem sljedeći dan. Ili može odmah ubiti svojim željeznim kandžama. Napadi kandžama ne djeluju na Zmiju Goriniča, a nakon napada na Lešog, Mačka može potpuno izgubiti kandže! Zlo ne može prokleti Mačka, koji će jednostavno spavati jednu noć nakon prokletstva. Ako netko uspije pobijediti Mačka Bajuna, svaka bolest ili tegoba, uključujući i Zlovo prokletstvo, bit će izliječena. Ova Mačja sposobnost ostaje s igračem do kraja igre. Koščejeve sluge ne mogu glasati za Mačka tijekom dana, ali mogu neizravno otkriti Mačji identitet bez obavještavanja Koščeja. Mačka Bajun ne sklapa saveze s Ivanom ili Razbojnicima, pa su oni Mačja primarna meta.

Korištene tehnologije

Za pisanje igre odabrao sam tehnologiju računalstva bez poslužitelja temeljenu na OpenFaaS-u, jer je dovoljno jednostavna za organizaciju igre, a opet dovoljno sofisticirana za pisanje složenih pravila igre bez nepotrebnih komplikacija. Također ću koristiti Kubernetes klaster, jer ova metoda implementacije aplikacije omogućuje brzo i pouzdano postavljanje i jednostavnu skalabilnost. Sam OpenFaaS dovoljan je za stvaranje logike igre, ali pokušat ću i izgraditi Storyteller kao zaseban kontejner kako bih usporedio složenost implementacije. Odabrao sam primarni programski jezik za mikroservise i funkcije. Go, budući da ga već neko vrijeme učim u slobodno vrijeme kao zamjenu za Perl. JavaScript temeljen na određenom frameworku koristit će se za interakciju korisnika s mikroservisima i funkcijama. Konačnu odluku raspravit ću u odgovarajućem članku u seriji. Odabrao sam NATS.io za međufunkcijsku komunikaciju jer sam ga već prije koristio i prilično se lako integrira s Kubernetesom.

Obavijest

  • Uvod
  • Postavljanje razvojnog okruženja, rastavljanje zadatka na funkcije
  • Pozadinski rad
  • Frontend rad
  • Postavljanje CICD-a, organiziranje testiranja
  • Započnite probnu sesiju igre
  • Rezultati

Izvor: www.habr.com

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster