Я делаю игру, и я заметил, что сохранение всех аудиофайлов в памяти, как правило, не очень эффективно для памяти, поскольку более длинные (и, следовательно, большие) аудиофайлы занимают довольно много памяти. Мне было интересно, в каком размере игра должна решить передать аудиофайл, а не хранить его в памяти?Сохранение аудиозаписей в памяти
ответ
Как хорошая практика, вы должны хранить все аудиофайлы (и текстуры) в ОЗУ. Чтение аудиофайлов из памяти намного быстрее, чем чтение аудиофайлов с жесткого диска. Это заставит вашу игру отставать, если ваша игра предназначена для загрузки аудиофайла и воспроизведения ее, когда требуется аудио, а затем уничтожить ее, когда игра заканчивается воспроизведением звука.
Лучший способ - не загружать аудиофайл, когда он не требуется.
Например, ваша игра состоит из 5 этапов. На первом этапе Music_1.mp3 не требуется, поэтому вы не должны его загружать. Удалите аудиофайлы (аудио только для первой ступени, которые не будут использоваться на другом этапе) из бара, когда первый этап будет завершен.
Вам не нужно беспокоиться об этом. Вместо этого попробуйте софт-ссылки на ваши ресурсы.
См http://docs.oracle.com/javase/7/docs/api/java/lang/ref/SoftReference.html
., Размер которого игра должна решить, чтобы поток звукового файла, а не хранить его в памяти?
Я бы сделал это по телефону OutOfMemoryError
. Все, что до этого, является преждевременной оптимизацией.
Я не понимаю, что вы имеете в виду. – Jeremy
В какой момент звуковой файл слишком велик, чтобы его можно было хранить в памяти во все времена, и что он должен быть потоковым, когда требуется. –
Нередко бывает, что один длинный файл воспроизводится из файла (иногда даже будучи одновременно распаковывается). Я вижу это много с indie java-играми, в которых есть фоновая музыка (из файла) и звуковые эффекты. Многое зависит от того, сколько оперативной памяти у вас доступно и какие другие аспекты вашей программы нужны с точки зрения ОЗУ. –