"Neue Epen". Für Entwickler, Ops und Neugierige


Auf Wunsch der Leser beginnt ein großer Zyklus von Artikeln über die Anwendung der serverlosen Computertechnologie, um eine echte Anwendung zu entwickeln. In diesem Zyklus werden wir die Entwicklung, das Testen und die Bereitstellung von Anwendungen für Endbenutzer mit modernen Tools untersuchen: Microservice-Anwendungsarchitektur (in der serverlosen Version auf OpenFaaS- Basis), Kubernetes- Cluster für die Anwendungsbereitstellung, MongoDB- Datenbank mit Schwerpunkt auf Cloud-Clustering und -Anwendung sowie Cloud Bus NATS . Die Anwendung implementiert das Spiel "Epics", eine der Varianten des beliebten Salonspiels "Mafia".


Was ist "Epics"?


Dies ist eine Variante des Spiels "Mafia", es ist auch "Werwolf". Es basiert auf einem Teamspiel, in dem die Teilnehmer Schritt für Schritt lernen müssen, wer wer ist und versuchen, zu gewinnen. Leider verschwindet beim Spielen im Netzwerk eine so wichtige Komponente des Spiels wie die persönliche Interaktion, und die Regeln der klassischen „Mafia“ sind recht einfach. Daher werden normalerweise andere Zeichen hinzugefügt, um ein nichtlineareres und interessanteres Gameplay zu ermöglichen. Im Allgemeinen bleiben jedoch die Hauptmerkmale der ursprünglichen „Mafia“ erhalten. Zum Beispiel ein Wechsel von Tag und Nacht, der sich nur nachts bewegt, sowie Allianzen zwischen Teilnehmern. Ein weiterer wichtiger Unterschied des Spiels über das Netzwerk ist, dass der Host (auch bekannt als Game Master, Storyteller) normalerweise ein Computerprogramm ist.


Spielbeschreibung


Die Spielregeln, die ich implementieren möchte, sind dem alten IRC-Bot entnommen, den ich vor ca. 10 Jahren in einem persönlichen Archiv gespeichert habe. "Bylin" hat eine Hintergrundgeschichte, mit der jedes Spiel beginnt:


Im fernen Königreich, im dreißigsten Staat, lebten über sieben Meere mehrere Dörfer für sich, und in ihnen die Guten und die Roten Jungfrauen . Sie säten Brot und gingen in den nahe gelegenen Wald, um Pilze und Beeren zu holen ... Und es ging von Jahrhundert zu 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 die Dunkelheit durchstreifte den Wald und wanderte in das Dorf der unfreundlichen und schrecklichen Kreaturen. Eine Schlange Gorynych flog von irgendwo her und hatte die Angewohnheit, die Roten Jungfrauen zu stehlen und den Dorfbewohnern alles Wertvolle abzunehmen . Die schädliche und gierige Baba Yaga , die auf einem Stupa aus fernen Wäldern flog, verwirrte die Gedanken der Bewohner, und sogar einige Leute gaben das Handwerk auf und gingen in den Wald, um zu rauben, machten dort eine Bande. Likhedey lernte Leshii kennen, der sich in Bäume und Büsche verwandeln konnte, und begann, die friedlichen Dorfbewohner zu beobachten und den Räubern zu dienen. Er schnüffelte, ob die Guten etwas vorhatten, um ihre Siedlungen vor bösen Geistern zu retten. Gute Burschen und rote Mädchen, müde von den Überfällen der Räuber und schrecklichen Todesfällen durch den schrecklichen Einäugigen Likh , sammelten Gold und luden einen berühmten Wrestler, Ivan Tsarevich , aus der Nachbarstadt ein, der versprach, das Dorf von Räubern zu befreien. Auf einer Lichtung im Wald rettete Ivan den unmittelbar bevorstehenden Tod des Grauen Wolfs , der in die Grubenfalle der Räuber geriet. Im Gegenzug versprach der Wolf, Zarewitsch über verschiedene böse Geister zu informieren. Die bekannte Heilerin Vasilisa die Weise kam vorbei, und als sie Schwierigkeiten sah, musste sie die Bewohner pflegen, die von scharfen Angriffen betroffen waren. Hinter dem Wald tauchte ein schwarzer Palast auf, in dem sich Gerüchten zufolge der Unsterbliche Koshchei niederließ, jeden Abend die Dörfer besuchte und die Guten und die Roten Jungfrauen verzauberte, damit sie sich nicht trauten, seinem Befehl zu widersprechen, taten sie alles, was er sagte. Und im leblosen Wald ließ sich Cot-Bayun nieder, und jeder, der ihm begegnete, schlief nach seinen Märchen ein oder starb an seinen eisernen Klauen.


Fernes Königreich


Wie bereits gesehen, sind die Spieler in mehrere Gruppen unterteilt:


  • Zivilisten (Gute Kameraden, Rote Jungfrauen, Iwan Zarewitsch, Grauer Wolf und Wassilisa die Weise)
  • Räuber (Räuber selbst sowie Baba Yaga und Leshy)
  • unabhängig (Serpent-Gorynych, Likho einäugig, Prinzessin Frog, Koschey der Unsterbliche, Cot-Bayun)

Das Ziel des Spiels ist, wie oben erwähnt, am Leben zu bleiben und zu gewinnen. Die Gegner müssen das Spiel irgendwie verlassen, und die Unabhängigen sollten auch bis zum Ende des Spiels am Leben bleiben. Das Spiel hat Gold, eine Art Spielwährung, die die Spieler nur innerhalb des Spiels verdienen. Gewinner erhalten Gold. Je mehr Gold, desto höher ist die Wertung des Spielers.


Ich werde ein wenig mehr auf die Beschreibung der Charaktere eingehen.



Gut gut



Rote Jungfrau


Good Good und Red Maiden - die massivste und wichtigste Rolle im Spiel. Dies sind Zivilisten, die nachts schlafen und tagsüber arbeiten. In der Nacht werden sie von einem der Räuber, der Schlange Gorynych und anderen Rollen angegriffen, und Vasilisa die Weise behandelt sie. Mit einer geringen Wahrscheinlichkeit können der Gute Gefährte oder die Rote Jungfrau den Angriff ohne Schaden überstehen (möglicherweise haben sie gleichzeitig Gold verloren). Gleichzeitig erkennt jedoch jeder am nächsten Tag nach dem Angriff / der Verteidigung das Pseudonym des Spielers. Nachts machen diese Spieler keine Züge, sondern analysieren die Spielsituation anhand der Nachrichten im Spielechat. Am Nachmittag entscheiden diese Spieler, welche von ihnen nicht der Gute Gefährte oder die Rote Jungfrau ist. Der Spieler, für den die meisten anderen Spieler gestimmt haben, verlässt das Spiel, der verbleibende gewinnt oder verliert Gold. Wenn die Spieler mit Stimmenmehrheit niemanden gewählt haben, wird keiner der Spieler hingerichtet.



Iwan Zarewitsch


Iwan Zarewitsch - ursprünglich ein anonymer Verteidiger der Zivilbevölkerung. Überprüft nachts die Rollen anderer 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 nachts einen anderen Charakter töten, anstatt zu überprüfen. Wenn Iwan Zarewitsch als Ergebnis der Prüfung die Rolle des Guten Jungen Mannes oder der Roten Jungfrau im Spieler sieht, kann er sie zu sich einladen und ihn dem Grauen Wolf und anderen Guten Jungen Männern und den Roten Jungfrauen vorstellen. Ivan kann von der Froschprinzessin verhindert werden, die ihn nachts verführen kann, ohne tagsüber seine Rolle an andere Spieler zu verraten. Wenn Ivan selbst die Froschprinzessin entdeckt, kann sie ihr anbieten, sich der Zivilbevölkerung anzuschließen, aber wenn die Prinzessin sich weigert, stirbt sie in den Händen von Ivan. Der Serpent-Gorynych kann auch die Kontrolle von Iwan Zarewitsch stören, aber im Gegensatz zum Zarewna-Frosch wird er am Nachmittag den restlichen Spielern mitteilen, welcher von ihnen Iwan Zarewitsch ist. Am Nachmittag unterscheidet sich Iwan Zarewitsch nicht von anderen Guten Guten.



Grauer Wolf


Gray Wolf ist ein Assistent von Ivan Tsarevich, dessen scharfer Geruch Ivan hilft, andere Good Fellows und Red Maidens zu finden. Gray Wolf erzählt diesen Spielern, wer Ivan Tsarevich ist, und berichtet auch über andere Spieler mit den Rollen der Good Fellows und Red Maidens. Wenn der Wolf einen Räuber oder einen anderen Feind entdeckt, informiert er sofort Iwan Zarewitsch darüber, damit er in der nächsten Nacht Maßnahmen ergreift. Wenn der Wolf die Froschprinzessin angreift, verwandelt er sich in einen gewöhnlichen Guten und kann niemanden kontrollieren, und die Prinzessin wird nicht wissen, dass es sich tatsächlich um den Grauen Wolf handelt, da der Wolf nachts nicht schläft. Der Wolf selbst findet jedoch heute Nachmittag heraus, welcher der Spieler die Froschprinzessin ist, und kann versuchen, die verbleibenden Guten Gefährten und Roten Jungfrauen, die er zu Iwan Zarewitsch gebracht hat, davon zu überzeugen, für die Hinrichtung der Froschprinzessin zu stimmen. Außerdem kann sie am nächsten Abend versuchen, die Froschprinzessin anonym von der Seite der Zivilbevölkerung zu überzeugen, damit sie keine von ihnen berührt. Ein Wolf kann sich nachts opfern, um Iwan Zarewitsch oder Wassilisa die Weise zu retten, wenn er vorschlägt, dass sie plötzlich unter den Schlag von Räubern fallen oder von Koshchei zombifiziert wurden (der Wolf ist angeborene Immunität gegen Koshcheis Zauber), aber der Wolf verlässt das Spiel nach Selbstaufopferung.



Vasilisa die Weise


Vasilisa die Weise - spielt für Zivilisten, aber sie wissen nichts über sie, da Vasilisa sehr bescheiden ist. Außerdem stellt Vasilisa die Weise, wenn sie heilt, keine Fragen und wie ein guter Arzt jeden heilt. Aber wenn ihre Medizin von Koschei, Likho oder Leshiy getrunken wird, sollten sie nicht länger als einen Tag leben, da Vasilisa nur Menschen behandelt. Vasilisa die Weisen Medikamente werden weder der Schlange Gorynych noch Kota-Bajun helfen, aber sie werden keinen Schaden anrichten. Cot-Bayun berührt Vasilisa auch nachts nicht, da Vasilisa nicht für Heilkräuter in den leblosen Wald geht. Darüber hinaus funktionieren die weiblichen Reize der Prinzessin Frog auf Vasilisa nicht. Wenn sie versuchen, ihre Patientin zweimal zu töten, ist das Medikament machtlos. Vasilisa wird sich nicht vor magischen Angriffen retten, zum Beispiel vor dem Fluch des Likh. Am Nachmittag benimmt sich Vasilisa wie eine Rote Jungfrau, und nur ein flüchtiger, leicht trauriger Blick kann ein wenig darauf hindeuten, dass sie die beste Ärztin in der Ferne ist.



Räuber


Die Räuber kennen sich im Gegensatz zu allen früheren Rollen, weil sie in derselben Höhle leben und auch Leshy und Babu Yaga kennen, so dass sie gleich vom ersten Zug an konzertieren können. Aber nur der Gang Leader führt nachts Aktionen durch und wählt tagsüber nicht, 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, nimmt einer der verbleibenden Räuber sofort seinen Platz ein. Zunächst versuchen die Räuber, Iwan Zarewitsch außer Gefecht zu setzen, bis er genug Kraft bei den Guten und den Roten Mädchen gesammelt hat, um sich am Nachmittag aktiv den Räubern zu stellen.



Kobold


Goblin spioniert nachts nach den Räubern aus und informiert sie über die Rollen in ihrer Höhle, wählt aber tagsüber nicht, weil er nicht im Dorf lebt. Andere Spieler können jedoch für Leshy stimmen und ihn damit hinrichten. Da Leshiy aus den Sümpfen kommt, kann ihn Prinzessin Frog nicht verführen, und wenn er es versucht, wird Leshiy ihr Haus markieren und die Dorfbewohner werden herausfinden, wer sie wirklich ist. Es ist Lesha nicht wert, Angst vor Koshcheis Zauber zu haben, aber Vasilisa kann ihn zu Tode heilen. Wenn Kot-Baiyun versucht, Lesha anzugreifen, riskiert er, seine eisernen Klauen zu verlieren, und dann muss Kot die Opfer mit nur einem Murmeln einschläfern.



Baba Yaga


Baba Yaga arbeitet auch mit den Räubern zusammen, zaubert nachts: Er kann entweder eine Krankheit an andere Spieler senden oder einen der Verbündeten vor Angriffen schützen. Ihre Hexerei ist noch stärker als der Fluch von Lea. Am Nachmittag ist auch Baba Yaga aktiv: Einer, der unter ihrem Schutz steht, kann nicht einmal mit Stimmenmehrheit hingerichtet werden. Das Angebot an magischen Wurzeln für den Tagesschutz ist jedoch begrenzt, so dass Baba Yaga nicht mehr als dreimal pro Spiel jemanden, einschließlich sich selbst, beschützen kann. An diesem Nachmittag gibt Baba Yaga vor, die übliche Rote Jungfrau zu sein und stimmt mit allen ab.



Serpent-Gorynych


In der Nacht fliegt der Serpent-Gorynych über Dörfer, Wälder und Sümpfe und ist in Raubüberfälle verwickelt , die tagsüber die Rolle eines Räubers enthüllen. Tagsüber schläft die Schlange, so dass sie nicht abstimmt, sondern mit Stimmenmehrheit ausgeführt werden kann. Die Schlange ist für alle sehr gefährlich, besonders für die Räuber und Iwan Zarewitsch. Es spielt keine Rolle, wem man entreißt, aber wenn der Wolf oder der Goblin ihn öffnen, kann er ein wertvoller Verbündeter werden. Wenn Sie die Schlange nachts töten, können Sie mit einiger Wahrscheinlichkeit einen sehr wertvollen Gegenstand erhalten - Schlangenhaut, die ihren Besitzer einmal vor einem physischen Angriff schützt.



Bekanntermaßen einäugig


Die berühmte einäugige Nacht tötet jeden, der ihm auf dem Weg begegnet und nicht getötet werden kann (Leshiy, Kota-Bajun oder Zmety Gorynych) - Flüche, sodass jeder, der in dieser Nacht versucht, mit den Verdammten zu kommunizieren, im Laufe des Tages sterben wird. Gleichzeitig stirbt auch der Verfluchte selbst, nur Kot-Baiun, der einfach ins Bett geht, um sich zu stärken, überspringt den Kurs in der nächsten Nacht. Nur Baba Yaga kann Likh vor dem Fluch retten. Der Fluch betrifft nicht denjenigen, der Kota-Baiyun besiegt hat: Er geht wie die Katze nur mit einem Pass ins Bett.



Die Froschprinzessin


Die Froschprinzessin kann das Spiel nicht gewinnen, aber sie kann viel Geld verdienen, indem sie nachts andere Spieler verführt. Gleichzeitig verführt überspringt der Umzug. Der Frosch kann Vasilisa die Weise nicht verführen, sie sollte auch Lesha aus dem Weg gehen, die ihn am nächsten Tag allen übergibt. Wenn Iwan Zarewitsch oder der Anführer der Räuber einen Frosch finden, können sie Zivilisten oder Räuber zur Seite einladen, während Iwan die Ablehnung des Frosches nicht akzeptiert, der Anführer jedoch nicht so wählerisch ist. Aber die Prinzessin ist ziemlich schlau, kann eine Doppelagentin werden, denn trotz der Tatsache, dass sie alleine nicht gewinnen kann, ist dies eine große Chance, Gold zu gewinnen, weil die Chancen, das Spielende zu erreichen, stark erhöht sind! Am Nachmittag gibt die Froschprinzessin vor, ein rotes Mädchen zu sein und stimmt mit allen ab.



Koschey der Unsterbliche


Koschey der Unsterbliche lebt in seiner Burg. Nachts geht er durch die umliegenden Dörfer und zombies die Guten Gefährten und die Roten Jungfrauen, die zu seinen Diensten gehen und fraglos alle Aufträge ausführen. Die Weigerung, den Befehl auszuführen, zum Beispiel tagsüber anders abzustimmen als Koschey sagte, oder tagsüber Nachrichten in den Chat zu schreiben, wenn Koshchei es verbietet, kommt der Koshchei-Diener ums Leben. So kann Koschey das Abstimmungsergebnis tagsüber beeinflussen, obwohl er selbst nicht abstimmt. Wenn Koshchei getötet wird, sterben auch alle seine Opfer. Vasilisa kann den Diener von Koshchei heilen, der dann zu seiner ursprünglichen Rolle zurückkehrt. Die Schlange-Gorynych und der Wolf haben eine angeborene Immunität gegen Zombies, so dass Koschey, mit allem Wunsch, sie nicht in seinen Dienst stellen kann. Außerdem kann der Wolf Ivan oder Vasilisa aus Schwierigkeiten helfen, indem er sich selbst opfert. Durch den Wolf gerettet erwirbt der Wolf eine Immunität gegen Zombies.



Elfenbein Bayun


Ivory Bayun lebt im Wald und jagt nachts. Er schläft tagsüber in seiner Höhle, nimmt also nicht an der Abstimmung teil. Tagsüber kann er jedoch mit Stimmenmehrheit hingerichtet werden. Eine Katze kann auf zwei Arten angreifen: schnurren - und dann schläft ihr Opfer ein und kann nachts nicht gehen und auch am nächsten Tag abstimmen - oder sofort mit Eisenklauen töten. Der Klauenangriff wirkt nicht auf die Serpent-Gorynycha, aber beim Angriff auf die Leshy kann die Katze sogar ohne Klauen bleiben! Berühmt kann die Katze nicht verfluchen, die nach dem Fluch nur eine Nacht schlafen wird. Wenn jemand Kota-Bajun zum Erobern überwältigt, wird er von allen Krankheiten und Leiden geheilt, einschließlich des Fluchs von Liha. Diese Kotova-Fähigkeit wird vom Spieler bis zum Ende des Spiels beibehalten. Die Diener von Koshchei 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 für Kot das primäre Ziel.


Verwendete Technologien


Um das Spiel zu schreiben, entschied ich mich für die serverlose Technologie auf OpenFaaS-Basis, da sie einfach genug ist, um das Spiel zu organisieren, und gleichzeitig genug entwickelt wurde, um komplexe Spielregeln ohne übermäßige Komplikationen zu schreiben. Ich werde auch den Kubernetes-Cluster verwenden, da diese Art der Bereitstellung von Anwendungen es einfach und zuverlässig macht, eine schnelle Bereitstellung zu erhalten und die Möglichkeit zur einfachen Skalierung. Um eine Spielelogik zu erstellen, kann nur auf OpenFaaS verzichtet werden. Ich werde jedoch auch versuchen, den Storyteller als separaten Container zu erstellen, um die Komplexität der Implementierung zu vergleichen. Ich habe Go als Hauptprogrammiersprache für Microservices und Funktionen ausgewählt, da ich mich in meiner Freizeit schon lange damit befasst habe, Perl zu ersetzen, und js wird für die Benutzerinteraktion mit Microservices und Funktionen verwendet, die auf einem bestimmten Framework basieren. Ich werde über die endgültige Entscheidung im entsprechenden Artikel in der Reihe sprechen. Für die Kommunikation zwischen den Funktionen habe ich mich für NATS.io entschieden, da ich es bereits zuvor kennengelernt hatte und es sich recht einfach in Kubernetes integrieren lässt.


Ankündigung


Source: https://habr.com/ru/post/de482010/


All Articles