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

هناك طرق عديدة لتطبيق خاصية التوافق المُسبق، و لنستعرض بعض هذه الطّرق:

1- إعادة استخدام الهاردوير: هذه هي الطريقة الأكثر كلفة و الأقل جدوى على صعيدٍ تجاري، و هي الطريقة التي طبقتها شركة سوني مع جهازها المنزلي السابق Playstation 3 عندما قامت بإضافة رقاقات هاردوير Playstation 2 إليه، و لم تلبث سوني و أن تخلّت عن هذه الطريقة في النماذج اللاحقة من الجهاز لتقليل تكلفة التصنيع، كما لم تعد إليها أبدًا. نظريًا، هذه الطريقة هي الأسوأ، فهي لا تسمح بتقديم تعديلات أو تحسينات على اللعبة الأصلية، هذا بجانب التكلفة المُضافة، إلا أنها أيضًا الأكثر استقرارًا و قُربًا لأداء الألعاب على الجهاز الأصلي.

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

3- استخدام هاردوير مشابه و بنية معمارية مماثلة و إعادة تدوير البرمجية الأصلية: هذه هي الطريقة التي يستعملها البلايستيشن الخامس، و التي استعملها PS4 Pro أيضًا لتشغيل ألعاب PS4. مع الPS4 Pro لم تتمكن سوني من زيادة حجم الذاكرة العشوائية الأساسية للجهاز عن 8Gb، و كذلك لم تتمكن من زيادة عدد الوحدات الحسابية إلا بضعف الجهاز الأصلي. البلايستيشن4 كان يضم 18 وحدة حسابية، البلايستيشن4 برو يضم 36 وحدة حسابية بمعمارية GCN أما البلايستيشن5 فهو يضمّ 36 وحدة حسابية بمعمارية RDNA2، سوني كانت مُضطرة إلى استعمال هذه الطريقة التصميمية حتى لا تكسر التوافق المسبق مع البلايستيشن4.

في مُحاضرة مارك سيرني حول البلايستيشن5، ذكر سيرني طور PS4 Pro Legacy و كذلك طور PS4 Legacy لتشغيل ألعاب الجهاز السابق على البلايستيشن5، أي أنه متوافق مع الجهازين و ليس مع واحدٍ منهما فحسب. كيف فعلت سوني ذلك؟ حسنًا، جميع هذه الأجهزة تعمل بمعمارية x86 و تقنيات AMD الرسومية و معالجاتها، و بالتالي تمكنت سوني من تدشين برمجية التعليمات الخاصة ببطاقات PS4/PS4 Pro الرسومية ضمن المكتبة البرمجية لرقاقة رسوم البلايستيشن الخامس. مزايا هذه الطريقة أنها تسمح بتعديلات على الأداء، و عيوبها أنها مرتبطة ارتباطًا مباشرًا بتصميم الهاردوير و تحتاج إلى اختبار كل لعبة على حِدَة. جهاز ننتندو المنزلي Wii U متوافق مع الوي بطريقة مُشابهة، فالهاردوير الذي يضمّه الجهاز هو هاردوير مُطوّر من الوي و بنفس المعمارية، و حتى أن معالج الوي يو هو بالأصل مُكوّن من ثلاثة معالجات وي تعمل معًا لتحقيق المعالجة المتوازية، و يكفي أن يعمل جزءٌ من هذا الهاردوير في طور الوي، إن نظام تشغيل الوي مبني بالكامل في الوي يو.

4- حسنًا، نأتي إلى الطريقة المبتكرة التي تستخدمها مايكروسوفت و هي طريقة الجهاز الافتراضي أو الآلة الافتراضية Virtual Machine، هذه الطريقة السحرية التي تمكنت مايكروسوفت من خلالها من دعم كافة أجيال الإكس بوكس بجهازٍ واحد! ليس ذلك فحسب، مايكروسوفت تمكنت أيضًا من استعمال تصاميم مختلفة للهاردوير دون أن تخشى كسر التوافق المسبق مثل سوني: على سبيل المثال، Xbox One يستعمل 8 غيغابايت من الذاكرة العشوائية بينما Xbox One X يستعمل 12GB (ليس نفس الرقم و لا ضعفه)، عدد الأنوية الحسابية للبطاقة الرسومية أيضًا مختلف بالكامل (ليس نفس العدد و لا ضعفه).

أضف إلى ذلك، أجهزة Xbox Series متوافقة بالكامل مع أجهزة Xbox One و كافة الأجيال السابقة من الإكس بوكس. مُجددًا يطرح السؤال نفسه… كيف؟

هل تستطيع سوني أو ننتندو استعمال نفس الطريقة؟

إن كان هذا مُمكنًا، لماذا لم يلجأ أحدهم إليها حتى الآن؟ و هل سيحصل ذلك في المستقبل؟

هل ستنجح طريقة مايكروسوفت في الحفاظ على التوافق المُسبق مع أجهزة الإكس بوكس المستقبلية؟

… حسنًا، سنُقدّم لكم تحليلًا كافيًا للإجابة على جميع هذه الأسئلة. أول ما سنبدأ به هو شرح تقنية الجهاز الافتراضي Virtual Machine، في الحقيقة، من السهل أن نقول بأن ألعاب الإكس بوكس تعمل على الجهاز الافتراضي و الجهاز الافتراضي يعمل على الجهاز الحقيقي، و لكن هذا لا يشرح المفهوم بدرجة كافية و لا يوضح لماذا يتمكن الإكس بوكس من القيام بما يقومُ به، و لذلك سنغوص قليلًا في عالم التكنولوجيا. حتى نشرح تقنية الجهاز الافتراضي سنقوم باستعمال مثالٍ مُشابه بسيط يستعمل نفس الفكرة: لغة البرمجة الشهيرة Java، هل سمعتم بلغة الجافا من قبل؟ إن الجافا هي واحدة من أشهر لغات البرمجة في العالم و من أكثرها شيوعًا، لا بل و يُمكن القول بأن الجافا تملك تأثيرًا أكبر من ذلك يطالُ جميع أرجاء الكرة الأرضية، حتى البرامج التي تستعملها و لا تعلم بُني الكثير منها عن طريق الجافا، و على سبيل المثال فإن الجافا هي لغة برمجة أساسية (native) لنظام التشغيل الأشهر في العالم: Android.

لغة الجافا حققت نجاحًا كاسحًا منذ بداية صدورها في التسعينات عن طريق شركة “مايكرو سن سستمز” التي استحوذت عليها أوراكل فيما بعض بفضل تبني فكرة الجهاز الافتراضي! إن أي برنامج بلغة الجافا يُمكن له أن يعمل على أنظمة تشغيل مختلفة كليًا (ويندوز – ماك – لينوكس) دون تغيير سطرٍ واحد في البرمجية، كيف ذلك؟ عن طريق الجهاز الافتراضي المُسمى بـJava Virtual Machine. إن أي برنامج بلغة الجافا يُحوّل عند تنفيذه إلى برمجية أخرى تُسمى Byte Code، هذه البرمجية تحتوي منطق البرنامج كاملًا، و من ثم يقوم الJava Virtual Machine بترجمة هذا الBytecode إلى لغة الآلة المناسبة للجهاز الذي يعمل عليه.

لنوضح هذه العملية؛ في البداية نُشير إلى أنّ جميع الأجهزة الحاسوبية بما فيها الهواتف الذكية و الأجهزة المنزلية و غيرها، لا تفهم التعليمات المكتوبة بلغة البشر بل تفهم التعليمات المكتوبة بالنظام الثنائي الذي يعتمد على قيمتين فقط: 0 و 1، في الحقيقة إن الصفر و الواحد هما ليسا إلا تمثيل رياضي/علمي أو representation للتيار الكهربائي الذي يمر في الحاسوب (فولتية مرتفعة – فولتية منخفضة). إن الرقم 5 بنظام العد العشري يكافىء 101 بنظام العد الثنائي، و إن تعليمة كاملة لجمع رقمين ستبدو بهذه الصورة: 1101101010011010. بمعنى آخر: أي تعليمة برمجية تُكتب بالإنجليزية باستخدام لغة برمجة، تُحوّل باستعمال مترجم داخلي إلى تعليمة بنظام العد الثنائي يتعامل معها المعالج المركزي و يتمكن من تنفيذها:

هذه الصورة التوضيحية هي من كتاب Introduction to Java Programming لدانييل ليانغ، و هو أحد أبرز المراجع العلمية المختصة في البرمجة بهذه اللغة

على اليسار بالإمكان مُلاحظة التعليمة البرمجية باللغة الإنجليزية (و هي تعليمة مكتوبة بلغة التجميع Assembly) لجمع رقمي 2 و 3، و من ثم مرور هذه التعليمة على المُترجم الذي يقوم بتحويلها إلى اللغة الثنائية التي يفهمها الحاسوب، و من ثم تنفيذها. حسنًا، إن كل نظام تشغيل لديه أوامر برمجية مختلفة و تمت برمجته بشكل مختلفٍ عن الآخر، و لذلك فهو “يفهم تعليمات مختلفة”، و حتى ان المعمارية مُشفرة و مرمزة بطريقة مختلفة، هذا يقودنا بالتالي إلى الآلة الافتراضية، Virtual Machine. مع الآلة الافتراضية، لا تُترجَم تعليمة المبرمج المكتوبة بالجافا إلى النظام الثنائي مباشرة، بل تُحول إلى تعليمة أخرى معقدة لا تعتمد على أي معمارية للتنفيذ تُسمى Bytecode، و من ثم تقوم الآلة الافتراضية بترجمة هذا الـBytecode وفقًا لنظام التشغيل الذي تعمل عليه! لهذا السبب يُمكن كتابة برنامج واحد بلغة الجافا، و تشغيل ذات الcode بالكامل، و دون تعديل، على نظم تشغيل مختلفة مثل الويندوز و الماك دون الحاجة لكتابة البرنامج مرتين أو تعديل البرمجية للتوافق مع النظامين!

يقوم الـJava Virtual Machine بالتعامل مع كل سطر في الBytecode و تحويله إلى ما يُسمى system call، أي نداء إلى نظام التشغيل لإجراء عملية حسابية معينة على سبيل المثال، و يقوم نظام التشغيل باستعمال موارد الجهاز (المعالج المركزي و الذاكرة العشوائية) للتنفيذ و إعادة النتيجة. بشكلٍ عام، يُعرّف دانييل ليانغ وظائف نظام التشغيل على أنها ما يلي:

  • التحكم بأنشطة النظام و مراقبتها و إدارتها
  • تنظيم موارد الجهاز و استعمالها
  • جدولة المهام

حقيقة، نحنُ لا نُريد أن نجعل الأمر معقدًا، و ما أردنا قوله أن الآلة الافتراضية تعمل كوسيط بين البرنامج و بين نظام التشغيل، حيث تقوم الآلة الافتراضية بإرسال تعليمات يفهمها نظام التشغيل، و إن أردنا أن ندعم نظام تشغيل جديد، فما علينا سوى إضافة طبقة برمجية إلى الآلة الافتراضية لتتمكن من التعامل مع هذا النظام و فهم “صيغة” التعليمات الخاصة به دون المساس بالبرامج نفسها أو التعديل عليها! هذا يقودنا بالتالي إلى مفهومٍ أوسع، أن نجعل نظام التشغيل بأكمله، يعمل كآلة الافتراضية! فنظام التشغيل في نهاية المطاف ليس إلا برنامج، أليس كذلك؟ إن مفهوم الآلة الافتراضية ليس جديدًا على صعيد أنظمة التشغيل، و حتى أنه مُستعمل في الخوادم لتوفير التكلفة، و ذلك بجعل خادم واحد يُشغل عدة أنظمة تشغيل في وقت واحد! يكون فيها نظام واحد هو الحاضن أو المستضيف (host) و يعمل كوسيط بين الأنظمة الأخرى و بين الهاردوير. حتى على حاسبك الشخصي بمقدورك أن تقوم بتثبيت نظام التشغيل Linux فوق الويندوز على سبيل المثال، و سيعمل من خلال الآلة الافتراضية، نظام Linux سيظن أن تعليماته و برامجه تُنفذ من خلال الهاردوير مباشرة، إلا أنها في الحقيقة تُنفذ بعد المرور على نظام الويندوز!

هكذا قامت شركة مايكروسوفت بتصميم نظام تشغيل Xbox One و الذي ما زال حجر الأساس للإكس بوكس حتى يومنا هذا مع أجهزة Xbox Series، مايكروسوفت قامت بتصميم ثلاثة نظم تشغيل هي في جوهرها ليست إلا نواة Windows 8 آنذاك (تمت ترقيتها إلى نواة Windows 10 لاحقًا) مع واجهة مستخدم مختلفة و مع تجريد النظام من كل مزايا الويندوز المكتبية التي لا يحتاج الإكس بوكس إليها. هكذا تبدو البنية المعمارية لنظام تشغيل الإكس بوكس:

قامت مايكروسوفت بشرح هذه المعمارية قبل سنوات طويلة، و اليوم و بالنظر إلى أهمية التوافق المسبق، تبدو لنا أهمّ من أي وقتٍ مضى. هناك نظام تشغيل أساسي و هو الحاضن أو المستضيف (host)، هذا النظام مسؤول عن الحماية، و هو النظام الذي يتحكّم بإدارة موارد الجهاز بالكامل مثل المعالج المركزي و الذاكرة العشوائية. فوق هذا النظام هناك نظام خاص بتشغيل التطبيقات يُسمى Shared Partition، و نظام آخر خاص بتشغيل الألعاب يُسمى Exclusive Partition. يُمكن القول أن ألعاب الإكس بوكس لا تعمل على هاردوير الإكس بوكس و إنما تعمل على الآلة الافتراضية. يقوم الـShared Partition بتولي جزئية الnetworking من اللعبة، لكن الExclusive Partition يتخاطب مع الـhost مباشرة من أجل التعليمات الخاصة بموارد الجهاز مثل المعالج المركزي و البطاقة الرسومية و الذاكرة العشوائية. هذا مختلف قليلًا عن معمارية HyperV بشكلها المعتاد من مايكروسوفت:

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

ببساطة: كل ما على مايكروسوفت فعله لإضافة التوافق المسبق لأي جهاز جديد، هو تحويل هذا الجهاز إلى طبقة برمجية هي آلة افتراضية تعمل كوسيط بين اللعبة و بين نظام التشغيل. و لكن ما هو ثمن هذه العملية؟ ثمن هذه العملية ضياع جزء من قدرات المعالج و استخدام مساحة أكبر من الذاكرة العشوائية من أجل التعامل مع كل هذه الأنظمة و تنفيذ التعليمات فيما بينها، و لهذا السبب نرى سوني على سبيل المثال تسلكُ طريقا آخر، سوني تجعل مطوري الطرف الأول لديها يحلبون كل قطرة من قدرات أجهزتها لإبهار جمهور اللاعبين عن طريق التعامل مع الهاردوير الخاص بها مباشرة، بالنسبة لسوني فإن الجهاز هو “أساس” عملها و منظومتها التجارية، أما بالنسبة لمايكروسوفت فإن الـPortability (إمكانية تشغيل اللعبة على معماريات و منصات هاردوير مختلفة) هو أمرٌ جوهري للغاية، حتى لو كان الثمن هو التضحية بجزء من موارد الهاردوير و عدم استغلال كامل قدراته حتى النخاع.

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

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

شارك هذا المقال