خمس سنوات من العبودية

هل فكرت في لعبتك الخاصة؟ وماذا عن لعبتك متعددة اللاعبين؟ أعتقد ذلك! يرغب العديد منكم في التشبث بتطوير تحفة فنية خاصة بك ، حيث يتم دمج خيالك متعدد الأوجه والكمال الاستثنائي. أنا أفهمك وأرغب في سرد ​​قصتي بهذه الطريقة الرائعة.




قبل التاريخ


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


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


بمجرد تعزيز معرفتي في مجال OOP ، قررنا بالفعل مع زميلي في اللعب والفنان تطوير لعبة MMO الخاصة بنا ، والتي ستكون أكثر برودة بمئة مرة!


ما هي لعبتنا؟


تمجد لعبتنا فصيلين متحاربين ، هما Oseon و Weiland. كل واحد منهم لديه كوكب خاص به ؛ وبدوره ، يضم المباني اللازمة لتطوير اللاعب.



كوكب المنزل فصيل Oseon


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


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



معركة مع العدو


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


النموذج


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



النموذج الأولي للعبة. تطوير الألغام


في بعض الحالات ، عند تبديل حالة اللعبة ، بدأت الكاميرا الافتراضية على المحرك تتصرف بشكل غريب.



النموذج الأولي للعبة. التخلف


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


لقطات من الإصدار القديم

عظيم على الانترنت



قائمة تفاعل اللاعب



شجار


ليخ ، ليس هذا ، هيا أولاً!


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


قررنا بالتأكيد إصدار الإصدار الجديد من العميل مع تقديم الرسومات عبر بطاقة فيديو. من بين العديد من الأطر ، بدا Starling هو الأكثر جاذبية ، وكان لديه واجهة برمجة تطبيقات مماثلة مع فلاش قياسي ، كان مدعومًا من قبل Adobe ، وكان من الممكن استخدام الرسومات الحالية دون بذل الكثير من الجهد. وأخيرا ، عملت النسخة الجديدة بسلاسة.
لتنقيط المتجه أثناء الطيران ، أخذت مولد Dynamic TextureAtlas Generator . ولكن في المكتبة اللاحقة كان لا بد من إعادة كتابتها بالكامل وتجاهلت الأطالس ، شغلت الرسوم المتحركة مساحة كبيرة ولم تستطع وضعها في أطلس الأحجام المسموح بها.


بطاقة


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


  • العشب / الأرض ؛
  • الحجارة \ الماء ؛
  • زخارف بحجم القفص ؛
  • مشهد كبير.

كانت الفكرة هي أن الطبقات الثلاث الأولى تم رسمها في صورة نقطية واحدة وإرسالها إلى ذاكرة الفيديو. هذه طريقة جيدة عندما يتم رسم طبقة واحدة في الخلفية بدلاً من ثلاث طبقات. ولكن لم يكن الأمر بدون مشاكل: عند تحويل MovieClipa إلى الإطار التالي للتنقيط ، يجب رسم جميع الإطارات السابقة. عند مدخل الموقع ، تم تجميد اللعبة ، لذلك تقرر نقل جميع المربعات إلى BitmapData مقدمًا وعمل نسخ طبق الأصل سريعة. ولكن في الوقت نفسه ، تم الحصول على إفريز غير سارة في بداية اللعبة في وقت تنقيط عدد كبير من الإطارات. ربما تكون قد رأيت بعض المتصفحات تتجمد عند بدء التشغيل عند تحميل الموارد. لا نريد أن تكون لعبتنا هي نفسها غير صالحة ، لذلك حددت وقت رسم البلاط لكل إطار. هنا يمكنك قراءة المزيد حول كيفية القيام بذلك.
جميع البطاقات بها مقاس واحد 20 × 16 من البلاط بحجم 64 بكسل. تمت كتابة بيانات الخريطة إلى ملف بالتنسيق الثنائي ، حيث تم تحديد حدود الطبقة مقدمًا وبقيت فقط لتسجيل رقم إطار MovieClip. وبالتالي ، كان وزن ملف الخريطة 1280 بايت. ولكن في وقت لاحق تم تحويل التنسيق إلى JSON لتسهيل التعامل مع البيانات.


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



محرر الخرائط


يحتوي كل من الكواكب الأربعة عشر على نباتاته وحيواناته الخاصة ، بحيث يمكنك أن تفهم بصريًا الكوكب الذي أنت فيه.



تنوع


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



بطاقة مع ضباب الحرب على الجانبين


الخادم


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


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


ذهابا وإيابا. ميكانيكا اللعبة ذاتية الولادة


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


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


لم تنجح ، وليس فارتانولو


دخلنا كتالوج ألعاب VK في 4 فبراير 2018 ، وليس المرة الأولى. تم رفض طلبنا الأول دون توضيح ، بينما تمت إعادة تقديم الطلب ومع ذلك فقد تمت إضافته إلى الكتالوج.


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


بعد 48 أسبوعًا ...


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


في الوقت الحالي ، يتم كتابة عميل alpha لنظام Android ، والذي يقوم بتنفيذ 50٪ من جميع الميزات الموجودة في اللعبة.



عميل لعبة الجوال


التنمية لا تزال مستمرة. إذا كانت لديك الرغبة في رسم أو كتابة شيء لعميل الهاتف المحمول - فاكتب.


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

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


All Articles