„Нови епоси“. За разработчици, оператори и любопитни хора

„Нови епоси“. За разработчици, оператори и любопитни хора

Поради многобройни искания от читатели, започва голяма поредица от статии за използването на компютърна технология без сървър за разработване на реално приложение. Този цикъл ще обхване разработката, тестването и доставката на приложения до крайните потребители с помощта на модерни инструменти: архитектура на приложения за микросервизи (във версия без сървър, базирана на OpenFaaS), клъстер кубернети за внедряване на приложения, база данни MongoDB, фокусиран върху облачно клъстериране и приложение, както и облачна шина NATS. Приложението реализира играта "Epics", един от вариантите на популярната салонна игра "Mafia".

Какво представляват "Епосите"?

Това е вариант на играта "Мафия", известна още като "Върколак". Базира се на отборна игра, в която участниците трябва да научат стъпка по стъпка кой кой е и да се опитат да спечелят. За съжаление, когато играете онлайн, такъв важен компонент на играта като личното взаимодействие изчезва и правилата на класическата „Мафия“ са доста прости, следователно за по-нелинеен и интересен геймплей обикновено се добавят други герои, но като цяло основните характеристики на оригиналната „мафия“ са запазени, например смяната на деня и нощта, движенията само през нощта, както и съюзите между участниците. Друга важна разлика между играта онлайн е, че хостът (известен още като Game Master, Storyteller) обикновено е компютърна програма.

Описание на играта

Правилата на играта, които искам да внедря, са взети от стар irc бот, който запазих в личния си архив преди около 10 години. "Epics" имат предистория, с която започва всяка игра:

В далечното царство, в тридесетата държава, отвъд седемте морета, живеели и живеели няколко села и в тях Браво приятели и Красиви момичета. Сеят хляб и отиват в гората наоколо да берат гъби и горски плодове... И това продължава от век на век, докато страшна катастрофа разтърси Земята и злото започна да се разпространява по света! Нощите станаха дълги и студени, а в тъмнината недобри и ужасни същества обикаляха гората и се скитаха в селото. Пристигнал отнякъде Змей Горинич и придобиха навика да крадат Червени момичета и да отнемат всичко ценно от селяните. Вреден и алчен Баба Яга, които долетяха на минохвъргачка от далечни гори, объркаха умовете на жителите и дори някои се отказаха от занаята си и отидоха в гората да грабят, образувайки там банда. Злодеите се срещнаха Гоблин, който умееше да се превръща в дървета и храсти, той започна да наблюдава мирните селяни и да служи на разбойниците, надушвайки дали Добрите хора са намислили нещо, за да отърват селищата им от злите духове. Добри хора и красиви девойки, уморени от набезите на разбойниците и ужасните смъртни случаи от ръцете на ужасните Елегантен едноок, събра злато и покани известен борец от съседен град - Иван Царевич, който обещал да отърве селото от разбойници. На една поляна в гората Иван спаси от сигурна смърт Сив вълк, който попадна в ямата капан на Разбойниците. В замяна Вълкът обеща да информира Царевич за различни горски зли духове. Мина известен лечител Василиса Премъдра, а когато видяла беда, останала да се грижи за жителите, пострадали от нападенията на нахалните. Зад гората се появи черен дворец, в който според слуховете той се установи Кошчей Безсмъртният, всяка вечер той обикаляше селата и омагьосваше Добрите и Червените моми, за да не посмеят да не се подчинят на заповедите му, щяха да направят всичко, както каза. И се заселил в Безжизнената гора Котка Байюн, и всички, които го срещнаха, заспаха след приказките му или умряха от железните му нокти.

„Нови епоси“. За разработчици, оператори и любопитни хора
Далечното кралство

Както вече можете да видите, играчите са разделени на няколко групи:

  • цивилни (Добри приятели, Червени девойки, Иван Царевич, Сив вълк и Василиса Мъдрата)
  • разбойници (самите разбойници, както и Баба Яга и Леши)
  • независим (Snake-Gorynych, Dashing One Eyed, Frog Princess, Koschey Immortal, Cat-Bayun)

Целта на играта, както бе споменато по-горе, е да останеш жив и да спечелиш. Противниците трябва да напуснат играта по един или друг начин, а независимите също трябва да останат живи до края на играта. Играта има злато, вид валута на играта, която играчите печелят само в рамките на играта. Победителите получават злато. Колкото повече злато, толкова по-висок е рейтингът на играча.

Ще се спра малко по-подробно на описанието на героите.

„Нови епоси“. За разработчици, оператори и любопитни хора
добър приятел

„Нови епоси“. За разработчици, оператори и любопитни хора
Червена девойка

добър приятел и Червена девойка - най-разпространената и основна роля в играта. Това са цивилни, които нощем спят, а денем работят. През нощта те са нападнати от един от разбойниците, Змията Горинич и други роли, а Василиса Мъдрата ги лекува. С малка вероятност Good Fellow или Red Maiden могат да преживеят атаката без щети (възможно е да загубят златото в процеса), но всеки ще разпознае псевдонима на играча на следващия ден след атаката. През нощта тези играчи не правят никакви ходове, а анализират ситуацията в играта въз основа на съобщения в чата на играта. През деня тези играчи решават чрез гласуване кой от тях не е Добрият приятел или Червената девойка. Играчът, за когото са гласували повечето други играчи, напуска играта, останалите играчи получават или губят злато. Ако играчите не изберат никого с мнозинство, никой играч няма да бъде екзекутиран.

„Нови епоси“. За разработчици, оператори и любопитни хора
Иван Царевич

Иван Царевич - първоначално анонимен защитник на цивилни. През нощта той проверява ролите на другите играчи, тъй като познава само един от своите съюзници - Сивия вълк. С прякото участие на Сивия вълк (който също може да проверява ролите на други играчи), Иван Царевич, вместо да проверява, може да убие друг герой през нощта. Ако в резултат на проверката Иван Царевич види ролята на Добър приятел или Червена девойка в играч, тогава той може да ги покани при себе си и да ги запознае със Сивия вълк и други Добри другари и Червени девойки. Иван може да бъде намесен от принцесата жаба, която може да го съблазни през нощта, без да разкрива ролята си на други играчи през деня. Ако самият Иван открие принцесата жаба, той може да я покани да се присъедини към цивилните, но ако принцесата откаже, тя умира в ръцете на Иван. Змията-Горинич също може да се намеси в проверките на Иван-Царевич, но за разлика от принцесата жаба, през деня той ще каже на другите играчи кой от тях е Иван-Царевич. През деня Иван Царевич не се различава от другите добри приятели.

„Нови епоси“. За разработчици, оператори и любопитни хора
сив вълк

сив вълк - помощник на Иван Царевич, чието изострено обоняние помага на Иван да намери други добри приятели и червени девойки. Сивият вълк казва на тези играчи кой е Иван Царевич и също така информира за други играчи с ролите на Добри приятели и Червени девойки. Ако Вълкът открие разбойник или друг враг, той незабавно информира Иван Царевич, за да може да предприеме действия следващата нощ. Ако Вълкът бъде нападнат от принцесата-жаба, той се превръща в обикновен добър приятел и не може да проверява никого, а принцесата няма да разбере, че това всъщност е Сивият вълк, тъй като вълкът не спи през нощта. Въпреки това, самият Вълк ще разбере през деня кой от играчите е принцесата жаба и може да се опита да убеди останалите добри хора и червени девойки, които той доведе при Иван Царевич, да гласуват за екзекуцията на жабата принцеса. Също така на следващата вечер той може да се опита анонимно да убеди принцесата-жаба на страната на цивилни, така че тя да не докосва нито един от тях. Вълкът може да се пожертва през нощта, за да спаси Иван Царевич или Василиса Мъдрата, ако предполага, че те внезапно ще паднат под атаката на разбойници или са били зомбирани от Кошчей (Вълкът има вроден имунитет към очарованието на Кошчей), но след като саможертвата, която Вълкът отпада от играта.

„Нови епоси“. За разработчици, оператори и любопитни хора
Василиса Премъдра

Василиса Премъдра - играе за цивилни, но те не знаят за нея, тъй като Василиса е много скромна. Освен това Василиса Мъдрата, когато лекува, не задава въпроси и като добър лекар лекува всички. Но ако Кошей, Лихо или Леши изпият нейното лекарство, те няма да живеят повече от един ден, тъй като Василиса лекува само хора. Лекарството на Василиса Мъдрата също няма да помогне на змията Gorynych или Cat-Bayun, но те също няма да навредят. Също така Кот-Баюн не докосва Василиса през нощта, тъй като Василиса не отива в Безжизнената гора, за да купи лечебни билки. В допълнение, женските прелести на принцесата жаба не работят върху Василиса. Ако се опитат два пъти да убият пациента й, медицината ще бъде безсилна. Василиса няма да ви спаси от магически атаки, например от проклятието Dashing. През деня Василиса се държи като Червена девойка и само мимолетен, леко тъжен поглед може малко да подскаже, че тя е най-добрият лечител в Далечното царство.

„Нови епоси“. За разработчици, оператори и любопитни хора
Измамник

разбойници, за разлика от всички предишни роли, те се познават, тъй като живеят в една и съща бърлога, а също така познават Леши и Баба Яга, така че могат да действат съвместно от първия ход. Но само лидерът на бандата извършва действия през нощта и не гласува през деня, докато останалите разбойници усърдно се преструват на добри хора и червени девойки. Ако Лидерът напусне играта по някаква причина, един от останалите Мошеници незабавно заема неговото място. На първо място, Разбойниците се опитват да извадят от строя Иван Царевич, докато не събере достатъчно сили от Добри приятели и Червени девойки, за да се изправи активно срещу Разбойниците през деня.

„Нови епоси“. За разработчици, оператори и любопитни хора
дърво таласъм

дърво таласъм през нощта той шпионира за Разбойниците, като ги информира за ролите, открити в тяхното леговище, но през деня не гласува, тъй като не живее в селото. Други играчи обаче могат да гласуват за Леши и по този начин да го екзекутират. Тъй като Леши идва от блатата, той не може да бъде съблазнен от принцесата жаба и ако се опита, Леши ще маркира къщата й и селяните ще разберат коя е тя всъщност. Лешем не трябва да се страхува от заклинанието на Кошчей, но Василиса може да го излекува до смърт. Ако Кот-Баюн се опита да атакува Леши, той рискува да загуби железните си нокти и тогава Кот ще трябва да приспи жертвите само с мъркането си.

„Нови епоси“. За разработчици, оператори и любопитни хора
Баба Яга

Баба Яга Той също така работи заедно с Разбойниците и прави магии през нощта: той може или да изпрати болест на други играчи, или да защити някой от своите съюзници от атака. Нейното магьосничество е дори по-силно от проклятието на Ликх. През деня Баба Яга също е активна: никой под нейна защита не може да бъде екзекутиран дори с мнозинство. Запасът от магически корени за защита през деня обаче е ограничен, така че Баба Яга не може да защитава никого, включително себе си, повече от три пъти на игра. През деня Баба Яга се преструва на обикновена Червена девойка и гласува с всички останали.

„Нови епоси“. За разработчици, оператори и любопитни хора
Дракон

Дракон нощем той лети над села, гори и блата и се занимава с грабежи, разкривайки ролята на ограбените през деня. През деня Змията спи, така че не гласува, но може да бъде екзекутиран с мнозинство. Змията е много опасна за всички, особено за Разбойниците и Иван Царевич. Змията не се интересува кого ще ограби, но ако бъде открита от Вълка или Леши, тя може да стане ценен съюзник. Ако убиете змията през нощта, можете с известна вероятност да получите много ценен предмет - змийската кожа, която ще защити собственика си веднъж от физическа атака.

„Нови епоси“. За разработчици, оператори и любопитни хора
Елегантен едноок

Елегантен едноок през нощта той убива всеки, който се изпречи на пътя му, и когото не може да убие (Леши, Кота-Баюн или Змията Горинич), той проклина, така че всеки, който се опита да общува с проклетия през същата нощ, ще умре през деня . Самият проклет също умира в този случай, само Кот-Баюн не умира, който просто си ляга, за да натрупа сила, пропускайки реда си на следващата вечер. Само Баба Яга може да спаси Лих от проклятието. Проклятието не засяга този, който победи котката-Баюн: той, подобно на котката, просто си ляга и пропуска ред.

„Нови епоси“. За разработчици, оператори и любопитни хора
Принцеса жаба

Принцеса жаба не може да спечели играта, но може да спечели много пари, като съблазнява други играчи през нощта. Изкушеният пропуска своя ред. Жабата не може да съблазни Василиса Мъдрата и тя също трябва да избягва Леши, който ще я предаде на всички на следващия ден. Ако Иван Царевич или водачът на разбойниците намерят жабата, те могат да поканят цивилни или разбойниците на своя страна, докато Иван няма да приеме отказа на жабата, но водачът не е толкова придирчив. Но принцесата е доста хитра, тя може да стане двоен агент, защото въпреки факта, че не може да спечели сама, това е отличен шанс да спечелите злато, защото шансовете за оцеляване до края на играта значително се увеличават! През деня принцесата жаба се преструва на Червената девойка и гласува заедно с всички.

„Нови епоси“. За разработчици, оператори и любопитни хора
Кошчей Безсмъртният

Кошчей Безсмъртният живее в своя замък. През нощта той обикаля околните села и зомбира Добрите приятели и Червените девойки, които идват на служба при него и безпрекословно изпълняват всички заповеди. Отказвайки да изпълни заповед, например да гласува през деня различно от казаното от Кошчей или да пише съобщения в чата през деня, ако Кошчей го е забранил, Слугата на Кошчей умира. По този начин Koschey може да повлияе на резултатите от гласуването през деня, въпреки че самият той не гласува. Ако Кошчей бъде убит, всичките му жертви също умират. Василиса може да излекува слугата Кошчей, който след това се връща към първоначалната си роля. Змията-Горинич и Вълкът имат вроден имунитет към зомбификация, така че Кошчей, колкото и да иска, не може да ги превърне в своя услуга. Вълкът също може да помогне на Иван или Василиса да се измъкнат от беда, като се жертва. Спасен от вълка придобива имунитет на вълк срещу зомбификация.

„Нови епоси“. За разработчици, оператори и любопитни хора
Котка Байюн

Котка Байюн живее в гората, ловува нощем. През деня спи в хралупата си, така че не участва в гласуването. През деня обаче той може да бъде екзекутиран с мнозинство. Котката може да атакува по два начина: мърка - и след това жертвата й заспива и не може да ходи през нощта и не може да гласува на следващия ден - или направо да убие с железни нокти. Атаката с нокти не работи върху Змията-Горинич и след като атакува Леши, Котката може изобщо да остане без нокти! Dashing не може да прокълне Котката, която след проклятието просто ще спи една нощ. Ако някой успее да победи Kota-Bayun, той ще бъде излекуван от всяка болест или болест, включително проклятието на Likh. Тази способност на Cat остава с играча до края на играта. Слугите на Кошчей не могат да гласуват за Котката през деня, но могат косвено да разберат кой е Котката, без да информират Кошчей за това. Кот-Баюн не влиза в съюзи с Иван или Разбойниците, така че те са основната цел за Кот.

Използвани технологии

За да напиша играта, избрах компютърна технология без сървър, базирана на OpenFaaS, тъй като е достатъчно проста за организиране на играта и в същото време достатъчно напреднала, за да напише сложни правила на играта без ненужни усложнения. Ще използвам и клъстер Kubernetes, тъй като този метод за внедряване на приложения го прави доста прост и надежден, за да получите бързо внедряване и възможност за лесно мащабиране. За да създадете логиката на играта, можете да преминете само с OpenFaaS, но аз също ще се опитам да направя Storyteller като отделен контейнер, за да сравня сложността на изпълнението. Като основен програмен език за микроуслуги и функции избрах Go, тъй като го изучавам дълго време в свободното си време, за да заменя Perl и js ще се използва въз основа на определена рамка за взаимодействие на потребителя с микроуслуги и функции. За окончателното решение ще ви разкажа в съответната статия от поредицата. За да комуникирам функции помежду си, избрах NATS.io, защото вече го бях срещал преди и има доста лесна интеграция в Kubernetes.

Съобщение

  • въведение
  • Настройка на средата за разработка, разбиване на задачата на функции
  • Бекенд работа
  • Frontend работа
  • Настройка на CICD, организиране на тестване
  • Започнете пробна игрова сесия
  • Резултати от

Източник: www.habr.com

Добавяне на нов коментар