"Novas épicas". Para desenvolvedores, operarios e curiosos

"Novas épicas". Para desenvolvedores, operarios e curiosos

Por demanda popular, comezamos unha importante serie de artigos sobre o uso da tecnoloxía de computación sen servidor para o desenvolvemento de aplicacións no mundo real. Esta serie abarcará o desenvolvemento, as probas e a entrega de aplicacións aos usuarios finais mediante ferramentas modernas: unha arquitectura de aplicacións de microservizos (nunha versión sen servidor, baseada en OpenFaaS), clúster kubernetes para despregar a aplicación, a base de datos MongoDB, centrado na agrupación en clústeres e aplicacións na nube, así como no bus da nube NATSA aplicación implementa o xogo "Bylina", unha variante do popular xogo de salón "Mafia".

Que son as "Bylinas"?

Esta é unha variante do xogo "Mafia", tamén coñecido como "Licántropo". Está baseado no xogo en equipo, onde os xogadores deben descubrir quen é quen paso a paso e intentar gañar. Desafortunadamente, o xogo en liña elimina o elemento crucial da interacción persoal. Aínda que as regras do "Mafia" clásico son bastante sinxelas, adoitan engadirse outros personaxes para facer o xogo máis non lineal e atractivo. Non obstante, as características principais do "Mafia" orixinal xeralmente consérvanse, como o ciclo día/noite, os turnos só de noite e as alianzas entre xogadores. Outra distinción importante do xogo en liña é que o anfitrión (tamén coñecido como mestre do xogo ou narrador) adoita ser un programa informático.

Descrición do xogo

As regras do xogo que quero implementar están tomadas dun antigo bot de IRC que gardei no meu arquivo persoal hai uns 10 anos. "Byliny" ten unha historia de fondo que comeza cada xogo:

No reino afastado, no estado afastado, alén dos sete mares, vivían varias aldeas, e nelas Bos compañeiros и Doncellas fermosasSementaron gran e foron ao bosque próximo a recoller cogomelos e bagas... E así continuou durante séculos, ata que unha terrible catástrofe sacudiu a Terra e o mal comezou a estenderse por todo o mundo! As noites volvéronse longas e frías, e na escuridade, criaturas crueis e terribles rondaban o bosque e entraban na aldea. De algún lugar chegaron voando... Serpe Gorynych e comezou a roubar fermosas mozas e a quitarlles todo o que tiña de valioso aos aldeáns. Prexudiciais e avariciosos Baba Yaga, que voou nun morteiro dende os bosques distantes, confundiu as mentes dos habitantes, e algúns incluso abandonaron o seu oficio e entraron no bosque a roubar, formando alí unha banda. Os viláns coñecéronse Leshy, que podían transformarse en árbores e arbustos, comezou a espiar os aldeáns pacíficos e servir aos ladróns, indagando se os Homes Bos estaban a tramar algo para librar os seus asentamentos dos espíritos malignos. Os Homes Bos e as Doncelas Belas, cansados ​​das incursións dos Ladróns e das terribles mortes a mans dos terribles Un só ollo atrevido, recolleu ouro e convidou a un loitador famoso dunha cidade veciña - Iván Tsarevich, que prometeu librar a aldea de bandidos. Nun claro do bosque, Iván salvounos dunha morte segura. Lobo gris, que caeu na trampa dos ladróns. A cambio, o lobo prometeu informar ao tsarévich sobre varios espíritos malignos do bosque. Un famoso curandeiro pasaba por alí. Vasilisa a Sabia, e cando viu problemas, quedou para coidar dos residentes que sufriran os ataques dos malvados. Alén do bosque, apareceu un palacio negro, no que, segundo os rumores, un home negro fixara a súa residencia. Koschei o InmortalTodas as noites visitaba as aldeas e enfeitizaba os Homes Bos e as Doncelas Belas para que non se atrevesen a desobedecer as súas ordes, senón que fixesen todo o que el dicía. E estableceuse no Bosque Sen Vida Cat-Bayun, e todos os que o coñeceron caeron nun sono profundo despois dos seus contos ou morreron por mor das súas garras de ferro.

"Novas épicas". Para desenvolvedores, operarios e curiosos
O Reino Lonxano

Como podes ver, os xogadores divídense en varios grupos:

  • civís (Bos Compañeiros, Doncelas Vermellas, Iván Tsarevich, Lobo Gris e Vasilisa a Sabia)
  • ladróns (ladróns propiamente ditos, así como Baba Yaga e Leshy)
  • independente (Gorynych a serpe, Likho dun só ollo, A princesa ra, Koschei o inmortal, Bayun o gato)

O obxectivo do xogo, como se mencionou anteriormente, é manterse con vida e gañar. Os opoñentes deben ser eliminados dun xeito ou doutro, mentres que os xogadores independentes tamén deben sobrevivir ata o final. O xogo inclúe ouro, un tipo de moeda do xogo que os xogadores só gañan dentro do xogo. Os gañadores reciben ouro. Canto máis ouro, maior será a clasificación do xogador.

Detendereime un pouco máis en detalle na descrición dos personaxes.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Bo compañeiro

"Novas épicas". Para desenvolvedores, operarios e curiosos
Doncela Vermella

Bo compañeiro и Doncela Vermella — o rol máis común e principal do xogo. Trátase de cidadáns pacíficos que dormen pola noite e traballan durante o día. Pola noite, son atacados por bandidos, o Dragón Gorynych e outros roles, e Vasilisa a Sabia cúraos. Existe unha pequena posibilidade de que un Bo Compañeiro ou unha Doncela Vermella poidan sobrevivir ao ataque ilesos (posiblemente perdendo ouro), pero todos coñecerán o alcume do xogador o día despois do ataque/defensa. Pola noite, estes xogadores non fan ningún movemento, senón que analizan a situación do xogo en función das mensaxes do chat do xogo. Durante o día, estes xogadores votan para determinar quen non é un Bo Compañeiro ou unha Doncela Vermella. O xogador polo que a maioría dos outros xogadores votaron abandona o xogo e os xogadores restantes gañan ou perden ouro. Se a maioría dos xogadores non elixen a alguén, ninguén será executado.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Iván Tsarevich

Iván Tsarevich — un protector inicialmente anónimo dos civís. Pola noite, comproba os papeis doutros xogadores, xa que só coñece un aliado: o Lobo Gris. Coa participación directa do Lobo Gris (que tamén pode comprobar os papeis doutros xogadores), Ivan Tsarevich, en lugar de comprobar, pode matar outro personaxe pola noite. Se, despois de comprobar, Ivan Tsarevich ve que un xogador ten o papel dun Bo Compañeiro ou dunha Doncela Vermella, pode convidalos á súa casa e presentalos ao Lobo Gris e a outros Bos Compañeiros e Doncelas Vermellas. Ivan pode ser frustrado pola Princesa Ra, que pode seducilo pola noite sen revelar o seu papel aos outros xogadores durante o día. Se o propio Ivan descobre á Princesa Ra, pode convidala a unirse aos civís, pero se a Princesa se nega, Ivan mátaa. O Dragón-Gorynych tamén pode interferir nas comprobacións de Ivan Tsarevich, pero, a diferenza da Princesa Ra, durante o día dirá aos outros xogadores cal deles é Ivan Tsarevich. Durante o día, Ivan Tsarevich non é diferente dos outros Bos Compañeiros.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Lobo gris

Lobo gris — O axudante de Ivan Tsarevich, cuxo agudo sentido do olfacto axuda a Ivan a localizar outros Homes Bos e Doncelas Belas. O Lobo Gris dilles a estes xogadores quen é Ivan Tsarevich e tamén os informa doutros xogadores que desempeñan os papeis de Homes Bos e Doncelas Belas. Se o Lobo ve un ladrón ou outro inimigo, informa inmediatamente a Ivan Tsarevich para que poida actuar a noite seguinte. Se o Lobo é atacado pola Princesa Ra, transfórmase nun Home Bos normal e non pode comprobar como está ninguén, e a Princesa non saberá que en realidade foi o Lobo Gris, xa que o Lobo non dorme pola noite. Non obstante, o propio Lobo saberá durante o día que xogador é a Princesa Ra e pode intentar persuadir aos outros Homes Bos e Doncelas Belas que lle trouxo a Ivan Tsarevich para que voten a favor da execución da Princesa Ra. A noite seguinte, tamén pode intentar persuadir anonimamente á Princesa Ra para que se poña do lado dos civís, para que non lles faga dano a ningún deles. O Lobo pode sacrificarse pola noite para salvar a Ivan Tsarevich ou a Vasilisa a Sabia se sospeita que serán atacados por bandidos ou que foron zombificados por Koschei (o Lobo ten unha inmunidade innata aos encantos de Koschei), pero despois do sacrificio, o Lobo é eliminado do xogo.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Vasilisa a Sabia

Vasilisa a Sabia — xoga para os civís, pero non saben nada dela, xa que Vasilisa é moi modesta. Vasilisa a Sabia tampouco fai preguntas cando cura e, como unha boa doutora, trata a todo o mundo. Non obstante, se Koshchei, Likho ou Leshy beben a súa medicina, non vivirán máis dun día, xa que Vasilisa só cura á xente. A medicina de Vasilisa a Sabia non axudará á Serpe Gorynych nin ao Gato Bayun, pero tampouco lles fará dano. O Gato Bayun tampouco molesta a Vasilisa pola noite, xa que Vasilisa non vai ao Bosque Sen Vida a buscar herbas medicinais. Ademais, os encantos femininos da Princesa Ra non funcionan con Vasilisa. Se alguén intenta matar ao seu paciente dúas veces, a súa medicina será ineficaz. Vasilisa tampouco a protexerá de ataques máxicos, como a maldición de Likho. Durante o día, Vasilisa compórtase coma unha Doncela Vermella, e só unha ollada fugaz e lixeiramente triste pode insinuar un pouco que é a mellor curandeira do Reino Lonxano e Lonxano.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Ladrón

LadrónsA diferenza de todos os papeis anteriores, os membros da banda coñécense entre si, xa que comparten o mesmo gorido, e tamén coñecen a Leshy e Baba Yaga, polo que poden actuar en conxunto desde o primeiro turno. Non obstante, só o líder da banda realiza accións pola noite e non vota durante o día, mentres que os outros bandidos finxen dilixentemente ser bos compañeiros e doncelas xustas. Se o líder é eliminado por calquera motivo, un dos bandidos restantes ocupa inmediatamente o seu lugar. Os bandidos primeiro intentan desactivar a Ivan Tsarevich antes de que poida reunir suficientes bos compañeiros e doncelas xustas para enfrontarse activamente aos bandidos durante o día.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Trasno

Trasno Pola noite, espía para os Bandidos, informando sobre os papeis descubertos no seu Covil, pero non vota durante o día, xa que non vive na aldea. Non obstante, outros xogadores poden votar por Leshy, executándoo así. Como Leshy provén dos pantanos, non pode ser seducido pola Princesa Ra, e se ela o intenta, Leshy marcará a súa casa e os aldeáns descubrirán a súa verdadeira identidade. Leshy tampouco ten que temer os encantos de Koschei, pero Vasilisa pode curalo ata a morte. Se Bayun o Gato intenta atacar a Leshy, corre o risco de perder as súas garras de ferro, obrigando ao Gato a adormecer as súas vítimas só co seu ronroneo.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Baba Yaga

Baba Yaga Tamén traballa cos Ladróns, lanzando feitizos pola noite: pode enfermar a outros xogadores ou protexer a un aliado dun ataque. Os seus feitizos son incluso máis fortes que a maldición do Mal. Baba Yaga tamén está activa durante o día: calquera persoa baixo a súa protección non pode ser executada, nin sequera por maioría de votos. Non obstante, a subministración de raíces máxicas para a protección diúrna é limitada, polo que Baba Yaga non pode protexer a ninguén, incluída a si mesma, máis de tres veces por partida. Durante o día, Baba Yaga disfrázase como unha Doncela Vermella común e vota con todos os demais.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Serpe Gorynych

Serpe Gorynych Pola noite, a Serpe voa sobre aldeas, bosques e pantanos, cometendo roubos e revelando a identidade da parte roubada durante o día. Durante o día, a Serpe dorme e, polo tanto, non vota, pero pode ser executada por maioría de votos. A Serpe é moi perigosa para todos, especialmente para os Ladróns e Ivan Tsarevich. Á Serpe non lle importa a quen rouba, pero se o Lobo ou Leshy revelan a súa identidade, pode converterse nun valioso aliado. Matar a Serpe pola noite ten a posibilidade de obter un obxecto moi valioso: unha Pel de Serpe, que protexe ao seu dono dun ataque físico unha vez.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Correndo cun só ollo

Correndo cun só ollo Pola noite, mata a todos os que atopa, e aos que non pode matar (Leshy, Bayun o Gato ou a Serpe Gorynych) maldíceos, de xeito que calquera que intente comunicarse co maldito esa noite morrerá nun día. O maldito tamén morre, agás Bayun o Gato, que simplemente se vai durmir para gañar forza, saltándose un turno a noite seguinte. Só Baba Yaga pode salvar a alguén da maldición de Likh. A maldición tampouco ten efecto en ninguén que derrote a Bayun o Gato: el, como o Gato, simplemente se vai durmir e salta un turno.

"Novas épicas". Para desenvolvedores, operarios e curiosos
A princesa ra

A princesa ra Ela non pode gañar o xogo, pero pode gañar moito diñeiro seducindo a outros xogadores pola noite. Calquera persoa seducida perde unha quenda. A Ra non pode seducir a Vasilisa a Sabia, e tamén debe evitar aos Leshy, que a traizoarán a todos ao día seguinte. Se Ivan Tsarevich ou o Xefe Ladrón atopan á Ra, poden invitar a civís ou ladróns ao seu lado. Ivan non aceptará unha negativa da Ra, pero o Xefe é menos perspicaz. Non obstante, a Princesa Ra é o suficientemente astuta como para converterse nunha axente dobre. Aínda que non pode gañar soa, esta é unha excelente oportunidade para gañar ouro, xa que as súas posibilidades de sobrevivir ata o final do xogo aumentan moito! Durante o día, a Princesa Ra disfrázase de Doncela Vermella e vota con todos os demais.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Koschei o Inmortal

Koschei o Inmortal Vive no seu castelo. Pola noite, vaga polas aldeas dos arredores, zombificando a Bos Compañeiros e a Doncelas Fermosas, que logo o serven e cumpren as súas ordes sen cuestionar. Se se nega a seguir unha orde, por exemplo, votar de forma diferente durante o día do que Koschei indicou, ou escribir mensaxes no chat durante o día se Koschei o prohibiu, o Servo de Koschei morre. Así, Koschei pode influír nos resultados da votación diúrna, aínda que el mesmo non vote. Se Koschei morre, todas as súas vítimas tamén morren. Vasilisa pode curar ao Servo de Koschei, que entón volve ao seu papel orixinal. A Serpe Gorynych e o Lobo teñen unha inmunidade innata á zombificación, polo que Koschei non pode convertelos ao seu servizo aínda que quixese. O Lobo tamén pode rescatar a Ivan ou Vasilisa dos problemas sacrificándose. Aqueles que salva o Lobo obteñen a inmunidade do Lobo á zombificación.

"Novas épicas". Para desenvolvedores, operarios e curiosos
Cat-Bayun

Cat-Bayun Vive no bosque e caza pola noite. Durante o día, dorme no oco da súa árbore, polo que non participa nas votacións. Non obstante, pode ser executado por maioría de votos durante o día. O Gato pode atacar de dúas maneiras: ronroneando, o que fai que a súa vítima adormeza e non poida moverse durante a noite, e votando ao día seguinte. Ou pode matar inmediatamente coas súas garras de ferro. Os ataques de garras non funcionan co Serpent Gorynych, e despois de atacar o Leshy, o Gato pode perder as súas garras por completo! O Mal non pode maldicir o Gato, que simplemente durmirá unha noite despois da maldición. Se alguén consegue derrotar o Gato Bayun, calquera enfermidade ou aflición, incluída a maldición do Mal, será curada. Esta habilidade do Gato permanece co xogador ata o final do xogo. Os servos de Koschei non poden votar polo Gato durante o día, pero poden descubrir indirectamente a identidade do Gato sen informar a Koschei. Bayun o Gato non entra en alianzas con Ivan nin cos Ladróns, polo que son o obxectivo principal do Gato.

Tecnoloxías empregadas

Para escribir o xogo, elixín tecnoloxía de computación sen servidor baseada en OpenFaaS, xa que é o suficientemente sinxela para organizar o xogo, pero o suficientemente sofisticada como para escribir regras de xogo complexas sen complicacións innecesarias. Tamén usarei un clúster de Kubernetes, xa que este método de despregamento de aplicacións permite un despregamento rápido e fiable e unha escalabilidade sinxela. OpenFaaS por si só é suficiente para crear a lóxica do xogo, pero tamén tentarei compilar Storyteller como un contedor separado para comparar a complexidade da implementación. Elixín a linguaxe de programación principal para microservizos e funcións. Go, xa que o levo aprendendo no meu tempo libre como substituto de Perl. Para a interacción do usuario con microservizos e funcións usarase JavaScript baseado nun determinado marco de traballo. Falarei da decisión final no artigo correspondente da serie. Escollín NATS.io para a comunicación entre funcións porque o xa usara antes e intégrase con bastante facilidade con Kubernetes.

Anuncio

  • Introdución
  • Configurar o ambiente de desenvolvemento, dividindo a tarefa en funcións
  • Traballo de backend
  • Traballo frontend
  • Creación do CICD, organización de probas
  • Inicia unha sesión de xogo de proba
  • Resultados de

Fonte: www.habr.com

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster