2. 발표에 앞서…
• 이 세션은 튜토리얼 세션입니다
• FMOD의 장점을 소개하고, 작업 중 경험했던 일과
사운드 작업에 대한 이야기를 진행합니다
• 시간 관계상 깊이 있는 설명까지 다루지는 못하고,
쉽고 간단하게 설명할 예정입니다
• 非 프로그래머도 쉽게 이해할 수 있으리라 생각됩니다
프로그래머 세션인데…
9. • FMOD Ex API
• FMOD Event System
• FMOD Designer
디자인 툴
10. • The low-level sound engine
• wav, mp3, mid 등 사운드 파일을 직접
재생하는 low-level API 이것만으로도 사용 가능
• FMOD Ex의 상위 레이어
• FMOD Designer로 제작된 사운드 데이터를 API
재생하는 data-driven API
11. • 사운드 디자인 툴
• 게임 안에서 각기 다른 상황에 따라
어떤 사운드를
어느 타이밍에
어떠한 이펙트를 주어서
재생할지 미리 툴에서 제작!
• 프로그래머는 복잡하게 신경 쓸 필요 없이
단지 Play()만 하면 된다!
22. 총소리
• 툴에서 “rifle” 사운드 이벤트를 제작한다.
가로축은 거리 파라미터 부드러운
트랜지션도 가능!
rifle_near.wav
rifle_mid.wav rifle_far.wav
23. 총소리
// 이벤트 객체 획득
EventObj rifleSound = EventSystem->GetEvent( “rifle” );
// 좌표 설정
rifleSound->SetPosition(currentPos);
// 사운드 재생 (객체는 이후 재사용 가능)
rifleSound->Play();
• 클라이언트 코드에서는 사운드 이벤트
이름만 알면 된다
36. • 업데이트는 제때제때…
• 사실 이런 간단한 문제 외에도…
• 사운드 하드웨어 표준화가 잘 안되어 있는지
사운드칩셋마다 동작 차이를 보이는 경우도 약간 발생
• 별로 문제된 적은 없지만, 적절한 테스트는 필수
37. 마일스톤을 사흘 앞둔 어느날
•바쁘게 다른 작업을 하고 있었는데…
“자꾸 클라이언트가
굳는데, 브레이크
걸어보니 FMOD 내부에서
무한루프 돌잖아?!”
38. • 최근 멀티코어 지원을 위해
로직, 렌더링, 애니메이션 처리가 스레드 분리
Calling FMOD commands from different threads.
Do not call FMOD commands from different threads!
This will lead to instability, corruption and possible crashes.
(헬프 문서 Threads 항목 최하단) ※안됨 ㄳ