"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa

A causa de nombroses peticions dels lectors, s'està començant una gran sèrie d'articles sobre l'ús de la tecnologia informàtica sense servidor per desenvolupar una aplicació real. Aquest cicle cobrirà el desenvolupament, proves i lliurament d'aplicacions als usuaris finals mitjançant eines modernes: arquitectura d'aplicacions de microservei (en una versió sense servidor, basada en OpenFaaS), clúster kubernets per al desplegament d'aplicacions, base de dades MongoDB, centrat en l'agrupació i aplicació de núvols, així com en el bus de núvol NATS. L'aplicació implementa el joc "Epics", una de les variants del popular joc de saló "Mafia".

Què són les "èpiques"?

Aquesta és una variant del joc "Mafia", també coneguda com "home llop". Es basa en un joc d'equip en el qual els participants han d'aprendre pas a pas qui és qui i intentar guanyar. Malauradament, quan es juga en línia, un component tan important del joc com la interacció personal desapareix, i les regles de la clàssica "Màfia" són bastant simples, per tant, per a un joc més no lineal i interessant, normalment s'afegeixen altres personatges, però en general, es conserven les principals característiques de la "Màfia" original, per exemple, el canvi de dia i de nit, els moviments només a la nit, així com les aliances entre els participants. Una altra diferència important entre jugar en línia és que l'amfitrió (també conegut com Game Master, Storyteller) sol ser un programa informàtic.

Descripció del joc

Les regles del joc que vull implementar estan extretes d'un bot irc antic que vaig guardar al meu arxiu personal fa uns 10 anys. "Epics" té una història de fons amb la qual comença cada joc:

En el llunyà regne, en el trentè estat, més enllà dels set mars, hi vivien i vivien diversos pobles, i en ells Bons companys и Noies guapes. Van sembrar pa i van anar al bosc dels voltants a collir bolets i baies... I això va continuar de segle en segle, fins que una terrible catàstrofe va sacsejar la Terra i el mal va començar a estendre's per tot el món! Les nits es feien llargues i fredes, i a la foscor, criatures cruels i terribles rondaven pel bosc i es dirigien al poble. Arribat d'algun lloc Drac i es va acostumar a robar donzelles vermelles i a endur-se tot allò valuós als vilatans. Nocius i cobdiciosos Baba Yaga, que va volar sobre un morter des de boscos llunyans, va confondre la ment dels habitants, i fins i tot alguns van abandonar el seu ofici i van entrar al bosc a robar, formant-hi una colla. Els vilans es van conèixer Goblin, que sabia convertir-se en arbres i arbustos, va començar a vigilar els vilatans pacífics i a servir els lladres, ensumant si els Bons companys estaven fent alguna cosa per alliberar els seus assentaments dels mals esperits. Bons companys i boniques donzelles, cansats de les incursions dels lladres i de morts terribles a mans dels terribles. Aclaparador d'un sol ull, va recollir or i va convidar a un famós lluitador d'una ciutat veïna - Ivan Tsarevitx, que va prometre desfer el poble dels lladres. En una clariana del bosc, l'Ivan es va salvar d'una mort segura Llop Gris, que va caure a la trampa dels lladres. A canvi, el Llop va prometre informar el Tsarevitx sobre diversos esperits malignes del bosc. Va passar un famós curandero Vasilisa la Savia, i quan va veure problemes, es va quedar a alletar els residents que havien patit els atacs dels avenços. Darrere del bosc va aparèixer un palau negre, en el qual, segons els rumors, es va instal·lar Koschei l'immortal, cada nit visitava els pobles i embruixava els Bons Gents i Donzelles Roges perquè no gosessin desobeir les seves ordres, ho farien tot com ell deia. I es va establir al bosc sense vida Gat Baiyun, i tots els que el van conèixer es van adormir després dels seus contes o van morir a causa de les seves urpes de ferro.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Regne molt llunyà

Com ja podeu veure, els jugadors es divideixen en diversos grups:

  • civils (Good Fellows, Red Maidens, Ivan Tsarevitx, Grey Wolf i Vasilisa the Wise)
  • lladres (els mateixos lladres, així com Baba Yaga i Leshy)
  • independent (Snake-Gorynych, Dashing One Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

L'objectiu del joc, com s'ha esmentat anteriorment, és mantenir-se viu i guanyar. Els oponents han d'abandonar el joc d'una manera o altra, i els independents també han de romandre vius fins al final del joc. El joc té or, una mena de moneda del joc que els jugadors només guanyen dins del joc. Els guanyadors reben l'or. Com més or, més alta serà la qualificació del jugador.

M'atendré una mica més en la descripció dels personatges.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Bon company

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Donzella Roja

Bon company и Donzella Roja - el paper més estès i principal en el joc. Es tracta de civils que dormen de nit i treballen de dia. A la nit són atacats per un dels lladres, la Serp Gorynych i altres papers, i Vasilisa la Savia els cura. Amb una petita probabilitat, el bon company o la donzella vermella poden sobreviure a l'atac sense danys (possiblement perdent or en el procés), però, tothom reconeixerà el sobrenom del jugador l'endemà després de l'atac. A la nit, aquests jugadors no fan cap moviment, sinó que analitzen la situació del joc a partir dels missatges del xat del joc. Durant el dia, aquests jugadors decideixen votant quin d'ells no és el bon company o la donzella vermella. El jugador votat per la majoria dels altres jugadors abandona el joc, els jugadors restants reben o perden or. Si els jugadors no escullen ningú per majoria de vots, cap jugador serà executat.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Ivan Tsarevitx

Ivan Tsarevitx - inicialment un defensor anònim dels civils. A la nit, comprova els papers dels altres jugadors, ja que només coneix un dels seus aliats: el Llop Gris. Amb la participació directa del Llop Gris (que també pot comprovar els papers d'altres jugadors), Ivan Tsarevich, en lloc de comprovar, pot matar un altre personatge a la nit. Si, com a resultat del control, Ivan Tsarevitx veu el paper d'un bon company o d'una donzella vermella en un jugador, pot convidar-los al seu lloc i presentar-los al llop gris i altres bons companys i donzelles vermelles. L'Ivan pot ser interferit per la Princesa Granota, que el pot seduir a la nit, sense revelar el seu paper a altres jugadors durant el dia. Si el mateix Ivan descobreix la Princesa Granota, pot convidar-la a unir-se als civils, però si la Princesa es nega, mor a mans d'Ivan. El Serpent-Gorynych també pot interferir amb els controls d'Ivan-Tsarevitx, però, a diferència de la Princesa Granota, durant el dia dirà als altres jugadors quin d'ells és Ivan-Tsarevitx. Durant el dia, Ivan Tsarevich no és diferent d'altres bons companys.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Llop gris

Llop gris - assistent d'Ivan Tsarevich, el sentit de l'olfacte del qual l'ajuda a trobar altres bons companys i donzelles vermelles. Grey Wolf explica a aquests jugadors qui és Ivan el Tsarevitx i també informa sobre altres jugadors amb els papers de Good Fellows i Red Maidens. Si el Llop descobreix un lladre o un altre enemic, immediatament ho informa a Ivan Tsarevitx perquè pugui prendre mesures la nit següent. Si el llop és atacat per la princesa granota, es converteix en un bon company normal i no pot comprovar a ningú, i la princesa no sabrà que en realitat era el llop gris, ja que el llop no dorm a la nit. No obstant això, el mateix Llop esbrinarà durant el dia quin dels jugadors és la Princesa Granota, i pot intentar persuadir la resta de Bons companys i Donzelles Vermelles, que va portar a Ivan Tsarevitx, per votar a favor de l'execució de la Granota. Princesa. També la nit següent, pot intentar persuadir de manera anònima la Princesa Granota al costat dels civils perquè no els toqui cap. El Llop pot sacrificar-se a la nit per salvar Ivan Tsarevitx o Vasilisa la Savia, si suposa que cauran de sobte sota l'atac dels lladres, o si han estat zombificats per Koshchei (el Llop té una immunitat innata als encants de Koshchei), però el El llop, després de l'abnegació, abandona el joc.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Vasilisa la Savia

Vasilisa la Savia - juga per a civils, però no la coneixen, ja que Vasilisa és molt modesta. A més, Vasilisa la Sàvia, quan tracta, no fa preguntes i, com un bon metge, tracta a tothom. Però si Koschey, Likho o Leshy beuen la seva medicina, no viuran més d'un dia, ja que Vasilisa només tracta persones. La medicina de Vasilisa la Sàvia tampoc no ajudarà a la serp Gorynych ni al Cat-Bayun, però tampoc provocaran danys. A més, Kot-Bayun no toca Vasilisa a la nit, ja que Vasilisa no va al Bosc Sense Vida a comprar herbes medicinals. A més, els encants femenins de la Princesa Granota no funcionen a Vasilisa. Si intentessin matar el seu pacient dues vegades, la medicina seria impotent. Vasilisa no us salvarà d'atacs màgics, per exemple, de la maledicció Dashing. Durant el dia, la Vasilisa es comporta com una Donzella Vermella, i només una mirada fugaç i una mica trista pot insinuar una mica que és la millor sanadora del Regne Llunyà.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Canalla

Lladres, a diferència de tots els papers anteriors, es coneixen, ja que viuen al mateix cau, i també coneixen a Leshy i Baba Yaga, de manera que poden actuar en concert des del primer pas. Però només el líder de la colla realitza accions a la nit i no vota durant el dia, mentre que la resta dels lladres es fan passar diligentment per ser Bons companys i Donzelles vermelles. Si el líder abandona el joc per qualsevol motiu, un dels pícaros restants ocupa immediatament el seu lloc. En primer lloc, els lladres intenten desactivar l'Ivan el tsarèvitx fins que hagi reunit prou forces de Good Fellows i Red Maidens per enfrontar-se activament als lladres durant el dia.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Goblin

Goblin a la nit espia els Lladres, informant-los dels papers que es troben al seu cau, però durant el dia no vota, ja que no viu al poble. Tanmateix, altres jugadors poden votar per Leshy i així executar-lo. Com que el Leshy prové dels pantans, la Princesa Granota no el pot seduir i, si ho intenta, el Leshy marcarà la seva casa i els vilatans descobriran qui és realment. Leshem no hauria de tenir por de l'encanteri de Koshchei, però Vasilisa pot curar-lo fins a la mort. Si Kot-Bayun intenta atacar a Leshy, s'arrisca a perdre les seves urpes de ferro, i llavors Kot haurà d'adormir les víctimes només amb els seus ronrons.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Baba Yaga

Baba Yaga També treballa juntament amb els lladres i llança encanteris a la nit: pot enviar malalties a altres jugadors o protegir un dels seus aliats dels atacs. La seva bruixeria és encara més forta que la maledicció de Likh. Durant el dia, Baba Yaga també està activa: ningú sota la seva protecció no pot ser executat ni tan sols amb un vot majoritari. Tanmateix, l'oferta d'arrels màgiques per a la protecció diürna és limitada, de manera que Baba Yaga no pot protegir ningú, inclosa ella mateixa, més de tres vegades per joc. Durant el dia, Baba Yaga es fa passar per una Donzella Vermella i vota amb tots els altres.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Drac

Drac de nit sobrevola pobles, boscos i pantans i es dedica al robatori, revelant el paper del robat durant el dia. Durant el dia, el Serp dorm, així que no vota, però pot ser executat per majoria de vots. La serp és molt perillosa per a tothom, especialment per als lladres i Ivan Tsarevitx. A la serp no li importa a qui roba, però si és descobert pel Llop o el Leshy, es pot convertir en un aliat valuós. Si mates la serp a la nit, pots, amb certa probabilitat, rebre un article molt valuós: la pell de la serp, que protegirà el seu propietari d'un atac físic.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Aclaparador d'un sol ull

Aclaparador d'un sol ull a la nit mata a tots els que s'interposin en el seu camí, i qui no pot matar (Leshy, Kota-Bayun o la serp Gorynych) maleeix, de manera que qualsevol que intenti comunicar-se amb el condemnat aquella mateixa nit morirà durant el dia. . El mateix condemnat també mor en aquest cas, només no mor Kot-Bayun, que simplement se'n va al llit per agafar forces, saltant-se el seu torn la nit següent. Només Baba Yaga pot salvar Likh de la maledicció. La maledicció no afecta el que va derrotar al Gat-Bayun: ell, com el Gat, simplement se'n va al llit i es salta un torn.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Princesa Granota

Princesa Granota no pot guanyar el joc, però pot guanyar molts diners seduint altres jugadors a la nit. El temptat falla el seu torn. La granota no pot seduir a Vasilisa la Sàvia, i també hauria d'evitar a Leshy, que l'endemà la trairà a tothom. Si Ivan el Tsarevitx o el líder dels lladres troben la granota, poden convidar civils o els lladres al seu costat, mentre que Ivan no acceptarà la negativa de la granota, però el líder no és tan exigent. Però la princesa és bastant astuta, pot convertir-se en un agent doble, perquè malgrat que no pot guanyar sola, aquesta és una excel·lent oportunitat per guanyar or, perquè les possibilitats de sobreviure fins al final del joc augmenten molt! Durant el dia, la Princesa Granota es fa passar per la Donzella Vermella i vota amb tots junts.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Koschei l'immortal

Koschei l'immortal viu al seu castell. A la nit, camina pels pobles dels voltants i zombifica els Bons Fellows i les Donzelles Vermelles, que entren al seu servei i compleixen sense qüestionar totes les ordres. En negar-se a complir una ordre, per exemple, votar durant el dia d'una manera diferent del que va dir Koshchei, o escriure missatges al xat durant el dia si Koshchei ho prohibeix, el servent de Koshchei mor. Així, Koschey és capaç d'influir en els resultats de la votació durant el dia, tot i que ell mateix no vota. Si Koshchei és assassinat, totes les seves víctimes també moren. Vasilisa pot curar Servant Koshchei, que després torna al seu paper original. La Serp-Gorynych i el Llop tenen una immunitat innata a la zombificació, de manera que Koschey, per molt que vulgui, no els pot convertir al seu servei. El llop també pot ajudar l'Ivan o la Vasilisa a sortir dels problemes sacrificant-se. Salvat pel llop adquireix la immunitat del llop a la zombificació.

"Noves èpiques". Per a desenvolupadors, operaris i gent curiosa
Gat Baiyun

Gat Baiyun viu al bosc, caça de nit. Durant el dia dorm al seu buit, així que no participa en la votació. No obstant això, durant el dia pot ser executat per majoria de vots. El gat pot atacar de dues maneres: ronronar -i aleshores la seva víctima s'adorm i no pot caminar de nit, i no pot votar l'endemà- o matar directament amb urpes de ferro. Atacar amb urpes no funciona al Snake-Gorynych, i després d'atacar a Leshy, el gat pot quedar-se sense urpes! Dashing no pot maleir el gat, que després de la maledicció només dormirà una nit. Si algú aconsegueix derrotar en Kota-Bayun, es curarà de qualsevol malaltia o malaltia, inclosa la maledicció de Likh. Aquesta habilitat del gat roman amb el jugador fins al final del joc. Els criats de Koshchei no poden votar pel gat durant el dia, però poden esbrinar indirectament qui és el gat sense informar-ne a Koshchei. Kot-Bayun no entra en aliances amb l'Ivan o els lladres, per la qual cosa són l'objectiu principal de Kot.

Tecnologies utilitzades

Per escriure el joc, vaig triar una tecnologia informàtica sense servidor basada en OpenFaaS, ja que és prou senzilla per organitzar el joc i, alhora, prou avançada per escriure regles de joc complexes sense complicacions innecessàries. També faré servir un clúster de Kubernetes, ja que aquest mètode de desplegament d'aplicacions fa que sigui bastant senzill i fiable obtenir un desplegament ràpid i la possibilitat d'escalar fàcilment. Per crear la lògica del joc, només us podeu sortir amb OpenFaaS, però també intentaré fer que el Storyteller sigui un contenidor separat per comparar la complexitat de la implementació. Com a llenguatge de programació principal per a microserveis i funcions, vaig triar Go, ja que l'he estat estudiant durant molt de temps en el meu temps lliure per substituir Perl, i s'utilitzarà js en funció d'un marc determinat per a la interacció de l'usuari amb microserveis i funcions. Us explicaré la decisió final a l'article corresponent de la sèrie. Per comunicar funcions entre si, vaig triar NATS.io, perquè ja l'havia trobat abans i s'integra bastant fàcil a Kubernetes.

Anunci

  • Introducció
  • Configuració de l'entorn de desenvolupament, desglossament de la tasca en funcions
  • Treball de backend
  • Treball frontal
  • Configuració del CICD, organització de proves
  • Inicieu una sessió de joc de prova
  • Resultats de

Font: www.habr.com

Afegeix comentari