План развития в Firefox технологий, необходимых для разработки компьютерных игр

Проект Mozilla опубликовал план развития технологий, нацеленных на превращение Firefox в платформу для создания современных браузерных игр, обеспечивающий высокую производительность и работающих без необходимости установки внешних плагинов. Из наиболее значительных достижений в области создания высокопроизводительных браузерных приложений отмечается WebAssembly. В представленном плане рассматривается какие ещё технологии необходимы для разработки первоклассных игр. По мнению Mozilla, компьютерные игры являются отличным катализатором для продвижения новых технологий, которые затем смогут использоваться и в других категориях приложений.

Технологии уже находящиеся в разработке и готовые появиться в следующем году:

  • Развитие средств для обеспечения работы многопоточных игр, эффективно работающих в Web: стандартизация
    SharedArrayBuffer, добавление в Emscripten поддержки pthreads, реализация доступа из Web Workers к чувствительным к производительности Web API (WebGL, WebSockets, IndexedDB, WebAudio, WebRTC и WebVR), возможность совместного использования скомпилированного кода между Web Workers;
  • Средства для задействования в web-приложениях инструкций SIMD для оптимизации JavaScript-кода: стандартизация API SIMD.js, позволяющего организовать распараллеливание выполнения операций над данными c использованием инструкций SIMD, добавление поддержки SIMD в WebAssembly и Emscripten;
  • Оптимизация процесса загрузки, компиляции и первого запуска больших порций кода (миллионы строк кода): WebAssembly позволит значительно сократить размер загружаемого кода, декодирование скомпилированного представления WebAssembly будет значительно быстрее разбора JavaScript/asm.js, развивается быстрый компилятор WebAssembly/asm.js, позволяющий почти сразу стартовать приложение, продолжив компиляцию в фоне. Код компиляции и разбора будет вынесен в параллельно выполняемый процесс;
  • Создание решения для обеспечения сжатия без зависимости от HTTP Content-Encoding:gzip. Поддержка в Emscripten декодирования asm.js / WebAssembly в процессе загрузки кода;
  • Улучшение средств для организации хранилищ в браузере: возможность доступа к временным хранилищам без вывода диалога с запросом полномочий от пользователя, эвристический учёт характеристик аккаунта при расчёте квот, предоставление дополнительной информации о квотах, создание механизма для доступа к одному хранилищу с разных сайтов, стандартизация API для организации постоянных хранилищ, улучшение пользовательского интерфейса для управления хранилищами в браузере;
  • Расширение графических возможностей: реализация WebGL2, стандартизация потоковой передачи WebGL canvas через WebRTC, возможность запуска операций WebGL на дискретной графической карте на системах с гибридной графикой (NVIDIA Optimus);
  • Предоставление средств для обхода связанных с памятью ограничений 32-архитектуры: поставка 64-разрядных сборок для Windows, предоставление возможности задействования pthreads и FileReaderSync для выполнение синхронного файлового ввода/вывода в Emscripten VFS;
  • Проведение работы по изучению способов повышения производительности на разных платформах: оптимизация производительности WebAudio, сокращение времени компиляции шейдеров WebGL, сокращение задержек и неоднородности при рендеринге, анализ производительности JavaScript, DOM, WebGL, WebRTC, кодеков, раскладки на экране, рендеринга, композитинга, анимации и т.п.
  • Продолжение развития Emscripten: добавление поддержки pthreads, SIMD и WebAssembly, увеличение скорости компиляции;
  • Продолжение развития инструментов для разработчиков игр: улучшение поддержки Web Worker, возможность установки перехватчиков ошибок в asm.js/WebAssembly.

Вопросы, которые требуют дополнительного изучения и обсуждения:

  • Предоставление средств для определения числа нитей Web Workers, необходимых для обслуживания заданной нагрузки;
  • Повышение лимита на число нитей Web Workers, сейчас лимит выставлен в 20 нитей на сайт;
  • Внедрение многопроцессной архитектуры, гарантирующей свежее нефрагментированное адресное пространство для игр, с выделением больших непрерывных областей памяти при запуске процесса;
  • Создания механизма уведомления приложений об исчерпании доступной памяти;
  • Разработка новых стандартов для улучшения IME (Input Method Editor) API и создания полноценных систем редактирования;
  • Добавление API для управления курсором;
  • Улучшение Gamepad API;
  • Реализация в Pointer Lock API расширения Pointer Clipping;
  • Интеграция развиваемых в рамках проекта Emscripten инструментов для анализа использования памяти и отладки утечек памяти;
  • Стандартизация более масштабируемой формы source map, пригодной для большого скомпилированного кода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.