
Për kërkesat e shumta të lexuesve, fillon një cikël i madh artikujsh mbi përdorimin e teknologjisë së llogaritjeve serverless për zhvillimin e aplikacioneve reale. Në këtë cikël do të shqyrtohet zhvillimi i aplikacionit, testimi dhe shpërndarja ndaj përdoruesve të fundmë me ndihmën e mjeteve moderne: arkitekturës mikroshërbimore të aplikacionit (në variantin serverless, mbi bazën e ), grupit për shpërndarjen e aplikacionit, një databazë , e orientuar për grumbullim dhe përdorim në cloud, si dhe një autobus cloud. Aplikacioni zbatohet në lojën 'Bylina', një nga variantet e lojës popullore 'Mafia'.
Çfarë është 'Bylina'?
Është një variant i lojës 'Mafia', gjithashtu e njohur si 'Werewolf'. Bazohet në një lojë ekipore, ku pjesëmarrësit duhet të zbulojnë hap pas hapi se kush është kush dhe të përpiqen të fitonin. Fatkeqësisht, gjatë lojës online humbet një komponent kaq të rëndësishëm si interaksioni personal, dhe rregullat e 'Mafias' klasike janë mjaft të thjeshta, prandaj për një proces lojërash më jo-lineare dhe interesante zakonisht shtohen karaktere të tjera, duke ruajtur përmbajtjen kryesore të 'Mafias' origjinale, siç është ndërrimi i ditës dhe natës, lëvizjet vetëm natën, si dhe aleancat mes pjesëmarrësve. Një ndryshim tjetër të rëndësishëm të lojës online është se udhëheqësi (ai që është Master i lojës, Tregimtari) zakonisht është një program kompjuterik.
Përshkrimi i lojës
Rregullat e lojës që unë dëshiroj të zbatoj janë marrë nga një botë të vjetër IRC, që e kam ruajtur në arkivin tim personal 10 vjet më parë. 'Bylinat' kanë një histori, që fillon çdo lojë:
Në mbretërinë e tretë, në shtetin e tretë, pas shtatë deteve, jetonin disa fshatra, dhe në to Trim i mirë dhe Bukuroshja e kuqe. Ata mbillnin grurë, duke shkuar në pyllin e afërt për kërpudha dhe fruta ... Dhe kështu vazhdoi nga brezi në brez, derisa një katastrofë e tmerrshme shkundi Tokën dhe e keqja filloi të përhapet në botë! Netët u bënë të gjata dhe të ftohta, dhe në errësirë gjarpëroheshin dhe shkonin në fshat krijesa të këqija dhe të tmerrshme. Nga diku erdhi Zmeu i Gorynych dhe filloi të rrëmbejë Bukuroshat e kuqe dhe të marrë çdo gjë të çmuar nga fshatarët. E keqe dhe lakmitare Baba Yaga, duke fluturuar me shtupë nga pylli i largët, ngatërroi mendjen e banorëve, madje disa e lanë zanatin dhe shkuan në pyll për të bërë bandë. Kriminelët takuan Leshin, që mund të shndërrohet në pemë dhe shkurre, ai filloi të vëzhgojë fshatarët e qetë dhe të shërbejë për banditët, duke nuhatur nëse Trim i mirë po planifikonte ndonjë gjë për të shpëtuar vendbanimet e tyre nga e keqja. Trimi i mirë dhe Bukuroshja e kuqe, të lodhur nga sulmet e Banditëve, dhe vdekjet e tmerrshme nga duar e tmershmit Ligësi e Vetme, grumbulluan ar dhe ftuar një luftëtar të njohur nga qyteti fqinj — Ivan Tsarevich, i cili premtoi të shpëtojë fshatin nga banditët. Në një livadh në pyll Ivan shpëtoi nga një vdekje e sigurt Wolf i Grishtë, i kapur në një grackë të Banditëve. Në këmbim, Wolf premtoi të informonte Tsarevichin për çdo krijesë të keqe në pyll. Një e njohur shëruese po kalonte Vasilisa e Mençur, dhe kur pa mjerimin — qëndroi për të ndihmuar banorët e prekur nga sulmet e ligës. Pas pyllit u shfaq një kalë i zi, në të cilin, sipas thashethemeve, ka banuar Koshtey i Pavdekshëm, çdo natë ai i vizitoi fshatrat dhe i magjepset Trimeve të Mirë dhe Bukuroshave të Kuqe, që të mos guxonin të mos i bindeshin urdhrit të tij, të gjithë bënin ashtu siç ai do. Në Pyllin e Pazot, u ndal një Maca-Bajun, dhe çdo kush që e takonte, binte në gjumë të vdekur pas përrallave të tij ose vdiste nga thonjtë e tij të hekurta.

Mbreti i Tretë
Siç shihet, lojtarët ndahen në disa grupe:
- banorëve të qetë (Trimi i Mirë, Bukuroshja e Kuqe, Ivan Tsarevich, Wolf i Grishtë dhe Vasilisa e Mençur)
- banditëve (vetë banditët, si dhe Baba Yaga dhe Leshi)
- të pavarur (Zmeu-Gorynych, Ligësi e Vetme, Princesha-Bullgari, Koshtey i Pavdekshëm, Maca-Bajun)
Qëllimi i lojës, siç u tha më lart, është të mbijetohet dhe të fitohet. Kundërshtarët duhet të largohen nga loja, dhe të pavarur gjithashtu duhet të mbijetojnë deri në fund të lojës. Në lojë ka ar, një monedhë loje e veçantë, të cilën lojtarët e fitojnë vetëm brenda lojës. Fituesit fitojnë ar. Sa më shumë ar, aq më i lartë është renditja e lojtarit.
Do të ndalem pak më në detaje mbi përshkrimin e karaktereve.

Trimi i Mirë

Bukuroshja e Kuqe
Trimi i Mirë dhe Bukuroshja e Kuqe — rolin kryesore dhe më të zakonshme në lojë. Këta janë banorë paqësorë që flenë natën dhe punojnë gjatë ditës. Natën, ata sulmohen nga ndonjë nga grabitësit, Zmei Gorynych dhe role të tjera, ndërsa Vasilysa Premudraja i shëron ata. Me një probabilitet të vogël, një Djalë i Mirë apo një Vajzë e Kuqe mund të mbijetojnë sulmin pa dëmtime (ndoshta duke humbur ari), megjithatë, të gjithë do ta dinë pseudonimin e lojtarit ditën e parë pas sulmit. Natën, këta lojtarë nuk bëjnë 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 me votim se kush prej tyre nuk është Djalë i Mirë ose Vajzë e Kuqe. Lojtari për të cilin voton shumica e lojtarëve largohet nga loja, ndërsa të tjerët fitojnë ose humbasin ari. Nëse lojtarët nuk zgjedhin askënd me shumicë votash, askush nuk do të ekzekutohet.

Ivan-Tsarievich
Ivan-Tsarievich — mbrojtësi anonim fillestar i banorëve paqësorë. Gjatë natës kontrollon rolet e lojtarëve të tjerë, pasi ai njeh vetëm një aleat të tij — Ujku Gri. Me ndërhyrjen e drejtpërdrejtë të Ujkut Gri (i cili gjithashtu mund të kontrollojë rolet e lojtarëve të tjerë), Ivan-Tsarievich, në vend të kontrollit, mund të vrasë një personazh tjetër gjatë natës. Nëse, si rezultat i kontrollit, Ivan-Tsarievich sheh rolin e Djalit të Mirë ose të Vajzës së Kuqe tek një lojtar, ai mund t’i ftojë ata dhe t’i prezantojë me Ujkun Gri dhe Djemtë e Mirë dhe Vajzat e Kuqe të tjera. Ivanin mund ta pengojë Tsarevna-Lagushka, e cila mund ta mashtrojë atë natën, pa e zbuluar rolin e tij për lojtarët e tjerë gjatë ditës. Nëse Ivan e zb发现 Tsarevna-Lagushka, ai mund t’i ofrojë asaj të bashkohet me banorët paqësorë, megjithatë, nëse Tsarevna refuzon, ajo vdes nga dora e Ivanit. Zmei-Gorynych gjithashtu mund të pengojë verifikimet e Ivan-Tsarievich, por, në kundërshtim me Tsarevna-Lagushka, gjatë ditës ai do t’u tregojë lojtarëve të tjerë kush është Ivan-Tsarievich. Gjatë ditës, Ivan-Tsarievich nuk dallohet nga Djemtë e Mirë të tjerë.

Ujku Gri
Ujku Gri — ndihmës i Ivan-Tsarievich, ndihma e tij e mprehtë ndihmon Ivanin të gjejë Djemtë e Mirë dhe Vajzat e Kuqe të tjerë. Ujku Gri u thotë këtyre lojtarëve se kush është Ivan-Tsarievich, si dhe i informon për lojtarët e tjerë me rolet e Djemve të Mirë dhe Vajzave të Kuqe. Nëse Ujku zbulon një grabitës apo një armik tjetër, ai menjëherë ia raporton Ivan-Tsarievich, në mënyrë që ai të marrë masa natën tjetër. Nëse Ujku sulmohet nga Tsarevna-Lagushka, ai shndërrohet në një Djalë të Mirë normal dhe nuk mund të kontrollojë askënd, dhe Tsarevna nuk e di se në të vërtetë ishte Ujku Gri, sepse Ujku natën nuk fle. Megjithatë, Ujku gjatë ditës e di se kush prej lojtarëve është Tsarevna-Lagushka dhe mund të përpiqet të ndikojë Djemtë e Mirë dhe Vajzat e Kuqe, të cilët i ka sjellë tek Ivan-Tsarievich, të votojnë për ekzekutimin e Tsarevna-Lagushka. Gjithashtu, natën tjetër ai mund të përpiqet anonimisht ta bind Tsarevna-Lagushka për t’u bashkuar me banorët paqësorë, në mënyrë që ajo të mos prekë asnjë prej tyre. Ujku natën mund të sakrifikojë veten për të shpëtuar Ivan-Tsarievich ose Vasilysa Premudraja, nëse ai mendon se ata do të përballen me sulmin e grabitësve, ose janë zombizuar nga Koshchey (Ujku ka një imunitet të lindur ndaj magjive të Koshchey), por pas sakrifikimit Ujku largohet nga loja.

Vasilisa e Mençur
Vasilisa e Mençur — luan për banorët paqësorë, por ata nuk e dinë këtë, pasi Vasilysa është shumë e turpshme. Gjithashtu, Vasilysa Premudraja, kur shëron, nuk bën pyetje dhe si një doktor i mirë shëron të gjithë. Por nëse ilaçi i saj pihet nga Koshchey, Lihot ose Leshiy — ata nuk do të jetojnë më shumë se një ditë, sepse Vasilysa shëron vetëm njerëzit. Zmei Gorynych ose Kot-Bayun nuk do të ndihmohen nga ilaçet e Vasilysa Premudraja, por nuk do të dëmtohen as. Gjithashtu, Vasilysa gjatë natës nuk preket nga Kot-Bayun, sepse ajo nuk shkon për bimë shëruese në Pyllin e Pa Jetë. Për më tepër, magjitë femërore të Tsarevna-Lagushka nuk i veprojnë Vasilysa. Nëse pacienti i saj përpiqet të vritet dy herë, medicina do të jetë e pafuqishme. Vasilysa nuk do të shpëtojë as nga sulmet magjike, për shembull nga mallkimi i Lihot. Gjatë ditës, Vasilysa sillet si Vajza e Kuqe, dhe vetëm një shikim i kalimtë, disi i trishtuar mund të japë ndonjëherë sinjal se ajo është shëruesja më e mirë në mbretërinë Të Tretë.

Grabitesi
Grabitësit, ndryshe nga të gjitha rolet e tjera, ata e njohin njëri-tjetrin, pasi jetojnë në të njëjtin Llogar, si dhe e njohin Leshin dhe Babë-Jagën, ndaj mund të veprojnë në mënyrë të koordinuar qysh në lëvizjen e parë. Por vetëm Kryetari i bandës kryen veprime në natë dhe nuk voton gjatë ditës, ndërsa të tjerët Banditë përpiqen me zell të sillen si Djem të Mirë dhe Vajza të Bukura. Nëse Kryetari largohet nga loja për një arsye të caktuar, vendin e tij e zë menjëherë një nga Banditët e mbetur. Në radhë të parë, Banditët përpiqen të neutralizojnë Ivan Carin, derisa ai të mbledhë forcën e duhur nga Djemtë e Mirë dhe Vajzat e Bukura për t'u përballur aktivisht me Banditët gjatë ditës.

Lesh
Lesh spiunon për Banditët gjatë natës, duke i njoftuar ata për rolet e gjetura në Logarinë 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 dënojnë atë. Duke qenë se Leshi është origjinë nga baltat, ai nuk mund të joshë nga Princesha-Rrogë, dhe nëse përpiqet, Leshi do ta shënojë 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ë nga magjitë e Koshçeit, por Vasilisa mund ta shërojë deri në vdekje. Nëse Macja-Bajun përpiqet t'i sulmojë, ai rrezikon të humbasë thonjtë e tij prej hekuri, dhe pastaj Macja do të duhet të përgjumë viktimat vetëm me një murmuritje.

Baba Yaga
Baba Yaga po ashtu punon me Banditët, duke magjepsur natën: mund të dërgojë sëmundje tek lojtarët e tjerë ose të mbrojë ndonjë nga aleatët nga sulmi. Magjia e saj është madje më e fortë se një mallkim i Lihës. Gjatë ditës, Baba-Jaga është gjithashtu aktive: ata që ajo mbron nuk mund të ekzekutohen, edhe me shumicë votash. Megjithatë, sasia e rrënjëve magjike për mbrojtje gjatë ditës është e kufizuar, kështu që Baba-Jaga nuk mund të mbrojë askënd, përfshirë veten, më shumë se tre herë gjatë lojës. Në këtë rast, gjatë ditës, Baba-Jaga sërish sillej si një Vajzë e Bukur dhe votonte me të gjithë së bashku.

Zmej-Gorinyç
Zmej-Gorinyç fluturon mbi fshatra, pyje dhe baltë gjatë natës dhe angazhohet në grabitje, duke zbuluar rolin e të grabiturit gjatë ditës. Gjatë ditës, Zmeji fle, prandaj nuk voton, por mund të ekzekutohet me shumicë votash. Zmeji është shumë i rrezikshëm për të gjithë, veçanërisht për Banditët dhe Ivan Carin. Zmeji nuk e ka rëndësi se kë po grabit, por nëse e zbulojnë Wilku ose Leshi, ai mund të bëhet një aleat i çmuar. Nëse Zmeji vritet gjatë natës, me disa mundësi, mund të merrni një send shumë të çmuar – Lëkurën e Zmejit, e cila do ta mbrojë mbajtësin e saj një herë nga sulmi fizik.

Liho Një-Sytë
Liho Një-Sytë vret të gjithë ata që i bien në rrugë gjatë natës, dhe ata që nuk mund të vrasë (Leshin, Macën-Bajun, ose Zmejin-Gorinyç) - i mallkon, kështu që çdo kush që përpiqet të bisedojë me të mallkuarin atë natë, do të vdesë brenda ditës. I mallkuari gjithashtu vdes, përveç Macës-Bajun, i cili vetëm shkon për të fjetur, për t'u mbushur me fuqi, duke humbur lëvizjen e natës tjetër. Vetëm Baba-Jaga mund ta shpëtojë nga mallkimi i Lihës. Mallkimi nuk zbatohet as për atë që e fitoi Macën-Bajun: ai, ashtu si Maca, vetëm shkon për të fjetur duke humbur lëvizjen.

Princesha- Rrogë
Princesha- Rrogë nuk mund të fitojë në lojë, por mund të fitojë shumë para, duke joshur lojtarë të tjerë gjatë natës. Ai i joshur humb lëvizjen. Rrogës nuk mund të joshë Vasilisa të Mençur, gjithashtu ajo duhet të shmangë Leshin, i cili do ta tregojë për të gjithë ditën tjetër. Nëse Ivan Carin ose Kryetari i Banditëve e gjejnë Rrogën, ata mund ta ftojnë atë në anën e qytetarëve të qetë ose Banditëve, me kusht që Ivan nuk pranon refuzimin e Rrogës, ndërsa Kryetari nuk është kaq i kërkuar. Por Princesha është mjaft e zgjuar, mund të bëhet një agjent i dyfishtë, sepse pavarësisht nga fakti se ajo në vetmi nuk mund të fitojë – është një mundësi e shkëlqyer për të fituar ar, sepse shanset për të arritur deri në fund të lojës rriten ndjeshëm! Gjatë ditës, Princesha-Rrogë sillen si Vajza e Bukur dhe votojnë me të gjithë së bashku.

Koshtey i Pavdekshëm
Koshtey i Pavdekshëm jeton ne në kalë. Në natë, ai shkon në fshatrat përreth dhe zombon Djemtë e Mirë dhe Vajzat e Kuqe, që kalojnë në shërbimin e tij dhe përmbushin pa kusht të gjitha urdhrat. Nëse refuzojnë të plotësojnë urdhra, për shembull, të votojnë gjatë ditës ndryshe nga si është thënë nga Koshte, ose të shkruajnë mesazhe gjatë ditës në bisedë, përderisa Koshte e ndalon këtë, Shërbetori i Koshte do të vdesë. Kështu, Koshte është në gjendje të ndikojë në rezultatet e votimit gjatë ditës, pavarësisht se vetë nuk voton. Nëse Koshte vritet, të gjitha viktimat e tij gjithashtu vdesin. Vasilisa mund ta shërojë Shërbehtorin e Koshte, i cili pastaj kthehet në rolin e tij origjinal. Zmej-Gorynych dhe Wolk kanë një imunitet të lindur ndaj zombimit, kështu që Koshte, pavarësisht dëshirës, nuk mund t'i kthejë ata në shërbimin e tij. Gjithashtu, Wolk mund t'i tregojë ndihmë Ivanit ose Vasilisës, duke sakrifikuar veten. Ata që shpëtohen nga Wolk fitojnë imunitet ndaj zombimit.

Maca-Bajun
Maca-Bajun jeton në pyll dhe në natë gjuetinë. Gjatë ditës fle në strofullin e tij, prandaj nuk merr pjesë në votim. Sidoqoftë, gjatë ditës mund të ekzekutohet me shumicën e votave. Kat mund të sulmojë në dy mënyra: duke murrmëlitur — dhe në atë rast viktima e tij bie në gjumë dhe nuk mund të ecë gjatë natës, as të votojë ditën tjetër — ose duke vrarë menjëherë me thonjtë e tij të hekurit. Sulmi me thonjtë nuk funksionon ndaj Zmej-Gorynych, dhe duke sulmuar Leshin, Kat mund të mbetet pa thonj! Licha nuk mund ta mallkojë Katin, i cili pas mallkimit do të flejë vetëm një natë. Nëse ndokush arrin të mundë Kat-Bayun, mund të shërohet nga çdo sëmundje dhe sëmundje, përfshirë mallkimin e Lichës. Kjo aftësi e Katit ruhet nga lojtarët deri në fund të lojës. Shërbëtorët e Koshte nuk mund të votojnë për Katin gjatë ditës, por mund të zbulojnë indirekt se kush është Kati, pa e informuar Koshte. Kat-Bayun nuk bashkohet në aleanca me Ivanin ose Banditët, prandaj ata janë për Katin — objektivi kryesor.
Teknologjitë e Përdorura
Për të shkruar lojën, zgjodha teknologjinë e llogaritjeve pa server (serverless) në bazë të OpenFaaS, sepse është mjaft e thjeshtë për të organizuar lojën dhe po ashtu mjaft e zhvilluar për të shkruar rregulla të ndërlikuara të lojës pa komplikime të tepërta. Po ashtu, do të përdor një klaster Kubernetes, pasi kjo mënyrë e shpërndarjes së aplikacioneve lejon një shpërndarje të shpejtë dhe të besueshme, si dhe mundësi të thjesht për të zgjeruar. Për krijimin e logjikës së lojës, mund të mjaftohem vetëm me OpenFaaS, megjithatë do të provoj të bëj një Tregtar si një kontejner të veçantë, për të krahasuar ndërlikueshmërinë e implementimit. Si gjuhë kryesore programimi për mikro-shërbimet dhe funksionet zgjodha , pasi e studioj që një kohë të gjatë në kohën time të lirë si zëvendësim për Perl, dhe për ndërveprimin e përdoruesve me mikro-shërbimet dhe funksionet do të përdorej js në bazë të një frame të caktuar. Do të flas për vendimin përfundimtar në një artikull përkatës të ciklit. Për komunikimin midis funksioneve zgjodha NATS.io, pasi kam pasur përvojë me të më parë, dhe ka një integrim mjaft të lehtë në Kubernetes.
Ankandi
- Hyrje
- Vendosja e ambientit për zhvillim, ndarja e detyrës në funksione
- Puna mbi backend
- Puna mbi frontend
- Konfigurimi i CICD, organizimi i testimit
- Nisja e një seance provuese të lojës
- Përfundimet
Burimi: habr.com
