
Проблеми з HTML5
Коли на конференції Google I/O показали Angry Birds на HTML5, в потоці радості мало хто звернув увагу, що гра насправді вимагає наявності Flash. Питається, чому? Адже гра написана на Google Web Toolkit (GWT) і для обробки звуку використовує бібліотеку GWT-voices.
З'явилися роздуми, що таким чином розробник постарався блокувати гру для користувачів iOS (вони купують її за гроші в App Store). З табору Microsoft висловилися в тому сенсі, що Google навмисне оптимізував гру під свій «глючний» і «нестандартний» Chrome, тоді як IE набагато краще підтримує < Audio > і не експериментує з функціями, які ще не затверджені.
Насправді причини трохи інші, і головна з них в тому, що HTML5 < Audio > поки що не підходить для використання в іграх або професійних аудіододатках.
Розробник Рей Кромвелл, який рік тому портував Quake2 на HTML5 (GwtQuake), називає два головних недоліки HTML5 < Audio >
По-перше, в нинішньому вигляді функціонал HTML5 не дає браузеру прямого доступу до аудіоданих, так що неможливо синтезувати звук на льоту, отримувати і обробляти семпли, накладати додаткові ефекти або навіть нормально працювати зі стерео.
По-друге, HTML5 не забезпечує необхідного контролю над таймінгом, а адже він дуже важливий для сприйняття - людське вухо реагує на затримку звуку навіть у кілька мілісекунд. Тут же практично неможливо запустити аудіо в ту мілісекунду, коли це потрібно. На практиці в розробці ігор вважається нормальною затримка не більше 7 мс. Однак, в HTML5 ви можете призначати звуки тільки командами setInterval або setTimeout, і це занадто ненадійно: точний таймінг не гарантується, можуть бути затримки до 16 мс, а при інтенсивному використанні цих команд браузер починає гальмувати. Якщо ви перемикаєтеся на іншу вкладку, то браузер може сильно уповільнити скрипт, щоб знизити навантаження на CPU, адже тут немає функції «requestSoundEvent», аналогічної requestAnimationFrame.
Ось чому ми з нетерпінням чекаємо Web Audio API, щоб зняти значну частину навантаження з центрального процесора і забезпечити прийнятний таймінг. І скоро дочекаємося. Ось відповідний фрагмент відео з презентації Google I/O.