خلفية
Pixonic، يفتخر فريق من مطوري ألعاب الفيديو، الذي يقع مقره في موسكو، يسعى كل فرصة لترقية تطبيقاته للأجهزة الجوّالة والوصول إلى قاعدة أوسع لجمهور اللاعبين. يعد أحد أشهر الألقاب للشركة War Robots، استمتِع بتجربة لعب تضم 12 لاعبًا في لاعب ضد لاعب (PvP) حيث يمكن للّاعبين المشاركة في مبارزات شيّقة روبوتات مخصصة في ساحة معركة مباشرة.
تم إصدار War Robots في عام 2014، وقد تم تصميمها في الأساس لنظام التشغيل Android أجهزة من الجيل الأول مع حركة تستند إلى لوحة اللمس وبدون إدخال للماوس. وبما أنّ فريق Pixonic من هواة ألعاب الفيديو، فقد أدرك أنّ التطبيق يحتاج إلى بعض التعديلات لتقديم تجربة رائعة للمستخدمين على مجموعة أكبر من الأجهزة، مثل أجهزة الكمبيوتر المحمول والأجهزة اللوحية. كانت لعبة War Robots قابلة للتشغيل على أي جهاز Android. لأنّ أجهزة Chromebook تعمل بإصدار كامل من إطار عمل Android داخل حاوية. ومن خلال إجراء بعض التعديلات الإضافية على الترميز، تمكنت Pixonic من اتخاذ مزايا نظام التشغيل ChromeOS والإمكانات الكاملة.
إليك الطريقة التي اتّبعها فريق Pixonic لتحسين War Robots للحصول على تجارب مثالية الشاشات الأكبر حجمًا.
الإجراءات التي اتخذتها الشركة
لبدء التحسينات، أضافت Pixonic علامة بيانات وصفية في ملف AndroidManifest.xml يخبر النظام بأنّه جاهز للحصول على الدعم الكامل لنظام التشغيل ChromeOS ويحتاج إلى إيقاف ميزة المحاكاة باللمس:
<uses-feature android:name="android.hardware.type.pc" android:required="false" />
أعدّت Pixonic أيضًا minSdk للتطبيق على 24 كي يتمكّن محرّك ألعاب Unity منتلقّي نقرات الماوس مباشرةً وجميع أحداث واجهة برمجة التطبيقات ذات الصلة بالحركة (وليس فقط أحداث لوحة اللمس).
التوافق مع لوحة المفاتيح والماوس
يصبح التحرّك والتصويب أسهل بكثير في ألعاب لاعب ضد لاعب (PvP)، مثل War Robots. باستخدام لوحة مفاتيح وماوس، خاصةً على الأجهزة ذات الشاشات الكبيرة. لذلك، كانت الخطوة التالية هي إعادة كتابة الرمز البرمجي لتوفير إمكانية استخدام لوحة المفاتيح والماوس في وضع القتال في اللعبة مع الاحتفاظ بعناصر التحكّم في شاشة اللمس.
لتوفير عناصر التحكم المناسبة في الوقت المناسب، كتب فريق Pixonic تعليمات برمجية جديدة للتحقّق من وضع أسلوب اللعب الحالي للمستخدم:
@Override
public void onConfigurationChanged(Configuration newConfig) {
boolean hasQwertyKeyboard = newConfig.keyboard == Configuration.KEYBOARD_QWERTY && newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;
try {
UnityPlayer.UnitySendMessage("Receiver", "ConfigChange", new JSONObject().put("keyboard", hasQwertyKeyboard).toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
إذا تم العثور على لوحة مفاتيح QWERTY، تتكيف اللعبة مع وضع الكمبيوتر المكتبي. تشير رسالة الأشكال البيانية اختفاء ذراع التحكّم في الحركة في أسفل يسار الشاشة، وتكون جميع العناصر متاحة يتم تصنيف الإجراءات (مثل الفرز من خلال الأسلحة والقدرات والقوائم) باستخدام اختصارات لوحة المفاتيح.
إذا لم يتم رصد لوحة مفاتيح، سيظهر ذراع التحكّم في الحركة أسفل يسار الشاشة واختصارات لوحة المفاتيح مخفية في أزرار القائمة السفلية اليمنى.
بعد ذلك، أرادت Pixonic التأكد من بقاء المؤشر مخفيًا عندما يستخدم المشغل الماوس لتدوير الكاميرا. من خلال استهداف الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات) أو يمكن للفريق وضع أي أيقونة مؤشر. في هذه الحالة، استخدم الفريق صورة نقطية شفافة لجعل المؤشر غير مرئي أثناء اللعب:
public boolean setPointerVisibility(boolean visible) {
View = activity.findViewById(android.R.id.content);
view.setPointerIcon(PointerIcon.getSystemIcon(activity, visible ? PointerIcon.TYPE_DEFAULT : PointerIcon.TYPE_NULL));
}
يضمن ذلك تعطيل المؤشر وغير مرئي عند استخدام جميع النوافذ الأخرى تم إغلاقها والمعركة مستمرة. إذا ظهرت أيّ نوافذ منبثقة، مثل قائمة الإيقاف المؤقت، جعلت Pixonic المؤشر مرئيًا من خلال عرض رمزه التلقائي.
تعديل الفيديوهات التعليمية وآليات اللعب
ولتقديم تجربة أفضل للمستخدم، كتبت Pixonic أيضًا رمزًا جديدًا لعرض برامج تعليمية عن أسلوب اللعب استنادًا إلى وضع جهاز المستخدم الحالي في حال تبديل اللاعب بين اللعب على الأجهزة اللوحية والكمبيوتر المحمول أثناء المعركة ولم يروا حتى الآن برنامج تعليمي حول الوضع المختلف، يتم عرض البرنامج التعليمي قبل استئناف اللعب.
عندما يكون اللاعبون في وضع الكمبيوتر المحمول، توقِف Pixonic أيضًا الكاميرا ذات الشاشة التي تعمل باللمس.
التحكم (لأنّ اللاعبين سيتحكمون في الكاميرا باستخدام الماوس) بينما
تعمل أزرار الألعاب كالمعتاد. لتمييز اللمسات عن حركات الماوس،
يستخدم الفريق السمة Input.touchCount
(في نصوص Unity البرمجية):
if(Input.touchCount > 0) {
// this is screen touch event
} else {
// this is mouse (touchpad) event
}
إتاحة النوافذ المتعددة
في الخطوة الأخيرة، أرادت Pixonic التأكّد من أنّ اللعبة لا يتم تقييدها وضع ملء الشاشة عند تشغيله. يتيح تفعيل ميزة "وضع النافذة" في ألعاب ChromeOS للمستخدمين مشاهدة أحداث البث المباشر المفضّلة لديهم أثناء اللعب، أو ترقية الروبوتات أثناء قراءة معلومات عن القدرات الجديدة على موقع اللعبة الإلكتروني، أو مشاهدة معركة في الوضع التلقائي أثناء مشاهدة فيديو منفصل.
ولإجراء ذلك، وضعت Pixonic علامة على UnityPlayerActivity
على أنّه قابل للتغيير:
<activity android:name="com.unity3d.player.UnityPlayerActivity" ....
android:resizeableActivity="true">
ضع في اعتبارك أن واجهة اللعبة تبدو قابلة للتشغيل فقط في نطاق الأبعاد، حدّد الفريق الحد الأدنى لأحجام النوافذ المتوافقة:
<activity … >
<layout android:gravity="center" android:minHeight="800dp" android:minWidth="1200dp" />
</activity>
استخدمت Pixonic العلامات الوصفية لضبط وضع ملء الشاشة في أسلوب اللعب الأكثر تفاعلية. كاتجاه افتراضي وأفقي حسبما هو مرغوب فيه.
<application>
<meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="maximize" />
<meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="landscape" />
….
</application>
ضمنت هذه التحسينات أيضًا عدم توقف اللعبة مؤقتًا وأن المعركة ويتناسب مقياس HUD مع توسيع نوافذ اللعب وتصغيرها.
النتائج
بفضل مكتبة شاملة من الموارد عبر الإنترنت، يمكن لجميع استغرقت العملية من فريق التطوير المكون من خمسة أعضاء في Pixonic أسبوعين فقط.
لعب أكثر من 100,000 لاعب لعبة War Robots على ChromeOS منذ أن طرحت شركة Pixonic أحدث التحسينات. ولأن أسلوب اللعب يمكن أن بالاستفادة من المساحة الإضافية على الشاشات الأكبر، أصبحت معارك War Robots أكثر تفاعلية وجاذبية من ذي قبل. في الواقع، تدوم جلسات المستخدمين على أجهزة Chromebook مدّة أطول بنسبة %25 مقارنةً بأجهزة Android الأخرى. كانت الملاحظات المبكرة أمرًا إيجابيًا للغاية، حتى أن بعض اللاعبين قد لاحظوا أن تعمل الألعاب المحسَّنة لأجهزة Chromebook بشكل أكثر سلاسة من BlueStacks المحاكي.
استنادًا إلى هذا النجاح، يخطّط مطوّرو Pixonic لتعديل رسومات War Robots على جميع أجهزة Android لجعل تجربة اللعب أقرب إلى تجربة الكمبيوتر الشخصي .
يُرجى الاطّلاع على بعض أفضل الممارسات لتحسين تطبيقاتك للتوافق مع نظام التشغيل ChromeOS.