«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.

Për shkak të kërkesave të shumta nga lexuesit, fillon një cikël i madh artikujsh mbi aplikimin e teknologjisë së llogaritjeve pa server për zhvillimin e një aplikacioni të vërtetë. Në këtë cikël do të shqyrtohet zhvillimi i aplikacionit, testimi dhe dorëzimi te përdoruesit e fundit me ndihmën e mjeteve moderne: arkitekturës mikrosherbimesh të aplikacionit (në variantin serverless, mbi bazën e OpenFaaS), klasterit kubernetes për shpërndarjen e aplikacionit, bazës së të dhënave MongoDB, e orientuar drejt klasterizimit dhe aplikimit në re, si dhe autobuzit të duarve në re NATS. Aplikacioni realizon lojën "Byliny", një nga variantet e lojës popullore "Mafia".

Çfarë është "Byliny"?

Kjo është një variant i lojës "Mafia", e njohur gjithashtu si "Werewolf". Në të bazën është loja në ekip, në të cilën pjesëmarrësit duhet të zbulojnë hap pas hapi se kush është kush dhe të përpiqen të fitojnë. Fatkeqësisht, gjatë lojës në rrjet humbet një përbërës kaq të rëndësishëm si ndërveprimi personal, dhe rregullat e "Mafisë" klasike janë mjaft të thjeshta, kështu që për një proces lojmarrës më jolinear dhe më interessant zakonisht shtohen personazhe të tjera, por në përgjithësi ruhet karakteri kryesor i "Mafisë" origjinale, për shembull kalimi i natës dhe ditës, lëvizjet vetëm natën, si dhe aleancat midis pjesëmarrësve. Një dallim tjetër të rëndësishëm të lojës në rrjet është se udhëheqësi (njëkohësisht Master i lojës, Bardi) zakonisht është një program kompjuterik.

Përshkrimi i lojës

Rregullat e lojës që unë dëshiroj të realizoj janë marrë nga një bot i vjetër irc, të cilin e kam ruajtur në arkivin tim personal rreth 10 vjet më parë. "Byliny" kanë një histori, e cila përbën fillimin e çdo loje:

Në mbretërinë nëntë dhe në shtetin e tridhjetë, përtej shtatë lumenjve, jetonin disa fshatra, dhe në to Djemtë e mirë dhe Vajzat e bukura. Ata mbillnin grurë dhe shkonin në pyllin përreth për kërpudha dhe fruta… Këtu vazhdonte kështu nga epoka në epokë, derisa një katastrofë e frikshme tronditi Tokën dhe e keqja filloi të përhapet në botë! Natët u bënë të gjata dhe të ftohta, dhe në errësirë bredhnin përmes pyllit dhe shkonin në fshat krijesa të këqija dhe të frikshme. Diku erdhi Zmei Gorynych dhe u bë hajdut i Vajzave të Bukura dhe rrethonte të gjitha gjërat e vlefshme nga fshatarët. Një grua e keqe dhe lakmuese Baba Yaga, e ardhur me një sopë nga pyjet e largëta, i trazoi mendjen banorëve, dhe madje disa lanë zanatin dhe shkuan në pyll për të grabitur, duke formuar atje një bandë. Të këqijtë takuan Leshy, who could transform into trees and bushes, began to monitor the peaceful villagers and serve the robbers, sniffing around to see if the Good Young Men were plotting to rid their settlements of evil. The Good Young Men and the Fair Maidens, tired of the robber raids and horrific deaths at the hands of the fearsome One-Eyed Evil, gathered gold and invited a well-known fighter from a neighboring city — Ivan Tsarevich, who promised to free the village from robbers. In a clearing in the forest, Ivan saved from certain death the Gray Wolf, who had fallen into a robber's pit trap. In return, the Wolf promised to inform the Tsarevich about various evil creatures in the forest. A famous healer Vasilisa the Wise, passing by, saw the trouble and decided to care for the villagers who suffered from the attacks of the wicked. Behind the forest appeared a black palace, where, according to rumors, settled Koschei the Deathless, who visited the villages every night and enchanted the Good Young Men and Fair Maidens so that they would not dare disobey his orders; they did everything he said. And in the Lifeless Forest settled the Cat-Bayun, and anyone who met him fell into a dead sleep after his tales or perished by his iron claws.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
The Three-Nine Kingdom

As already seen, the players are divided into several groups:

  • peaceful villagers (Good Young Men, Fair Maidens, Ivan Tsarevich, Gray Wolf, and Vasilisa the Wise)
  • robbers (the robbers themselves, as well as Baba Yaga and Leshy)
  • independents (Zmey Gorynych, One-Eyed Evil, Tsarevna Frog, Koschei the Deathless, Cat-Bayun)

The goal of the game, as mentioned above, is to stay alive and win. Opponents must leave the game one way or another, and the independents must also survive until the end of the game. There is gold in the game, a kind of in-game currency that players earn only within the game. The winners receive gold. The more gold, the higher the player's rating.

I will elaborate a bit more on the character descriptions.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Good Young Man

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Fair Maiden

Good Young Man dhe Fair Maiden — roli më masiv dhe kryesore në lojë. Këta janë banorë të qetë, të cilët flenë natën dhe punojnë gjatë ditës. Natën, ata sulmohen nga ndonjë nga banditët, Zmi Gorynych dhe rolet e tjera, ndërsa Vasilisa Premudraja i shëron ata. Me një probabilitet të vogël, gjithashtu, Një Djalë i Mirë ose Vajza e Kuqe mund të mbijetojnë sulmin pa dëme (ndoshta duke humbur ndonjëherë ar), megjithatë, të gjitha do të dinë pseudonimin e lojtarit ditën tjetër pas sulmit. Natën, këta lojtarë nuk bëjnë asnjë lëvizje, por analizojnë situatën e lojës, duke u bazuar në mesazhet në bisedën e lojës. Gjatë ditës, këta lojtarë vendosin me anë të votimit se kush prej tyre nuk është Një Djalë i Mirë apo Vajza e Kuqe. Lojtari për të cilin votoi shumica e lojtarëve të tjerë largohet nga loja, ndërsa ata që mbeten fitojnë ose humbin ar. Nëse lojtarët nuk zgjedhin askënd me shumicë votash, askush nga lojtarët nuk do të ekzekutohet.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Ivan-Tsarievich

Ivan-Tsarievich — përfillimisht një mbrojtës anonim i banorëve të qetë. Natën, kontrollon rolet e lojtarëve të tjerë, pasi njeh vetëm një aleat të tij — Wolk Seri. Me pjesëmarrjen direkte të Wolk Sërit (i cili gjithashtu mund të kontrollojë rolet e lojtarëve të tjerë) Ivan-Tsarievich, në vend të kontrollit, natën mund të vrasë një karakter tjetër. Nëse gjatë kontrollit, Ivan-Tsarievich sheh rolin e Një Djalë të Mirë ose Vajza e Kuqe te një lojtar, ai mund t’i ftojë ata dhe t’i prezantojë me Wolk Sëri dhe Djemtë e Mirë e Vajzat e Kuqe. Ivanit mund t’i pengohet nga Tsarevna-Runka, e cila mund ta ngacmojë atë natën, duke mos zënë rolin e tij për lojtarët e tjerë gjatë ditës. Nëse Ivan e zbulon vetë Tsarevna-Runka, mund t'i ofrojë asaj të bashkohet me banorët e qetë, por nëse Tsarevna refuzon, ajo vdes nga dora e Ivanit. Zmi-Gorynych gjithashtu mund të pengojë kontrollit të Ivan-Tsarievich, por, ndryshe nga Tsarevna-Runka, gjatë ditës ai do t’i tregojë lojtarëve të tjerë se kush prej tyre është Ivan-Tsarievich. Gjatë ditës, Ivan-Tsarievich nuk ndryshon asgjë nga Djemtë e Mirë të tjerë.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Wolk Sëri

Wolk Sëri — ndihmës i Ivan-Carëve, i cili me nuhatjen e tij të mprehtë ndihmon Ivanin të gjejë të tjerë Djem të Mirë dhe Vajza të Kuqe. Ujku Gri u thotë këtyre lojtarëve se kush është Ivan-Car dhe gjithashtu i informon për lojtarët e tjerë me rolet e Djemve të Mirë dhe Vajzave të Kuqe. Nëse Ujku zbulon një bandit apo një armik tjetër, ai menjëherë e njofton Ivan-Carin, në mënyrë që ai të marrë masa natën tjetër. Nëse Princit-Leshka i sulmohet nga Princesha-Peshk, ai shndërrohet në një Djalë të Mirë të zakonshëm dhe nuk mund të kontrollojë askënd, ndonëse Princesha nuk do të dijë se në të vërtetë ishte Ujku Gri, pasi ai nuk fle gjatë natës. Megjithatë, Ujku gjatë ditës e mëson se kush është nga lojtarët Princesha-Peshk dhe mund të përpiqet t'i japë të tjerëve, Djemve të Mirë dhe Vajzave të Kuqe, të cilat i ka sjellë Ivan-Car, të votojnë për ekzekutimin e Princeshës-Peshk. Gjithashtu, në natën tjetër, ai mund të përpiqet të tërheqë Princeshën-Peshk në anën e qytetarëve paqësorë, që ajo të mos i prekë asnjë nga ata. Ujku gjatë natës mund të sakrifikohet për të shpëtuar Ivan-Carin apo Vasilisën e Mençur, nëse ai supozon se ata mund të bien nën goditjen e banditëve, ose ndoshta u zëvendësuan nga Koshtej (Ujku ka imunitet të lindur ndaj magjive të Koshteit), por pas sakrificës, Ujku del nga loja.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Vasilisa the Wise

Vasilisa the Wise — luan për qytetarët paqësorë, por ata nuk e dinë këtë, pasi Vasilisa është shumë e përulur. Gjithashtu, Vasilisa e Mençur, kur kurohet, nuk bën pyetje dhe si një doktor i mirë i mjekon të gjithë pa dallim. Por nëse ilaçi i saj pihet nga Koshteji, Liheshi ose Leshi — ata nuk do të jetojnë me më shumë se një ditë, pasi Vasilisa mjekon vetëm njerëzit. Zmeu Gorynych ose Kotu-Bayun nuk do të ndihmohen nga ilaçet e Vasilisës së Mençur, por as dëme nuk do të bëjnë. Gjithashtu, Vasilisa nuk preket në natë nga Kotu-Bayun, pasi ajo nuk shkon për bimë mjekësore në Pyllin e Vdekur. Për më tepër, magjitë femërore të Princeshës-Peshk nuk ndihen te Vasilisa. Nëse pacienti i saj përpiqet të vritet dy herë, mjekësia do të jetë e pafuqishme. Vasilisa nuk do ta shpëtojë as nga sulmet magjike, si nga mallkimi i Liheshit. Gjatë ditës, Vasilisa sillet si Vajza e Kuqe, dhe vetëm një shikim i shpejtë, disi i entriste mund të sugjerojë që ajo është mjeku më i mirë në Mbretërinë e Tretë.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Banditi

Banditët, ndryshe nga të gjitha rolet e mëparshme, njohin njëri-tjetrin, pasi jetojnë në një Loge të përbashkët, si dhe njohin Leshin dhe Babën Yaga, prandaj mund të veprojnë në harmoni që nga hapi i parë. Por vetëm Kryetari i bandës vepron natën dhe nuk voton gjatë ditës, ndërsa banditët e tjerë përpiqen me përkushtim të shfaqin vetveten si Djem të Mirë dhe Vajza të Bukura. Nëse Kryetari largohet nga loja për ndonjë arsye, vendin e tij e merr menjëherë një nga banditët e mbetur. Së pari, banditët përpiqen të eliminojnë Ivan Carin, derisa ky i fundit të ketë grumbulluar mjaft forca nga Djemtë e Mirë dhe Vajzat e Bukura për të filluar një përballje aktive me banditët gjatë ditës.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Lesh

Lesh natën spiunon për banditët, u njofton atyre për rolet e gjetura në Logen e tyre, por gjatë ditës nuk voton, pasi nuk jeton në fshat. Megjithatë, lojtarët e tjerë mund të votojnë për Leshin dhe kështu ta ekzekutojnë atë. Duke qenë se Leshi vjen nga batica, ai nuk mund të jepet pas bukurisë së Princeshës-Frog, dhe nëse përpiqet, Leshi do ta shenjojë shtëpinë e saj, dhe banorët e fshatit do të dinë se kush është ajo në të vërtetë. Leshi nuk duhet të ketë frikë as nga magjitë e Koshteshit, por Vasilisa mund ta shërojë atë deri në vdekje. Nëse Macja-Bajun përpiqet të napë Leshin, ai rrezikon të humbasë thonjtë e tij metalikë, dhe më pas Macja do të duhet të flinte viktimat vetëm me një murmuritje.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Baba Yaga

Baba Yaga punon po ashtu me banditët, natën bën magji: ai mund të dërgojë një sëmundje tek lojtarët e tjerë, ose të mbrojë ndonjë nga aleatët nga sulmi. Magjia e saj është madje më e fuqishme se mallkimi i Zhanit. Gjatë ditës, Baba Yaga është gjithashtu aktive: ata që janë nën mbrojtjen e saj nuk mund të ekzekutohen, përveçse me shumicë votash. Megjithatë, rezervat e rrënjëve magjike për mbrojtjen gjatë ditës janë të kufizuara, kështu që Baba Yaga nuk mund të mbrojë askënd, përfshirë veten, më shumë se tri herë gjatë lojës. Në këtë rast, gjatë ditës Baba Yaga bën si një Vajzë e Bukur normale dhe voton së bashku me të gjithë.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Zhmak-Gorynych

Zhmak-Gorynych fluturon mbi fshatrat, pyjet dhe moçalet gjatë natës dhe merret me grabitje, duke zbuluar rolin e grabitur brenda ditës. Gjatë ditës, Zmei fle, kështu që nuk voton, por mund të ekzekutohet me shumicë votash. Zmei është shumë i rrezikshëm për të gjithë, sidomos për Kryengritësit dhe Ivan Tsareviçin. Zmeiu nuk ia përton askujt për të grabitur, por nëse e zbulojnë Vullkani ose Leshi, ai mund të bëhet një aleat i vlefshëm. Nëse e vret Zmeun gjatë natës, ka mundësi, të marrë një objekt tepër të vlefshëm - Lëkurën e Zmeut, e cila do ta mbrojë mbajtësin e saj një herë nga një sulm fizik.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Lihi Një-Sy

Lihi Një-Sy vret natën të gjithë ata që i dalin përpara, dhe ata që nuk mund t'i vrasë (Leshi, Koti-Bajun, ose Zmei Gorynych) - i mallkon, kështu që çdo kush që përpiqet të flasë me të mallkuarin këtë natë do të vdesë brenda ditës. Vetë i mallkuari gjithashtu vdes, vetëm Koti-Bajun mbetet i gjallë, i cili thjesht shkon të flejë për të fituar forcë, duke humbur raundin e natës tjetër. Një vetëm Baba-Jaga mund ta shpëtojë nga mallkimi. Mallkimi nuk ka efekt as mbi atë që e ka mundur Koti-Bajun: ai, ashtu si Koti, thjesht shkon të flejë me humbjen e raundit.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Princë-It'si

Princë-It'si nuk mund të fitojë në lojë, por mund të fitojë shumë para, duke joshur lojtarët e tjerë gjatë natës. I joshuri humbet raundin. Toad nuk mund të joshë Vasilisën e Mençur, gjithashtu duhet të shmangë Leshin, i cili do ta zbulojë atë të nesërmen. Nëse Ivan Tsareviç ose Kryetari i Kryengritësve gjejnë It'sin, ata mund ta ftojnë atë në anën e qytetarëve të qetë ose të Kryengritësve, në këtë rast Ivan nuk pranon refuzimin e Itës, ndërsa Kryetari është më i lehtë për t'u ballafaquar. Por Princë-It'si është mjaft dinak, mund të bëhet agjent dyfishtë, pasi pavarësisht se në vetmi nuk mund të fitojë - kjo është një mundësi e shkexcellent për të grumbulluar ar, pasi mundësitë për të arritur deri në fund të lojës rriten ndjeshëm! Gjatë ditës, Princë-It'si bën se është Vajza e Kuqe dhe voton me të gjithë së bashku.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
Koschei the Deathless

Koschei the Deathless jeton në kalasën e tij. Natën ai ecën në fshatrat përreth dhe zombifikon Djemtë e Mirë dhe Vajzat e Kuqe, të cilët kalojnë tek ai për shërbim dhe e përmbushin pa diskutim çdo detyrë. Nëse ata refuzojnë të zbatojnë një urdhër, për shembull, të votojnë ndryshe gjatë ditës nga sa është thënë nga Koshteiu, ose të shkruajnë mesazhe gjatë ditës në bisedë, nëse Koshteiu e ka ndaluar këtë, Shërbëtori i Koshteit vdes. Në këtë mënyrë, Koshteiu ka mundësi të ndikojë në rezultatet e votimit gjatë ditës, ndonëse ai vetë nuk voton. Nëse Koshteiu vritet, të gjitha viktimat e tij vdesin gjithashtu. Vasilisa mund ta shërojë Shërbëtorin e Koshteit, i cili më pas kthehet në rolin e tij fillestar. Zmija-Gorynyç dhe Ulli kanë imunitet të lindur ndaj zombifikimit, kështu që Koshteiu nuk ka mundësi t'i kthejë ata në shërbim të tij. Gjithashtu, Ulli mund të shpëtojë Ivanin ose Vasilisën duke sakrifikuar veten. Ata të shpëtuar nga Ulli fitojnë imunitet ndaj zombifikimit.

«Bylinat e Reja». Për dev, ops dhe njerëz kuriozë.
the Cat-Bayun

the Cat-Bayun jeton në pyll, gjuethish gjatë natës. Gjatë ditës fle në gropën e tij, prandaj nuk merr pjesë në votim. Megjithatë, gjatë ditës ai mund të dënohet me shumicë votash. Pusi mund të sulmojë në dy mënyra: duke murrmëruar — dhe atëherë viktima e tij bie në gjumë dhe nuk mund të ecë natën, si dhe të votojë ditën tjetër — ose vret menjëherë me thonj metalikë. Sulmi me thonj nuk funksionon ndaj Zmijës-Gorynyç, dhe, duke sulmuar Leshin, Pusi mund të mbetet pa thonj! Shpirti nuk mund ta mallkoje Pusin, i cili pas mallkimit do të flejë vetëm një natë. Nëse dikush arrin të mposhtë Pusin-Bajun, do të shërohet nga çdo sëmundje dhe të metë, duke përfshirë mallkimin e Shpirtit. Kjo aftësi e Pusit ruhet nga lojtari deri në fund të lojës. Shërbëtarët e Koshteit nuk mund të votojnë për Pusin gjatë ditës, por mund të mësojnë indirekt se kush është Pusi, pa ia thënë këtë Koshteit. Pusi-Bajun nuk bashkëpunon me Ivanin ose Banditët, kështu që ata janë një objektiv i parë për Pusin.

Teknologjitë e përdorura

Për të shkruar një lojë, kam zgjedhur teknologjinë e llogarive pa server (serverless) të bazuar në OpenFaaS, pasi është mjaft e thjeshtë për të organizuar lojën dhe gjithashtu e zhvilluar mjaft për të shkruar rregulla komplekse të lojës pa komplikime të tepërta. Po ashtu, do të përdor një klaster Kubernetes, pasi kjo metodë e vendosjes së aplikacioneve lejon një vendosje të shpejtë dhe të besueshme, si dhe mundësi të lehtë për shkallëzim. Për krijimin e logjikës së lojës, mund të mjaftohem vetëm me OpenFaaS, megjithatë do të përpiqem të bëj një Shkrimtarë në formën e një kontejneri të veçantë për të krahasuar kompleksitetin e zbatimit. Si gjuhën kryesore të programimit për mikroshërbimet dhe funksionet, kam zgjedhur Go, pasi e kam studiuar prej kohësh në kohën time të lirë si zëvendësim për Perl, dhe për ndërveprimin e përdoruesve me mikroshërbimet dhe funksionet do të përdor js në bazë të një framerwork-u të caktuar. Për vendimin përfundimtar do të flas në një artikull përkatës të ciklit. Për komunikimin mes funksioneve kam zgjedhur NATS.io, pasi kam pasur përvojë me të më parë dhe ajo ka një integrim mjaft të lehtë në Kubernetes.

Njoftim

  • Hyrje
  • Instalimi i mjedisit për zhvillim, ndarja e detyrës në funksione
  • Punët mbi backend
  • Punët mbi frontend
  • Konfigurimi i CICD, organizimi i testimit
  • Hapja e një seance provuese të lojës
  • Përfundime

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster