2. FMOD 소개 가장 유명한 사운드 엔진미들웨어 모든 사운드 카드 지원 쉽고 빠르게 적용 가능 활발한 포럼 운용 다양한 질문, 빠른 답변 Data-driven 프로그래밍 지향 사운드 디자이너를 위한 데이터 툴 지원 트리 개념의 쉬운 자원 관리
3. 튜토리얼 일단 해보자 기본적인 코드는 매우 간단한다 Playsound, Playsream소스 보기 및 실행
4. FMOD 구성(1) FMOD C 기반 API 가장 작은 규모의 사운드 API 포함 오래된 버전으로 거의 업데이트가 없다가 완전히 사장된 버전 2006년까지는 FMOD Ex의 반값에 사용 현재는 비상용 애플리케이션에 무료로 사용할 수 있다 절대 비추
5. FMOD 구성(2) FMOD Ex C, C++, C# API 제공 FMOD Designer API 포함 Event system 기반 API 일반적으로 쓰이는 FMOD 라이브러리 프로그래머는 반드시 이 라이브러리를 사용하여 개발하여야 한다
6. FMOD 구성(3) FMOD Designer GUI 툴을 통한 사운드 데이터 구성 복잡한 사운드 이벤트, 효과를 이용한 재생을 지원 사운드 데이터 구성은 사운드 디자이너가 하며 사운드 프로그래머는 간단히 데이터 호출로 사운드를 사용할 수 있다
7. FMOD 라이센스 FMOD None commercial license 비상용 애플리케이션 무료 FMOD Commercial license Including designer 한 타이틀 당 9,000 USD 다른 플랫폼 출시시 한 플랫폼당 3,000 USD 추가 FMOD Casual license 500 USD 20 USD 이하의 제품 iOS/PSP 등등 각 라이센스별 상세한 추가 조건은 홈페이지 참고
8. FMOD 특징_ 멀티 플랫폼 지원 PC(32bit, 64bit) Macintosh(PPC, x86) PS2, PS3, PSP, Xbox, XBox360 Wii, GameCube Linux(32bit, 64bit) iPhone, iPad 몇 년간 PC 보다는 콘솔용 게임기 지원에 주력
9. FMOD 특징_ 다양한 엔진 지원 FMOD Designer 포함 Unreal engine 3 Cry engine Big world Unity engine Vision Scaleform
10. FMOD 특징_ Object oriented API C, C++, C# 지원 같은 기능이지만 언어별 전용 API 별도 제공 C, C++는 reference 문서 제공 API 자체가 그리 많지 않아 쉽게 배울 수 있다
11. FMOD 특징_ 기타 Geometry occlusion engine 메모리 관리 커스터마이징 20가지 이상의 사운드 포맷 지원 MP3 배포 라이선스를 포함하고 있지 않다 Plug in spupport – 주로 필터(효과음) 등등…
12. FMOD 특징_ Full 3D 사운드 지원(1) Listener 3차원 공간에서 3D사운드를 듣는 청취자 Listener의 위치와 3D사운드간의 거리에 따라 볼륨이 감쇠 Listener에 대한 3D사운드의 상대위치에 따라 전후좌우의 스피커에 나는 소리의 볼륨이 다르다 Multiple listener 지원 – 한 화면에 분할된 장면에서 나오는 소리를 구현할 수 있다
13. FMOD 특징_ Full 3D 사운드 지원(2) 3D 사운드 3차원 공간의 어느 한 지점에 위치한 사운드 3D 사운드가 들리는 Min, Max 유효거리를 설정
14. FMOD 특징_ Full 3D 사운드 지원(3) Listener 1 Listener 2 Listener 3 Min distance 3D 사운드 Max distance Min distance : 볼륨 100% Min ~ Max distance : 볼륨이 100% ~ 0%로 감쇠 Max distance 이상 : 볼륨 0%
15. FMOD 특징_ Full 3D 사운드 지원(4) 왼손 좌표계 기본 사용 오른손 좌표계 옵션으로 지원 감쇠 기본 옵션 Logarithmic 감쇠량을 잘 느끼기 힘듬 옵션으로 지원하는 선형감쇠 사용 커스터마이징 가능
16. FMOD 특징_ 지형 충돌에 따른 볼륨 감쇠 3D 공간상의 정점으로 이루어진 폴리곤 지정 FMOD 내부적으로 Listener와 3D 사운드간 충돌을 계산하여 볼륨을 감쇠시킨다 Geometry.exe 예제 시연 Geometry 프로젝트 참고
17. FMOD 특징_ Virtual voice 사운드 카드에 한정된 채널을 극복할 수 있는 방법 무한에 가까운 사운드를 3D 월드상에 배치하여 동시에 플레이 할 수 있다. Virtualvoice.exe 예제 시연 실제로 사람이 듣고 판별할 수 있는 사운드의 개수는 한정되어 있다 일부 사운드만 실제로 플레이하고 그 외의 사운드는 플레이되고 있는 것처럼 시뮬레이팅한다
18. FMOD API 소개 System FMOD 메인 시스템 객체 하위 시스템 생성, 소멸 관리 DSP, Sound, Channel, Channel group, geometry 등등 사운드 리소스 로딩 사운드 스트리밍로딩
19. FMOD API 소개 Sound 사운드 리소스 관리 객체 사운드 리소스 해제 사운드 리소스 Refence관리 사운드 플레이 루프여부, 루프 카운트 지정 등등
20. FMOD API 소개 Channel 로딩한 사운드 리소스의 재생 관리 객체 볼륨 루프 카운트 Position Mute 등등 한 Sound 객체에서 여러 개의 Channel을 생성하여 재생 가능 실제로는 Sound 객체와 Channel 객체는 기능이 겹치는 인터페이스가 많다.
21. FMOD API 소개 Channel group 한 Channel group은 여러 개의 Channel을 자식으로 가지며 일괄적으로 관리할 수 있습니다. 볼륨 Mute 등등 기본적으로 최상위 부모인 Master channel group이 있다. System::getMasterChannelGroup Master channel group 하위로 channel group을 자식으로 붙여야 한다 모든 Channel group은 Channel group을 자식으로 붙일 수 있다 Master channel group 제외
22. FMOD API 소개 Geometry 3D 월드 폴리곤 좌표 3D 사운드와 listener 사이의 폴리곤이 존재하면 볼륨 감쇠 Scale, Rotation, Position
23. FMOD API 소개 DSP Digital signal processor 사운드에 Effect를 적용하기 위한 객체 사운드 필터링을 통한 사운드 변화 Echo, Chorus, lowpass, flange, distortiom, 등등… Effect.exe 시연 개인적으로 Echo, Chorus 외에는 잘 구별 안됨 Channel, Channel group에 적용하는 구조 Chennal::addDSP, ChannelGroup::addDSP 중복해서 여러 DSP를 적용할 수 있다
24. FMOD 유의사항(1) 하드웨어 가속을 지원하지만 불특정 사운드 카드에서 System 객체 생성 실패, 사운드 재생 실패 등의 문제가 있다 퍼포먼스에 별 차이 없다
25. FMOD 유의사항(2) DSP 객체를 이용하여 하드웨어 가속을 받으면 사운드 카드에 따라 제대로 되지 않는 것이 많다 5년전에 하드웨어 가속이 불안정했는데 현재는 어떠한지 모르겠다 많은 컴퓨터에서 테스트를 해봐야 알 수 있다
26. FMOD 유의사항(3) 볼륨을 Fade In/out 할 수 있는 기능이 없다 게임 상황에 따라 반드시 필요할 것이다 미리 특정 Channel, Channel Group을 Fade In/Out 할 수 있는 기능을 구현해 두자
28. 사운드 프로그램을 하기 전에…. 프로그래머는 FMOD를 Rapping한 사운드 플레이어가 아닌 게임 상황에 맞는 사운드 재생을 할 수 있는 SoundManager를 생각하고 프로그램해야 한다 사운드 기획은 기획자도 신경쓰지 않는다
29. 요구사항 파악 BGM 간의 전환 방법 Fade In/Out ?? 게임 상황에 따라 어떠한 사운드라도 컨트롤 할 수 있어야 한다 사운드의 상태에 따라 게임에 영향을 끼쳐야 하는가? MMO보다는 리듬액션 게임등에 매우 중요하다
30. 요구사항 파악 예상되는 사운드의 종류 BGM UI 사운드 유저의 플레이어 음성, 이펙트 사운드 일단 음성, 이펙트 사운드 오브젝트 사운드 환경음 날씨 이펙트
31. 요구사항 파악 예상되는 BGM 종류 존 Music 특정 구역 Music(작은 상점 같이 협소한 지역) 전투 Music 시네마틱Music
32. Sound Architecture Game Layer Player HP, Level up Change world, zone Boss Whether BGM Condition Environment Condition Player Condition Game Condition Manager ETC Play sound Play sound Channel Group Channel Observe condition Channel Channel Group Sound Manager Master Channel Group Channel Channel Group ETC FMOD ETC