كيف يمكنني برمجة محركات لعب الأدوار في صفحات Google

صورة

فكرة استخدام جداول البيانات كبيئة لتطوير الألعاب ليست جديدة . في هذه المقالة ، سوف أشارك تجربتي في إنشاء محركات لألعاب تمثيل الأدوار الحية وبناء الفريق التي يمكن أن تسهل إلى حد كبير حياة ممارسي الألعاب.

لماذا هو ضروري


افترض أنك تلعب لعبة يشارك فيها من 50 إلى 60 شخصًا في وقت واحد. كل لاعب لديه مجموعة من المعلمات الشخصية (على سبيل المثال ، الخبرة ، المال ، الصحة ، السمعة) ، والتي تختلف باختلاف الإجراءات التي قام بها. هناك أيضًا عدد من مؤشرات اللعبة العامة (على سبيل المثال ، البيئة أو ميزانية الدولة أو التصنيف الحكومي) ، والتي تتقلب أيضًا وفقًا لأفعال وقرارات اللاعبين. وهناك أحداث اللعبة التي تحدث مع مجموعة معينة من العوامل الخارجية.

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

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

تمكنت من ممارسة ممارسات الألعاب منذ حوالي عام ، من كتابة 7 محركات لألعاب بناء الفريق المختلفة. حققت معظم هذه الألعاب نجاحًا تجاريًا ، وقد تم بيع واحدة منها كامتياز في الخارج.

التدفق النقدي


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

قررت تحسين طريقة اللعب من خلال ترجمة جميع التكاليف إلى جدول بيانات Google.

صورة

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

"للذهاب المكسرات! - صرخ صديقي روبن خلال إحدى الألعاب. - تجمع ثمانية رجال بالغين للتحديق على الشاشة باستخدام جهاز لوحي من Google طوال المساء. لكنه أكثر إثارة للاهتمام حقًا من أي فيلم! "

يمكن تنزيل حسابي الخاص بالحسابات في لعبة "التدفق النقدي" من هنا . إذا لم يكن من الواضح تمامًا كيفية استخدامها ، فاكتب إليّ وسأرسل تعليمات مفصلة.

الكسالى والرؤساء والقتلة


بعد ذلك بقليل ، صادفت السيناريو الخاص بلعبة لعب الأدوار " All The President's Zombies " من تصميم المصمم الأمريكي مايك يونغ. وفقًا للمخطط ، تحدث نهاية غيبوبة في البلاد ، وتجتمع مجموعة من كبار المسؤولين في مكتب الرئيس لوضع خطة لحل هذه المشكلة.

صورة

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

صورة

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

بعد أن أمضيت بضع "اجتماعات طارئة" للأصدقاء والمعارف ، أدركت أن هذا تنسيق واعد لجميع أنواع مباني الفرق وقصص الشركات. تدخل فقط القيود المفروضة على الحد الأقصى لعدد المشاركين في 12 شخصًا. وبدأت في الخروج بألعاب جديدة يمكن أن يلعبها فريق كبير. في الوقت نفسه ، كان لا يزال من المفترض أن يقوم قائد واحد بإدارة النظام البيئي للألعاب. لذلك كانت هناك ألعاب " Freaky Venice " المبنية على امتياز Assassin's Creed ، و "الهيمنة العالمية" حول مواجهة القوى العظمى على المسرح العالمي ، و "يوم الانتخابات" حول التقنيات الصادقة وليست سياسية للغاية ، وعدد قليل من الألعاب التي تحل مهام محددة لزبائن معينين.

عند تطوير كل من هذه الألعاب ، واجهت بعض الصعوبات ، والآن سأحلل بعض الأمثلة الأكثر إثارة للاهتمام.

مشكلة - الحل


أساس أي محرك لعبة هو سلسلة الإجراءات التالية: 1) جمع المعلومات حول القرارات التي يتخذها اللاعبون ، 2) إدخال هذه المعلومات في النظام ، 3) التحقق من الشروط وحساب البيانات الجديدة بواسطة النظام ، 4) إصدار بيانات جديدة للاعبين. اعتمادًا على مخطط اللعبة ، يمكن تكرار هذه الدورة من واحد إلى عدد لا حصر له من المرات. في الوقت نفسه ، تظل جميع اتصالات اللاعبين التي تسبق اتخاذ القرارات النهائية "وراء الكواليس" ، ولا يتم مراعاة نظام اللعبة بأي شكل من الأشكال. بشكل عام ، فإن العملية لا تنتج إحساسًا بألعاب الكمبيوتر ، مما يترك مجالًا للتفاعل العاطفي الحيوي.

مضاهاة حلقة

تكمن الصعوبة الرئيسية في تطوير المحرك في جدول Google في عدم وجود مثل هذه الأشياء المألوفة لدى كيانات المبرمج كإجراء متغير أو حلقة أو مقاطعة.

لنفترض أنه يمكنك استبدال الأزرار المفقودة بخلية باسم "خانة الاختيار" - في خلية منفصلة ، ستكون هناك صيغة تتحقق من حالة مربع الاختيار وتحسب قيمة الخلية المستهدفة وفقًا لذلك. ولكن ماذا عن حقيقة أن الجدول بأكمله ثابت في الوقت المناسب ، وعندما تقوم بتغيير قيمة خلية واحدة متغيرة ، فإن قيم جميع الخلايا الأخرى التي تشير إليها في الصيغة هي على الفور و "بدون طلب"؟ لم أتوصل إلى شيء أفضل من التعويض عن نقص الروتين والحلقات باستخدام علامات التبويب. يمكنك ببساطة إنشاء العديد من علامات التبويب في الجدول كما توجد دورات في اللعبة وعدد المرات لكل لعبة ، نظريًا ، يمكن لأحد المتغيرات تغيير قيمته. بعد ذلك ، على سبيل المثال ، سيرث خلية في علامة التبويب 2 قيمة الخلية نفسها في علامة التبويب 1 ، وتخضع لبعض التغييرات وتحول قيمتها إلى نفس الخلية من علامة التبويب 3. على سبيل المثال ، انظر إلى علامات تبويب الدورات في لعبة World Domination.

صورة

وفقًا للمخطط ، تنتهي اللعبة دائمًا بعد 6 سنوات ، لذلك هناك 6 علامات تبويب مع حقول اللعبة في الجدول.
وهنا ، على سبيل المثال ، هي صيغة تحسب ميزانية الدولة في السنة الثالثة من اللعبة ، والتي تلخص الميزانية الأولية للسنة الثانية ومجموع نمو الميزانية للسنة الثانية:

2019-05-12-17-27-39 جوجل، محرر مستندات جوجل كروم

هنا E41 هو المبلغ في الميزانية في بداية العام ، X44 هو مقدار التغييرات في الميزانية خلال العام.

أو فيما يلي صيغة تعرض بيانات عن الحالة الاقتصادية للمدينة في خلية على قرص اللاعب ، بناءً على السنة التي تقضيها في الفناء. اعتمادًا على قيمة خلية "عداد السنة" $ F $ 1 ، يتم عرض قيم الخلية E36 نفسها ، ولكن من علامات تبويب مختلفة تقابل سنة معينة.

2019-05-12-17-28-08 جوجل، محرر مستندات جوجل كروم

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

توزيع الدور

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

صورة

تقع هذه البيانات في الجدول حيث تقوم الخوارزمية المستندة إليها بتوزيع الأدوار بين اللاعبين.

صورة

جمع بيانات اللاعب

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

كان القرار الجيد هو جمع البيانات من اللاعبين من خلال الاستبيانات والبطاقات. على سبيل المثال ، في "Plague of Venice" ، يسلّم اللاعبون في جميع أنحاء اللعبة إلى المضيف البطاقات المملوءة بكلمات مثل "Paolo Alighieri أرسل قتلة إلى Giacomo Sforza" أو "Leonardo Bertolucci يغوي Lucretia Medici" ، والمضيف يحتاج فقط إلى التحقق من الطاولة عند تقاطع الأسماء المقابلة أسماء.

صورة

وفي لعبة "يوم الانتخابات" ، تقدم فرق الطلاب الكبار استبيانات كاملة بهذا التنسيق بعد كل دورة لعبة.

صورة

يتم تبسيط البيانات الموجودة في هذا الاستبيان قدر الإمكان ، ولا يحتاج المضيف إلى أكثر من 5 ثوانٍ لقيادتها إلى الجدول.

صورة

تعديل الرصيد

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

صورة

إدخال البيانات في النظام

لمنع تراجع اللعبة ، يجب أن يكون المضيف قادرًا على إدخال البيانات في الجدول بأسرع وقت ممكن. في جداول Google ، يمكنك تكوين تنسيق إدخال البيانات (التحقق من دادا). التنسيق الأسرع والأكثر ملاءمة هو مربع الاختيار. صحيح ، ليس كل الصيغ يمكن أن تعمل مع القيم TRUE و FALSE. لذلك ، من الأفضل ترجمة قيم خانة الاختيار على الفور إلى صفر أو واحد في بعض الخلايا التقنية المجاورة ، ثم القيام بكل ما تريد باستخدام هذه صفر وواحد.

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

فيما يلي مثال على حقول إدخال البيانات في السيطرة على العالم.

صورة

إشارة الحدث

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

صورة

المعلومات الفردية

قد تكون هناك مواقف في اللعبة عندما تكون بعض البيانات معروفة لفريق واحد والآخر غير معروف. على سبيل المثال ، في لعبة World Domination ، يتم تصنيف المعلومات حول وجود الأسلحة النووية في بلد معين. في هذه الحالة ، من المريح استخدام أجهزة إخراج منفصلة لكل أمر ، وعرض المعلومات المتاحة للجمهور فقط على الشاشة الرئيسية. من الناحية الفنية ، يتم حل ذلك كمجموعة من الجداول المنفصلة (ملف لكل أمر) يتم فيها سحب المعلومات الضرورية فقط من الجدول الرئيسي باستخدام دالة IMPORTRANGE.

بالمناسبة ، توفر Google Sheets القدرة على تصدير البيانات من جدول إلى واجهة الويب ، لذلك إذا أردت ، بدلاً من طاولة جافة ، يمكن للاعبين عرض البيانات على أجهزة لوحية في شكل رسم تخطيطي جميل ومرسوم.

رسومات أنيقة

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

صورة

أخبار الألعاب

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

2019-05-12-17-28-33 جوجل، محرر مستندات جوجل كروم

تلخيص

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

صورة

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


All Articles