본문 바로가기
게임 & 프로그래밍

[Godot] wav, ogg 인터넷에서 다운로드 후 재생하기.

by 장미제이 2018. 9. 13.
반응형
고도엔진에서 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는 배경음악등 오래 재생되는 곳에 사용하라는 안내가 있다.



댓글