"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen

Vanwege talrijke verzoeken van lezers begint er een grote reeks artikelen over het gebruik van serverloze computertechnologie om een ​​echte applicatie te ontwikkelen. Deze cyclus omvat de ontwikkeling, het testen en de levering van applicaties aan eindgebruikers met behulp van moderne tools: microservice-applicatiearchitectuur (in een serverloze versie, gebaseerd op OpenFaaS), TROS kubernetes voor applicatie-implementatie, database MongoDB, gericht op cloudclustering en -applicatie, evenals cloudbus NATS. De applicatie implementeert het spel "Epics", een van de varianten van het populaire gezelschapsspel "Mafia".

Wat zijn "Epics"?

Dit is een variant van het spel "Mafia", ook wel bekend als "Weerwolf". Het is gebaseerd op een teamspel waarin deelnemers stap voor stap moeten leren wie wie is en moeten proberen te winnen. Helaas verdwijnt bij het online spelen zo'n belangrijk onderdeel van het spel als persoonlijke interactie, en de regels van de klassieke 'maffia' zijn vrij eenvoudig, daarom worden voor een meer niet-lineaire en interessante gameplay meestal andere personages toegevoegd, maar over het algemeen blijven de belangrijkste kenmerken van de oorspronkelijke 'maffia' behouden, bijvoorbeeld de verandering van dag en nacht, bewegingen die alleen 's nachts plaatsvinden, evenals allianties tussen deelnemers. Een ander belangrijk verschil tussen online spelen is dat de host (ook bekend als Game Master, Storyteller) meestal een computerprogramma is.

Game Beschrijving

De spelregels die ik wil implementeren zijn afkomstig van een oude irc-bot die ik ongeveer 10 jaar geleden in mijn persoonlijke archief heb opgeslagen. "Epics" hebben een achtergrondverhaal waarmee elk spel begint:

In het verre koninkrijk, in de dertigste staat, voorbij de zeven zeeën, leefden en leefden verschillende dorpen, en daarin Goede vrienden и Mooie meiden. Ze zaaiden brood en gingen naar het omliggende bos om paddenstoelen en bessen te plukken... En dit ging van eeuw tot eeuw door, totdat een verschrikkelijke catastrofe de aarde deed schudden en het kwaad zich over de hele wereld begon te verspreiden! De nachten werden lang en koud, en in het donker zwierven onvriendelijke en verschrikkelijke wezens door het bos en dwaalden het dorp binnen. Ergens vandaan gekomen Snake Gorynych en maakte er een gewoonte van om Rode maagden te stelen en al het waardevolle van de dorpelingen af ​​te pakken. Schadelijk en hebzuchtig Baba Yaga, die op een mortier uit verre bossen vloog, bracht de geesten van de inwoners in verwarring, en zelfs sommigen gaven hun ambacht op en gingen het bos in om te beroven, en vormden daar een bende. De schurken ontmoetten elkaar Goblin, die wist hoe hij in bomen en struiken moest veranderen, begon hij vreedzame dorpelingen in de gaten te houden en de overvallers te dienen, waarbij hij snuffelde of de Good Fellows iets van plan waren om hun nederzettingen van boze geesten te verlossen. Goede kerels en mooie meisjes, moe van de invallen van de rovers en de verschrikkelijke sterfgevallen door de verschrikkelijke Onstuimige eenogige, verzamelde goud en nodigde een beroemde worstelaar uit een naburige stad uit - Ivan Tsarevitsj, die beloofde het dorp van rovers te verlossen. Op een open plek in het bos redde Ivan van een wisse dood Grijze wolf, die in de pittrap van de Robbers viel. In ruil daarvoor beloofde de Wolf de Tsarevich te informeren over verschillende boze geesten in het bos. Er kwam een ​​beroemde genezer voorbij Vasilisa de Wijze, en toen ze problemen zag, bleef ze om de bewoners te verzorgen die hadden geleden onder de aanvallen van de onstuimige mensen. Achter het bos verscheen een zwart paleis, waarin hij zich volgens geruchten vestigde Koschei de onsterfelijkeElke avond bezocht hij de dorpen en betoverde de Goede Kameraden en de Rode Maagden, zodat ze zijn bevelen niet zouden durven negeren, ze zouden alles doen wat hij zei. En vestigde zich in het Levenloze Bos Kat Baiyun, en iedereen die hem ontmoette viel na zijn verhalen in slaap of stierf aan zijn ijzeren klauwen.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Far Far Away koninkrijk

Zoals je al kunt zien, zijn spelers verdeeld in verschillende groepen:

  • burgers (Good Fellows, Red Maidens, Ivan Tsarevich, Gray Wolf en Vasilisa de Wijze)
  • overvallers (de overvallers zelf, evenals Baba Yaga en Leshy)
  • onafhankelijk (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

Het doel van het spel, zoals hierboven vermeld, is om in leven te blijven en te winnen. Tegenstanders moeten op de een of andere manier het spel verlaten, en ook onafhankelijken moeten tot het einde van het spel in leven blijven. Het spel heeft goud, een soort spelvaluta die spelers alleen binnen het spel verdienen. De winnaars ontvangen goud. Hoe meer goud, hoe hoger de rating van de speler.

Ik zal wat dieper ingaan op de beschrijving van de personages.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Goede kerel

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Rode Maagd

Goede kerel и Rode Maagd - de meest voorkomende en hoofdrol in het spel. Dit zijn burgers die 's nachts slapen en overdag werken. 'S Nachts worden ze aangevallen door een van de overvallers, de slang Gorynych en andere rollen, en Vasilisa de Wijze geneest hen. Met een kleine kans kan de Good Fellow of de Red Maiden de aanval zonder schade overleven (waarbij mogelijk goud verloren gaat), maar iedereen zal de bijnaam van de speler de volgende dag na de aanval herkennen. Deze spelers maken 's nachts geen zetten, maar analyseren de spelsituatie aan de hand van berichten in de spelchat. Gedurende de dag beslissen deze spelers door te stemmen wie van hen niet de Goede Kameraad of de Rode Maagd is. De speler waarop de meerderheid van de andere spelers heeft gestemd, verlaat het spel, de overige spelers ontvangen of verliezen goud. Als spelers bij meerderheid van stemmen niemand kiezen, wordt geen enkele speler geëxecuteerd.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Ivan Tsarevitsj

Ivan Tsarevitsj - aanvankelijk een anonieme verdediger van burgers. 'S Nachts controleert hij de rollen van andere spelers, omdat hij slechts één van zijn bondgenoten kent: de Grijze Wolf. Met de directe deelname van de Grijze Wolf (die ook de rollen van andere spelers kan controleren), kan Ivan Tsarevich, in plaats van te controleren, 's nachts een ander personage doden. Als Ivan Tsarevich als resultaat van de controle de rol van een goede kerel of een rode maagd in een speler ziet, kan hij ze bij hem thuis uitnodigen en ze voorstellen aan de Grijze Wolf en andere goede kerels en rode maagden. Ivan kan worden gestoord door de Kikkerprinses, die hem 's nachts kan verleiden, zonder zijn rol overdag aan andere spelers te onthullen. Als Ivan zelf de Kikkerprinses ontdekt, kan hij haar uitnodigen om zich bij de burgers aan te sluiten, maar als de prinses weigert, sterft ze door toedoen van Ivan. De Slang-Gorynych kan zich ook bemoeien met de cheques van Ivan-Tsarevitsj, maar, in tegenstelling tot de Kikkerprinses, zal hij overdag de andere spelers vertellen wie van hen Ivan-Tsarevitsj is. Overdag verschilt Ivan Tsarevich niet van andere Good Fellows.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Grijze wolf

Grijze wolf - assistent van Ivan Tsarevich, wiens scherpe reukvermogen Ivan helpt andere Good Fellows en Red Maidens te vinden. Grijze Wolf vertelt deze spelers wie Ivan de Tsarevich is, en informeert ook over andere spelers met de rollen van Good Fellows en Red Maidens. Als de Wolf een overvaller of andere vijand ontdekt, brengt hij Ivan Tsarevitsj onmiddellijk op de hoogte, zodat hij de volgende nacht actie kan ondernemen. Als de Wolf wordt aangevallen door de Kikkerprinses, verandert hij in een gewone Goede Kerel en kan hij niemand controleren, en de Prinses zal niet weten dat het eigenlijk de Grijze Wolf was, aangezien de Wolf 's nachts niet slaapt. De Wolf zelf zal er echter in de loop van de dag achter komen welke van de spelers de Kikkerprinses is, en kan proberen de rest van de Goede Kameraden en Rode Maagden, die hij naar Ivan Tsarevich bracht, te overtuigen om voor de executie van de Kikker te stemmen. Prinses. Ook de volgende nacht kan hij proberen de Kikkerprinses anoniem te overtuigen om de kant van de burgers te kiezen, zodat ze geen van hen aanraakt. De Wolf kan zichzelf 's nachts opofferen om Ivan Tsarevich of Vasilisa de Wijze te redden, als hij aanneemt dat ze plotseling onder de aanval van rovers zullen vallen, of door Koshchei zijn gezombificeerd (de Wolf heeft een aangeboren immuniteit voor Koshchei's charmes), maar daarna Door de zelfopoffering verdwijnt de Wolf uit het spel.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Vasilisa de Wijze

Vasilisa de Wijze - speelt voor burgers, maar ze weten niets van haar bestaan, aangezien Vasilisa erg bescheiden is. Ook stelt Vasilisa de Wijze, als ze behandelt, geen vragen en behandelt ze, net als een goede dokter, iedereen. Maar als Koschey, Likho of Leshy haar medicijn drinkt, zullen ze niet langer dan één dag leven, aangezien Vasilisa alleen mensen behandelt. Het medicijn van Vasilisa de Wijze zal de slang Gorynych of de Cat-Bayun ook niet helpen, maar ze zullen ook geen schade aanrichten. Ook raakt Kot-Bayun Vasilisa 's nachts niet aan, aangezien Vasilisa niet naar het Levenloze Bos gaat om geneeskrachtige kruiden te kopen. Bovendien werken de vrouwelijke charmes van de Kikkerprinses niet op Vasilisa. Als ze haar patiënt twee keer zouden proberen te vermoorden, zouden de medicijnen machteloos zijn. Vasilisa zal je niet redden van magische aanvallen, bijvoorbeeld van de Dashing-vloek. Overdag gedraagt ​​Vasilisa zich als een Rode Maagd, en alleen een vluchtige, enigszins droevige blik kan een beetje erop wijzen dat zij de beste genezer in het Far Away Kingdom is.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Rogue

rovers, in tegenstelling tot alle voorgaande rollen, kennen ze elkaar, omdat ze in dezelfde Lair wonen, en kennen ze ook Leshy en Baba Yaga, zodat ze vanaf de eerste zet samen kunnen optreden. Maar alleen de leider van de bende voert 's nachts acties uit en stemt overdag niet, terwijl de rest van de overvallers zich ijverig voordoen als Good Fellows en Red Maidens. Als de leider om welke reden dan ook het spel verlaat, neemt een van de overgebleven schurken onmiddellijk zijn plaats in. Allereerst proberen de rovers Ivan de Tsarevitsj uit te schakelen totdat hij genoeg troepen van de goede kameraden en de rode maagden heeft verzameld om de overvallers overdag actief te confronteren.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
wood goblin

wood goblin 's Nachts spioneert hij voor de overvallers en informeert hen over de rollen die in hun schuilplaats zijn gevonden, maar overdag stemt hij niet, omdat hij niet in het dorp woont. Andere spelers kunnen echter op Leshy stemmen en hem zo executeren. Omdat de Leshy uit de moerassen komt, kan hij niet worden verleid door de Kikkerprinses, en als hij het probeert, zal de Leshy haar huis markeren en zullen de dorpelingen ontdekken wie ze werkelijk is. Leshem hoeft niet bang te zijn voor de betovering van Koshchei, maar Vasilisa kan hem doodgenezen. Als Kot-Bayun Leshy probeert aan te vallen, riskeert hij zijn ijzeren klauwen te verliezen, en dan zal Kot de slachtoffers in slaap moeten sussen met alleen zijn spinnen.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Baba Yaga

Baba Yaga Hij werkt ook samen met de rovers en spreekt 's nachts spreuken uit: hij kan ziekte naar andere spelers sturen of een van zijn bondgenoten tegen aanvallen beschermen. Haar hekserij is zelfs sterker dan de vloek van Likh. Overdag is Baba Yaga ook actief: iedereen die onder haar bescherming staat, kan niet worden geëxecuteerd, zelfs niet met een meerderheid van stemmen. Het aanbod van magische wortels voor bescherming overdag is echter beperkt, dus Baba Yaga kan niemand, inclusief zichzelf, meer dan drie keer per spel beschermen. Overdag doet Baba Yaga zich voor als een gewone Rode Maagd en stemt met alle anderen.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Draak

Draak 's Nachts vliegt hij over dorpen, bossen en moerassen en houdt zich bezig met overvallen, waarbij hij de rol van de beroofden overdag onthult. Overdag slaapt de Slang, dus hij stemt niet, maar hij kan bij meerderheid van stemmen worden geëxecuteerd. De slang is voor iedereen erg gevaarlijk, vooral voor de rovers en Ivan Tsarevich. Het maakt de slang niet uit wie hij berooft, maar als hij ontdekt wordt door de Wolf of de Leshy, kan hij een waardevolle bondgenoot worden. Als je de slang 's nachts doodt, kun je met enige waarschijnlijkheid een zeer waardevol item ontvangen: de slangenhuid, die de eigenaar één keer tegen fysieke aanvallen zal beschermen.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
beroemde eenogige

beroemde eenogige 's Nachts doodt hij iedereen die hem in de weg staat, en die hij niet kan doden (Leshy, Kota-Bayun of de slang Gorynych), hij vervloekt, zodat iedereen die diezelfde nacht met de verdoemde probeert te communiceren, overdag zal sterven . De verdoemde zelf sterft in dit geval ook, alleen Kot-Bayun sterft niet, die gewoon naar bed gaat om aan te sterken en de volgende nacht zijn beurt overslaat. Alleen Baba Yaga kan Likh van de vloek redden. De vloek heeft geen invloed op degene die de Cat-Bayun heeft verslagen: hij gaat, net als de Cat, gewoon naar bed en slaat een beurt over.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Prinses Kikker

Prinses Kikker kan het spel niet winnen, maar hij kan veel geld verdienen door 's nachts andere spelers te verleiden. De verleidde mist zijn beurt. De kikker kan Vasilisa de Wijze niet verleiden, en ze moet ook Leshy vermijden, die haar de volgende dag aan iedereen zal verraden. Als Ivan de Tsarevitsj of de Leider van de Rovers de Kikker vinden, kunnen ze burgers of de Rovers aan hun zijde uitnodigen, terwijl Ivan de weigering van de Kikker niet zal accepteren, maar de Leider is niet zo kieskeurig. Maar de prinses is behoorlijk sluw, ze kan een dubbelagent worden, want ondanks het feit dat ze niet alleen kan winnen, is dit een uitstekende kans om goud te verdienen, omdat de kansen om te overleven tot het einde van het spel enorm toenemen! Overdag doet de Kikkerprinses zich voor als de Rode Maagd en stemt met iedereen samen.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Koschei de onsterfelijke

Koschei de onsterfelijke woont in zijn kasteel. 'S Nachts loopt hij door de omliggende dorpen en zombiseert hij Good Fellows en Red Maidens, die in zijn dienst komen en zonder twijfel alle bevelen uitvoeren. Door te weigeren een bevel uit te voeren, bijvoorbeeld om overdag anders te stemmen dan wat Koshchei vertelde, of om overdag berichten in de chat te schrijven als Koshchei het verbood, sterft Koshchei's Dienaar. Zo kan Koschey de uitslag van de stemming overdag beïnvloeden, ook al stemt hij zelf niet. Als Koshchei wordt gedood, sterven ook al zijn slachtoffers. Vasilisa kan dienaar Koshchei genezen, die vervolgens terugkeert naar zijn oorspronkelijke rol. De Snake-Gorynych en de Wolf hebben een aangeboren immuniteit tegen zombificatie, dus Koschey kan ze, hoe graag hij ook wil, niet in zijn dienst gebruiken. De Wolf kan Ivan of Vasilisa ook uit de problemen helpen door zichzelf op te offeren. Saved by the Wolf verkrijgt Wolf-immuniteit voor zombificatie.

"Nieuwe heldendichten". Voor ontwikkelaars, ops en nieuwsgierige mensen
Kat Baiyun

Kat Baiyun leeft in het bos, jaagt 's nachts. Overdag slaapt hij in zijn holte, dus hij doet niet mee aan de stemming. Overdag kan hij echter bij meerderheid van stemmen worden geëxecuteerd. De kat kan op twee manieren aanvallen: spinnen - en dan valt zijn slachtoffer in slaap en kan 's nachts niet lopen, en kan de volgende dag niet stemmen - of regelrecht doden met ijzeren klauwen. Aanvallen met klauwen werkt niet op de Snake-Gorynych, en na het aanvallen van Leshy kan het zijn dat de kat helemaal geen klauwen meer heeft! Dashing kan de Kat niet vervloeken, die na de vloek gewoon een nacht zal slapen. Als iemand erin slaagt Kota-Bayun te verslaan, zal hij genezen worden van welke ziekte dan ook, inclusief de vloek van Likh. Deze Cat-vaardigheid blijft tot het einde van het spel bij de speler. De bedienden van Koshchei kunnen overdag niet op de Kat stemmen, maar ze kunnen er indirect achter komen wie de Kat is zonder Koshchei hierover te informeren. Kot-Bayun gaat geen allianties aan met Ivan of de Robbers, dus zij zijn het primaire doelwit voor Kot.

Gebruikte technologieën

Om het spel te schrijven heb ik gekozen voor serverloze computertechnologie op basis van OpenFaaS, omdat het eenvoudig genoeg is om het spel te organiseren, en tegelijkertijd geavanceerd genoeg om complexe spelregels te schrijven zonder onnodige complicaties. Ik zal ook een Kubernetes-cluster gebruiken, omdat deze methode voor het implementeren van applicaties het vrij eenvoudig en betrouwbaar maakt om een ​​snelle implementatie te krijgen en de mogelijkheid om eenvoudig te schalen. Om de spellogica te creëren kun je alleen rondkomen met OpenFaaS, maar ik zal ook proberen de Storyteller als een aparte container te maken om de complexiteit van de implementatie te vergelijken. Als belangrijkste programmeertaal voor microservices en functies heb ik gekozen Go, aangezien ik het in mijn vrije tijd al heel lang bestudeer om Perl te vervangen, en js zal worden gebruikt op basis van een bepaald raamwerk voor gebruikersinteractie met microservices en functies. Over de uiteindelijke beslissing zal ik je vertellen in het overeenkomstige artikel in de serie. Om functies met elkaar te communiceren heb ik voor NATS.io gekozen, omdat ik het al eerder tegenkwam en het vrij makkelijk integreert in Kubernetes.

aankondiging

  • Introductie
  • Het opzetten van de ontwikkelomgeving, het opsplitsen van de taak in functies
  • Back-end werk
  • Frontend werk
  • Opzetten van CICD, organiseren van testen
  • Start een proefspelsessie
  • Resultaten van

Bron: www.habr.com

Voeg een reactie