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

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

Zbog brojnih zahtjeva čitatelja, započinje velika serija članaka o korištenju računalne tehnologije bez poslužitelja za razvoj stvarne aplikacije. Ovaj ciklus će pokriti razvoj aplikacija, testiranje i isporuku krajnjim korisnicima korištenjem modernih alata: arhitektura mikroservisnih aplikacija (u verziji bez poslužitelja, temeljena na OpenFaaS), Klastera kubernete za implementaciju aplikacije, baze podataka MongoDB, fokusiran na klasteriranje i primjenu u oblaku, kao i sabirnicu u oblaku NATS. Aplikacija implementira igru ​​"Epics", jednu od varijanti popularne salonske igre "Mafia".

Što su "Bylins"?

Ovo je varijanta igre "Mafia", također poznata kao "Vukodlak". Temelji se na timskoj igri u kojoj sudionici moraju korak po korak učiti tko je tko i pokušati pobijediti. Nažalost, kada igrate online, tako važna komponenta igre kao što je osobna interakcija nestaje, a pravila klasične "Mafije" prilično su jednostavna, stoga se za nelinearnije i zanimljivije igranje obično dodaju drugi likovi, ali općenito glavne značajke izvorne "Mafije" su sačuvane, na primjer, promjena dana i noći, potezi samo noću, kao i savezi između sudionika. Još jedna važna razlika između igranja na mreži je ta što je domaćin (aka Game Master, Storyteller) obično računalni program.

Opis igre

Pravila igre koja želim implementirati preuzeta su sa starog irc bota kojeg sam spremio u svoju osobnu arhivu prije 10-ak godina. "Epics" imaju pozadinsku priču kojom svaka igra počinje:

U dalekoj kraljevini, u državi tridesetoj, iza sedam mora, živjelo je i živjelo nekoliko sela, a u njima Dobri momci и Predivne djevojke. Sijali su kruh i odlazili u okolnu šumu brati gljive i bobice... I tako je trajalo iz stoljeća u stoljeće, sve dok strašna katastrofa nije potresla Zemlju i zlo se počelo širiti svijetom! Noći su postale duge i hladne, au mraku su neljubazna i strašna stvorenja šuljala šumom i zalutala u selo. Odnekud stigao Zmaj i stekao naviku krasti Crvene djeve i odnositi sve vrijedno seljanima. Štetan i pohlepan Baba Jaga, koji je na minobacaču doletio iz dalekih šuma, pomutio je umove stanovnika, pa su čak neki odustali od zanata i otišli u šumu da pljačkaju, formirajući tamo bandu. Zlobnici su se sreli Zao, koji se znao pretvarati u drveće i grmlje, počeo je nadzirati miroljubive seljane i služiti pljačkašima, njuškajući namjeravaju li Dobri momci nešto da oslobode njihova naselja od zlih duhova. Dobri momci i lijepe djevojke, umorni od pohoda pljačkaša i strašnih smrti u rukama strašnih Brz jednooki, skupio zlato i pozvao poznatog hrvača iz susjednog grada - Ivan Carević, koji je obećao riješiti selo pljačkaša. Na čistini u šumi Ivana je spasio od sigurne smrti Sivi vuk, koji je upao u jamu zamku Razbojnika. Zauzvrat, Vuk je obećao obavijestiti carevića o raznim šumskim zlim duhovima. Prošao je poznati iscjelitelj Vasilisa Mudra, a kad je vidjela nevolju, ostala je njegovati ukućane koji su patili od napada drskih. Iza šume pojavila se crna palača u kojoj se, prema glasinama, nastanio Koschei Besmrtni, svake noći je obilazio sela i opčinjavao Dobre momke i Crvene Djevojke kako se ne bi usudile oglušiti o njegove naredbe, sve bi radile kako on kaže. I nastanio se u Beživotnoj šumi Mačka Baiyun, a svi koji su ga sreli zaspali su nakon njegovih priča ili umrli od njegovih željeznih pandži.

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

Kao što već vidite, igrači su podijeljeni u nekoliko grupa:

  • civili (Dobri momci, Crvene Djevice, Ivan Carević, Sivi Vuk i Vasilisa Mudra)
  • razbojnici (sami razbojnici, kao i Baba Yaga i Leshy)
  • neovisni (Zmija-Gorynych, Brz jednooki, Princeza žaba, Koschey Besmrtni, Cat-Bayun)

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

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

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

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

Dobar momak и Crvena djeva - najraširenija 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. S malom vjerojatnošću, Good Fellow ili Red Maiden mogu preživjeti napad bez oštećenja (moguće gubeći zlato u procesu), međutim, svi će prepoznati igračev nadimak sljedeći dan nakon napada. Noću ovi igrači ne povlače nikakve poteze, već analiziraju situaciju u igri na temelju poruka u chatu igre. Tijekom dana ovi igrači odlučuju glasanjem tko od njih nije Dobri prijatelj ili Crvena Djeva. Igrač za kojeg je glasovala većina ostalih igrača napušta igru, preostali igrači dobivaju ili gube zlato. Ako igrači nikoga ne izaberu većinom glasova, nijedan igrač neće biti pogubljen.

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

Ivan Carević - u početku anonimni branitelj civila. Noću provjerava uloge drugih igrača, budući da poznaje samo jednog svog saveznika - Sivog vuka. Uz izravno 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 vidi ulogu Dobrog momka ili Crvene Djeve u igraču, tada ih može pozvati k sebi i upoznati ih sa Sivim Vukom i drugim Dobrim Momcima i Crvenim Djevicama. Ivana može ometati princeza žaba, koja ga može zavesti noću, a danju ne otkrije njegovu ulogu drugim igračima. Ako sam Ivan otkrije princezu žabu, može je pozvati da se pridruži civilima, ali ako princeza odbije, umire od Ivanove ruke. Zmija-Gorynych također može ometati provjere Ivana-Careviča, ali će, za razliku od princeze žabe, tijekom dana reći ostalim igračima tko je od njih Ivan-Carevič. Danju se Ivan Tsarevich ne razlikuje od ostalih dobrih momaka.

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

sivi vuk - pomoćnik Ivana Tsarevicha, čiji istančan njuh pomaže Ivanu pronaći druge dobre momke i Crvene djevojke. Sivi vuk ovim igračima govori tko je Ivan carević, a također informira o drugim igračima s ulogama Dobrih momaka i Crvenih djeva. Ako Vuk otkrije pljačkaša ili nekog drugog neprijatelja, odmah obavještava Ivana Tsarevicha kako bi sljedeće noći mogao krenuti u akciju. Ako Vuka napadne princeza žaba, on se pretvara u običnog dobrog momka 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 će Vuk tijekom dana saznati tko je od igrača princeza žaba i može pokušati nagovoriti ostale dobre momke i Crvene djevojke, koje je doveo Ivanu Careviću, da glasaju za pogubljenje žabe. Princeza. Također sljedeće noći može pokušati anonimno nagovoriti princezu žabac da pređe na stranu civila da nikoga od njih ne dira. Vuk se može žrtvovati noću kako bi spasio Ivana Tsarevicha ili Vasilisu Mudru, ako pretpostavi da će oni iznenada pasti pod napad pljačkaša ili ih je zombirao Koshchei (Vuk ima urođeni imunitet na Koshcheijeve čari), ali nakon samopožrtvovnost Vuk ispada iz igre.

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

Vasilisa Mudra - igra za civile, ali oni ne znaju za nju, jer je Vasilisa vrlo skromna. Također, Vasilisa Mudra, kada liječi, ne postavlja pitanja i, kao dobar liječnik, liječi sve. Ali ako Koschey, Likho ili Leshy popiju njezin 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 neće ni naštetiti. Također, Kot-Bayun noću ne dira Vasilisu, jer Vasilisa ne ide u beživotnu šumu kupiti ljekovito bilje. Osim toga, ženski čari princeze žabe ne djeluju na Vasilisu. Kad bi dvaput pokušali ubiti njenog pacijenta, medicina bi bila nemoćna. Vasilisa vas neće spasiti od čarobnih napada, na primjer od Dashing kletve. Danju se Vasilisa ponaša kao Crvena Djevica, a samo letimičan, pomalo tužan pogled može donekle nagovijestiti da je najbolja iscjeliteljica Dalekog Kraljevstva.

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

pljačkaši, za razliku od svih dosadašnjih uloga, poznaju se jer žive u istoj jazbini, a poznaju i Leshyja i Babu Yagu, tako da mogu djelovati usklađeno od prvog poteza. Ali samo Vođa bande obavlja akcije noću i ne glasa danju, dok se ostali Pljačkaši marljivo pretvaraju da su Dobri momci i Crvene Djevice. Ako Vođa iz bilo kojeg razloga napusti igru, jedan od preostalih Roguea odmah zauzima njegovo mjesto. Prije svega, Razbojnici pokušavaju onesposobiti Ivana Carevića dok ne prikupi dovoljno snaga od Dobrih momaka i Crvenih djeva da se aktivno suprotstave Razbojnicima tijekom dana.

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

Zao noću špijunira za Razbojnike, obavještava 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. Budući da Leshy dolazi iz močvara, ne može ga zavesti princeza žaba, a ako pokuša, Leshy će označiti njezinu kuću, a seljani će saznati tko je ona zapravo. Leshem se ne bi trebao bojati Koshcheieve čarolije, ali Vasilisa ga može izliječiti do smrti. Ako Cat-Bayun pokuša napasti Leshyja, riskira da izgubi svoje željezne kandže, a tada će mačak morati uspavati žrtve samo svojim predenjem.

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

Baba Jaga Također radi zajedno s Pljačkašima i baca čarolije noću: može ili poslati bolest drugim igračima ili zaštititi nekog od svojih saveznika od napada. Njezino čarobnjaštvo je čak jače od Likhove kletve. Danju je aktivna i Baba Yaga: nitko pod njezinom zaštitom ne može biti smaknut čak ni većinom glasova. Međutim, zaliha čarobnih korijena za dnevnu zaštitu je ograničena, tako da Baba Yaga ne može zaštititi nikoga, uključujući sebe, više od tri puta po igri. Tijekom dana Baba Yaga se pretvara da je obična Crvena djeva i glasa sa svima ostalima.

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

Zmaj noću nadlijeće sela, šume i močvare i bavi se pljačkom, otkrivajući ulogu opljačkanih danju. Danju Zmija spava, pa ne glasa, ali može biti pogubljena većinom glasova. Zmija je vrlo opasna za sve, a posebno za Razbojnike i Ivana Carevića. Zmiju nije briga koga će opljačkati, ali ako je otkriju Vuk ili Leshy, može postati vrijedan saveznik. Ako ubijete Zmiju noću, s određenom vjerojatnošću možete dobiti vrlo vrijedan predmet - Zmijsku kožu, koja će jednom zaštititi svog vlasnika od fizičkog napada.

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

Brz jednooki noću ubija sve koji mu se nađu na putu, a koga ne može ubiti (Leshy, Kota-Bayun ili Zmija Gorynych) proklinje, tako da će svatko tko pokuša komunicirati s prokletnikom te iste noći umrijeti tijekom dana. . Sam prokletnik također umire u ovom slučaju, samo Kot-Bayun ne umire, koji jednostavno odlazi u krevet da dobije snagu, preskačući svoj red sljedeće noći. Samo Baba Yaga može spasiti Likha od prokletstva. Prokletstvo ne utječe na onoga koji je pobijedio Cat-Bayuna: on, poput Mačke, jednostavno ide u krevet i preskoči red.

"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. Iskušavan propušta svoj red. Žaba ne može zavesti Vasilisu Mudru, a trebala bi izbjegavati i Leshyja, koji će je sutradan izdati svima. Ako Ivan Carević ili Vođa razbojnika pronađu Žabu, mogu pozvati civile ili Razbojnike na svoju stranu, dok Ivan neće prihvatiti Žabljevo odbijanje, ali Vođa nije toliko izbirljiv. Ali princeza je prilično lukava, može postati dvostruki agent, jer unatoč činjenici da ne može pobijediti sama, ovo je izvrsna prilika za dobivanje zlata, jer se šanse za preživljavanje do kraja igre uvelike povećavaju! Tijekom dana, princeza žaba se pretvara da je Crvena djeva i glasa sa svima zajedno.

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

Koschei Besmrtni živi u svom dvorcu. Noću šeće okolnim selima i zombificira Dobre momke i Crvene Djevice koje dolaze u njegovu službu i bespogovorno izvršavaju sve naredbe. Odbijajući izvršiti naredbu, na primjer, glasovati tijekom dana drugačije nego što je rekao Koshchei, ili pisati poruke u chatu tijekom dana ako je Koshchei to zabranio, Koshcheijev Sluga umire. Dakle, Koschey može utjecati na rezultate glasovanja tijekom dana, iako on sam ne glasa. Ako Koshchei bude ubijen, sve njegove žrtve također umiru. Vasilisa može izliječiti slugu Koshcheija, koji se tada vraća svojoj izvornoj ulozi. Zmija-Gorynych i Vuk imaju urođeni imunitet na zombificiranje, pa ih Koschey, koliko god želi, ne može pretvoriti u svoju službu. Vuk također može pomoći Ivanu ili Vasilisi iz nevolje žrtvujući se. Spašen od vuka stječe imunitet vuka na zombificiranje.

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

Mačka Baiyun živi u šumi, lovi noću. Preko dana spava u svojoj šupljini, pa ne sudjeluje u glasovanju. Međutim, tijekom dana može biti smaknut većinom glasova. Mačka može napasti na dva načina: predeti - a onda njezina žrtva zaspi i ne može hodati noću, a sljedeći dan ne može glasati - ili izravno ubiti željeznim pandžama. Napadanje kandžama ne djeluje na Zmiju-Gorynycha, a nakon napada na Leshyja, Mačka može uopće ostati bez kandži! Dashing ne može prokleti Mačku, koja će nakon kletve jednostavno spavati jednu noć. Ako netko uspije pobijediti Kota-Bayuna, bit će izliječen od bilo koje bolesti, uključujući prokletstvo Likha. Ova sposobnost Cat ostaje s igračem do kraja igre. Koščeijeve sluge ne mogu glasati za Mačka tijekom dana, ali mogu neizravno saznati tko je Mačak, a da o tome ne obavijeste Koščeja. Kot-Bayun ne ulazi u saveze s Ivanom ili Pljačkašima, pa su oni primarna meta za Kota.

Korištene tehnologije

Za pisanje igre odabrao sam tehnologiju računalstva bez poslužitelja koja se temelji na OpenFaaS-u, jer je dovoljno jednostavna za organiziranje igre, a istovremeno dovoljno napredna da napiše složena pravila igre bez nepotrebnih komplikacija. Također ću koristiti Kubernetes klaster, budući da ova metoda implementacije aplikacija čini prilično jednostavnom i pouzdanom brzu implementaciju i mogućnost jednostavnog skaliranja. Za stvaranje logike igre možete se snaći samo s OpenFaaS-om, ali također ću pokušati napraviti Storyteller kao zaseban spremnik kako bih usporedio složenost implementacije. Kao glavni programski jezik za mikroservise i funkcije odabrao sam Go, budući da sam ga dugo proučavao u slobodno vrijeme kako bi zamijenio Perl, a js će se koristiti na temelju određenog okvira za interakciju korisnika s mikroservisima i funkcijama. Reći ću vam o konačnoj odluci u odgovarajućem članku iz serije. Za međusobnu komunikaciju funkcija odabrao sam NATS.io, jer sam se s njime već susreo, a ima prilično laku integraciju u Kubernetes.

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

Dodajte komentar