كيفية طرح Google Earth على الويب

تحسين إمكانية الوصول إلى Google Earth من خلال جميع المتصفحات باستخدام WebAssembly

في الحالات المثالية، يكون كل تطبيق ينشئه المطوّرون متاحًا في المتصفّح بغض النظر عن التكنولوجيا المستخدَمة. ولكن هناك عقبات تمنع عرض المشاريع على الويب، وذلك حسب التكنولوجيا التي تم إنشاؤها بها ومدى توافق هذه التكنولوجيا مع مورّدي المتصفّحات المختلفة. WebAssembly (Wasm) هو هدف تجميع معياري وضعته W3C يساعدنا في حلّ هذه المشكلة من خلال السماح لنا بتشغيل رموز برمجية من لغات أخرى غير JavaScript على الويب.

لقد فعلنا ذلك مع Google Earth، وهو متاح اليوم في الإصدار التجريبي من المعاينة على WebAssembly. يُرجى العِلم أنّ هذا الإصدار لا يزال في مرحلة تجريبية من Google Earth وقد لا يكون سلسًا كما اعتدت عليه (جرِّب الإصدار العادي من Earth للويب). يمكنك تجربة هذا الإصدار التجريبي في Chrome والمتصفحات الأخرى المستندة إلى Chromium، بما في ذلك Edge (الإصدار Canary) وOpera وFirefox. يمكنك الاستفادة من هذه الإصدارات التجريبية إذا كنت تبحث أيضًا عن ميزات أفضل متوافقة مع جميع المتصفحات لتطبيقاتك المخصّصة للمنصة.

سبب اختيار WebAssembly لخدمة Google Earth

لقد كتبنا معظم تطبيقات Google Earth في الأصل باستخدام لغة C++ لأنّه كان تطبيقًا مخصّصًا للكمبيوتر المكتبي ومخصّصًا للتثبيت. بعد ذلك، تمكّنا من نقله إلى Android وiOS مع انتشار الهواتف الذكية، مع الاحتفاظ بمعظم قاعدة رموز C++ باستخدام NDK وObjective-C++. وفي عام 2017، عندما طرحنا تطبيق Earth على الويب، استخدمنا Native Client (NaCl) لتجميع رمز C++ وتشغيله في متصفّح Chrome.

في ذلك الوقت، كانت تقنية NaCl هي تقنية المتصفّح الوحيدة التي سمحت لنا بنقل رمز C++ إلى المتصفّح وتقديم نوع الأداء الذي يحتاجه تطبيق Earth. كانت تقنية NaCl متاحة في Chrome فقط ولم يتم استخدامها على نطاق واسع في المتصفّحات الأخرى. نبدأ الآن بالتبديل إلى WebAssembly، ما يتيح لنا استخدام الرمز البرمجي نفسه وتشغيله على جميع المتصفحات. وهذا يعني أنّ تطبيق Earth سيكون متاحًا للمزيد من المستخدمين على الويب.

لقطة شاشة لتطبيق Earth تعرِض برج إيفل

سلسلة محادثات حول سلاسل المحادثات

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

تعتمد WebAssembly متعددة المواضيع على ميزة في المتصفّح تُعرف باسم SharedArrayBuffer، والتي تمّت إزالتها من المتصفّحات بعد الكشف عن ثغرات الأمان Spectre وMeltdown. للحدّ من الأضرار المحتملة الناتجة عن الهجمات، قدّم فريق الأمان في Chrome ميزة "عزل المواقع الإلكترونية" في Chrome لجميع أنظمة التشغيل المتوافقة مع أجهزة الكمبيوتر المكتبي. تحدّ ميزة "عزل المواقع الإلكترونية" من كل عملية عرض للمستندات من موقع إلكتروني واحد. بعد تفعيل ميزة الأمان هذه، أعاد Chrome تفعيل SharedArrayBuffer لأجهزة الكمبيوتر المكتبي، ما سمح لنا باستخدام WebAssembly المتعدّد المواضيع مع تطبيق Earth لأجهزة Chrome.

تعمل المتصفحات الأخرى على إتاحة ميزة "عزل الموقع" أو إجراءات تخفيف أخرى لإعادة تفعيل SharedArrayBuffer. في الوقت الحالي، يتم تشغيل Earth باستخدام سلسلة مهام واحدة في هذه المتصفحات.

آلية عمل WebAssembly مع المتصفّحات المختلفة

لقد تعلمنا الكثير عن حالة توافق WebAssembly في المتصفّحات التي تنقل Earth. إذا كنت بصدد تطوير تطبيقات باستخدام WebAssembly، من المهم فهم الحالة الحالية لآلية عمل WebAssembly مع المتصفحات المختلفة.

Edge

على وشك أن يصبح Edge تجربتَي تطوير مختلفتَين استنادًا إلى اختيار Microsoft بالانتقال من أداة عرض EdgeHTML إلى أداة عرض مستندة إلى Chromium. في الوقت الحالي، لا يمكن تشغيل الإصدار التجريبي من Google Earth على WebAssembly على الإصدار العلني الحالي من Edge بسبب عدم توفّر WebGL2. سيتم حلّ هذه المشكلة بعد طرح الإصدار الجديد من Edge المستنِد إلى Chromium في المستقبل القريب. في هذه الأثناء، يمكنك تنزيل إصدار Canary من Edge والتأكد من أنّ Earth يعمل بشكل جيد.

Chrome

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

Firefox

يقدّم Firefox دعمًا جيدًا لـ WebAssembly، ولكنّه أوقف الدعم لسلسلة المحادثات المتعددة. نتيجةً لذلك، يمكنك توقّع تجربة بطيئة باستخدام Earth. ونتطلّع إلى أن يعيد فريق Mozilla إتاحة ميزة "سلسلة المحادثات المتعددة" في الإصدارات المستقبلية. على الجانب الإيجابي، يتيح Firefox تخصيص الذاكرة الديناميكي.

أوبرا

يستند متصفّح Opera إلى Chromium تمامًا مثل Chrome، بالإضافة إلى الإصدارات القادمة من Edge. ومع ذلك، لا يقدّم الإصدار الحالي من Opera سوى دعم WebAssembly لسلسلة مهام واحدة. يعمل تطبيق Earth في متصفّح Opera، ولكن مع تجربة أقل جودة إلى حدٍ ما. نأمل أن تتوفّر في الإصدارات الأحدث من Opera ميزة "توفّر خيوط متعددة" ودعم أكثر فعالية لإطار عمل WebAssembly.

Safari

يتضمن Safari تنفيذًا قويًا لـ WebAssembly، ولكنه لا يتوافق بالكامل مع WebGL2. لذلك، لا يمكن تشغيل Earth مع WebAssembly في Safari. على وجه التحديد، تتطلّب بعض ملفات shaders استخدام GLSL 1.2. نأمل أن يتوفّر تطبيق Earth على Safari أيضًا بعد إضافة ميزات أفضل لتشغيل WebGL2.

نتطلّع إلى استخدام المزيد من ميزات WebAssembly

لقد استغرق الأمر وقتًا طويلاً لتوفير Earth على الويب. قبل ست سنوات تقريبًا، بدأنا بعرض تجريبي داخلي يستند إلى asm.js تم الاحتفاظ به وتوسيع نطاقه على مرّ السنين. وتم بعد ذلك تحويله إلى إصدار WebAssembly من Earth، لأنّ WebAssembly أصبح المعيار الذي اعتمده اتحاد W3C.

لا يزال أمامنا الكثير من العمل لاستخدام WebAssembly وEarth. على وجه التحديد، نريد الانتقال إلى الخلفية LLVM باستخدام Emscripten (سلسلة الأدوات لإنشاء WebAssembly من رمز C++). سيتيح هذا التغيير إمكانية استخدام SIMD في المستقبل، بالإضافة إلى أدوات تصحيح أخطاء أكثر فعالية، مثل خرائط المصادر لرمز اللغة المصدر. من الأمور الأخرى التي نأمل أن نشهدها استخدام OffscreenCanvas وتوفير الدعم الكامل لتخصيص الذاكرة الديناميكية في WebAssembly. نعلم أنّنا على الطريق الصحيح، فتكنولوجيا WebAssembly هي المستقبل على المدى الطويل لتطبيق Earth على الويب.

يُرجى تخصيص بعض الوقت لتجربة beta. يُرجى إطلاعنا على تجربتك من خلال ترك ملاحظاتك مباشرةً في تطبيق Earth.