Проект Mozilla опубликовал (https://blog.mozilla.org/futurereleases/2015/07/02/mozilla-g... план (https://wiki.mozilla.org/Platform/Games) развития технологий, нацеленных на превращение Firefox в платформу для создания современных браузерных игр, обеспечивающий высокую производительность и работающих без необходимости установки внешних плагинов. Из наиболее значительных достижений в области создания высокопроизводительных браузерных приложений отмечается WebAssembly (http://www.opennet.ru/opennews/art.shtml?num=42451). В представленном плане рассматривается какие ещё технологии необходимы для разработки первоклассных игр. По мнению Mozilla, компьютерные игры являются отличным катализатором для продвижения новых технологий, которые затем смогут использоваться и в других категориях приложений.
Технологии уже находящиеся в разработке и готовые появиться в следующем году:
- Развитие средств для обеспечения работы многопоточных игр, эффективно работающих в Web: стандартизация
SharedArrayBuffer, добавление в Emscripten поддержки pthreads, реализация доступа их Web Workers к чувствительным к производительности Web API (WebGL, WebSockets, IndexedDB, WebAudio, WebRTC и WebVR), возможность совместного использования скомпилированного кода между Web Workers;
- Задействования в web-приложениях инструкций SIMD для оптимизации JavaScript-кода: стандартизация API SIMD.js (http://www.opennet.ru/opennews/art.shtml?num=40557), позволяющего организовать распараллеливание выполнения операций над данными c использованием инструкций SIMD, добавление поддержки SIMD в WebAssembly и Emscripten;
- Оптимизация процесса загрузки, компиляции и первого запуска больших порций кода (миллионы строк кода): WebAssembly позволит значительно сократить размер загружаемого кода, декодирование скомпилированного представления WebAssembly будет значиетельно быстрее разбора JavaScript/asm.js, развивается быстрый компилятор WebAssembly/asm.js, позволяющий почти сразу стартовать приложение, продолжив компиляцию в фоне. Код компиляции и разбора будет вынесен в параллельно выполняемый процесс;- Создание решения для обеспечения сжатия без зависимости от HTTP Content-Encoding:gzip. Поддержка в Emscripten декодирования asm.js / WebAssembly в процессе загрузки кода;- Улучшение средства для организации хранилищ в браузере: возможность доступа к временным хранилищам без вывода диалога с запросом полномочий от пользователя, учёт (https://en.wikipedia.org/wiki/Frecency) при расчёте квот характеристки аккаунта, предоставление дополнительной информации о квотах, создание механизма для доступа к одному хранилищу с разных сайтов, стандартизация 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 и создания полноценных систем редактирования (http://w3c.github.io/editing/);
- Добавление (https://bugzilla.mozilla.org/show_bug.cgi?id=1136675) API для управления курсором;
- Улучшение (https://bugzilla.mozilla.org/show_bug.cgi?id=855364) Gamepad API;
- Реализация в Pointer Lock API расширения Pointer Clipping (https://www.w3.org/wiki/Webapps/PointerLockFeatures);
- Интеграция развиваемых в рамках проекта Emscripten инструментов для анализа использования памяти и отладки утечек памяти;
- Стандартизация более масштабируемой формы source map, пригодной для большого скомпилированного кода.
URL: https://blog.mozilla.org/futurereleases/2015/07/02/mozilla-g.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=42559