"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë

Për shkak të kërkesave të shumta nga lexuesit, një seri e madhe artikujsh po fillon mbi përdorimin e teknologjisë informatike pa server për të zhvilluar një aplikacion real. Ky cikël do të mbulojë zhvillimin, testimin dhe dorëzimin e aplikacioneve tek përdoruesit fundorë duke përdorur mjete moderne: arkitektura e aplikacionit të mikroservisit (në një version pa server, bazuar në OpenFaaS), grup Kubernetes për vendosjen e aplikacionit, bazën e të dhënave MongoDB, i fokusuar në grupimin dhe aplikimin e reve kompjuterike, si dhe në autobusin cloud NATYT. Aplikacioni zbaton lojën "Epics", një nga variantet e lojës popullore të salloneve "Mafia".

Çfarë janë "Epikat"?

Ky është një variant i lojës "Mafia", e njohur edhe si "Ujk". Ai bazohet në një lojë ekipore në të cilën pjesëmarrësit duhet të mësojnë hap pas hapi se kush është kush dhe të përpiqen të fitojnë. Fatkeqësisht, kur luani në internet, një komponent kaq i rëndësishëm i lojës si ndërveprimi personal zhduket, dhe rregullat e "Mafias" klasike janë mjaft të thjeshta, prandaj, për një lojë më jolineare dhe interesante, zakonisht shtohen personazhe të tjerë, por në përgjithësi tiparet kryesore të "Mafias" origjinale janë ruajtur, për shembull, ndryshimi i ditës dhe natës, lëvizjet vetëm gjatë natës, si dhe aleancat midis pjesëmarrësve. Një tjetër ndryshim i rëndësishëm midis të luajturit në internet është se hosti (i njohur ndryshe si Game Master, Storyteller) është zakonisht një program kompjuterik.

Përshkrimi i lojës

Rregullat e lojës që dua të zbatoj janë marrë nga një irc bot i vjetër që kam ruajtur në arkivin tim personal rreth 10 vjet më parë. "Epics" kanë një histori me të cilën fillon çdo lojë:

Në mbretërinë e largët, në shtetin e tridhjetë, përtej shtatë deteve, jetonin dhe jetonin disa fshatra, dhe në to Shokë të mirë и Vajza te bukura. Ata mbollën bukë dhe shkuan në pyllin përreth për të mbledhur kërpudha dhe manaferra... Dhe kjo vazhdoi nga shekulli në shekull, derisa një katastrofë e tmerrshme tronditi Tokën dhe e keqja filloi të përhapet në mbarë botën! Netët u bënë të gjata dhe të ftohta, dhe në errësirë, krijesa të pamëshirshme dhe të tmerrshme u hodhën në pyll dhe enden në fshat. Erdhi nga diku Dragoi dhe u bë zakon të vidhte vajzat e kuqe dhe t'u merrte fshatarëve gjithçka me vlerë. E dëmshme dhe e pangopur Baba Yaga, i cili fluturoi mbi një mortaja nga pyjet e largëta, ngatërroi mendjet e banorëve, madje disa hoqën dorë nga zanati dhe shkuan në pyll për të grabitur, duke krijuar një bandë atje. U takuan keqbërësit Goblin, i cili dinte të shndërrohej në pemë dhe shkurre, ai filloi të monitoronte fshatarët paqësorë dhe t'u shërbente hajdutëve, duke nuhatur nëse Shokët e Mirë po bënin diçka për të çliruar vendbanimet e tyre nga shpirtrat e këqij. Shokë të mirë dhe vajza të bukura, të lodhura nga bastisjet e grabitësve dhe vdekjet e tmerrshme nga duart e të tmerrshmëve Një sy i vrullshëm, mblodhi ar dhe ftoi një mundës të famshëm nga një qytet fqinj - Ivan Tsarevich, i cili premtoi se do të çlironte fshatin nga grabitësit. Në një pastrim në pyll, Ivan shpëtoi nga vdekja e sigurt Ujku gri, i cili ra në kurthin e gropës së Grabitësve. Në këmbim, Ujku premtoi të informonte Tsarevich për shpirtrat e këqij të ndryshëm të pyllit. Kaloi një shërues i famshëm Vasilisa e Urti, dhe kur pa telashe, qëndroi për të ushqyer banorët që kishin vuajtur nga sulmet e të vrazhdëve. Pas pyllit u shfaq një pallat i zi, në të cilin, sipas thashethemeve, ai u vendos Koschei i pavdekshëm, cdo nate ai vizitonte fshatrat dhe bente magji Shoqerite e Mire dhe Vashe te Kuqe qe te mos guxonin te mos i binden urdhrave te tij, do te benin gjithcka sic thoshte ai. Dhe u vendos në pyllin e pajetë Macja Baiyun, dhe të gjithë ata që e takonin ranë në gjumë pas tregimeve të tij ose vdiqën nga kthetrat e tij të hekurta.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Mbretëria e Largët

Siç mund ta shihni tashmë, lojtarët ndahen në disa grupe:

  • civilë (Good Fellows, Red Maidens, Ivan Tsarevich, Grey Wolf dhe Vasilisa the Wise)
  • hajdutët (vetë grabitësit, si dhe Baba Yaga dhe Leshy)
  • i pavarur (Gjarpër-Gorynych, Dashing One-Eyed, Princesha Frog, Koschey i Pavdekshëm, Cat-Bayun)

Qëllimi i lojës, siç u përmend më lart, është të qëndrosh gjallë dhe të fitosh. Kundërshtarët duhet të largohen nga loja në një mënyrë ose në një tjetër, dhe të pavarurit gjithashtu duhet të qëndrojnë gjallë deri në fund të lojës. Loja ka ar, një lloj monedhe loje që lojtarët e fitojnë vetëm brenda lojës. Fituesit marrin ar. Sa më shumë ar, aq më i lartë është vlerësimi i lojtarit.

Do të ndalem pak më hollësisht në përshkrimin e personazheve.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Shoku i mirë

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Red Maiden

Shoku i mirë и Red Maiden - roli më i përhapur dhe kryesor në lojë. Këta janë civilë që flenë natën dhe punojnë ditën. Natën ata sulmohen nga një prej grabitësve, Gjarpri Gorynych dhe role të tjera, dhe Vasilisa e Urtë i shëron. Me një probabilitet të vogël, Good Fellow ose Red Maiden mund t'i mbijetojnë sulmit pa dëmtime (ndoshta duke humbur arin gjatë procesit), megjithatë, të gjithë do ta njohin pseudonimin e lojtarit të nesërmen pas sulmit. Gjatë natës, këta lojtarë nuk bëjnë asnjë lëvizje, por analizojnë situatën e lojës bazuar në mesazhet në bisedën e lojës. Gjatë ditës, këta lojtarë vendosin duke votuar se cili prej tyre nuk është Shoku i Mirë apo Vajza e Kuqe. Lojtari i votuar nga shumica e lojtarëve të tjerë largohet nga loja, lojtarët e mbetur marrin ose humbasin ar. Nëse lojtarët nuk zgjedhin askënd me shumicë votash, asnjë lojtar nuk do të ekzekutohet.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Ivan Tsarevich

Ivan Tsarevich - fillimisht një mbrojtës anonim i civilëve. Natën ai kontrollon rolet e lojtarëve të tjerë, pasi ai njeh vetëm një nga aleatët e tij - Ujku Gri. Me pjesëmarrjen e drejtpërdrejtë të Ujkut Gri (i cili gjithashtu mund të kontrollojë rolet e lojtarëve të tjerë), Ivan Tsarevich, në vend që të kontrollojë, mund të vrasë një personazh tjetër gjatë natës. Nëse, si rezultat i kontrollit, Ivan Tsarevich sheh rolin e një shoku të mirë ose një vajzë të kuqe në një lojtar, atëherë ai mund t'i ftojë ata në vendin e tij dhe t'i prezantojë me Ujkun Gri dhe shokët e tjerë të mirë dhe vajzat e kuqe. Ivan mund të ndërhyhet nga Princesha Frog, e cila mund ta joshë atë gjatë natës, pa ia zbuluar rolin e tij lojtarëve të tjerë gjatë ditës. Nëse vetë Ivan zbulon Princeshën e Bretkosës, ai mund ta ftojë atë të bashkohet me civilët, por nëse Princesha refuzon, ajo vdes në duart e Ivanit. Gjarpri-Gorynych gjithashtu mund të ndërhyjë në çeqet e Ivan-Tsarevich, por, ndryshe nga Princesha Frog, gjatë ditës ai do t'u tregojë lojtarëve të tjerë se cili prej tyre është Ivan-Tsarevich. Gjatë ditës, Ivan Tsarevich nuk ndryshon nga shokët e tjerë të mirë.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Ujku gri

Ujku gri - asistent i Ivan Tsarevich, nuhatja e mprehtë e të cilit e ndihmon Ivanin të gjejë shokë të tjerë të mirë dhe vajza të kuqe. Ujku Gri u tregon këtyre lojtarëve se kush është Ivan Tsarevich, dhe gjithashtu informon për lojtarët e tjerë me rolet e Good Fellows dhe Red Maidens. Nëse Ujku zbulon një grabitës ose një armik tjetër, ai menjëherë informon Ivan Tsarevich në mënyrë që të mund të ndërmarrë veprime natën tjetër. Nëse Ujku sulmohet nga Princesha e Bretkosës, ai shndërrohet në një Shok të Mirë të zakonshëm dhe nuk mund të kontrollojë askënd, dhe Princesha nuk do ta dijë se ishte në të vërtetë Ujku Gri, pasi Ujku nuk fle natën. Sidoqoftë, vetë Ujku do të mësojë gjatë ditës se cili nga lojtarët është Princesha e Bretkosës dhe mund të përpiqet të bindë pjesën tjetër të miqve të mirë dhe vajzave të kuqe, të cilët ai i solli Ivan Tsarevich, të votojnë për ekzekutimin e Bretkosës. Princesha. Gjithashtu natën tjetër, ai mund të përpiqet të bindë në mënyrë anonime Princeshën e Bretkosës në anën e civilëve, në mënyrë që ajo të mos prekë asnjë prej tyre. Ujku mund të sakrifikohet natën për të shpëtuar Ivan Tsarevich ose Vasilisa të Urtë, nëse ai supozon se ata do të bien papritur nën sulmin e hajdutëve, ose do të jenë zombifikuar nga Koshchei (Ujku ka një imunitet të lindur ndaj hijeshive të Koshchei), por pas vetëflijimi që Ujku del nga loja.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Vasilisa e Urti

Vasilisa e Urti - luan për civilët, por ata nuk dinë për të, pasi Vasilisa është shumë modeste. Gjithashtu Vasilisa e Urta kur mjekon nuk bën pyetje dhe si mjeke e mirë i trajton të gjithë. Por nëse Koschey, Likho ose Leshy pinë ilaçet e saj, ata nuk do të jetojnë më gjatë se një ditë, pasi Vasilisa trajton vetëm njerëzit. Ilaçi i Vasilisa të Urtit gjithashtu nuk do të ndihmojë gjarprin Gorynych ose Cat-Bayun, por ato nuk do të sjellin as dëm. Gjithashtu, Kot-Bayun nuk e prek Vasilisa natën, pasi Vasilisa nuk shkon në Pyllin e Pajetë për të blerë barishte medicinale. Për më tepër, hijeshitë femërore të Princeshës Frog nuk funksionojnë tek Vasilisa. Nëse do të përpiqeshin të vrisnin dy herë pacientin e saj, mjekësia do të ishte e pafuqishme. Vasilisa nuk do t'ju shpëtojë nga sulmet magjike, për shembull nga mallkimi Dashing. Gjatë ditës, Vasilisa sillet si një vajzë e kuqe, dhe vetëm një vështrim i përkohshëm, pak i trishtuar mund të lë të kuptohet paksa se ajo është shëruesja më e mirë në Mbretërinë e Largët.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Mashtrues

Grabitës, ndryshe nga të gjithë rolet e mëparshëm, ata e njohin njëri-tjetrin, pasi jetojnë në të njëjtin varr, dhe gjithashtu njohin Leshy dhe Baba Yaga, kështu që ata mund të veprojnë në koncert që në lëvizjen e parë. Por vetëm Kreu i bandës kryen veprime natën dhe nuk voton ditën, ndërsa pjesa tjetër e grabitësve pretendon me zell si Shokë të Mirë dhe Kuqe. Nëse Udhëheqësi largohet nga loja për ndonjë arsye, një nga Mashtruesit e mbetur menjëherë zë vendin e tij. Para së gjithash, grabitësit po përpiqen të çaktivizojnë Ivan Tsarevich derisa ai të ketë mbledhur forca të mjaftueshme nga Shokët e Mirë dhe Red Maidens për t'u përballur aktivisht me Grabitësit gjatë ditës.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
goblin dru

goblin dru natën spiunon për grabitësit, duke i informuar për rolet që gjenden në strofkën e tyre, por ditën nuk voton, pasi nuk jeton në fshat. Megjithatë, lojtarët e tjerë mund të votojnë për Leshy dhe kështu ta ekzekutojnë atë. Meqenëse Leshy vjen nga kënetat, ai nuk mund të joshet nga Princesha e Bretkosës dhe nëse përpiqet, Leshy do të shënojë shtëpinë e saj dhe fshatarët do të zbulojnë se kush është ajo në të vërtetë. Leshem nuk duhet të ketë frikë nga magjia e Koshchei, por Vasilisa mund ta shërojë atë deri në vdekje. Nëse Kot-Bayun përpiqet të sulmojë Leshy-n, ai rrezikon të humbasë kthetrat e tij të hekurta dhe atëherë Kot do t'i duhet t'i vërë në gjumë viktimat vetëm me gërvishtjen e tij.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Baba Yaga

Baba Yaga Ai gjithashtu punon së bashku me Robbers dhe bën magji gjatë natës: ai ose mund t'u dërgojë sëmundje lojtarëve të tjerë ose të mbrojë një nga aleatët e tij nga sulmi. Magjia e saj është edhe më e fortë se mallkimi i Likh. Gjatë ditës, Baba Yaga është gjithashtu aktive: kushdo nën mbrojtjen e saj nuk mund të ekzekutohet as me shumicë votash. Sidoqoftë, furnizimi me rrënjë magjike për mbrojtjen e ditës është i kufizuar, kështu që Baba Yaga nuk mund të mbrojë askënd, përfshirë veten, më shumë se tre herë në lojë. Gjatë ditës, Baba Yaga pretendon të jetë një Red Maiden e zakonshme dhe voton me të gjithë të tjerët.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Dragoi

Dragoi natën fluturon mbi fshatra, pyje e këneta dhe merret me grabitje, duke zbuluar rolin e të grabiturit gjatë ditës. Gjatë ditës, Gjarpri fle, kështu që ai nuk voton, por ai mund të ekzekutohet me shumicë votash. Gjarpri është shumë i rrezikshëm për të gjithë, veçanërisht për grabitësit dhe Ivan Tsarevich. Gjarpërit nuk i intereson kë grabit, por nëse zbulohet nga Ujku ose Leshy, ai mund të bëhet një aleat i vlefshëm. Nëse e vrisni gjarpërin gjatë natës, me disa gjasa mund të merrni një send shumë të vlefshëm - Lëkurën e Gjarprit, i cili do ta mbrojë pronarin e tij një herë nga sulmi fizik.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Një sy i vrullshëm

Një sy i vrullshëm natën ai vret këdo që i del në rrugë dhe këdo që nuk mund të vrasë (Leshy, Kota-Bayun ose Gjarprin Gorynych) ai mallkon, kështu që kushdo që përpiqet të komunikojë me të mallkuarin po atë natë, të vdesë gjatë ditës. . Vdes edhe vetë i mallkuari në këtë rast, nuk vdes vetëm Kot-Bayun, i cili thjesht shkon në shtrat për të marrë forcë, duke anashkaluar radhën të nesërmen. Vetëm Baba Yaga mund ta shpëtojë Likh nga mallkimi. Mallkimi nuk prek atë që mundi Cat-Bayun: ai, si Macja, thjesht shkon në shtrat dhe kalon një kthesë.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Princesha Frog

Princesha Frog nuk mund ta fitojë lojën, por mund të fitojë shumë para duke joshur lojtarët e tjerë gjatë natës. I tunduarit i mungon radha. Bretkosa nuk mund ta joshë Vasilisa të Urtën dhe duhet të shmangë edhe Leshy-n, i cili do t'ua tradhtojë të gjithëve ditën tjetër. Nëse Ivan Tsarevich ose Udhëheqësi i Grabitësve e gjejnë Bretkosën, ata mund të ftojnë civilë ose grabitës në anën e tyre, ndërsa Ivan nuk do ta pranojë refuzimin e Bretkosës, por Udhëheqësi nuk është aq i zgjedhur. Por Princesha është mjaft dinake, ajo mund të bëhet një agjente e dyfishtë, sepse pavarësisht faktit se ajo nuk mund të fitojë e vetme, ky është një shans i shkëlqyer për të fituar ar, sepse shanset për të mbijetuar deri në fund të lojës rriten shumë! Gjatë ditës, Princesha Frog shtiret se është Red Maiden dhe voton me të gjithë së bashku.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Koschei i pavdekshëm

Koschei i pavdekshëm jeton në kështjellën e tij. Natën, ai ecën nëpër fshatrat përreth dhe zombison Shokët e Mirë dhe Red Maidens, të cilët hyjnë në shërbimin e tij dhe kryejnë pa diskutim të gjitha urdhrat. Duke refuzuar zbatimin e një urdhri, për shembull, për të votuar gjatë ditës ndryshe nga ajo që u tha nga Koshchei, ose për të shkruar mesazhe në chat gjatë ditës nëse Koshchei e ndalonte atë, Shërbëtori i Koshcheit vdes. Kështu, Koschey është në gjendje të ndikojë në rezultatet e votimit gjatë ditës, edhe pse ai vetë nuk voton. Nëse Koshchei vritet, të gjitha viktimat e tij gjithashtu vdesin. Vasilisa mund të shërojë shërbëtorin Koshchei, i cili më pas kthehet në rolin e tij origjinal. Gjarpri-Gorynych dhe Ujku kanë një imunitet të lindur ndaj zombifikimit, kështu që Koschey, sado që të dojë, nuk mund t'i kthejë në shërbimin e tij. Ujku gjithashtu mund të ndihmojë Ivanin ose Vasilisa-n nga telashet duke sakrifikuar veten. Saved by the Wolf fiton imunitetin e Ujkut ndaj zombifikimit.

"Epika të reja". Për zhvilluesit, opcionet dhe njerëzit kuriozë
Macja Baiyun

Macja Baiyun jeton në pyll, gjuan natën. Gjatë ditës ai fle në zgavrën e tij, kështu që nuk merr pjesë në votim. Megjithatë, gjatë ditës ai mund të ekzekutohet me shumicë votash. Macja mund të sulmojë në dy mënyra: të gërhasë - dhe më pas viktima e saj bie në gjumë dhe nuk mund të ecë natën dhe nuk mund të votojë të nesërmen - ose të vrasë drejtpërdrejt me kthetra hekuri. Sulmi me kthetra nuk funksionon në Snake-Gorynych, dhe pasi të sulmojë Leshy, Macja mund të mbetet fare pa kthetra! Dashing nuk mund të mallkojë Macen, e cila pas mallkimit thjesht do të flejë për një natë. Nëse dikush është në gjendje të mposhtë Kota-Bayun, ai do të shërohet nga çdo sëmundje ose sëmundje, përfshirë mallkimin e Likh. Kjo aftësi Cat mbetet me lojtarin deri në fund të lojës. Shërbëtorët e Koshcheit nuk mund të votojnë për Macen gjatë ditës, por ata mund të zbulojnë indirekt se kush është Macja pa e informuar Koshchei për këtë. Kot-Bayun nuk hyn në aleanca me Ivanin ose me grabitësit, kështu që ata janë objektivi kryesor për Kot.

Teknologjitë e përdorura

Për të shkruar lojën, zgjodha teknologjinë informatike pa server të bazuar në OpenFaaS, pasi është mjaft e thjeshtë për të organizuar lojën, dhe në të njëjtën kohë mjaft e avancuar për të shkruar rregulla komplekse të lojës pa komplikime të panevojshme. Do të përdor gjithashtu një grup Kubernetes, pasi kjo metodë e vendosjes së aplikacioneve e bën mjaft të thjeshtë dhe të besueshme marrjen e vendosjes së shpejtë dhe aftësinë për të shkallëzuar lehtësisht. Për të krijuar logjikën e lojës, mund t'ia dilni vetëm me OpenFaaS, por unë do të përpiqem ta bëj edhe Tregimtarin si një enë të veçantë për të krahasuar kompleksitetin e zbatimit. Si gjuhën kryesore të programimit për mikroshërbimet dhe funksionet, zgjodha Go, meqenëse unë e kam studiuar për një kohë të gjatë në kohën time të lirë për të zëvendësuar Perl, dhe js do të përdoret bazuar në një kornizë të caktuar për ndërveprimin e përdoruesit me mikroshërbimet dhe funksionet. Unë do t'ju tregoj për vendimin përfundimtar në artikullin përkatës të serisë. Për të komunikuar funksionet me njëri-tjetrin, zgjodha NATS.io, sepse e kisha hasur tashmë më parë dhe ka integrim mjaft të lehtë në Kubernetes.

Shpallje

  • Paraqitje
  • Vendosja e mjedisit të zhvillimit, zbërthimi i detyrës në funksione
  • Puna në fund të fundit
  • Puna në front
  • Ngritja e CICD, organizimi i testimit
  • Filloni një seancë të lojës provë
  • Rezultatet e

Burimi: www.habr.com

Shto një koment