"ملحمة جديدة". ل ديف ، مكتب خدمات المشاريع والفضوليين


بناءً على طلب القراء ، تبدأ دورة كبيرة من المقالات حول تطبيق تكنولوجيا الحوسبة بدون خادم لتطوير تطبيق حقيقي. في هذه الدورة ، سننظر في تطوير التطبيقات واختبارها وتسليمها إلى المستخدمين النهائيين باستخدام أدوات حديثة: بنية تطبيق خدمات microservice (في إصدار بدون خادم يستند إلى OpenFaaS ) ، ومجموعة kubernetes لنشر التطبيق ، وقاعدة بيانات MongoDB تركز على المجموعات السحابية والتطبيق ، و سحابة الحافلة NATS . ينفذ التطبيق لعبة "Epics" ، وهي واحدة من بدائل لعبة الصالون الشهيرة "Mafia".


ما هو "الملاحم"؟


هذا هو البديل من لعبة "المافيا" ، بل هو أيضا "بالذئب". يعتمد ذلك على لعبة جماعية يجب أن يتعلم فيها المشاركون خطوة بخطوة من هو الشخص الذي يحاول الفوز. لسوء الحظ ، عند اللعب على الشبكة ، يختفي عنصر مهم من اللعبة مثل التفاعل الشخصي ، وتكون قواعد "Mafia" الكلاسيكية بسيطة جدًا ، لذلك عادةً ما تتم إضافة شخصيات أخرى إلى طريقة لعب غير خطية ومثيرة للاهتمام ، ولكن بشكل عام ، يتم الحفاظ على الملامح الرئيسية لـ "Mafia" الأصلي ، على سبيل المثال ، التغيير في الليل والنهار ، يتحرك فقط في الليل ، وكذلك التحالفات بين المشاركين. هناك اختلاف مهم آخر في اللعبة عبر الشبكة وهو أن المضيف (المعروف أيضًا باسم Master of game ، Storyteller) هو عادة برنامج كمبيوتر.


وصف اللعبة


قواعد اللعبة التي أرغب في تنفيذها مأخوذة من برنامج الروبوت القديم ، الذي قمت بحفظه في أرشيف شخصي قبل حوالي 10 سنوات. يحتوي "Bylin" على قصة خلفية تبدأ بها كل لعبة:


في المملكة البعيدة ، في الولاية الثلاثين ، على مدى سبعة بحار ، عاشت عدة قرى من أجلها ، وفيها الزملاء الطيبون والعذار الأحمر . لقد زرعوا الخبز ، وذهبوا إلى الغابة القريبة بحثًا عن عيش الغراب والتوت ... واستمر هذا من قرن إلى آخر ، حتى هزت كارثة مروعة الأرض وبدأ الشر ينتشر في جميع أنحاء العالم! أصبحت الليالي طويلة وباردة ، والظلام تجول في الغابة ويتجول في قرية المخلوقات الرهيبة. طار ثعبان غورينيك من مكان ما ودخل في العادة لسرقة البكرات الحمراء وأخذ كل شيء ذي قيمة من القرويين. قام بابا ياجا الضار والجشع ، الذي كان يبحر في ستوبا من الغابات البعيدة ، بإرباك عقول السكان ، وحتى أن بعضهم تخلوا عن المركبة ودخلوا الغابة لسرقتها ، وقاموا بعصابة هناك. التقى Likhedey مع Leshii ، الذي كان يعرف كيف يتحول إلى الأشجار والشجيرات ، وبدأ في مراقبة القرويين المسالمين وخدمة اللصوص ، واستنشاق ما إذا كان الزملاء الصالحون يصلون إلى شيء لإنقاذ مستوطناتهم من الأرواح الشريرة. جمع الزملاء والفتيات الأحمر ، الذين سئموا من غارات اللصوص ، والوفيات الرهيبة على يد Likh One-eyed الرهيب ، الذهب ودعوا المصارع الشهير ، إيفان تساريفيتش ، من المدينة المجاورة ، الذي وعد بتخليص قرية اللصوص. في عملية تطهير في الغابة ، أنقذ إيفان من الموت الوشيك للذئب الرمادي ، الذي سقط في فخ اللصوص. في المقابل ، وعد الذئب لإبلاغ تساريفيتش عن الأرواح الشريرة المختلفة. مرت معالجتها المعروفة فاسيليسا الحكيم ، وعندما رأت المتاعب ، بقيت في رعاية السكان الذين تأثروا بالهجمات الضاربة. خلف الغابة ، ظهر قصر أسود ، استقر فيه كوششي ذي الخالد ، وفقًا للشائعات ، كل ليلة زار فيها القرى وألقى تعويذة على الزملاء الطيبين والعذار الأحمر حتى لا يجرؤن على عصيان أمره ، وقد فعلوا كل شيء كما كان يقول. وفي غابة Lifeless ، استقر Cot-Bayun ، وكان كل من قابلوه نائماً بعد حكاياته الخيالية أو مات من مخالبه الحديدية.


بعيدا المملكة


كما رأينا بالفعل ، ينقسم اللاعبون إلى عدة مجموعات:


  • المدنيون (الزملاء الطيبون ، ريد مايدنز ، إيفان تساريفيتش ، جراي وولف وفاسيليسا الحكيم)
  • اللصوص (اللصوص أنفسهم ، وكذلك بابا ياجا وليشي)
  • مستقل (Serpent-Gorynych ، Likho One-eyed ، Princess Frog ، Koschey the Immortal ، Cot-Bayun)

الهدف من اللعبة ، كما ذكر أعلاه ، هو البقاء على قيد الحياة والفوز. يجب على المعارضين مغادرة اللعبة بطريقة ما ، ويجب أن يظل المستقلون على قيد الحياة حتى نهاية اللعبة. تحتوي اللعبة على ذهب ، وهو نوع من عملة اللعبة يكسبها اللاعبون فقط داخل اللعبة. الفائزون يحصلون على الذهب. لمزيد من الذهب ، كلما ارتفع تصنيف اللاعب.


سوف أتطرق أكثر إلى وصف الشخصيات.



جيد جيد



البكر الأحمر


جيد جيد والأحمر البكر - الدور الأكثر ضخامة والرئيسية في اللعبة. هؤلاء هم المدنيون الذين ينامون في الليل ويعملون أثناء النهار. في الليل ، يتعرضون للهجوم من قبل أحد اللصوص ، الثعبان غورينيك وأدوار أخرى ، ويعاملهم فاسيليسا الحكيم. مع وجود بعض الاحتمالات الصغيرة ، يمكن للزميل الصالح أو Red Maiden النجاة من الهجوم دون أي ضرر (ربما يفقد الذهب في نفس الوقت) ، ومع ذلك ، في نفس الوقت ، سيتعرف الجميع على اسم مستعار للاعب في اليوم التالي بعد الهجوم / الدفاع. في الليل ، لا يقوم هؤلاء اللاعبون بأي حركة ، لكنهم يقومون بتحليل وضع اللعبة استنادًا إلى الرسائل الموجودة في الدردشة. في فترة ما بعد الظهر ، يقرر هؤلاء اللاعبون بالتصويت أي منهم ليس زميلًا جيدًا أو فتاة حمراء. اللاعب الذي صوت له معظم اللاعبين الآخرين يترك اللعبة ، والربح الباقي أو يخسر الذهب. إذا لم يختر اللاعبون أي شخص بأغلبية الأصوات ، فلن يتم تنفيذ أي من اللاعبين.



إيفان تساريفيتش


إيفان تساريفيتش - في الأصل مدافع مجهول عن المدنيين. في الليل ، يتحقق من أدوار اللاعبين الآخرين ، لأنه لا يعرف سوى واحد من حليفه - الذئب الرمادي. من خلال المشاركة المباشرة للذئب الرمادي (الذي يمكنه أيضًا التحقق من أدوار اللاعبين الآخرين) ، يمكن لإيفان تساريفيتش ، بدلاً من التحقق ، أن يقتل شخصية أخرى في الليل. إذا ، نتيجة للفحص ، يرى إيفان تساريفيتش دور الشاب الصالح أو البكر الأحمر في اللاعب ، ثم يمكنه دعوتهم لنفسه وتعريفه بالذئب الرمادي وغيرهم من البنات الطيبين والأحمر. يمكن منع إيفان من قبل Frog Princess ، التي يمكنها إغواءه ليلاً ، بينما لا تخون دوره للاعبين الآخرين خلال النهار. إذا اكتشفت إيفان أميرة الضفدع ، فيمكنها أن تعرض عليها الانضمام إلى المدنيين ، ولكن إذا رفضت الأميرة ، فإنها تموت على أيدي إيفان. يمكن أن يتدخل Serpent-Gorynych أيضًا في عمليات فحص اللاعب Ivan Tsarevich ، ولكن على عكس Tsarevna Frog ، في فترة ما بعد الظهيرة ، سيخبر بقية اللاعبين أي منهم إيفان Tsarevich. في فترة ما بعد الظهيرة ، لا يختلف إيفان تساريفيتش عن غيره من زملاء Good Good.



الذئب الرمادي


غراي وولف هو مساعد لإيفان تساريفيتش ، الذي تساعد رائحته الحادة إيفان في العثور على زملاء جيدين وعوانس حمراء. يخبر غراي وولف هؤلاء اللاعبين من هو إيفان تساريفيتش ، كما يبلغ اللاعبين الآخرين بأدوار الزملاء الجيدين والبنات الحمر. إذا اكتشف الذئب سارقًا أو عدوًا آخر ، فسيبلغ فورًا إيفان تساريفيتش بهذا الأمر حتى يتصرف في الليلة التالية. إذا هاجمت لعبة The Wolf the Frog Princess ، فإنه يتحول إلى صديق جيد عادي ولا يمكنه التحقق من أي شخص ، ولن تعرف الأميرة أنها كانت بالفعل الذئب الرمادي ، لأن الذئب لا ينام ليلًا. ومع ذلك ، فإن الذئب نفسه في فترة ما بعد الظهر يكتشف أيًا من اللاعبين هو "أميرة الضفدع" ، وقد يحاول إقناع الزملاء الطيبين والبنات الحمر الباقين الذين أحضرهم إلى إيفان تساريفيتش للتصويت من أجل إعدام أميرة الضفدع. وفي الليلة التالية ، يمكنها محاولة إقناع الأميرة الضفدع مجهولة الهوية بجانب المدنيين حتى لا تمس أي منهم. يمكن للذئب التضحية بنفسه ليلًا لإنقاذ إيفان تساريفيتش أو فاسيليسا الحكيم ، إذا كان يوحي بأنهم وقعوا فجأة تحت ضربة اللصوص ، أو تعرضوا للهجوم من قبل كوششي (الذئب هو حصانة فطرية من سحر كوششي) ، لكن الذئب يترك اللعبة بعد التضحية بالنفس.



فاسيليسا الحكيم


فاسيليسا الحكيم - يلعب للمدنيين ، لكنهم لا يعرفون عنها ، لأن فاسيليسا متواضعة للغاية. أيضا ، فاسيليسا الحكيم ، عندما يشفي ، لا يطرح أسئلة ، وكيف يشفي الطبيب الجيد الجميع على التوالي. ولكن إذا كان دواءها في حالة سكر من Koschei أو Likho أو Leshiy ، فيجب ألا يعيشوا لمدة أطول من يوم واحد ، لأن Vasilisa يعامل الناس فقط. لن تساعد أدوية Vasilisa the Wise إما Snake Gorynych أو Kota-Bajun ، لكنها لن تسبب أي ضرر. أيضا ، Cot-Bayun لا تلمس Vasilisa في الليل ، لأن Vasilisa لا يذهب إلى Lifeless Forest للأعشاب الطبية. بالإضافة إلى ذلك ، لا تعمل السحر الإناث من الأميرة الضفدع على فاسيليسا. إذا حاولوا قتل مريضها مرتين ، فسيكون الدواء عاجزًا. لن ينقذ فاسيليسا من الهجمات السحرية ، على سبيل المثال ، من لعنة ليخ. في فترة ما بعد الظهيرة ، تتصرف فاسيليسا مثل البكر الأحمر ، ولا يمكن أن تلمح سوى نظرة سريعة وحزينة بعض الشيء إلى أنها أفضل طبيبة في Far Far Away.



لص


اللصوص ، على عكس جميع الأدوار السابقة ، يعرفون بعضهم البعض ، لأنهم يعيشون في نفس الدين ، ويعرفون أيضًا Leshy و Babu Yaga ، وبالتالي يمكنهم العمل بالتنسيق فورًا من الخطوة الأولى. لكن قائد العصابة فقط هو الذي يؤدي أعمالًا في الليل ولا يصوت أثناء النهار ، بينما يتظاهر باقي اللصوص بجد بأنهم زمالة جيدون وحمراء. إذا غادر الزعيم اللعبة لأي سبب ، فإن أحد اللصوص المتبقين سيحل محله على الفور. بادئ ذي بدء ، يحاول اللصوص إعاقة إيفان تساريفيتش ، حتى جمع ما يكفي من القوة من الزملاء الطيبين والبنات الأحمر لمواجهة اللصوص بنشاط في فترة ما بعد الظهر.



جن الخشب


يتجسس جوبلين على اللصوص في الليل ، ويبلغهم بالأدوار الموجودة في عرينهم ، لكنه لا يصوت أثناء النهار ، لأنه لا يعيش في القرية. ومع ذلك ، يمكن للاعبين الآخرين التصويت لصالح Leshy ، وبالتالي إعدامه. نظرًا لأن Leshiy تأتي من المستنقعات ، فإن Princess Frog لا يمكنها إغواءه ، وإذا حاول ، فإن Leshiy ستضع علامة على منزلها ، وسيعرف القرويون من هي بالفعل. لا يستحق ليشا أن يخاف من تعويذة كوشي ، لكن فاسيليسا يمكنه أن يشفيه حتى الموت. إذا حاول Kot-Baiyun مهاجمة Lesha ، فإنه يخاطر بفقدان مخالبه الحديدية ، وسيتعين على Kot الموت ببطء للضحية بفتاة واحدة فقط.



بابا ياجا


يعمل بابا ياجا أيضًا مع اللصوص ، يستحضر في الليل: يمكن أن يرسل مرضًا إلى لاعبين آخرين ، أو يحمي أحد الحلفاء من الهجوم. سحرها أقوى من لعنة ليا. في فترة ما بعد الظهيرة ، تنشط بابا ياجا أيضًا: لا يمكن إعدام من يقع تحت حمايتها حتى بأغلبية الأصوات. ومع ذلك ، فإن توفير الجذور السحرية للحماية النهارية محدود ، لذلك لا يستطيع بابا ياجا حماية أي شخص ، بما في ذلك نفسه ، أكثر من ثلاث مرات في اللعبة. في فترة ما بعد الظهر ، يتظاهر بابا ياجا بأنه البكر الأحمر المعتاد ويصوت مع الجميع.



الثعبان التنين


في الليل ، يطير Serpent-Gorynych فوق القرى والغابات والمستنقعات ويشارك في عملية سطو ، ويكشف خلال النهار دور السارق. أثناء النهار ، ينام الثعبان ، لذلك لا يصوت ، لكن يمكن تنفيذه بأغلبية الأصوات. الثعبان أمر خطير للغاية بالنسبة للجميع ، وخاصةً اللصوص وإيفان تساريفيتش. لا يهم من يختطفه ، لكن إذا فتحه الذئب أو العفريت ، فقد يصبح حليفا قيما. إذا قتلت Snake في الليل ، يمكنك ، مع بعض الاحتمالات ، الحصول على عنصر ثمين للغاية - Snake Skin ، والذي سيحمي مالكه مرة واحدة من أي هجوم جسدي.



مشهور العين واحد


الليل المشهور الذي يقتصر على العينين يقتل كل من يصادفه وهو في طريقه ولا يمكن قتله (ليشي أو كوتا باجون أو زميتي غورينيك) - لعنات ، لذا فإن أي شخص يحاول التواصل مع الملعونين في تلك الليلة سوف يموت خلال النهار. ويلعن نفسه أيضًا في نفس الوقت ، إلا أن كوت-بايون ، الذي يذهب ببساطة إلى السرير لاكتساب القوة ، يتخطى المسار في الليلة التالية. بابا ياجا هو وحده الذي يستطيع إنقاذ ليخ من اللعنة. لا تؤثر اللعنة على الشخص الذي هزم كوتا-بايون: فهو ، مثل القط ، يذهب إلى الفراش بتمريرة.



الأميرة الضفدع


لا تستطيع لعبة Frog Princess الفوز بالمباراة ، لكنها تستطيع كسب الكثير من المال عن طريق إغواء اللاعبين الآخرين في الليل. إغراء في نفس الوقت يتخطى هذه الخطوة. لا يمكن للضفدع إغواء فاسيليسا الحكيمة ، بل عليها أيضًا أن تتجنب ليشا ، التي ستسلمها للجميع في اليوم التالي. إذا عثر إيفان تساريفيتش أو زعيم اللصوص على ضفدع ، فيمكنهم دعوة مدنيين أو لصوص إلى الجانب ، بينما لا يقبل إيفان رفض الضفدع ، لكن القائد ليس صعب الإرضاء. لكن الأميرة ماكرة للغاية ، يمكن أن تصبح عميلًا مزدوجًا ، لأنه على الرغم من حقيقة أنها لا تستطيع الفوز بمفردها ، فهذه فرصة كبيرة للحصول على الذهب ، لأن فرص الوصول إلى نهاية اللعبة تزداد بشكل كبير! في فترة ما بعد الظهر ، تتظاهر الأميرة الضفدع بأنها البكر الأحمر وتصوت مع الجميع.



كوشي الخالد


يعيش كوشي الخالد في قلعته. في الليل ، يتجول حول القرى والزومبيين المحيطة بالزملاء الطيبين والبنات الحمر ، الذين يذهبون إلى خدمته ويقومون دون شك بجميع المهام. رفض تنفيذ الأمر ، على سبيل المثال ، للتصويت بشكل مختلف خلال اليوم عن تلك التي قالها Koschey ، أو لكتابة الرسائل في الدردشة خلال اليوم ، إذا نهى Koshchei ، فإن خادم Koshchei يهلك. وبالتالي ، فإن Koschey قادر على التأثير في نتائج التصويت خلال اليوم ، رغم أنه هو نفسه لا يصوت. إذا قُتل كوششي ، فإن جميع ضحاياه يموتون أيضًا. يمكن فاسيليسا شفاء خادم Koshchei ، الذي يعود بعد ذلك إلى دوره الأصلي. يتمتع الثعبان-جورينيك والذئب بحصانة فطرية من الزومبي ، لذلك لا يستطيع كوشي ، مع كل الرغبة ، تحويلهم إلى خدمته. أيضا ، يمكن للذئب مساعدة إيفان أو فاسيليسا في الخروج من المشاكل عن طريق التضحية بنفسه. ينقذها الذئب يكتسب مناعة الذئب للزومبي.



العاج بايون


يعيش العاج Bayun في الغابة ، يصطاد في الليل. ينام في جوفاء له خلال النهار ، لذلك فهو لا يشارك في التصويت. ومع ذلك ، خلال اليوم يمكن إعدامه بأغلبية الأصوات. يمكن أن تهاجم القطة بطريقتين: القرقرة - ثم تغفو ضحيتها ولا يمكنها المشي ليلا ، وكذلك التصويت في اليوم التالي - أو القتل على الفور بمخالب الحديد. لا يعمل هجوم المخلب على Serpent-Gorynycha ، ولكن ، بمهاجمة Leshy ، يمكن أن يظل Cat بدون مخالب! لا يمكن لعنة القطة الشهيرة أن تنام ليلة واحدة بعد اللعنة. إذا تغلب شخص ما على كوتا باجون للتغلب عليه ، فسوف يشفي من أي مرض أو مرض ، بما في ذلك لعنة ليها. يحتفظ اللاعب بقدرة Kotova هذه حتى نهاية اللعبة. لا يستطيع موظفو Koshchei التصويت لصالح Cat خلال النهار ، لكن يمكنهم أن يكتشفوا بشكل غير مباشر من هو Cat دون إبلاغ Koshchei به. Kot-Bayun لا تدخل في تحالفات مع إيفان أو اللصوص ، لذلك بالنسبة لكوت هم الهدف الأساسي.


التقنيات المستخدمة


لكتابة اللعبة ، اخترت التكنولوجيا الخالية من الخوادم على أساس OpenFaaS ، لأنها بسيطة بما يكفي لتنظيم اللعبة ، وفي الوقت نفسه قمت بتطوير ما يكفي لكتابة قواعد اللعبة المعقدة دون تعقيدات لا داعي لها. سأستخدم أيضًا نظام Kubernetes ، لأن طريقة نشر التطبيقات هذه تجعل من السهل والموثوق الحصول على نشر سريع ، والقدرة على القياس بسهولة. لإنشاء منطق للعبة ، يمكن الاستغناء عن OpenFaaS فقط ، ولكن سأحاول أيضًا جعل Storyteller كحاوية منفصلة لمقارنة تعقيد التنفيذ. اخترت Go باعتبارها لغة البرمجة الرئيسية للخدمات والوظائف المصغرة ، حيث أنني كنت أدرسها منذ وقت طويل في وقت فراغي لاستبدال بيرل ، وسيتم استخدام js لتفاعل المستخدم مع الخدمات والوظائف المصغرة على أساس بعض الأطر. سأتحدث عن القرار النهائي في المقال المقابل في السلسلة. للتواصل بين الوظائف ، اخترت NATS.io ، حيث أنني واجهتها بالفعل من قبل ، ولديها اندماج سهل للغاية في Kubernetes.


إعلان


Source: https://habr.com/ru/post/ar482010/


All Articles