"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو

با توجه به درخواست‌های متعدد خوانندگان، مجموعه‌ای از مقالات در مورد استفاده از فناوری محاسبات بدون سرور برای توسعه یک برنامه واقعی شروع شده است. این چرخه توسعه، آزمایش و تحویل به کاربران نهایی با استفاده از ابزارهای مدرن را پوشش می‌دهد: معماری اپلیکیشن میکروسرویس (در نسخه بدون سرور، بر اساس OpenFaaS)، خوشه کوبرنتس برای استقرار برنامه، پایگاه داده MongoDB، بر روی خوشه بندی و کاربرد ابر و همچنین گذرگاه ابری متمرکز شده است NATS. این برنامه بازی "Epics" را اجرا می کند، یکی از انواع بازی سالن محبوب "Mafia".

"بیلین" چیست؟

این یک گونه از بازی "مافیا" است که با نام "گرگینه" نیز شناخته می شود. این بر اساس یک بازی تیمی است که در آن شرکت کنندگان باید قدم به قدم یاد بگیرند که کیست و سعی کنند برنده شوند. متأسفانه هنگام بازی آنلاین، مؤلفه مهم بازی مانند تعامل شخصی ناپدید می شود و قوانین کلاسیک "مافیا" کاملاً ساده است ، بنابراین برای یک گیم پلی غیر خطی تر و جالب تر ، معمولاً شخصیت های دیگری اضافه می شوند. به طور کلی ویژگی های اصلی "مافیا" اصلی حفظ می شود، به عنوان مثال، تغییر روز و شب، حرکت فقط در شب، و همچنین اتحاد بین شرکت کنندگان. تفاوت مهم دیگر بین بازی آنلاین این است که میزبان (با نام مستعار Game Master، Storyteller) معمولا یک برنامه کامپیوتری است.

شرح بازی

قوانین بازی که می خواهم پیاده کنم از یک ربات قدیمی irc گرفته شده است که حدود 10 سال پیش در آرشیو شخصی خود ذخیره کردم. "Epics" یک داستان پس زمینه ای دارد که هر بازی با آن شروع می شود:

در پادشاهی دور، در ایالت سی ام، آن سوی هفت دریا، چندین روستا زندگی می کردند و زندگی می کردند و در آنها یاران خوب и دخترای خوشگل. نان کاشتند و برای چیدن قارچ و توت به جنگل های اطراف رفتند... و این قرن به قرن دیگر ادامه داشت تا اینکه فاجعه ای هولناک زمین را تکان داد و شر در سراسر جهان گسترش یافت! شبها طولانی و سرد شد و در تاریکی موجوداتی نامهربان و وحشتناک در جنگل پرسه زدند و به داخل روستا سرگردان شدند. از جایی رسید اژدها و به دزدیدن دوشیزگان سرخ و گرفتن هر چیزی که ارزش دارد از روستاییان عادت کرد. مضر و حریص بابا یاگاکه روی خمپاره ای از جنگل های دور پرواز می کرد، ذهن اهالی را مشوش کرد و حتی برخی از پیشه وری خود دست کشیدند و برای سرقت به جنگل رفتند و در آنجا باندی تشکیل دادند. اشرار ملاقات کردند گابلیناو که می‌دانست چگونه به درخت و بوته تبدیل شود، شروع به زیر نظر گرفتن روستاییان صلح‌جو کرد و به دزدان خدمت کرد و بویید که آیا یاران خوب برای خلاص شدن از شر ارواح شیطانی قصد دارند یا نه. هموطنان خوب و دوشیزگان زیبا، خسته از حملات دزدان، و مرگ های وحشتناک به دست افراد وحشتناک بی باک یک چشم، طلا جمع کرد و یک کشتی گیر معروف را از یک شهر همسایه دعوت کرد - ایوان تسارویچ، که قول داد روستا را از شر دزدان خلاص کند. در یک پاکسازی در جنگل، ایوان از مرگ حتمی نجات یافت گرگ خاکستری، که در دام چاله دزدان افتاد. در مقابل، گرگ قول داد تا تزارویچ را در مورد ارواح شیطانی مختلف جنگل مطلع کند. یک شفا دهنده معروف از آنجا گذشت واسیلیسا حکیمو وقتی مشکلی را دید، ماند تا از اهالی که از حملات تندروها رنج برده بودند، پرستاری کند. در پشت جنگل یک قصر سیاه ظاهر شد که طبق شایعات در آن ساکن شد کوشی بی مرگ، هر شب به روستاها سر می زد و یاران خوب و دوشیزگان سرخ را سحر می کرد تا جرأت نکنند از دستورات او سرپیچی کنند، هر کاری که می گفت انجام می دادند. و در جنگل بی جان ساکن شد گربه بایونو هر کس او را ملاقات کرد پس از قصه هایش به خواب رفت یا از چنگال های آهنینش مرد.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
پادشاهی دور دور

همانطور که می بینید، بازیکنان به چند گروه تقسیم می شوند:

  • غیرنظامیان (رفقای خوب، دوشیزگان سرخ، ایوان تسارویچ، گرگ خاکستری و واسیلیسا حکیم)
  • سارقین (خود سارقان و همچنین بابا یاگا و لشی)
  • مستقل (مار-گورینیچ، تک چشمی، شاهزاده قورباغه، کوشی جاودانه، گربه بایون)

هدف بازی، همانطور که در بالا ذکر شد، زنده ماندن و پیروزی است. حریفان باید به هر شکلی بازی را ترک کنند و استقلالی ها نیز باید تا پایان بازی زنده بمانند. این بازی دارای طلا است، نوعی ارز بازی که بازیکنان فقط در داخل بازی به دست می آورند. برندگان طلا دریافت می کنند. هر چه طلا بیشتر باشد، امتیاز بازیکن بالاتر است.

من کمی بیشتر به شرح شخصیت ها خواهم پرداخت.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
رفیق خوب

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
دوشیزه سرخ

رفیق خوب и دوشیزه سرخ - گسترده ترین و اصلی ترین نقش در بازی. اینها غیرنظامیانی هستند که شب می خوابند و روز کار می کنند. در شب توسط یکی از سارقان، مار گورینیچ و سایر نقش ها مورد حمله قرار می گیرند و واسیلیسا حکیم آنها را شفا می دهد. با احتمال کمی، Good Fellow یا Red Maiden می‌توانند بدون آسیب از حمله جان سالم به در ببرند (احتمالاً طلا را در این فرآیند از دست بدهند)، با این حال، همه نام مستعار بازیکن را روز بعد پس از حمله می‌شناسند. این بازیکنان در شب هیچ حرکتی انجام نمی دهند، بلکه بر اساس پیام های موجود در چت بازی، وضعیت بازی را تحلیل می کنند. در طول روز، این بازیکنان با رای دادن تصمیم می گیرند که کدام یک از آنها خوب یا دوشیزه سرخ نیست. بازیکنی که اکثریت سایر بازیکنان به او رای می دهند بازی را ترک می کند، بقیه بازیکنان طلا دریافت می کنند یا از دست می دهند. اگر بازیکنان با اکثریت آرا کسی را انتخاب نکنند، هیچ بازیکنی اعدام نخواهد شد.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
ایوان تسارویچ

ایوان تسارویچ - در ابتدا یک مدافع ناشناس از غیرنظامیان. او در شب نقش سایر بازیکنان را بررسی می کند، زیرا او تنها یکی از متحد خود را می شناسد - گرگ خاکستری. با مشارکت مستقیم گرگ خاکستری (که می تواند نقش سایر بازیکنان را نیز بررسی کند)، ایوان تسارویچ به جای بررسی، می تواند شخصیت دیگری را در شب بکشد. اگر در نتیجه چک، ایوان تسارویچ نقش یک همکار خوب یا یک دوشیزه سرخ را در بازیکنی ببیند، می تواند آنها را به جای خود دعوت کند و آنها را به گرگ خاکستری و دیگر یاران خوب و دوشیزگان سرخ معرفی کند. ایوان می تواند توسط شاهزاده قورباغه ای که می تواند او را در شب اغوا کند، بدون اینکه در طول روز نقش خود را برای بازیکنان دیگر فاش کند، مداخله کند. اگر ایوان خود شاهزاده قورباغه را کشف کند، می تواند او را برای پیوستن به غیرنظامیان دعوت کند، اما اگر شاهزاده خانم نپذیرفت، او به دست ایوان می میرد. مار-گورینیچ همچنین می تواند در چک های ایوان-تساریویچ دخالت کند، اما برخلاف شاهزاده قورباغه، در طول روز به سایر بازیکنان می گوید که کدام یک از آنها ایوان-تساریویچ است. در طول روز، ایوان تزارویچ هیچ تفاوتی با دیگر یاران خوب ندارد.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
گرگ خاکستری

گرگ خاکستری - دستیار ایوان تزارویچ، که حس بویایی قوی او به ایوان کمک می کند تا دیگر یاران خوب و دختران سرخ را پیدا کند. گرگ خاکستری به این بازیکنان می گوید که ایوان تزارویچ کیست و همچنین از بازیکنان دیگر با نقش های Good Fellows و Red Maidens خبر می دهد. اگر گرگ دزد یا دشمن دیگری را کشف کند، بلافاصله به ایوان تزارویچ اطلاع می دهد تا شب بعد اقدام کند. اگر شاهزاده قورباغه به گرگ حمله کند، تبدیل به یک همکار خوب معمولی می شود و نمی تواند کسی را چک کند و شاهزاده خانم نمی داند که در واقع گرگ خاکستری بوده است، زیرا گرگ شب ها نمی خوابد. با این حال ، خود گرگ در طول روز متوجه می شود که کدام یک از بازیکنان شاهزاده قورباغه است و می تواند سعی کند بقیه یاران خوب و دوشیزگان سرخ را که آنها را نزد ایوان تزارویچ آورده است را متقاعد کند که به اعدام قورباغه رای دهند. شاهزاده. همچنین شب بعد، او می تواند سعی کند به طور ناشناس شاهزاده قورباغه را به سمت غیرنظامیان متقاعد کند تا به هیچ یک از آنها دست نزند. گرگ می تواند شبانه خود را قربانی کند تا ایوان تسارویچ یا واسیلیسا حکیم را نجات دهد، اگر فرض کند که آنها ناگهان مورد حمله سارقین قرار می گیرند یا توسط کوشچی زامبی شده اند (گرگ در برابر جذابیت های کوشچی مصونیت ذاتی دارد)، اما پس از آن ایثار گرگ از بازی خارج می شود.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
واسیلیسا حکیم

واسیلیسا حکیم - برای غیرنظامیان بازی می کند ، اما آنها از او اطلاعی ندارند ، زیرا واسیلیسا بسیار متواضع است. همچنین واسیلیسا حکیم هنگام معالجه سؤال نمی کند و مانند یک پزشک خوب همه را معالجه می کند. اما اگر کوشی، لیخو یا لشی داروی او را بنوشند، بیش از یک روز عمر نخواهند کرد، زیرا واسیلیسا فقط مردم را درمان می کند. داروی واسیلیسا حکیم نیز به مار گورینیچ یا گربه-بایون کمک نمی کند، اما آسیبی نیز به همراه نخواهد داشت. همچنین، کوت بایون در شب به واسیلیسا دست نمی‌زند، زیرا واسیلیسا برای خرید گیاهان دارویی به جنگل بی‌جان نمی‌رود. علاوه بر این، جذابیت های زن شاهزاده قورباغه روی واسیلیسا کار نمی کند. اگر دو بار می‌خواستند بیمارش را بکشند، پزشکی ناتوان می‌شد. Vasilisa شما را از حملات جادویی، به عنوان مثال از نفرین Dashing نجات نخواهد داد. در طول روز، واسیلیسا مانند یک دوشیزه سرخ رفتار می کند، و تنها یک نگاه زودگذر و کمی غمگین می تواند کمی نشان دهد که او بهترین شفا دهنده در پادشاهی دور است.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
سرکش

دزدبرخلاف همه نقش های قبلی، آنها همدیگر را می شناسند، زیرا در همان لانه زندگی می کنند و همچنین لشی و بابا یاگا را می شناسند، بنابراین می توانند از همان حرکت اول کنسرت کنند. اما فقط رهبر باند در شب اقدامات انجام می دهد و در روز رای نمی دهد، در حالی که بقیه Robbers با پشتکار وانمود می کنند که یاران خوب و دختران سرخ هستند. اگر Leader به هر دلیلی بازی را ترک کند، یکی از Rogues باقی مانده بلافاصله جای او را می گیرد. اول از همه، دزدان در تلاشند تا ایوان تزارویچ را تا زمانی که نیروهای کافی از Good Fellows و Red Maidens برای مقابله فعالانه با دزدان در طول روز جمع آوری کند، از کار بیاندازند.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
گابلین

گابلین او در شب برای دزدها جاسوسی می کند و آنها را از نقش هایی که در لانه آنها یافت می شود آگاه می کند، اما در روز رای نمی دهد، زیرا در دهکده زندگی نمی کند. با این حال سایر بازیکنان می توانند به لشی رای دهند و بدین ترتیب او را اعدام کنند. از آنجایی که لشی از مرداب ها می آید، او نمی تواند توسط شاهزاده قورباغه اغوا شود و اگر تلاش کند، لشی خانه او را علامت گذاری می کند و روستاییان متوجه می شوند که او واقعاً کیست. لشم نباید از طلسم کوشچی بترسد، اما واسیلیسا می تواند او را تا حد مرگ شفا دهد. اگر کوت بایون سعی کند به لشی حمله کند، خطر از دست دادن پنجه های آهنین خود را دارد و سپس کوت باید قربانیان را فقط با خرخر کردن خود بخواباند.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
بابا یاگا

بابا یاگا او همچنین با Robbers کار می کند و در شب جادو می کند: او می تواند بیماری را برای بازیکنان دیگر ارسال کند یا یکی از متحدان خود را از حمله محافظت کند. جادوگری او حتی قوی تر از نفرین لیخ است. در طول روز، بابا یاگا نیز فعال است: هر کسی که تحت حمایت او باشد را نمی توان حتی با اکثریت آرا اعدام کرد. با این حال، عرضه ریشه های جادویی برای محافظت در روز محدود است، بنابراین بابا یاگا نمی تواند بیش از سه بار در هر بازی از کسی، از جمله خودش، محافظت کند. در طول روز، بابا یاگا وانمود می کند که یک Red Maiden معمولی است و با بقیه رای می دهد.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
اژدها

اژدها شب ها بر فراز روستاها، جنگل ها و باتلاق ها پرواز می کند و دست به دزدی می زند و نقش دزدان را در روز آشکار می کند. در طول روز، مار می خوابد، بنابراین او رای نمی دهد، اما می تواند با اکثریت آرا اعدام شود. مار برای همه بسیار خطرناک است، به خصوص برای دزدان و ایوان تزارویچ. مار اهمیتی نمی دهد که چه کسی را دزدی می کند، اما اگر توسط گرگ یا لشی کشف شود، می تواند به یک متحد ارزشمند تبدیل شود. اگر مار را در شب بکشید، به احتمال زیاد، می توانید یک آیتم بسیار ارزشمند - پوست مار را دریافت کنید، که یک بار صاحب خود را از حمله فیزیکی محافظت می کند.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
معروف یک چشم

معروف یک چشم شبانه هر کس را که سر راهش قرار می گیرد می کشد و هرکسی را که نمی تواند بکشد (لشی، کوتا بایون یا مار گورینیچ) نفرین می کند، به طوری که هرکسی که در همان شب بخواهد با آن نفرین شده ارتباط برقرار کند، در روز بمیرد. . خود آن لعنتی هم در این مورد می میرد، فقط کوت بایون نمی میرد که به سادگی به رختخواب می رود تا نیرو بگیرد و شب بعد از نوبت خود می گذرد. فقط بابا یاگا می تواند لیخ را از نفرین نجات دهد. نفرین بر کسی که گربه بایون را شکست داد تأثیر نمی گذارد: او نیز مانند گربه به سادگی به رختخواب می رود و از یک نوبت می گذرد.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
شاهزاده قورباغه

شاهزاده قورباغه نمی تواند بازی را برنده شود، اما می تواند با اغوا کردن بازیکنان دیگر در شب، پول زیادی به دست آورد. وسوسه شده نوبتش را از دست می دهد. قورباغه نمی تواند واسیلیسا حکیم را اغوا کند و همچنین باید از لشی دوری کند که روز بعد او را به همه خیانت می کند. اگر ایوان تزارویچ یا رهبر دزدها قورباغه را پیدا کنند، می توانند غیرنظامیان یا دزدان را به طرف خود دعوت کنند، در حالی که ایوان امتناع قورباغه را نمی پذیرد، اما رهبر آنقدرها هم بدبین نیست. اما شاهزاده خانم کاملاً حیله گر است، او می تواند یک مامور مضاعف شود، زیرا با وجود این واقعیت که او به تنهایی نمی تواند برنده شود، این یک شانس عالی برای به دست آوردن طلا است، زیرا شانس زنده ماندن تا پایان بازی به شدت افزایش می یابد! در طول روز، شاهزاده قورباغه وانمود می کند که دختر قرمز است و با همه با هم رای می دهد.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
کوشی بی مرگ

کوشی بی مرگ در قلعه خود زندگی می کند او در شب در دهکده های اطراف قدم می زند و یاران خوب و دوشیزگان سرخ را که به خدمت او می آیند و بدون چون و چرا تمام دستورات را اجرا می کنند، زامبی می کند. با امتناع از اجرای دستوری، برای مثال، رأی دادن در طول روز متفاوت از آنچه که کوشچی گفته شده است، یا نوشتن پیام در چت در طول روز اگر کوشچی آن را ممنوع کرده باشد، خدمتکار کوشچی می میرد. بنابراین، کوشی می تواند بر نتایج رای گیری در طول روز تأثیر بگذارد، حتی اگر خودش رأی نیاورد. اگر کوشچی کشته شود، همه قربانیان او نیز می میرند. واسیلیسا می تواند خدمتکار کوشچی را درمان کند که سپس به نقش اصلی خود باز می گردد. مار-گورینیچ و گرگ مصونیت ذاتی نسبت به زامبی شدن دارند، بنابراین کوشی، هر چقدر هم که بخواهد، نمی تواند آنها را به خدمت خود تبدیل کند. گرگ همچنین می تواند با قربانی کردن خود به ایوان یا واسیلیسا کمک کند تا از مشکلات خلاص شوند. Saved by the Wolf مصونیت گرگ را در برابر زامبی‌سازی به دست می‌آورد.

"حماسه های جدید". برای توسعه دهندگان، عملیات ها و افراد کنجکاو
گربه بایون

گربه بایون در جنگل زندگی می کند، شب ها شکار می کند. در طول روز در گودال خود می خوابد، بنابراین در رای گیری شرکت نمی کند. با این حال، در طول روز می توان او را با اکثریت آرا اعدام کرد. گربه می تواند به دو صورت حمله کند: خرخر - و سپس قربانیش به خواب می رود و نمی تواند در شب راه برود و روز بعد نمی تواند رای دهد - یا مستقیماً با چنگال های آهنین بکشد. حمله با چنگال روی Snake-Gorynych جواب نمی دهد و بعد از حمله به لشی، گربه ممکن است اصلاً بدون چنگال بماند! داشینگ نمی تواند گربه را نفرین کند، که بعد از نفرین به سادگی یک شب می خوابد. اگر کسی بتواند کوتا بایون را شکست دهد، از هر بیماری یا بیماری، از جمله نفرین لیخ، شفا خواهد یافت. این قابلیت Cat تا پایان بازی نزد بازیکن باقی می ماند. خدمتکاران کوشچی در طول روز نمی توانند به گربه رای دهند، اما می توانند به طور غیرمستقیم بدون اطلاع کوشچی متوجه شوند که گربه کیست. کوت بایون با ایوان یا دزدها وارد اتحاد نمی شود، بنابراین آنها هدف اصلی کوت هستند.

فن آوری های مورد استفاده

برای نوشتن بازی، من فناوری محاسبات بدون سرور مبتنی بر OpenFaaS را انتخاب کردم، زیرا برای سازماندهی بازی به اندازه کافی ساده است و در عین حال به اندازه کافی پیشرفته است که قوانین پیچیده بازی را بدون پیچیدگی های غیر ضروری بنویسد. من همچنین از یک خوشه Kubernetes استفاده خواهم کرد، زیرا این روش استقرار برنامه‌ها، استقرار سریع و قابلیت مقیاس‌بندی آسان را بسیار ساده و قابل اعتماد می‌سازد. برای ایجاد منطق بازی، فقط با OpenFaaS می توانید از پس آن بربیایید، اما من همچنین سعی خواهم کرد تا Storyteller را به عنوان یک ظرف جداگانه برای مقایسه پیچیدگی پیاده سازی بسازم. من به عنوان زبان برنامه نویسی اصلی برای میکروسرویس ها و توابع انتخاب کردم Go، از آنجایی که من مدت زیادی است که در اوقات فراغت برای جایگزینی Perl آن را مطالعه می کنم و js بر اساس چارچوب خاصی برای تعامل کاربر با میکروسرویس ها و توابع استفاده خواهد شد. تصمیم نهایی را در مقاله مربوطه در این مجموعه به شما خواهم گفت. برای برقراری ارتباط توابع با یکدیگر، NATS.io را انتخاب کردم، زیرا قبلاً با آن مواجه شده بودم و ادغام نسبتاً آسانی با Kubernetes دارد.

اطلاعیه

  • معرفی
  • راه اندازی محیط توسعه، تقسیم کار به توابع
  • کار پشتیبان
  • کار جلویی
  • راه اندازی CICD، سازماندهی تست
  • یک جلسه بازی آزمایشی را شروع کنید
  • نمایش نتایج: از

منبع: www.habr.com

اضافه کردن نظر