„Neue Epen“. Für Entwickler, Ops und Neugierige

„Neue Epen“. Für Entwickler, Ops und Neugierige

Aufgrund zahlreicher Leseranfragen startet eine große Artikelserie zum Einsatz der Serverless-Computing-Technologie zur Entwicklung einer realen Anwendung. Dieser Zyklus umfasst die Anwendungsentwicklung, das Testen und die Bereitstellung für Endbenutzer mithilfe moderner Tools: Microservice-Anwendungsarchitektur (in einer serverlosen Version, basierend auf OpenFaaS), Cluster Kubernetes für Anwendungsbereitstellung, Datenbank MongoDB, mit Schwerpunkt auf Cloud-Clustering und -Anwendungen sowie Cloud-Bus NATS. Die Anwendung implementiert das Spiel „Epics“, eine der Varianten des beliebten Gesellschaftsspiels „Mafia“.

Was sind „Epen“?

Dabei handelt es sich um eine Variante des Spiels „Mafia“, auch bekannt als „Werwolf“. Es basiert auf einem Teamspiel, bei dem die Teilnehmer Schritt für Schritt lernen müssen, wer wer ist, und versuchen müssen, zu gewinnen. Leider verschwindet beim Online-Spielen eine so wichtige Komponente des Spiels wie die persönliche Interaktion, und die Regeln der klassischen „Mafia“ sind recht einfach, daher werden für ein nichtlineareres und interessanteres Gameplay normalerweise andere Charaktere hinzugefügt, aber Im Allgemeinen bleiben die Hauptmerkmale der ursprünglichen „Mafia“ erhalten, beispielsweise der Wechsel von Tag und Nacht, Bewegungen nur nachts sowie Allianzen zwischen Teilnehmern. Ein weiterer wichtiger Unterschied zum Online-Spielen besteht darin, dass der Host (auch bekannt als Game Master, Storyteller) normalerweise ein Computerprogramm ist.

Beschreibung des Spiels

Die Spielregeln, die ich umsetzen möchte, stammen von einem alten IRC-Bot, den ich vor etwa 10 Jahren in meinem persönlichen Archiv gespeichert habe. „Epics“ haben eine Hintergrundgeschichte, mit der jedes Spiel beginnt:

Im fernen Königreich, im dreißigsten Staat, jenseits der sieben Meere, lebten und lebten mehrere Dörfer und in ihnen Gute Leute и Schöne Mädchen. Sie säten Brot und gingen in die umliegenden Wälder, um Pilze und Beeren zu sammeln ... Und das ging Jahrhundert für Jahrhundert so weiter, bis eine schreckliche Katastrophe die Erde erschütterte und das Böse begann, sich auf der ganzen Welt auszubreiten! Die Nächte wurden lang und kalt, und in der Dunkelheit streiften unfreundliche und schreckliche Kreaturen durch den Wald und wanderten in das Dorf. Von irgendwo angekommen Schlange Gorynych und gewöhnte sich an, rote Mädchen zu stehlen und den Dorfbewohnern alles Wertvolle wegzunehmen. Schädlich und gierig Baba Yaga, die mit einem Mörser aus fernen Wäldern flog, verwirrte die Gedanken der Bewohner, und sogar einige gaben ihr Handwerk auf und gingen in den Wald, um zu rauben, und bildeten dort eine Bande. Die Schurken trafen sich Kobold, der wusste, wie man sich in Bäume und Büsche verwandelt, begann er, friedliche Dorfbewohner zu überwachen und den Räubern zu dienen, um herauszufinden, ob die Guten Gefährten etwas vorhatten, um ihre Siedlungen von bösen Geistern zu befreien. Gute Kerle und schöne Mädchen, müde von den Raubzügen der Räuber und den schrecklichen Todesfällen durch die Hände der Schrecklichen Schneidiger Einäugiger, sammelte Gold und lud einen berühmten Wrestler aus einer Nachbarstadt ein - Iwan Zarewitsch, der versprach, das Dorf von Räubern zu befreien. Auf einer Lichtung im Wald rettete Ivan ihn vor dem sicheren Tod Grauer Wolf, der in die Grubenfalle der Räuber tappte. Im Gegenzug versprach der Wolf, den Zarewitsch über verschiedene böse Geister im Wald zu informieren. Ein berühmter Heiler kam vorbei Vasilisa die Weise, und als sie Schwierigkeiten sah, blieb sie, um die Bewohner zu pflegen, die unter den Angriffen der Schneidigen gelitten hatten. Hinter dem Wald erschien ein schwarzer Palast, in dem er sich Gerüchten zufolge niederließ Koschei der Unsterbliche, jede Nacht besuchte er die Dörfer und verzauberte die Guten Gefährten und Roten Jungfrauen, damit sie es nicht wagten, seinen Befehlen nicht zu gehorchen, sie würden alles tun, was er sagte. Und ließ sich im leblosen Wald nieder Katze Baiyun, und jeder, der ihn traf, schlief nach seinen Geschichten ein oder starb an seinen eisernen Krallen.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Weit weit entferntes Königreich

Wie Sie bereits sehen können, werden die Spieler in mehrere Gruppen eingeteilt:

  • Zivilisten (Gute Gefährten, Rote Jungfrauen, Iwan Zarewitsch, Grauer Wolf und Wassilisa die Weise)
  • Räuber (die Räuber selbst sowie Baba Yaga und Leshy)
  • unabhängig (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

Das Ziel des Spiels besteht, wie oben erwähnt, darin, am Leben zu bleiben und zu gewinnen. Gegner müssen das Spiel auf die eine oder andere Weise verlassen, und auch Unabhängige müssen bis zum Ende des Spiels am Leben bleiben. Das Spiel verfügt über Gold, eine Art Spielwährung, die Spieler nur innerhalb des Spiels verdienen. Die Gewinner erhalten Gold. Je mehr Gold, desto höher die Bewertung des Spielers.

Ich werde etwas detaillierter auf die Beschreibung der Charaktere eingehen.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Guter Kerl

„Neue Epen“. Für Entwickler, Ops und Neugierige
Rote Jungfrau

Guter Kerl и Rote Jungfrau - die am weitesten verbreitete und wichtigste Rolle im Spiel. Dabei handelt es sich um Zivilisten, die nachts schlafen und tagsüber arbeiten. Nachts werden sie von einem der Räuber, der Schlange Gorynych und anderen Rollen, angegriffen und Vasilisa die Weise heilt sie. Mit einer geringen Wahrscheinlichkeit können der Gute Gefährte oder die Rote Jungfrau den Angriff unbeschadet überstehen (und dabei möglicherweise Gold verlieren), allerdings wird jeder den Spitznamen des Spielers am nächsten Tag nach dem Angriff wiedererkennen. Nachts machen diese Spieler keine Spielzüge, sondern analysieren die Spielsituation anhand von Nachrichten im Spielchat. Im Laufe des Tages entscheiden diese Spieler durch Abstimmung, wer von ihnen nicht der Gute Kerl oder die Rote Jungfrau ist. Der Spieler, für den die Mehrheit der anderen Spieler gestimmt hat, scheidet aus dem Spiel aus, die verbleibenden Spieler erhalten oder verlieren Gold. Wenn Spieler niemanden per Mehrheitsbeschluss auswählen, wird kein Spieler hingerichtet.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Iwan Zarewitsch

Iwan Zarewitsch - zunächst ein anonymer Verteidiger von Zivilisten. Nachts überprüft er die Rollen der anderen Spieler, da er nur einen seiner Verbündeten kennt – den Grauen Wolf. Mit der direkten Beteiligung des Grauen Wolfs (der auch die Rollen anderer Spieler überprüfen kann) kann Iwan Zarewitsch, anstatt dies zu überprüfen, nachts einen anderen Charakter töten. Wenn Iwan Zarewitsch als Ergebnis der Prüfung in einem Spieler die Rolle eines Guten Gefährten oder einer Roten Jungfrau sieht, kann er sie zu sich nach Hause einladen und ihnen den Grauen Wolf und andere Gute Gefährten und Rote Mädchen vorstellen. Ivan kann von der Froschprinzessin gestört werden, die ihn nachts verführen kann, ohne tagsüber seine Rolle anderen Spielern preiszugeben. Wenn Ivan selbst die Froschprinzessin entdeckt, kann er sie einladen, sich den Zivilisten anzuschließen, aber wenn die Prinzessin sich weigert, stirbt sie durch Ivans Hand. Der Schlangen-Gorynytsch kann sich auch in die Kontrollen von Iwan Zarewitsch einmischen, aber im Gegensatz zur Froschprinzessin wird er tagsüber den anderen Spielern sagen, wer von ihnen Iwan Zarewitsch ist. Tagsüber unterscheidet sich Iwan Zarewitsch nicht von anderen guten Gefährten.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Grauer Wolf

Grauer Wolf - Assistent von Ivan Tsarevich, dessen ausgeprägter Geruchssinn Ivan dabei hilft, andere Good Fellows und Red Maidens zu finden. Grey Wolf erzählt diesen Spielern, wer Iwan der Zarewitsch ist, und informiert auch über andere Spieler mit den Rollen Good Fellows und Red Maidens. Wenn der Wolf einen Räuber oder einen anderen Feind entdeckt, informiert er Iwan Zarewitsch sofort, damit dieser in der nächsten Nacht Maßnahmen ergreifen kann. Wenn der Wolf von der Froschprinzessin angegriffen wird, verwandelt er sich in einen gewöhnlichen guten Kerl und kann niemanden kontrollieren, und die Prinzessin erfährt nicht, dass es sich tatsächlich um den Grauen Wolf handelt, da der Wolf nachts nicht schläft. Der Wolf selbst wird jedoch im Laufe des Tages herausfinden, welcher der Spieler die Froschprinzessin ist, und kann versuchen, den Rest der Guten Gefährten und Roten Jungfrauen, die er zu Iwan Zarewitsch gebracht hat, davon zu überzeugen, für die Hinrichtung des Frosches zu stimmen Prinzessin. Auch in der nächsten Nacht kann er versuchen, die Froschprinzessin anonym auf die Seite der Zivilisten zu bewegen, damit sie keinen von ihnen berührt. Der Wolf kann sich nachts opfern, um Iwan Zarewitsch oder Wassilisa die Weise zu retten, wenn er davon ausgeht, dass sie plötzlich dem Angriff von Räubern zum Opfer fallen oder von Koshchei in einen Zombie verwandelt wurden (der Wolf hat eine angeborene Immunität gegen Koshcheis Reize), aber danach die Selbstaufopferung, die der Wolf aus dem Spiel streicht.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Vasilisa die Weise

Vasilisa die Weise - spielt für Zivilisten, aber sie wissen nichts von ihr, da Vasilisa sehr bescheiden ist. Außerdem stellt Vasilisa die Weise bei der Behandlung keine Fragen und behandelt wie ein guter Arzt jeden. Aber wenn Koschey, Likho oder Leshy ihre Medizin trinken, werden sie nicht länger als einen Tag leben, da Vasilisa nur Menschen behandelt. Die Medizin von Vasilisa der Weisen wird auch der Schlange Gorynych oder der Katze-Bayun nicht helfen, aber sie werden auch keinen Schaden anrichten. Außerdem berührt Kot-Bayun Vasilisa nachts nicht, da Vasilisa nicht in den leblosen Wald geht, um Heilkräuter zu kaufen. Außerdem wirken die weiblichen Reize der Froschprinzessin bei Vasilisa nicht. Wenn sie zweimal versuchen würden, ihre Patientin zu töten, wäre die Medizin machtlos. Vasilisa wird dich nicht vor magischen Angriffen retten, zum Beispiel vor dem Dashing-Fluch. Tagsüber verhält sich Vasilisa wie eine Rote Jungfrau, und nur ein flüchtiger, leicht trauriger Blick lässt vermuten, dass sie die beste Heilerin im fernen Königreich ist.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Schurke

RäuberIm Gegensatz zu allen vorherigen Rollen kennen sie sich, da sie im selben Versteck leben, und kennen auch Leshy und Baba Yaga, sodass sie vom ersten Schritt an an einem Strang ziehen können. Aber nur der Anführer der Bande führt nachts Aktionen durch und stimmt tagsüber nicht ab, während der Rest der Räuber fleißig vorgibt, gute Gefährten und rote Jungfrauen zu sein. Wenn der Anführer das Spiel aus irgendeinem Grund verlässt, übernimmt sofort einer der verbleibenden Schurken seinen Platz. Zunächst versuchen die Räuber, Iwan den Zarewitsch außer Gefecht zu setzen, bis er genug Kräfte von den Guten Gefährten und Roten Jungfrauen gesammelt hat, um den Räubern im Laufe des Tages aktiv entgegenzutreten.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Leshy

Leshy Nachts spioniert er für die Räuber und informiert sie über die in ihrem Versteck gefundenen Rollen, aber tagsüber geht er nicht wählen, da er nicht im Dorf lebt. Allerdings können andere Spieler für Leshy stimmen und ihn so hinrichten. Da der Leshy aus den Sümpfen stammt, kann er nicht von der Froschprinzessin verführt werden, und wenn er es versucht, wird der Leshy ihr Haus markieren und die Dorfbewohner werden herausfinden, wer sie wirklich ist. Leshem sollte keine Angst vor Koshcheis Zauber haben, aber Vasilisa kann ihn zu Tode heilen. Wenn Kot-Bayun versucht, Leshy anzugreifen, riskiert er, seine eisernen Krallen zu verlieren, und dann muss Kot die Opfer nur mit seinem Schnurren in den Schlaf wiegen.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Baba Yaga

Baba Yaga Er arbeitet auch mit den Räubern zusammen und wirkt nachts Zauber: Er kann entweder andere Spieler krank machen oder einen seiner Verbündeten vor Angriffen schützen. Ihre Hexerei ist noch stärker als Likhs Fluch. Auch tagsüber ist Baba Jaga aktiv: Wer unter ihrem Schutz steht, kann nicht einmal mit Mehrheitsbeschluss hingerichtet werden. Der Vorrat an magischen Wurzeln für den Tagesschutz ist jedoch begrenzt, sodass Baba Yaga niemanden, sich selbst eingeschlossen, nicht mehr als dreimal pro Spiel beschützen kann. Tagsüber gibt Baba Yaga vor, eine gewöhnliche Rote Jungfrau zu sein und stimmt mit allen anderen ab.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Drachen

Drachen Nachts fliegt er über Dörfer, Wälder und Sümpfe und begeht Raubüberfälle, wobei er die Rolle der Beraubten am Tag enthüllt. Tagsüber schläft die Schlange, also stimmt sie nicht ab, kann aber durch Mehrheitsbeschluss hingerichtet werden. Die Schlange ist für alle sehr gefährlich, besonders für die Räuber und Iwan Zarewitsch. Der Schlange ist es egal, wen sie beraubt, aber wenn sie vom Wolf oder Leshy entdeckt wird, kann sie ein wertvoller Verbündeter werden. Wenn Sie die Schlange nachts töten, können Sie mit einiger Wahrscheinlichkeit einen sehr wertvollen Gegenstand erhalten – die Schlangenhaut, die ihren Besitzer einmal vor körperlichen Angriffen schützt.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Schneidiger Einäugiger

Schneidiger Einäugiger Nachts tötet er jeden, der sich ihm in den Weg stellt, und wen er nicht töten kann (Leshy, Kota-Bayun oder die Schlange Gorynych), verflucht er, sodass jeder, der in derselben Nacht versucht, mit dem Verdammten zu kommunizieren, tagsüber stirbt . Auch der Verdammte selbst stirbt in diesem Fall, nur Kot-Bayun stirbt nicht, der einfach zu Bett geht, um Kraft zu tanken, und in der nächsten Nacht nicht an der Reihe ist. Nur Baba Yaga kann Likh vor dem Fluch retten. Der Fluch betrifft nicht denjenigen, der die Katze-Bayun besiegt hat: Er geht wie die Katze einfach zu Bett und überspringt eine Runde.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Prinzessin Frosch

Prinzessin Frosch Er kann das Spiel nicht gewinnen, aber er kann viel Geld verdienen, indem er nachts andere Spieler verführt. Der Versuchte verpasst seinen Zug. Der Frosch kann Vasilisa die Weise nicht verführen, und sie sollte auch Leshy meiden, der sie am nächsten Tag an alle verraten wird. Wenn Iwan der Zarewitsch oder der Anführer der Räuber den Frosch finden, können sie Zivilisten oder die Räuber auf ihre Seite einladen, während Iwan die Weigerung des Frosches nicht akzeptieren wird, aber der Anführer ist nicht so wählerisch. Aber die Prinzessin ist ziemlich schlau, sie kann eine Doppelagentin werden, denn obwohl sie alleine nicht gewinnen kann, ist dies eine ausgezeichnete Chance, Gold zu gewinnen, denn die Chancen, bis zum Ende des Spiels zu überleben, steigen erheblich! Tagsüber gibt sich die Froschprinzessin als die Rote Jungfrau aus und stimmt mit allen gemeinsam ab.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Koschei der Unsterbliche

Koschei der Unsterbliche wohnt in seinem Schloss. Nachts wandert er durch die umliegenden Dörfer und zombifiziert Good Fellows und Red Maidens, die in seine Dienste treten und fraglos alle Befehle ausführen. Durch die Weigerung, einen Befehl auszuführen, zum Beispiel tagsüber anders abzustimmen, als Koshchei gesagt hat, oder tagsüber Nachrichten im Chat zu schreiben, wenn Koshchei es verboten hat, stirbt Koshcheis Diener. Somit hat Koschey die Möglichkeit, die Abstimmungsergebnisse im Laufe des Tages zu beeinflussen, auch wenn er selbst nicht wählt. Wenn Koshchei getötet wird, sterben auch alle seine Opfer. Vasilisa kann den Diener Koshchei heilen, der dann in seine ursprüngliche Rolle zurückkehrt. Der Schlangen-Gorynych und der Wolf haben eine angeborene Immunität gegen die Zombifizierung, sodass Koschey sie, egal wie sehr er will, nicht in seine Dienste stellen kann. Der Wolf kann Ivan oder Vasilisa auch aus der Not helfen, indem er sich selbst opfert. Vom Wolf gerettet erhält Wolf Immunität gegen Zombifizierung.

„Neue Epen“. Für Entwickler, Ops und Neugierige
Katze Baiyun

Katze Baiyun lebt im Wald, jagt nachts. Tagsüber schläft er in seiner Mulde, nimmt also nicht an der Abstimmung teil. Allerdings kann er im Laufe des Tages durch Mehrheitsbeschluss hingerichtet werden. Die Katze kann auf zwei Arten angreifen: schnurren – und dann schläft das Opfer ein und kann nachts nicht laufen und am nächsten Tag nicht wählen – oder direkt mit eisernen Krallen töten. Der Angriff mit Klauen funktioniert beim Snake-Gorynych nicht, und nach dem Angriff auf Leshy bleibt die Katze möglicherweise überhaupt ohne Klauen! Dashing kann die Katze nicht verfluchen, die nach dem Fluch einfach eine Nacht lang schlafen wird. Wenn es jemandem gelingt, Kota-Bayun zu besiegen, wird er von jeder Krankheit geheilt, einschließlich des Fluchs von Likh. Diese Katzenfähigkeit bleibt bis zum Ende des Spiels beim Spieler. Koshcheis Diener können tagsüber nicht für die Katze stimmen, aber sie können indirekt herausfinden, wer die Katze ist, ohne Koshchei darüber zu informieren. Kot-Bayun geht keine Allianzen mit Ivan oder den Räubern ein, daher sind sie das Hauptziel von Kot.

Verwendete Technologien

Um das Spiel zu schreiben, habe ich mich für eine Serverless-Computing-Technologie auf Basis von OpenFaaS entschieden, da diese einfach genug ist, um das Spiel zu organisieren, und gleichzeitig fortschrittlich genug, um komplexe Spielregeln ohne unnötige Komplikationen zu schreiben. Ich werde auch einen Kubernetes-Cluster verwenden, da diese Methode der Anwendungsbereitstellung eine schnelle Bereitstellung und einfache Skalierung recht einfach und zuverlässig macht. Um die Spiellogik zu erstellen, kommt man nur mit OpenFaaS aus, ich werde aber auch versuchen, den Storyteller als separaten Container zu erstellen, um die Komplexität der Implementierung vergleichen zu können. Als Hauptprogrammiersprache für Microservices und Funktionen habe ich mich entschieden GoDa ich mich in meiner Freizeit schon lange damit beschäftigt habe, Perl zu ersetzen, wird js basierend auf einem bestimmten Framework für die Benutzerinteraktion mit Mikrodiensten und Funktionen verwendet. Über die endgültige Entscheidung werde ich Sie im entsprechenden Artikel der Serie informieren. Um Funktionen miteinander zu kommunizieren, habe ich mich für NATS.io entschieden, da ich es bereits zuvor kannte und es sich relativ einfach in Kubernetes integrieren lässt.

Ankündigung

  • Einführung
  • Einrichten der Entwicklungsumgebung, Aufteilen der Aufgabe in Funktionen
  • Backend-Arbeit
  • Frontend-Arbeit
  • CICD einrichten, Tests organisieren
  • Starten Sie eine Probespielsitzung
  • Ergebnisse

Source: habr.com

Kommentar hinzufügen