반응형
고도엔진에서 wav, ogg등을 사용하기 위해서는 에디터에서 import 후 사용하는 것이 일반적이다.
하지만 게임 플레이 중 파일을 다운로드 받아 바로 재생할 필요가 있다.
곧 100만 사용자가 사용하게 될 훈워드의 경우 사용자가 영어 발음듣기를 클릭하면 서버에서 발음 파일을 다운로드하여 클라이언트에 저장 후 재생하도록 개발되어있다.
훈워드의 경우 1500개정도의 단어가 사용되었고 단어들의 원어민 발음 파일을 wav로 만들어 사용하고 있다. 만약 1500개의 파일을 모두 배포패키지에 포함했다면 앱사이즈가 40~50메가는 증가 했을 것이다.
wav의 경우 비트수, 샘플레이트, 스테레오 여부들을 만들어진 파일에 맞게 설정해 주어야 한다. 그렇치 않으면 좀 유쾌하지 안은 소리가 재생된다.
func play_wav():
var audio_file = "res://wordsounds/able.wav"
var file = File.new()
var stream
if file.file_exists(audio_file):
file.open(audio_file, file.READ)
var buffer = file.get_buffer(file.get_len())
stream = AudioStreamSample.new()
stream.format = AudioStreamSample.FORMAT_16_BITS
stream.data = buffer
stream.mix_rate = 22050
stream.stereo = false
file.close()
$AudioStreamPlayer.stream = stream
$AudioStreamPlayer.play()
ogg는 간단함.
func play_ogg():
var audio_file = "res://wordsounds/able.ogg"
var file = File.new()
var stream
if file.file_exists(audio_file):
file.open(audio_file, file.READ)
var buffer = file.get_buffer(file.get_len())
stream = AudioStreamOGGVorbis.new()
stream.data = buffer
file.close()
$AudioStreamPlayer.stream = stream
$AudioStreamPlayer.play()
고도엔진은 wav, ogg를 지원하는데 mp3는 라이센스 문제로 지원하지 않는다. wav, ogg가 무슨 차이가 있으며 언제 어떤 경우에 사용해야할까??
고도엔진 공식 문서에 보면
wav : 파일 사이즈는 크지만 재생하는데 cpu등 자원이 적게 든다.
ogg : 파일 사이즈는 작지만 재생하는데 자원이 많이 든다.
고로 wav는 버튼 효과음등 단발적으로 잠깐 재생되는데 사용하고, ogg는 배경음악등 오래 재생되는 곳에 사용하라는 안내가 있다.
'게임 & 프로그래밍' 카테고리의 다른 글
[Flutter]단어장 데이터 만들기 (0) | 2021.05.21 |
---|---|
[Flutter ]ListView를 이용한 단어장 목록 만들기 (0) | 2021.05.17 |
플러터Flutter로 단어 암기앱 만들기 1 (0) | 2021.05.14 |
[Xamarin] 자마린 바코드 리더 개발 (0) | 2020.08.03 |
[워드톡]연상이미지 등록하기. (0) | 2019.07.01 |
댓글