Форум программистов, компьютерный форум, киберфорум
JavaScript: HTML5 Canvas
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
118 / 51 / 1
Регистрация: 17.03.2021
Сообщений: 178

Как лучше всего делать звук в браузерной игре?

17.03.2021, 20:42. Показов 2134. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Решил в свободное время вспомнить молодость и запилил на Арканоид на js/canvas: [del] Игрушка отлично работает и на декстопе и на смартфонах, и вполне даже залипательная получилась

Однако, пока не разобрался, как правильно звуки делать. Сначала сделал через интерфейс Audio(), слегка заморочившись на то, чтобы можно было одновременно несколько звуков играть, путем дублирования объектов. В Chrome было отлично, но вот в Opera и на айфоне - огромные лаги и никакого одновременного проигрывания. Играть из-за лагов совсем невозможно. Почитал, что есть более правильный интерфейc - AudioContext, переделал все на него. Но результат опять же - в хроме все отлично, как и было, а на айфоне и в опере вообще тишина.

Коллеги, у кого есть опыт настройки звука в браузерных игрушках в реальном времени, поделитесь пожалуйста секретами мастерства. Может статья есть где хорошая об этом?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2021, 20:42
Ответы с готовыми решениями:

Что лучше всего читать/смотреть где лучше всего практиковаться и как в принципе лучше всего учиться программированию
Здравствуйте,извините за вопрос не по теме но: уже около пол года изучаю С языки и начал понимать что я упустил некоторые моменты,не...

Каким лучше всего делать сайт?
Ребят, подскажите каким делать свой сайт ? Тоисть его делать динамическим или статическим ? Сайт будет на подобии вывода новостей....

Где лучше всего делать сайты на HTML?
Лучше всего в блокнотах или есть спец. программы куда код писать ?

4
118 / 51 / 1
Регистрация: 17.03.2021
Сообщений: 178
20.03.2021, 15:53  [ТС]
Все, сам разобрался. Было несколько мелких багов, плюс надо было учесть кучу разных мелких особенностей. Опубликовал новую версию, если кому интересно, можете потестировать в этой ветке.
1
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
17.04.2021, 11:07
Цитата Сообщение от tomater
более правильный интерфейс
Это не более правильный правильный подход, а всего лишь audio для одного, а audioContext для другого. Во втором случае имеете дело с WebAudio Api, и он предназначен для обработки звука в реальном времени на сайте, добавления фильтров, задержки (реверберато), других эффектов, или для синтеза звуков с нуля. Соответственно audioContext больше грузит проц и память. Допускается одновременное открытие не более 6 аудиоконтекстов, только я не помню, в пределах одного браузера, включая все окна и вкладки, или в пределах всего компьютера.
В Вашем случае не нужно обрабатывать звук на сайте, а только воспроизвести мп3, в котором записан уже обработанный звук. Для этого вполне достаточно элемента аудио.
А для того, чтобы звуки могли играть одновременно, нужно при каждом событии в игре создавать новый элемент аудио, а по окончании воспроизведения удалять, чтобы не нагромождать память.
JavaScript
1
2
3
4
5
function playsound(src){
   var audio = new Audio(src);
   audio.play();
   audio.onended = function(){this.remove()};
}
А вот audioCtx.decodeAudiodata(); работает только с маленькими аудиофайлами, если попытаетесь воспроизвести длинную приветственную мелодию, может не хватить оперативной памяти.
0
118 / 51 / 1
Регистрация: 17.03.2021
Сообщений: 178
11.07.2021, 17:51  [ТС]
Цитата Сообщение от Опан Посмотреть сообщение
Это не более правильный правильный подход, а всего лишь audio для одного, а audioContext для другого.
Несомненно, оба полезны для своих целей. Но я делал игру в реальном времени, и для таких дел audioContext подходит намного лучше, так как дает больше контроля.
0
123 / 98 / 15
Регистрация: 02.02.2014
Сообщений: 346
12.07.2021, 02:16
пауза постоянно срабатывает. а так да - залипательно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2021, 02:16
Помогаю со студенческими работами здесь

Как написать бота к браузерной игре?
Всем привет. Помогите разобраться. Вот на днях решил сделать бота для онлайн игры на флеше. В своё время вбухал туда достаточно много денег...

Чем лучше всего делать current sink до 400mA?
Рулить "сливом" от ноги STM32, родная лапа на такое не потянет - отсюда необходимость слепить что-нибудь на транзе. Вопрос - какой...

По каким данным лучше всего делать регистрацию в программе
сабж. Кроме айди винды есть что нибудь более серьезное? какие варианты есть скажите если нетрудно.

На каком движке лучше всего делать сайт для сервера Minecraft?
Посоветуйте Пожалуйста на коком движке лучше всего делать сайт для сервера Minecraft?

Как думаете где лучше указать лицензию мит для браузерной игры?
Как думаете где лучше указать лицензию мит для браузерной игры? Суть лицензии в том что просто нужно вставить письмо. В игре есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru