«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін

Оқырмандардың көптеген сұраныстарына байланысты нақты қосымшаны әзірлеу үшін серверсіз есептеу технологиясын пайдалану туралы мақалалардың үлкен сериясы басталады. Бұл цикл қосымшаларды әзірлеуді, тестілеуді және соңғы пайдаланушыларға заманауи құралдарды пайдалана отырып жеткізуді қамтиды: микросервис қолданбасының архитектурасы (серверсіз нұсқада, негізделген OpenFaaS), кластер кубернеттер қолданбаларды орналастыруға, дерекқорға арналған MongoDB, бұлтты кластерлеуге және қолданбаға, сондай-ақ бұлтты автобусқа бағытталған ТАҒЫ. Қолданба танымал «Мафия» салондық ойынының нұсқаларының бірі «Дастандар» ойынын жүзеге асырады.

«Дастандар» дегеніміз не?

Бұл «Қасқыр» деп те аталатын «Мафия» ойынының нұсқасы. Бұл командалық ойынға негізделген, онда қатысушылар қадам сайын кімнің кім екенін біліп, жеңіске жетуге тырысуы керек. Өкінішке орай, онлайн ойнаған кезде ойынның маңызды құрамдас бөлігі жеке өзара әрекеттесу сияқты жоғалады және классикалық «Мафияның» ережелері өте қарапайым, сондықтан сызықты емес және қызықты ойын ойнау үшін әдетте басқа кейіпкерлер қосылады, бірақ Тұтастай алғанда, бастапқы «мафияның» негізгі ерекшеліктері сақталады, мысалы, күн мен түннің өзгеруі, тек түнде қозғалады, сондай-ақ қатысушылар арасындағы одақтар. Желіде ойнаудың тағы бір маңызды айырмашылығы, хост (ойын шебері, әңгімеші) әдетте компьютерлік бағдарлама болып табылады.

Ойынның сипаттамасы

Мен іске асырғым келетін ойын ережелері 10 жыл бұрын жеке мұрағатымда сақтаған ескі irc боттан алынған. «Дастандарда» әр ойынның басталатын тарихы бар:

Алыстағы патшалықта, отызыншы мемлекетте, жеті теңіздің арғы жағында бірнеше ауыл өмір сүріп, өмір сүрді және оларда Жақсы достар и Әдемі қыздар. Олар нан егіп, айналадағы орманға саңырауқұлақтар мен жидектерді теруге барды... Және бұл ғасырдан ғасырға, жерді қорқынышты апат жер сілкіп, зұлымдық бүкіл әлемге тарай бастағанға дейін жалғасты! Түндер ұзаққа созылып, суық болып, қараңғыда мейірімсіз және қорқынышты жаратылыстар орманды аралап, ауылды аралап кетті. Бір жерден келді Айдаһар Қызыл қыздарды ұрлап, ауыл адамдарының барлық құнды дүниелерін тартып алуды әдетке айналдырды. Зиянды және ашкөз Мыстан кемпір, шалғайдағы ормандардан минометпен ұшып, тұрғындардың санасын шатастырып, тіпті кейбіреулері қолөнерінен бас тартып, тонау үшін орманға кіріп, сол жерде банда құрған. Зұлымдар кездесті Гоблин, ағаштар мен бұталарға айналуды білетін ол бейбіт ауыл тұрғындарын бақылап, қарақшыларға қызмет көрсете бастады, Қайырымдылықтардың өз елді мекендерін зұлым рухтардан тазартатын бірдеңе бар ма, жоқ па деп иіскеді. Қарақшылардың шабуылынан шаршаған жақсы жолдастар мен сұлу қыздар және қорқыныштылардың қолындағы қорқынышты өлім Жалғыз көзді, алтын жинап, көрші қаладан атақты палуанды шақырды - Иван Царевич, ауылды қарақшылардан тазартуға уәде берген. Ормандағы ашық жерде Иван өлімнен құтқарды Сұр қасқыр, Тонаушылардың шұңқырына түскен. Өз кезегінде, Қасқыр Царевичке әртүрлі орман зұлым рухтары туралы хабарлауға уәде берді. Бір атақты емші өтіп бара жатты Дана Василиса, және ол қиыншылықты көргенде, ол шабандоздардың шабуылынан зардап шеккен тұрғындарды емізу үшін қалды. Орманның артында қара сарай пайда болды, онда қауесет бойынша ол қоныстанды Өлімсіз Кощей, ол әр түнде ауылдарды аралап, оның бұйрығын орындамауға батылы бармас үшін, Қайырымдылар мен Қызыл қыздарды сиқырлайды, олар оның айтқанындай жасайды. Жансыз орманға қоныстанды Мысық Байюн, және оны кездестіргендердің бәрі оның ертегілерінен кейін ұйықтап қалды немесе оның темір тырнақтарынан өлді.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Қиыр алыс патшалық

Көріп отырғаныңыздай, ойыншылар бірнеше топқа бөлінеді:

  • бейбіт тұрғындар (Қайырымдылықтар, Қызыл қыздар, Иван Царевич, Сұр қасқыр және Дана Василиса)
  • қарақшылар (қарақшылардың өздері, сондай-ақ Баба Яга мен Леши)
  • тәуелсіз (Жылан-Гориныч, Жалғыз көзді, Бақа ханшайымы, Өлмейтін Кощей, Мысық-Баюн)

Ойынның мақсаты, жоғарыда айтылғандай, тірі қалу және жеңіске жету. Қарсыластар ойыннан бір жолмен кетуі керек, ал тәуелсіздер де ойынның соңына дейін тірі қалуы керек. Ойынның алтыны бар, ойыншылар тек ойында ғана табатын ойын валютасының бір түрі. Жеңімпаздар алтын алады. Алтын неғұрлым көп болса, ойыншының рейтингі соғұрлым жоғары болады.

Мен кейіпкерлердің сипаттамасына толығырақ тоқталамын.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Жақсы жігіт

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Қызыл қыз

Жақсы жігіт и Қызыл қыз - ойындағы ең кең тараған және басты рөл. Бұл түнде ұйықтап, күндіз жұмыс істейтін бейбіт тұрғындар. Түнде оларға қарақшылардың бірі, Жылан Горынич және басқа рөлдер шабуыл жасайды, ал Дана Василиса оларды емдейді. Кішкентай ықтималдықпен Қайырымды стипендиат немесе Қызыл қыз шабуылдан зақымсыз аман қалуы мүмкін (бұл процесте алтын жоғалтуы мүмкін), бірақ шабуылдан кейінгі келесі күні барлығы ойыншының лақап атын таниды. Түнде бұл ойыншылар ешқандай қозғалыс жасамайды, бірақ ойын чатындағы хабарламалар негізінде ойын жағдайын талдайды. Күндізгі уақытта бұл ойыншылар олардың қайсысы Жақсы дос немесе Қызыл қыз емес екенін дауыс беру арқылы шешеді. Басқа ойыншылардың көпшілігі дауыс берген ойыншы ойыннан шығады, қалған ойыншылар алтын алады немесе жоғалтады. Егер ойыншылар көпшілік дауыспен ешкімді таңдамаса, ешбір ойыншы өлім жазасына кесілмейді.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Иван Царевич

Иван Царевич - бастапқыда бейбіт тұрғындардың жасырын қорғаушысы. Түнде ол басқа ойыншылардың рөлдерін тексереді, өйткені ол өзінің одақтастарының бірі - сұр қасқырды ғана біледі. Сұр қасқырдың тікелей қатысуымен (ол басқа ойыншылардың рөлдерін де тексере алады) Иван Царевич тексерудің орнына түнде басқа кейіпкерді өлтіруі мүмкін. Тексеру нәтижесінде Иван Царевич ойыншыдан Жақсы жолдастың немесе Қызыл қыздың рөлін көрсе, онда ол оларды өз орнына шақырып, сұр қасқырмен және басқа да жақсы жолдастармен және қызыл қыздармен таныстыра алады. Иванға күндіз басқа ойыншыларға өз рөлін көрсетпей-ақ түнде азғыратын бақа ханшайымы араласуы мүмкін. Егер Иванның өзі бақа ханшайымын тапса, оны бейбіт тұрғындарға қосылуға шақыра алады, бірақ егер ханшайым бас тартса, ол Иванның қолынан өледі. Жылан-Горыныч Иван-Царевичтің тексерулеріне де кедергі жасай алады, бірақ бақа ханшайымнан айырмашылығы, ол күндіз басқа ойыншыларға олардың қайсысы Иван-Царевич екенін айтады. Күндізгі уақытта Иван Царевич басқа қайырымдылардан еш айырмашылығы жоқ.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Сұр қасқыр

Сұр қасқыр - Иван Царевичтің көмекшісі, оның иіс сезу қабілеті Иванға басқа жақсы достар мен қызыл қыздарды табуға көмектеседі. Сұр қасқыр бұл ойыншыларға Иван Царевичтің кім екенін айтып береді, сонымен қатар жақсы стипендиаттар мен қызыл қыздар рөлдері бар басқа ойыншылар туралы хабарлайды. Қасқыр қарақшыны немесе басқа жауды тапса, келесі түнде әрекет ету үшін Иван Царевичке дереу хабарлайды. Бақа ханшайым қасқырға шабуыл жасаса, ол кәдімгі Қайырымды адамға айналады және ешкімді тексере алмайды, ал Ханшайым оның сұр қасқыр екенін білмейді, өйткені Қасқыр түнде ұйықтамайды. Алайда, Қасқырдың өзі күні бойы ойыншылардың қайсысы Бақа ханшайымы екенін біліп, Иван Царевичке әкелген қалған қайырымды адамдар мен қызыл қыздарды бақаның өліміне дауыс беруге көндіруге тырысады. Ханшайым. Сондай-ақ келесі түнде ол бақа ханшайымын олардың ешқайсысына қол тигізбеуі үшін жасырын түрде бейбіт тұрғындардың жағына көндіруге тырысуы мүмкін. Қасқыр түнде Иван Царевичті немесе Василиса Данышпанды құтқару үшін өзін құрбан ете алады, егер ол кенеттен қарақшылардың шабуылына түседі немесе Кощейдің зомбиіне ұшырады деп болжаса (Қасқыр Кощейдің сүйкімділігіне туа біткен иммунитетке ие), бірақ кейін жанқиярлық қасқыр ойыннан шығып қалады.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Дана Василиса

Дана Василиса - бейбіт тұрғындар үшін ойнайды, бірақ олар ол туралы білмейді, өйткені Василиса өте қарапайым. Сондай-ақ, Василиса Дана, емдегенде, сұрақ қоймайды және жақсы дәрігер сияқты, бәрін емдейді. Бірақ егер Кощей, Лихо немесе Леши оның дәрі-дәрмегін ішсе, олар бір күннен артық өмір сүрмейді, өйткені Василиса тек адамдарды емдейді. Дана Василисаның дәрі-дәрмегі Горыныч жыланына немесе Мысық-Баюнға көмектеспейді, бірақ олар да зиян келтірмейді. Сондай-ақ Кот-Баюн түнде Василисаға тиіспейді, өйткені Василиса Жансыз орманға емдік шөп сатып алуға бармайды. Сонымен қатар, Бақа ханшайымының әйел сүйкімділігі Василисада жұмыс істемейді. Егер олар оның науқасын екі рет өлтірмек болса, дәрі дәрменсіз болар еді. Василиса сізді сиқырлы шабуылдардан, мысалы, Dashing қарғысынан құтқармайды. Күндізгі уақытта Василиса өзін Қызыл қыз сияқты ұстайды, тек өткінші, аздап мұңды көзқарас оның алыс патшалықтағы ең жақсы емші екенін аздап аңғартады.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Rogue

Қарақшылар, барлық алдыңғы рөлдерден айырмашылығы, олар бір-бірін біледі, өйткені олар бір Лаирде тұрады, сонымен қатар Леши мен Баба Яганы біледі, сондықтан олар бірінші қадамнан бастап концертте әрекет ете алады. Бірақ тек банданың Көшбасшысы түнде әрекеттер жасайды және күндіз дауыс бермейді, ал қалған қарақшылар өздерін жақсы достар мен қызыл қыздар ретінде көрсетеді. Егер Көшбасшы қандай да бір себептермен ойыннан шығып қалса, оның орнын бірден қалған алаяқтардың бірі алады. Біріншіден, қарақшылар Иван Царевичті күндізгі уақытта қарақшыларға белсенді түрде қарсы тұру үшін жақсы жолдастар мен қызыл қыздардан жеткілікті күш жинамайынша, оны өшіруге тырысады.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Леши

Леши түнде ол қарақшыларға тыңшылық жасайды, оларға олардың Лайрында табылған рөлдер туралы хабарлайды, бірақ күндіз ол ауылда тұрмайтындықтан дауыс бермейді. Дегенмен, басқа ойыншылар Лешиге дауыс беріп, оны орындай алады. Леши батпақтан келгендіктен, оны Бақа ханшайымы арбауға болмайды, егер ол тырысса, Леши оның үйін белгілейді, ал ауыл тұрғындары оның шын мәнінде кім екенін біледі. Лешем Кощейдің сиқырынан қорықпауы керек, бірақ Василиса оны өлімге дейін емдей алады. Егер Кот-Баюн Лешиге шабуыл жасамақ болса, ол темір тырнақтарынан айырылып қалу қаупі бар, содан кейін Кот жәбірленушілерді тек ызылдағанымен ұйықтатуға мәжбүр етеді.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Мыстан кемпір

Мыстан кемпір Ол сондай-ақ қарақшылармен бірге жұмыс істейді және түнде заклинание жасайды: ол басқа ойыншыларға ауру жібере алады немесе одақтастарының бірін шабуылдан қорғай алады. Оның бақсылығы Лихтің қарғысынан да күшті. Күндіз Баба Яга да белсенді: оның қорғауындағы кез келген адам тіпті көпшілік дауыспен де өлім жазасына кесілмейді. Дегенмен, күндізгі қорғаныс үшін сиқырлы тамырлардың жеткізілімі шектеулі, сондықтан Баба Яга ешкімді, соның ішінде өзін де бір ойынға үш реттен артық қорғай алмайды. Күндіз Баба Яга өзін кәдімгі Қызыл қызға ұқсатып, басқалармен бірге дауыс береді.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Айдаһар

Айдаһар түнде ауылдардың, ормандардың, батпақтардың үстінен ұшып, тонаумен айналысады, күндіз тоналғандардың рөлін ашады. Күндіз Жылан ұйықтайды, сондықтан ол дауыс бермейді, бірақ ол көпшілік дауыспен өлім жазасына кесілуі мүмкін. Жылан барлық адамдар үшін, әсіресе Қарақшылар мен Иван Царевич үшін өте қауіпті. Жыланға оның кімді тонайтыны маңызды емес, бірақ егер оны Қасқыр немесе Леши тауып алса, ол құнды одақтас бола алады. Егер сіз жыланды түнде өлтірсеңіз, сіз өте құнды затты - жылан терісін ала аласыз, ол өз иесін физикалық шабуылдан бір рет қорғайды.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Жалғыз көзді

Жалғыз көзді түнде ол жолына түскендердің барлығын өлтіреді, ал өлтіре алмағандарды (Леши, Кота-Баюн немесе Жылан Горыныч) қарғайды, осылайша қарғыс атқан адаммен сол түні сөйлесуге тырысқан адам күндіз өледі. . Бұл жағдайда қарғыс атқанның өзі де өледі, тек Кот-Баюн ғана өлмейді, ол келесі түнде кезекті өткізіп жіберіп, күш алу үшін төсекке жатады. Лихты қарғыстан тек Баба Яга ғана құтқара алады. Қарғыс Мысық-Баюнды жеңген адамға әсер етпейді: ол мысық сияқты жай ғана төсекке жатады және бұрылысты өткізіп жібереді.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Бақа ханшайым

Бақа ханшайым ойында жеңе алмайды, бірақ түнде басқа ойыншыларды азғырып, көп ақша таба алады. Азғырылған адам өз кезегін өткізіп алады. Бақа Дана Василисаны азғыра алмайды, сонымен қатар ол келесі күні оны бәріне сататын Лешиден аулақ болуы керек. Егер Иван Царевич немесе Қарақшылардың Көшбасшысы бақаны тапса, олар бейбіт тұрғындарды немесе қарақшыларды өз жағына шақыра алады, ал Иван бақаның бас тартуын қабылдамайды, бірақ Көшбасшы соншалықты талғампаз емес. Бірақ ханшайым өте айлакер, ол қос агент бола алады, өйткені ол жалғыз жеңе алмайтынына қарамастан, бұл алтын алудың тамаша мүмкіндігі, өйткені ойынның соңына дейін аман қалу мүмкіндігі айтарлықтай артады! Күндіз Бақа ханшайым өзін Қызыл қызға ұқсатып, барлығымен бірге дауыс береді.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Өлімсіз Кощей

Өлімсіз Кощей оның сарайында тұрады. Түнде ол айналадағы ауылдарды аралап, оның қызметіне кіріп, барлық бұйрықтарды сөзсіз орындайды. Бұйрықты орындаудан бас тарту арқылы, мысалы, күндіз Кощей айтқаннан басқаша дауыс беру немесе Кощей тыйым салса, күндізгі чатта хабарлама жазу арқылы Кощейдің қызметшісі өледі. Осылайша, Кощей өзі дауыс бермесе де, күндізгі дауыс беру нәтижесіне әсер ете алады. Кощей өлтірілсе, оның барлық құрбандары да өледі. Василиса қызметші Кощейді емдей алады, ол кейін өзінің бастапқы рөліне оралады. Жылан-Гориныч пен Қасқырдың зомбилеуге туа біткен иммунитеті бар, сондықтан Кощей қанша қаласа да, оларды өз қызметіне айналдыра алмайды. Қасқыр да Иванға немесе Василисаға өзін құрбан ету арқылы қиындықтан шығуға көмектесе алады. Қасқыр құтқарған Қасқыр зомбиденуге иммунитет алады.

«Жаңа дастандар». Әзірлеушілер, операциялар және қызықты адамдар үшін
Мысық Байюн

Мысық Байюн орманда тұрады, түнде аң аулайды. Күндіз өз ойпаңында ұйықтайды, сондықтан дауыс беруге қатыспайды. Алайда күндіз ол көпшілік дауыспен өлім жазасына кесілуі мүмкін. Мысық екі жолмен шабуыл жасай алады: мырс - содан кейін оның құрбаны ұйықтап қалады және түнде жүре алмайды және келесі күні дауыс бере алмайды - немесе темір тырнақтарымен тікелей өлтіреді. Тырнақпен шабуыл жасау Жылан-Горинычқа әсер етпейді, ал Лешиге шабуыл жасағаннан кейін мысық мүлде тырнақсыз қалуы мүмкін! Дашинг қарғыс атқаннан кейін бір түн ұйықтайтын Мысықты қарғай алмайды. Егер кімде-кім Кота-Баюнды жеңе алса, ол кез келген аурудан немесе аурудан, соның ішінде Лихтің қарғысынан емделеді. Бұл мысық қабілеті ойынның соңына дейін ойыншыда қалады. Кощейдің қызметшілері күндіз Мысыққа дауыс бере алмайды, бірақ олар Кощейге бұл туралы хабарламай-ақ Мысықтың кім екенін жанама түрде біле алады. Кот-Баюн Иванмен немесе қарақшылармен одақ жасамайды, сондықтан олар Кот үшін басты мақсат болып табылады.

Қолданылған технологиялар

Ойынды жазу үшін мен OpenFaaS негізіндегі серверсіз есептеу технологиясын таңдадым, өйткені ол ойынды ұйымдастыруға жеткілікті қарапайым және сонымен бірге күрделі ойын ережелерін қажетсіз қиындықтарсыз жазу үшін жеткілікті дамыған. Мен сондай-ақ Kubernetes кластерін қолданамын, өйткені қолданбаларды орналастырудың бұл әдісі жылдам орналастыруды және оңай масштабтау мүмкіндігін алуды өте қарапайым және сенімді етеді. Ойын логикасын жасау үшін сіз тек OpenFaaS арқылы жұмыс істей аласыз, бірақ мен іске асырудың күрделілігін салыстыру үшін Storyteller-ді бөлек контейнер ретінде жасауға тырысамын. Микросервистер мен функциялар үшін негізгі бағдарламалау тілі ретінде мен таңдадым Go, өйткені мен бос уақытымда оны Perl-ді ауыстыру үшін ұзақ уақыт бойы зерттеп жүрмін, сондықтан JS микросервистермен және функциялармен пайдаланушы әрекеттесуі үшін белгілі бір құрылым негізінде пайдаланылады. Мен сізге соңғы шешім туралы сериядағы сәйкес мақалада айтамын. Функцияларды бір-бірімен байланыстыру үшін мен NATS.io-ны таңдадым, өйткені мен оны бұрын кездестіргенмін және ол Kubernetes-ке оңай интеграцияланған.

Хабарландыру

  • Кіріспе
  • Әзірлеу ортасын орнату, тапсырманы функцияларға бөлу
  • Backend жұмысы
  • Фронтпен жұмыс
  • CICD орнату, тестілеуді ұйымдастыру
  • Сынақ ойын сеансын бастаңыз
  • Нәтижелері

Ақпарат көзі: www.habr.com

пікір қалдыру