„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi

W związku z licznymi prośbami czytelników rozpoczyna się duża seria artykułów na temat wykorzystania technologii przetwarzania bezserwerowego do opracowania prawdziwej aplikacji. Cykl ten obejmie rozwój, testowanie i dostarczanie aplikacji do użytkowników końcowych przy wykorzystaniu nowoczesnych narzędzi: architektury aplikacji mikroserwisowej (w wersji bezserwerowej, opartej na OpenFaaS), klaster Kubernetes do wdrożenia aplikacji, bazy danych MongoDB, skupiający się na klastrowaniu i aplikacjach w chmurze, a także na magistrali w chmurze NATS. Aplikacja implementuje grę „Epics”, jeden z wariantów popularnej gry towarzyskiej „Mafia”.

Co to są „Byliny”?

Jest to odmiana gry „Mafia”, znanej również jako „Wilkołak”. Polega ona na grze zespołowej, w której uczestnicy krok po kroku muszą dowiedzieć się, kto jest kim i spróbować wygrać. Niestety podczas gry online znika tak ważny element gry, jak interakcja osobista, a zasady klasycznej „Mafii” są dość proste, dlatego w celu uzyskania bardziej nieliniowej i interesującej rozgrywki zwykle dodawane są inne postacie, ale ogólnie rzecz biorąc, zachowane zostały główne cechy oryginalnej „Mafii”, na przykład zmiana dnia i nocy, poruszanie się tylko w nocy, a także sojusze między uczestnikami. Kolejną ważną różnicą pomiędzy grą online jest to, że hostem (znanym również jako Mistrz Gry, Narrator) jest zazwyczaj program komputerowy.

Opis gry

Zasady gry, które chcę zaimplementować, pochodzą ze starego bota IRC, który zapisałem w moim osobistym archiwum około 10 lat temu. „Eposy” mają historię, od której zaczyna się każda gra:

W odległym królestwie, w trzydziestym stanie, za siedmioma morzami, żyło i żyło kilka wiosek, a w nich Dobrzy koledzy и Piękne dziewczyny. Siali chleb i chodzili do okolicznych lasów na grzyby i jagody... I trwało to od stulecia do stulecia, aż do chwili, gdy Ziemią wstrząsnęła straszliwa katastrofa i po całym świecie zaczęło rozprzestrzeniać się zło! Noce stały się długie i zimne, a w ciemności niemiłe i straszne stworzenia grasowały po lesie i zawędrowały do ​​wioski. Przybył skądś smok i nabrałem zwyczaju kraść Czerwone dziewice i zabierać wieśniakom wszystko, co cenne. Szkodliwy i chciwy Baba Jaga, który przyleciał na moździerzu z odległych lasów, zamącił umysły mieszkańców, a nawet niektórzy porzucili swoje rzemiosło i udali się do lasu, aby rabować, tworząc tam gang. Spotkali się złoczyńcy Chochlik, który wiedział, jak zamienić się w drzewa i krzaki, zaczął monitorować spokojnych mieszkańców wioski i służyć rabusiom, węsząc, czy Dobrzy Bracia knują coś, aby uwolnić swoje osady od złych duchów. Dobrzy towarzysze i piękne panny, zmęczeni najazdami zbójców i straszliwą śmiercią z rąk straszliwych Dzielny Jednooki, zebrał złoto i zaprosił słynnego zapaśnika z sąsiedniego miasta - Iwan Carewicz, który obiecał uwolnić wioskę od rabusiów. Na polanie w lesie Iwan uratował się od pewnej śmierci Szary Wilk, który wpadł w pułapkę Zbójców. W zamian Wilk obiecał poinformować carewicza o różnych leśnych złych duchach. Przechodził obok nas słynny uzdrowiciel Wasylisa Mądra, a kiedy zobaczyła kłopoty, została, aby pielęgnować mieszkańców, którzy ucierpieli od ataków zuchwałych. Za lasem ukazał się czarny pałac, w którym według plotek się osiedlił Kościej Nieśmiertelny, co noc odwiedzał wioski i czarował Dobrodziejów i Czerwone Panny, aby nie odważyły ​​się sprzeciwić jego rozkazom, zrobiły wszystko, co powiedział. I osiadł w Lesie Martwym Kot Baiyun, a każdy, kto go spotkał, zasypiał po jego opowieściach lub umierał od jego żelaznych szponów.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Daleko odległe królestwo

Jak już widać, gracze podzieleni są na kilka grup:

  • cywile (Dobrzy ludzie, Czerwone Panny, Iwan Carewicz, Szary Wilk i Wasylisa Mądra)
  • rabusie (sami rabusie, a także Baba Jaga i Leshy)
  • niezależny (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Kościej Nieśmiertelny, Cat-Bayun)

Celem gry, jak wspomniano powyżej, jest utrzymanie się przy życiu i zwycięstwo. Przeciwnicy muszą w ten czy inny sposób opuścić grę, a niezależni również muszą pozostać przy życiu do końca gry. W grze występuje złoto, rodzaj waluty, którą gracze zarabiają wyłącznie w grze. Zwycięzcy otrzymują złoto. Im więcej złota, tym wyższa ocena gracza.

Zatrzymam się nieco bardziej szczegółowo na opisie postaci.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Dobry człowiek

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Czerwona Dziewica

Dobry człowiek и Czerwona Dziewica - najbardziej rozpowszechniona i główna rola w grze. Są to cywile, którzy śpią w nocy i pracują w ciągu dnia. W nocy zostają zaatakowani przez jednego ze złodziei, Węża Gorynycha i innych ról, a Wasylisa Mądra ich leczy. Z pewnym małym prawdopodobieństwem Dobry Człowiek lub Czerwona Dziewica mogą przetrwać atak bez obrażeń (ewentualnie tracąc przy tym złoto), jednak każdy rozpozna pseudonim gracza następnego dnia po ataku. W nocy ci gracze nie wykonują żadnych ruchów, ale analizują sytuację w grze na podstawie wiadomości na czacie gry. W ciągu dnia ci gracze decydują, głosując, który z nich nie jest Dobrym Człowiekiem, a Czerwoną Dziewicą. Gracz, na którego głosowała większość pozostałych graczy, opuszcza grę, pozostali gracze otrzymują lub tracą złoto. Jeżeli gracze nie wybiorą nikogo większością głosów, żaden z graczy nie zostanie stracony.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Iwan Carewicz

Iwan Carewicz - początkowo anonimowy obrońca ludności cywilnej. W nocy sprawdza role innych graczy, gdyż zna tylko jednego ze swoich sprzymierzeńców – Szarego Wilka. Przy bezpośrednim udziale Szarego Wilka (który może także sprawdzać role innych graczy) Iwan Carewicz zamiast sprawdzać, może w nocy zabić inną postać. Jeśli w wyniku testu Iwan Carewicz dostrzeże u gracza rolę Dobrego Człowieka lub Czerwonej Panny, może zaprosić ich do siebie i przedstawić Szaremu Wilkowi oraz innym Dobrym Członkom i Czerwonym Pannom. Ivanowi może przeszkadzać Żaba Księżniczka, która w nocy może go uwieść, nie ujawniając przy tym swojej roli innym graczom w ciągu dnia. Jeśli Iwan sam odkryje Żabią Księżniczkę, będzie mógł zaprosić ją do cywilów, ale jeśli Księżniczka odmówi, zginie z rąk Iwana. Wąż-Gorynych może również ingerować w czeki Iwana-Carewicza, ale w przeciwieństwie do Żaby Księżniczki, w ciągu dnia powie innym graczom, który z nich jest Iwanem-Carewiczem. W ciągu dnia Iwan Carewicz nie różni się niczym od innych Dobrzy Ludzie.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Szary Wilk

Szary Wilk - asystent Iwana Carewicza, którego wyostrzony węch pomaga Iwanowi w odnajdywaniu innych Dobrych Towarzyszy i Czerwonych Dziewic. Szary Wilk mówi tym graczom, kim jest Iwan Carewicz, a także informuje o innych graczach pełniących role Dobrych Towarzyszy i Czerwonych Dziewic. Jeśli Wilk odkryje rabusia lub innego wroga, natychmiast informuje o tym Iwana Carewicza, aby mógł podjąć działania następnej nocy. Jeśli Wilk zostanie zaatakowany przez Żabią Księżniczkę, zamieni się w zwykłego Dobrego Człowieka i nie będzie mógł nikogo sprawdzić, a Księżniczka nie będzie wiedziała, że ​​to rzeczywiście Szary Wilk, gdyż Wilk nie śpi w nocy. Jednak sam Wilk w ciągu dnia dowie się, który z graczy jest Żabią Księżniczką i może spróbować przekonać resztę Dobrodziejów i Czerwonych Dziewic, które przyprowadził do Iwana Carewicza, aby głosowali za egzekucją Żaby Księżniczka. Również następnej nocy może spróbować anonimowo przekonać Żabię Księżniczkę, aby przeszła na stronę cywilów, aby nie dotykała żadnego z nich. Wilk może poświęcić się w nocy, aby ocalić Iwana Carewicza lub Wasylisę Mądrego, jeśli założy, że nagle wpadną oni w atak rabusiów lub zostaną zombie przez Koszczeja (Wilk ma wrodzoną odporność na uroki Koszczeja), ale po samopoświęcenie Wilk wypada z gry.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Wasylisa Mądra

Wasylisa Mądra - gra dla cywilów, ale oni o niej nie wiedzą, ponieważ Wasylisa jest bardzo skromna. Również Wasylisa Mądra, kiedy leczy, nie zadaje pytań i jak dobry lekarz leczy wszystkich. Ale jeśli Koschey, Licho lub Leshy wypiją jej lekarstwo, nie pożyją dłużej niż jeden dzień, ponieważ Vasilisa leczy tylko ludzi. Lekarstwo Vasilisy Mądrego również nie pomoże wężowi Gorynychowi ani Cat-Bayunowi, ale też nie wyrządzą krzywdy. Ponadto Kot-Bayun nie dotyka Vasilisy w nocy, ponieważ Vasilisa nie udaje się do Lasu Bez Życia, aby kupić zioła lecznicze. Ponadto kobiece wdzięki Żabiej Księżniczki nie działają na Vasilisę. Gdyby dwukrotnie próbowali zabić jej pacjentkę, medycyna byłaby bezsilna. Vasilisa nie uratuje Cię przed magicznymi atakami, np. przed klątwą Dashing. W ciągu dnia Vasilisa zachowuje się jak Czerwona Dziewica i jedynie przelotne, nieco smutne spojrzenie może sugerować, że jest najlepszą uzdrowicielką w Dalekim Królestwie.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Łobuz

Rabusie, w przeciwieństwie do wszystkich poprzednich ról, znają się, ponieważ mieszkają w tym samym Legowisku, a także znają Leshy'ego i Babę Jagę, dzięki czemu mogą działać zgodnie od pierwszego ruchu. Ale tylko Przywódca gangu wykonuje akcje w nocy i nie głosuje w ciągu dnia, podczas gdy reszta Zbójców pilnie udaje Dobrych Chłopców i Czerwone Panny. Jeśli Lider z jakiegokolwiek powodu opuści grę, jeden z pozostałych Łotrzyków natychmiast zajmuje jego miejsce. Przede wszystkim Zbójcy próbują obezwładnić Iwana Carewicza, dopóki nie zgromadzi on wystarczających sił z Dobrodziejów i Czerwonych Dziewic, aby aktywnie stawić czoła Zbójcom w ciągu dnia.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Goblin

Goblin nocą szpieguje Zbójców, informując ich o rolach, jakie pełni w ich Legowisku, natomiast w ciągu dnia nie głosuje, gdyż nie mieszka we wsi. Jednakże inni gracze mogą głosować na Leshy'ego i tym samym go zabić. Ponieważ Leshy pochodzi z bagien, Żaba Księżniczka nie może go uwieść, a jeśli spróbuje, Leshy oznaczy jej dom, a mieszkańcy wioski dowiedzą się, kim naprawdę jest. Leshem nie powinien bać się zaklęcia Koshchei, ale Vasilisa może go wyleczyć na śmierć. Jeśli Kot-Bayun spróbuje zaatakować Leshy'ego, ryzykuje utratę żelaznych pazurów, a wtedy Kot będzie musiał uśpić ofiary samym mruczeniem.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Baba Jaga

Baba Jaga Współpracuje także ze Zbójcami i rzuca zaklęcia w nocy: może wysłać chorobę na innych graczy lub ochronić jednego ze swoich sojuszników przed atakiem. Jej czary są jeszcze silniejsze niż klątwa Likha. W ciągu dnia Baba Jaga jest również aktywna: nikt znajdujący się pod jej opieką nie może zostać stracony nawet większością głosów. Jednak podaż magicznych korzeni do ochrony w ciągu dnia jest ograniczona, więc Baba Jaga nie może chronić nikogo, w tym siebie, więcej niż trzy razy na grę. W ciągu dnia Baba Jaga udaje zwyczajną Czerwoną Dziewicę i głosuje tak jak wszyscy.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
smok

smok nocą przelatuje nad wioskami, lasami i bagnami, dokonując rabunków, za dnia odkrywając rolę okradzionych. W ciągu dnia Wąż śpi, więc nie głosuje, ale może zostać stracony większością głosów. Wąż jest bardzo niebezpieczny dla wszystkich, zwłaszcza dla Zbójców i Iwana Carewicza. Wąż jest obojętny, kogo okrada, ale jeśli zostanie odkryty przez Wilka lub Leshy'ego, może stać się cennym sojusznikiem. Jeśli zabijesz Węża w nocy, z pewnym prawdopodobieństwem możesz otrzymać bardzo cenny przedmiot - Skórę Węża, która jednorazowo ochroni swojego właściciela przed atakiem fizycznym.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
słynny jednooki

słynny jednooki w nocy zabija każdego, kto stanie mu na drodze, a kogo nie może zabić (Leshy, Kota-Bayun lub Wąż Gorynych), przeklina, tak że każdy, kto tej samej nocy spróbuje porozumieć się z potępionym, umrze w ciągu dnia . W tym przypadku sam przeklęty również umiera, tylko Kot-Bayun nie umiera, który po prostu kładzie się spać, aby nabrać sił, pomijając swoją kolej następnej nocy. Tylko Baba Jaga może uratować Likha przed klątwą. Klątwa nie wpływa na tego, który pokonał Cat-Bayuna: on, podobnie jak Kot, po prostu idzie spać i pomija turę.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Księżniczka Żaba

Księżniczka Żaba nie może wygrać gry, ale może zarobić dużo pieniędzy, uwodząc innych graczy nocą. Kuszony przegapia swoją kolej. Żaba nie może uwieść Wasylisy Mądrej, powinna też unikać Leszy, która następnego dnia zdradzi ją wszystkim. Jeśli Iwan Carewicz lub Przywódca Zbójców znajdzie Żabę, może zaprosić na swoją stronę ludność cywilną lub Zbójców, podczas gdy Iwan nie zaakceptuje odmowy Żaby, ale Przywódca nie jest tak wybredny. Ale Księżniczka jest dość przebiegła, może zostać podwójnym agentem, ponieważ pomimo tego, że sama nie może wygrać, jest to doskonała szansa na zdobycie złota, ponieważ szanse na przetrwanie do końca gry znacznie wzrastają! W ciągu dnia Żaba Księżniczka udaje Czerwoną Dziewicę i głosuje razem ze wszystkimi.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Kościej Nieśmiertelny

Kościej Nieśmiertelny mieszka w swoim zamku. Nocą przechadza się po okolicznych wioskach i zombi Dobrodziejów i Czerwone Panny, które przychodzą na jego usługi i bezkrytycznie wykonują wszystkie rozkazy. Odmawiając wykonania polecenia, na przykład głosowania w ciągu dnia inaczej niż powiedział Koszczej lub pisania wiadomości na czacie w ciągu dnia, jeśli Koszczej tego zabroni, Sługa Koszczeja umiera. Tym samym Kościej może wpływać na wyniki głosowania w ciągu dnia, mimo że sam nie głosuje. Jeśli Koshchei zostanie zabity, wszystkie jego ofiary również umrą. Vasilisa może wyleczyć Sługę Koshchei, który następnie powraca do swojej pierwotnej roli. Wąż-Gorynych i Wilk mają wrodzoną odporność na zombie, więc Kościej, bez względu na to, jak bardzo chce, nie może ich zamienić na swoją służbę. Wilk może również pomóc Iwanowi lub Wasilisie w wyjściu z kłopotów, poświęcając się. Ocalony przez Wilka zyskuje odporność Wilka na zombie.

„Nowe eposy”. Dla programistów, operatorów i ciekawskich ludzi
Kot Baiyun

Kot Baiyun mieszka w lesie, poluje w nocy. W ciągu dnia śpi w swojej dziupli, więc nie uczestniczy w głosowaniu. Jednak w ciągu dnia może zostać stracony większością głosów. Kot może zaatakować na dwa sposoby: mruczeć – po czym jego ofiara zasypia i w nocy nie może chodzić, a następnego dnia nie może głosować – lub od razu zabić żelaznymi pazurami. Atak pazurami nie działa na Węża-Gorynych, a po zaatakowaniu Leshy'ego, Kot może w ogóle pozostać bez pazurów! Dashing nie może przekląć Kota, który po klątwie po prostu prześpi jedną noc. Jeśli komukolwiek uda się pokonać Kota-Bayuna, zostanie wyleczony z każdej choroby lub choroby, w tym z klątwy Likh. Zdolność Kota pozostaje z graczem do końca gry. Słudzy Koszczeja nie mogą głosować na Kota w ciągu dnia, ale mogą pośrednio dowiedzieć się, kim jest Kot, nie informując o tym Koszczeja. Kot-Bayun nie wchodzi w sojusze z Ivanem ani Zbójcami, więc są oni głównym celem Kota.

Zastosowane technologie

Do napisania gry wybrałem technologię obliczeniową bezserwerową opartą na OpenFaaS, ponieważ jest ona na tyle prosta w organizacji gry, a jednocześnie na tyle zaawansowana, że ​​pozwala na pisanie skomplikowanych zasad gry bez zbędnych komplikacji. Wykorzystam także klaster Kubernetes, ponieważ dzięki tej metodzie wdrażania aplikacji można uzyskać dość proste i niezawodne szybkie wdrożenie oraz możliwość łatwego skalowania. Aby stworzyć logikę gry, poradzisz sobie tylko z OpenFaaS, ale spróbuję też stworzyć Storytellera jako osobny kontener, aby porównać złożoność implementacji. Jako główny język programowania mikroserwisów i funkcji wybrałem Go, ponieważ studiuję go od dłuższego czasu w wolnym czasie, aby zastąpić Perla, a js będzie używany w oparciu o pewien framework interakcji użytkownika z mikrousługami i funkcjami. O ostatecznej decyzji poinformuję w odpowiednim artykule z tej serii. Do wzajemnej komunikacji funkcji wybrałem NATS.io, ponieważ spotkałem się już z nim wcześniej i ma dość łatwą integrację z Kubernetesem.

Zapowiedź

  • Wprowadzenie
  • Konfiguracja środowiska programistycznego, podział zadania na funkcje
  • Praca backendowa
  • Praca frontendowa
  • Konfigurowanie CICD, organizacja testów
  • Rozpocznij próbną sesję gry
  • Wyniki

Źródło: www.habr.com

Dodaj komentarz