"Novi epovi". Za programere, operativce i radoznale ljude

"Novi epovi". Za programere, operativce i radoznale ljude

Zbog brojnih zahtjeva čitatelja, počinje veliki niz članaka o korištenju računarske tehnologije bez servera za razvoj prave aplikacije. Ovaj ciklus će obuhvatiti razvoj aplikacija, testiranje i isporuku krajnjim korisnicima koristeći savremene alate: mikroservisnu arhitekturu aplikacije (u verziji bez servera, zasnovanu na OpenFaaS), klaster kubernetes za implementaciju aplikacija, baza podataka MongoDB, fokusiran na klasteriranje i aplikaciju u oblaku, kao i na sabirnicu oblaka NATS. Aplikacija implementira igru ​​"Epics", jednu od varijanti popularne salonske igre "Mafia".

Šta su "epovi"?

Ovo je varijanta igre "Mafia", poznate i kao "Vukodlak". Zasniva se na timskoj igri u kojoj učesnici moraju korak po korak naučiti ko je ko i pokušati pobijediti. Nažalost, kada se igra na mreži, nestaje tako važna komponenta igre kao što je lična interakcija, a pravila klasične "mafije" su prilično jednostavna, stoga se za nelinearniju i zanimljiviju igru ​​obično dodaju drugi likovi, ali generalno, sačuvane su glavne karakteristike originalne „Mafije“, na primer, promena dana i noći, kretanja samo noću, kao i savezi između učesnika. Još jedna bitna razlika između igranja na mreži je ta što je host (aka Game Master, Storyteller) obično kompjuterski program.

Opis igre

Pravila igre koja želim da implementiram su preuzeta sa starog irc bota kojeg sam sačuvao u svojoj ličnoj arhivi pre 10-ak godina. "Epici" imaju pozadinu s kojom svaka igra počinje:

U dalekoj kraljevini, u tridesetoj državi, iza sedam mora, živjelo je i živjelo nekoliko sela i u njima Dobri momci и Beautiful girls. Sejali su hleb i odlazili u okolnu šumu da beru pečurke i bobice... I tako se nastavilo iz veka u vek, sve dok strašna katastrofa nije potresla Zemlju i zlo se počelo širiti svetom! Noći su postale duge i hladne, a u mraku su neljubazna i strašna stvorenja prošetala šumom i zalutala u selo. Stigao odnekud zmaj i stekao je naviku da krade crvene devojke i oduzima sve vredno od seljana. Štetan i pohlepan Baba Yaga, koji je leteo na minobacaču iz dalekih šuma, zbunio je umove stanovnika, pa su i neki odustali od zanata i otišli u šumu da pljačkaju, formirajući tamo bandu. Zlikovci su se sreli Gobline, koji je znao da se pretvori u drveće i žbunje, počeo je da nadgleda mirne seljane i služi pljačkašima, njuškajući da li Dobri momci spremaju nešto da oslobode njihova naselja od zlih duhova. Dobri momci i prelepe devojke, umorne od razbojničkih napada i strašnih smrti od strane strašnih Odličan jednooki, skupio zlato i pozvao poznatog rvača iz susjednog grada - Ivan Tsarevich, koji je obećao da će selo osloboditi razbojnika. Na proplanku u šumi Ivan je spasio sigurnu smrt Sivi vuk, koji je upao u jamsku zamku Razbojnika. Zauzvrat, Vuk je obećao da će obavijestiti carevića o raznim šumskim zlim duhovima. Prošao je poznati iscjelitelj Vasilisa Mudra, a kada je ugledala nevolje, ostala je da neguje stanovnike koji su stradali od napada nasilnih. Iza šume pojavila se crna palata, u kojoj se, prema glasinama, nastanio Koschei Besmrtni, svako veče je obilazio sela i opčinjavao Dobrice i Crvene Devojke da se ne usudjuju oglušiti o njegovu naredbu, sve bi radile kako je rekao. I nastanio se u Beživotnoj šumi Mačka Baiyun, a svi koji su ga sreli zaspali su nakon njegovih priča ili su umrli od njegovih gvozdenih kandži.

"Novi epovi". Za programere, operativce i radoznale ljude
Daleko daleko kraljevstvo

Kao što već možete vidjeti, igrači su podijeljeni u nekoliko grupa:

  • civili (Dobri momci, Crvene devojke, Ivan Carevič, Sivi Vuk i Vasilisa Mudra)
  • pljačkaši (sami pljačkaši, kao i Baba Yaga i Leshy)
  • nezavisna (Zmija-Gorynych, Odlučna jednooka, Žablja princeza, Koschey Besmrtni, Mačka-Bayun)

Cilj igre, kao što je gore spomenuto, je ostati živ i pobijediti. Protivnici moraju na ovaj ili onaj način napustiti igru, a nezavisni također moraju ostati živi do kraja igre. Igra ima zlato, neku vrstu valute za igru ​​koju igrači zarađuju samo u igri. Pobjednici dobijaju zlato. Što više zlata, to je veći rejting igrača.

Zadržaću se malo detaljnije na opisu likova.

"Novi epovi". Za programere, operativce i radoznale ljude
Dobar momak

"Novi epovi". Za programere, operativce i radoznale ljude
Red Maiden

Dobar momak и Red Maiden - najrasprostranjenija i glavna uloga u igri. To su civili koji noću spavaju, a danju rade. Noću ih napada jedan od razbojnika, Zmija Gorynych i druge uloge, a Vasilisa Mudra ih liječi. Sa malom vjerovatnoćom, Dobri momak ili Crvena djevojka mogu preživjeti napad bez oštećenja (moguće je izgubiti zlato u procesu), međutim, svi će prepoznati igračev nadimak sljedeći dan nakon napada. Noću, ovi igrači ne vuku nikakve poteze, već analiziraju situaciju u igri na osnovu poruka u chat chatu. Tokom dana, ovi igrači glasanjem odlučuju ko od njih nije Good Fellow ili Red Maiden. Igrač za kojeg je glasala većina drugih igrača napušta igru, preostali igrači dobijaju ili gube zlato. Ako igrači ne izaberu nikoga većinom glasova, nijedan igrač neće biti pogubljen.

"Novi epovi". Za programere, operativce i radoznale ljude
Ivan Tsarevich

Ivan Tsarevich - u početku anonimni branilac civila. Noću provjerava uloge drugih igrača, jer poznaje samo jednog svog saveznika - Sivog Vuka. Uz direktno sudjelovanje Sivog vuka (koji također može provjeriti uloge drugih igrača), Ivan Tsarevich, umjesto provjere, može noću ubiti drugog lika. Ako, kao rezultat provjere, Ivan Tsarevich u igraču vidi ulogu Dobrog momka ili Crvene djevojke, onda ih može pozvati kod sebe i upoznati ih sa Sivim Vukom i drugim Dobrim momcima i Crvenim djevojkama. Ivanu može smetati Princeza žaba, koja ga može zavesti noću, a da ne otkriva njegovu ulogu drugim igračima tokom dana. Ako sam Ivan otkrije princezu žabu, može je pozvati da se pridruži civilima, ali ako princeza odbije, ona umire od Ivanove ruke. Zmija-Gorynych također može ometati provjere Ivana-Careviča, ali, za razliku od princeze žabe, tokom dana će ostalim igračima reći ko je od njih Ivan-Tsarevich. Tokom dana, Ivan Tsarevich se ne razlikuje od drugih dobrih momaka.

"Novi epovi". Za programere, operativce i radoznale ljude
Sivi vuk

Sivi vuk - pomoćnik Ivana Tsareviča, čiji oštar njuh pomaže Ivanu da pronađe druge Dobrice i Crvene djevojke. Sivi vuk govori ovim igračima ko je Ivan carević, a takođe informiše i o drugim igračima sa ulogama Dobrih momaka i Crvenih devojaka. Ako Vuk otkrije pljačkaša ili drugog neprijatelja, odmah obavještava Ivana Careviča kako bi sljedeće noći mogao djelovati. Ako Vuka napadne princeza žaba, on se pretvara u običnog Dobrog momka i ne može nikoga provjeriti, a princeza neće znati da je to zapravo bio Sivi vuk, jer Vuk noću ne spava. Međutim, sam Vuk će tokom dana saznati ko je od igrača Žaba princeza i može pokušati da nagovori ostale Dobrice i Crvene devojke, koje je doveo Ivanu Careviču, da glasaju za pogubljenje Žabe. Princezo. I sljedeće noći može pokušati anonimno nagovoriti žablju princezu da pređe na stranu civila kako ne bi dirala nijednog od njih. Vuk se može žrtvovati noću da bi spasio Ivana Careviča ili Vasilise Mudre, ako pretpostavi da će iznenada pasti pod napadom pljačkaša, ili da ih je zombirao Koshchei (Vuk ima urođeni imunitet na Koščejeve čari), ali Vuk nakon samopožrtvovanja ispada iz igre.

"Novi epovi". Za programere, operativce i radoznale ljude
Vasilisa Mudra

Vasilisa Mudra - igra za civile, ali ne znaju za nju, pošto je Vasilisa veoma skromna. Takođe, Vasilisa Mudra, kada leči, ne postavlja pitanja i, kao dobar lekar, leči sve. Ali ako Koschey, Likho ili Leshy popiju njen lijek, neće živjeti duže od jednog dana, jer Vasilisa liječi samo ljude. Lijek Vasilise Mudre također neće pomoći zmiji Gorynych ili Cat-Bayun, ali ni oni neće donijeti štetu. Takođe, Kot-Bayun ne dira Vasilisu noću, jer Vasilisa ne ide u Beživotnu šumu da kupi ljekovito bilje. Osim toga, ženski čari princeze žabe ne djeluju na Vasilisu. Kada bi dva puta pokušali da ubiju njenog pacijenta, medicina bi bila nemoćna. Vasilisa vas neće spasiti od magijskih napada, na primjer od prokletstva Dashing. Vasilisa se tokom dana ponaša kao Crvena djeva, a samo prolazan, pomalo tužan pogled može malo nagovijestiti da je ona najbolja iscjeliteljica u Dalekom kraljevstvu.

"Novi epovi". Za programere, operativce i radoznale ljude
Rogue

Razbojnici, za razliku od svih prethodnih uloga, poznaju se, jer žive u istoj jazbini, a poznaju i Leshyja i Baba Yagu, tako da od prvog poteza mogu da glume zajedno. Ali samo Vođa bande izvodi akcije noću i ne glasa danju, dok se ostali Razbojnici marljivo pretvaraju da su Dobri momci i Crvene djevojke. Ako Vođa napusti igru ​​iz bilo kojeg razloga, jedan od preostalih Rogues odmah zauzima njegovo mjesto. Prije svega, Razbojnici pokušavaju onesposobiti Ivana Careviča dok ne prikupi dovoljno snaga iz Dobrih momaka i Crvenih djevojaka da se aktivno suprotstave pljačkašima tokom dana.

"Novi epovi". Za programere, operativce i radoznale ljude
Gobline

Gobline noću špijunira razbojnike, obavještavajući ih o ulogama koje se nalaze u njihovoj jazbini, ali danju ne glasa, jer ne živi u selu. Međutim, drugi igrači mogu glasati za Leshyja i tako ga pogubiti. Pošto Leši dolazi iz močvara, ne može ga zavesti princeza žaba, a ako pokuša, Leši će obeležiti njenu kuću, a seljani će saznati ko je ona zapravo. Leshem se ne bi trebao bojati Koshcheieve čarolije, ali Vasilisa ga može izliječiti na smrt. Ako Kot-Bayun pokuša da napadne Leshyja, rizikuje da izgubi svoje gvozdene kandže, a tada će Kot morati uspavljivati ​​žrtve samo svojim predenjem.

"Novi epovi". Za programere, operativce i radoznale ljude
Baba Yaga

Baba Yaga Takođe radi zajedno sa pljačkašima i baca čini noću: može ili poslati bolest drugim igračima ili zaštititi jednog od svojih saveznika od napada. Njeno vještičarenje je čak jače od Likhove kletve. Tokom dana, Baba Yaga je također aktivna: niko pod njenom zaštitom ne može biti pogubljen čak ni većinom glasova. Međutim, ponuda magičnih korijena za dnevnu zaštitu je ograničena, tako da Baba Yaga ne može zaštititi nikoga, uključujući i sebe, više od tri puta po utakmici. Tokom dana, Baba Yaga se pretvara da je obična Crvena Maiden i glasa sa svima ostalima.

"Novi epovi". Za programere, operativce i radoznale ljude
zmaj

zmaj noću leti iznad sela, šuma i močvara i upušta se u pljačku, otkrivajući ulogu opljačkanog danju. Preko dana Zmija spava, pa ne glasa, ali može biti pogubljen većinom glasova. Zmija je veoma opasna za sve, a posebno za Razbojnike i Ivana Careviča. Zmiju nije briga koga pljačka, ali ako je otkriju Vuk ili Leši, može postati vrijedan saveznik. Ako zmiju ubijete noću, možete, uz izvjesnu vjerovatnoću, dobiti vrlo vrijedan predmet - zmijsku kožu, koja će svog vlasnika jednom zaštititi od fizičkog napada.

"Novi epovi". Za programere, operativce i radoznale ljude
Odličan jednooki

Odličan jednooki noću ubija svakoga ko mu se nađe na putu, a koga ne može ubiti (Leshy, Kota-Bayun, ili Zmija Gorynych) proklinje, tako da će svako ko pokuša komunicirati s prokletim te iste noći umrijeti tokom dana . U ovom slučaju umire i sam prokleti, samo što Kot-Bayun ne umire, koji jednostavno odlazi u krevet da dobije snagu, preskačući red sljedeće noći. Samo Baba Yaga može spasiti Likha od kletve. Prokletstvo ne utiče na onoga koji je pobedio Cat-Bayuna: on, kao i Mačak, jednostavno odlazi u krevet i preskače skretanje.

"Novi epovi". Za programere, operativce i radoznale ljude
Princeza Žaba

Princeza Žaba ne može pobijediti u igri, ali može zaraditi mnogo novca zavodeći druge igrače noću. Iskušani promaši svoj red. Žaba ne može da zavede Vasilisu Mudru, a treba da izbegava i Lešija, koji će je sutradan svima izdati. Ako Ivan Carevič ili Vođa razbojnika pronađu Žabu, mogu pozvati civile ili razbojnike na svoju stranu, dok Ivan neće prihvatiti Žabino odbijanje, ali Vođa nije toliko izbirljiv. Ali princeza je prilično lukava, može postati dvostruki agent, jer uprkos činjenici da ne može pobijediti sama, ovo je odlična šansa za osvajanje zlata, jer se šanse za preživljavanje do kraja utakmice jako povećavaju! Tokom dana, Žablja princeza se pretvara da je Crvena Maiden i glasa sa svima zajedno.

"Novi epovi". Za programere, operativce i radoznale ljude
Koschei Besmrtni

Koschei Besmrtni živi u svom dvorcu. Noću šeta okolnim selima i zombira Dobre momke i Crvene devojke, koji mu dolaze u službu i bespogovorno izvršavaju sva naređenja. Odbijanjem da se izvrši naređenje, na primjer, da se glasa u toku dana drugačije od onoga što je rekao Koshchei, ili da se piše poruke u chatu tokom dana ako je Koshchei to zabranio, Koshcheijev sluga umire. Dakle, Koschey je u mogućnosti da utiče na rezultate glasanja tokom dana, iako on sam ne glasa. Ako Koshchei bude ubijen, umiru i sve njegove žrtve. Vasilisa može izliječiti slugu Koshcheia, koji se tada vraća svojoj prvobitnoj ulozi. Zmija-Gorynych i Vuk imaju urođeni imunitet na zombiranje, tako da ih Koschey, koliko god želi, ne može pretvoriti u svoju službu. Vuk također može pomoći Ivanu ili Vasilisi da se izvuku iz nevolje tako što će se žrtvovati. Saved by the Wolf stječe Vukov imunitet na zombiranje.

"Novi epovi". Za programere, operativce i radoznale ljude
Mačka Baiyun

Mačka Baiyun živi u šumi, lovi noću. Danju spava u svojoj šupljini, tako da ne učestvuje u glasanju. Međutim, tokom dana može biti pogubljen većinom glasova. Mačka može da napadne na dva načina: prede - a onda njena žrtva zaspi i ne može da hoda noću, i ne može da glasa sledećeg dana - ili direktno ubije gvozdenim kandžama. Napad kandžama ne djeluje na Zmiju-Gorynych, a nakon napada na Leshyja, mačka može ostati bez kandži! Dashing ne može prokleti Mačku, koja će nakon kletve jednostavno prespavati jednu noć. Ako neko uspije pobijediti Kota-Bayuna, bit će izliječen od bilo koje bolesti ili bolesti, uključujući prokletstvo Likha. Ova sposobnost mačke ostaje kod igrača do kraja igre. Koshcheijeve sluge ne mogu glasati za Mačka tokom dana, ali mogu indirektno saznati ko je Mačak, a da o tome Koshcheija ne obaveste. Kot-Bayun ne ulazi u saveze s Ivanom ili Razbojnicima, tako da su oni primarna meta za Kota.

Korištene tehnologije

Za pisanje igre odabrao sam računarsku tehnologiju bez servera zasnovanu na OpenFaaS-u, budući da je dovoljno jednostavna za organizaciju igre, a u isto vrijeme dovoljno napredna da napiše složena pravila igre bez nepotrebnih komplikacija. Također ću koristiti Kubernetes klaster, budući da ovaj način postavljanja aplikacija čini prilično jednostavnim i pouzdanim brzo postavljanje i mogućnost lakog skaliranja. Da biste kreirali logiku igre, možete se snaći samo sa OpenFaaS-om, ali ću također pokušati napraviti Storyteller kao poseban kontejner da uporedim složenost implementacije. Kao glavni programski jezik za mikroservise i funkcije, izabrao sam Go, pošto sam ga dugo proučavao u slobodno vrijeme da zamijenim Perl, a js će se koristiti na osnovu određenog okvira za interakciju korisnika sa mikroservisima i funkcijama. O konačnoj odluci ću vam reći u odgovarajućem članku u seriji. Za međusobnu komunikaciju funkcija odabrao sam NATS.io, jer sam se već susreo s njim prije, a ima prilično laku integraciju u Kubernetes.

Najava

  • Uvod
  • Postavljanje razvojnog okruženja, raščlanjivanje zadatka na funkcije
  • Backend rad
  • Frontend rad
  • Postavljanje CICD-a, organizacija testiranja
  • Započnite probnu igru
  • Ishodi

izvor: www.habr.com

Dodajte komentar