SlideShare a Scribd company logo
1 of 49
Download to read offline
Fmod를 이용한 사운드 프로그래밍


          넥슨 신규개발3본부 개발1실 M2팀

                       장용석
발표에 앞서…
• 이 세션은 튜토리얼 세션입니다
• FMOD의 장점을 소개하고, 작업 중 경험했던 일과
  사운드 작업에 대한 이야기를 진행합니다
• 시간 관계상 깊이 있는 설명까지 다루지는 못하고,
  쉽고 간단하게 설명할 예정입니다
• 非 프로그래머도 쉽게 이해할 수 있으리라 생각됩니다
 프로그래머 세션인데…
발표자 소개
장용석
• 1998 판타그램 킹덤언더파이어1, 샤이닝로어 온라인
• 2004 엔플레버 라펠즈
• 2008 넥슨 마비노기2
                  클라이언트, 툴 프로그래머
발표 순서
•   FMOD?
•   Event System
•   작업 경험과 사례
•   FMOD를 사용하려면
•   정리
FMOD
• Firelight Technologies社에서 제작한
  오디오 라이브러리 (사운드 엔진)
FMOD
• 다양한 사운드 파일 포맷 지원
• 다양한 플랫폼 지원 PC, Mac, 콘솔, 휴대용 게임기, iPhone, iPad …
• DSP, 사실적인 3D 사운드 효과



많은 업체에서 널리 사용 / 유명 게임 엔진에 통합
FMOD
• 사운드 엔진과 함께
 강력한 디자인 툴을 제공




오늘 설명의 핵심
• FMOD Ex                 API


• FMOD Event System
• FMOD Designer
                      디자인 툴
• The low-level sound engine
• wav, mp3, mid 등 사운드 파일을 직접
  재생하는 low-level API 이것만으로도 사용 가능




• FMOD Ex의 상위 레이어
• FMOD Designer로 제작된 사운드 데이터를       API
  재생하는 data-driven API
• 사운드 디자인 툴
• 게임 안에서 각기 다른 상황에 따라
  어떤 사운드를
    어느 타이밍에
      어떠한 이펙트를 주어서
  재생할지 미리 툴에서 제작!
• 프로그래머는 복잡하게 신경 쓸 필요 없이
 단지 Play()만 하면 된다!
…진짜 됩니다
(물론 거짓말 조금 보태서)
Event
System
예제
•Event System을 전부 설명하기엔
 무리가 따르므로 …
•사운드 작업의 간단한 예를 들어
 극히 일부 기능만 간단히 소개
총소리   • 거리에따라소리가다르게들린다
      • 각각의거리에맞는사운드가필요



발자국   • 바닥재질에따라소리가다르다
      • 하나의바닥재질당2~4개의사운드가필요

 소리
환경음   • 바람소리, 풀벌레소리, 부엉이소리등등…
      • 각각의사운드를일정주기또는랜덤하게재생
총소리
하드코딩
         하지만 재생방법
        자체에 변화가생기면
       결국코드수정이불가피!
아니면

데이터화
발자국   • 역시비슷한작업필요


 소리
환경음   • 각각의사운드에대해서
        재생주기및랜덤확률은어디서설정할것인
        가?
• 물론 작업 자체가 어려운 것은 아님
• 하지만 다양한 변화를 주는 시도나
  세세한 튜닝 작업은 어려움이 따르고
• 어떤한 방식으로든 프로그래머의
  추가 작업을 필요로 하게 된다
그렇다면 Event System을 사용할 경우?

• 많은 부분을 사운드 디자이너의 손에 맡기고,
  프로그래머의 작업을 최소화 할 수 있다.
그렇다면 Event System을 사용할 경우?

• 많은 부분을 사운드 디자이너의 손에 맡기고,
  프로그래머의 작업을 최소화 할 수 있다.
총소리
• 툴에서 “rifle” 사운드 이벤트를 제작한다.
총소리
• 툴에서 “rifle” 사운드 이벤트를 제작한다.
                   가로축은 거리 파라미터             부드러운
                                          트랜지션도 가능!




  rifle_near.wav
                          rifle_mid.wav    rifle_far.wav
총소리
   // 이벤트 객체 획득
   EventObj rifleSound = EventSystem->GetEvent( “rifle” );

   // 좌표 설정
   rifleSound->SetPosition(currentPos);

   // 사운드 재생 (객체는 이후 재사용 가능)
   rifleSound->Play();

• 클라이언트 코드에서는 사운드 이벤트
  이름만 알면 된다
발자국 소리
• 역시 툴에서 “footstep” 사운드 이벤트 제작
발자국 소리                   여러 개의 사운드 파일을
                           정의할 수 있다




• 역시 툴에서 “footstep” 사운드 이벤트 제작
 파라미터는 바닥 재질 타입으로 사용

                       각 파일의 재생 빈도도 설정 가능!




                          현재 파라미터값에
  각 바닥 재질 별 사운드들         해당하는 사운드가 재생!
발자국 소리
   // 이벤트 객체 획득
   EventObj footstepSound = EventSystem->GetEvent( “footstep” );

   // 재질 설정 (바뀔때만 처리해주면 OK)
   footstepSound->SetParameter(groundType);

   // 사운드 재생
   footstepSound->Play();


• 코드에서는 바닥 재질만 설정해주면 된다
환경음
환경음
                 파라미터를 타임라인으로 사용
                (지정한 속도에 따라 자동 변화)




      다중 레이어
      (멀티 트랙)
작업
경험과 사례
“소리가 왼쪽에서 오른쪽으로 지나갈 때
     부드럽게 연결되지 않고
    왼쪽 스피커에서 들리다가
   갑자기 오른쪽 스피커로 튀는데
       어떻게든 해줘요”
• 특별히 무슨 문제가 있었던 것은 아님
                   원래그래요…다른게임도
                      그렇던데




하지만 확실히 듣기에 거슬린다
• 거리가 가까울 때에는
   2D 사운드로 재생하면 된다
3D Pan Level 이펙트
 0일때 2D 사운드로,
 1일때 3D 사운드로
   트랜지션 된다                     거리가
                            4m이상인 경우 1


                  거리가
                0m일 때에는 0
• 거리가 가까울 때에는
   2D 사운드로 재생하면 된다
3D Pan Level 이펙트
 0일때 2D 사운드로,
 1일때 3D 사운드로
   트랜지션 된다                     거리가
                            4m이상인 경우 1


                  거리가
                0m일 때에는 0
“제 컴퓨터에서 소리가
작게 들리고 좀 이상한 것 같아요”
원래 그래요… 가 아니고

• 원인을 찾아 헤맸는데…
          ?!
• 업데이트는 제때제때…
• 사실 이런 간단한 문제 외에도…
• 사운드 하드웨어 표준화가 잘 안되어 있는지
  사운드칩셋마다 동작 차이를 보이는 경우도 약간 발생
• 별로 문제된 적은 없지만, 적절한 테스트는 필수
마일스톤을 사흘 앞둔 어느날
•바쁘게 다른 작업을 하고 있었는데…
      “자꾸 클라이언트가
        굳는데, 브레이크
     걸어보니 FMOD 내부에서
       무한루프 돌잖아?!”
• 최근 멀티코어 지원을 위해
  로직, 렌더링, 애니메이션 처리가 스레드 분리




Calling FMOD commands from different threads.
Do not call FMOD commands from different threads!
This will lead to instability, corruption and possible crashes.
(헬프 문서 Threads 항목 최하단)               ※안됨 ㄳ
클라이언트가굳었을때
사운드 시스템 및 사운드 인스턴스 클래스
내부에서 처리되던 모든 작업을…

• Command Queue에 명령을 쌓아두는 것으로 변경
• 메인 스레드에서 Queue를 일괄 처리하도록 수정
FMOD를
사용하려면
공식 사이트
http://www.fmod.org/
별도의 trial 버전 없이
full 버전의 툴과 API를
마음껏 다운로드 가능
자체적인 Forum이 있어
 문제 발생시 정보를
  찾아보기 용이함




Email 답변도 빠른 편
요약
• FMOD Event System을 사용하면



                            디자이너   프로그래머
개인적인 생각으로
• 게임 개발시 사운드 작업은 다른 부분에 비해
  상대적으로 비중을 낮게 두는 경향이 있지 않은지…
• 당연한 이야기지만 소홀히 할 수 없는 부분
 좋은사운드가게임을돋보이게만들어줄수있을것이다


• FMOD Designer라는 강력한 툴을 사용하여
  더 나은 결과물 제작, 다양한 사운드 연출이 가능
 + 게임의 생산성 및 작업 능률 향상
감사합니다

More Related Content

What's hot

GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자TonyCms
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018devCAT Studio, NEXON
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트kgun86
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자KyeongWon Koo
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013영욱 오
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁KWANGIL KIM
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템Chaeone Son
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션QooJuice
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.Wuwon Yu
 

What's hot (20)

GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
빌드 속도를 올려보자
빌드 속도를 올려보자빌드 속도를 올려보자
빌드 속도를 올려보자
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
 

Viewers also liked

게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6연우 김
 
Kinect sdk for windows로 nui 개발 시작하기
Kinect sdk for windows로 nui 개발 시작하기Kinect sdk for windows로 nui 개발 시작하기
Kinect sdk for windows로 nui 개발 시작하기Kwang-soo Park
 
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원cbs15min
 
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리MinGeun Park
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출hongsungbock
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기Kiheon Park
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 

Viewers also liked (9)

게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6Effective c++ 정리 chapter 6
Effective c++ 정리 chapter 6
 
Kinect sdk for windows로 nui 개발 시작하기
Kinect sdk for windows로 nui 개발 시작하기Kinect sdk for windows로 nui 개발 시작하기
Kinect sdk for windows로 nui 개발 시작하기
 
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
 
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출
 
Unity 시작하기
Unity 시작하기Unity 시작하기
Unity 시작하기
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 

Similar to 장용석, fmod를이용한사운드프로그래밍, NDC2010

[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기NHN FORWARD
 
리코더티쳐 사업제안서 - Recorder Teacher Business Plan
리코더티쳐 사업제안서 - Recorder Teacher Business Plan리코더티쳐 사업제안서 - Recorder Teacher Business Plan
리코더티쳐 사업제안서 - Recorder Teacher Business Plan봉조 김
 
3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)Daniel Shin
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기JP Jung
 
이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011devCAT Studio, NEXON
 
디지털사운드
디지털사운드디지털사운드
디지털사운드Donghoi Kim
 
Webaudio api
Webaudio apiWebaudio api
Webaudio apiJH Lee
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기Jiho Choi
 
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기NAVER D2
 
Audio data preprocessing and data loading using torchaudio
Audio data preprocessing and data loading using torchaudioAudio data preprocessing and data loading using torchaudio
Audio data preprocessing and data loading using torchaudioSeungHeon Doh
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
Refactoring web audio_player
Refactoring web audio_playerRefactoring web audio_player
Refactoring web audio_player창석 한
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트JP Jung
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
인디 게임 개발자 스터디 1회 오픈 세미나 안내
인디 게임 개발자 스터디 1회 오픈 세미나 안내인디 게임 개발자 스터디 1회 오픈 세미나 안내
인디 게임 개발자 스터디 1회 오픈 세미나 안내Alex Kang
 
리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기flashscope
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
정보매체와 물리교육 동영상
정보매체와 물리교육 동영상정보매체와 물리교육 동영상
정보매체와 물리교육 동영상cineduke
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 

Similar to 장용석, fmod를이용한사운드프로그래밍, NDC2010 (20)

Tonicscape
TonicscapeTonicscape
Tonicscape
 
[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기
 
리코더티쳐 사업제안서 - Recorder Teacher Business Plan
리코더티쳐 사업제안서 - Recorder Teacher Business Plan리코더티쳐 사업제안서 - Recorder Teacher Business Plan
리코더티쳐 사업제안서 - Recorder Teacher Business Plan
 
3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기
 
이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011이원, 절차적 지형과 월드 머신, NDC2011
이원, 절차적 지형과 월드 머신, NDC2011
 
디지털사운드
디지털사운드디지털사운드
디지털사운드
 
Webaudio api
Webaudio apiWebaudio api
Webaudio api
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기
 
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
 
Audio data preprocessing and data loading using torchaudio
Audio data preprocessing and data loading using torchaudioAudio data preprocessing and data loading using torchaudio
Audio data preprocessing and data loading using torchaudio
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
Refactoring web audio_player
Refactoring web audio_playerRefactoring web audio_player
Refactoring web audio_player
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
인디 게임 개발자 스터디 1회 오픈 세미나 안내
인디 게임 개발자 스터디 1회 오픈 세미나 안내인디 게임 개발자 스터디 1회 오픈 세미나 안내
인디 게임 개발자 스터디 1회 오픈 세미나 안내
 
리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기리눅스 환경에서 SonarQube 간단하게 사용해보기
리눅스 환경에서 SonarQube 간단하게 사용해보기
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
정보매체와 물리교육 동영상
정보매체와 물리교육 동영상정보매체와 물리교육 동영상
정보매체와 물리교육 동영상
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 

More from devCAT Studio, NEXON

이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019devCAT Studio, NEXON
 
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019devCAT Studio, NEXON
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019devCAT Studio, NEXON
 
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019devCAT Studio, NEXON
 
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019devCAT Studio, NEXON
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018devCAT Studio, NEXON
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018devCAT Studio, NEXON
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018devCAT Studio, NEXON
 
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012devCAT Studio, NEXON
 
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011devCAT Studio, NEXON
 
백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010devCAT Studio, NEXON
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017devCAT Studio, NEXON
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017devCAT Studio, NEXON
 

More from devCAT Studio, NEXON (20)

이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
 
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
 
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
 
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
 
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
 
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
 
백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
 

장용석, fmod를이용한사운드프로그래밍, NDC2010

  • 1. Fmod를 이용한 사운드 프로그래밍 넥슨 신규개발3본부 개발1실 M2팀 장용석
  • 2. 발표에 앞서… • 이 세션은 튜토리얼 세션입니다 • FMOD의 장점을 소개하고, 작업 중 경험했던 일과 사운드 작업에 대한 이야기를 진행합니다 • 시간 관계상 깊이 있는 설명까지 다루지는 못하고, 쉽고 간단하게 설명할 예정입니다 • 非 프로그래머도 쉽게 이해할 수 있으리라 생각됩니다 프로그래머 세션인데…
  • 3. 발표자 소개 장용석 • 1998 판타그램 킹덤언더파이어1, 샤이닝로어 온라인 • 2004 엔플레버 라펠즈 • 2008 넥슨 마비노기2 클라이언트, 툴 프로그래머
  • 4. 발표 순서 • FMOD? • Event System • 작업 경험과 사례 • FMOD를 사용하려면 • 정리
  • 5.
  • 6. FMOD • Firelight Technologies社에서 제작한 오디오 라이브러리 (사운드 엔진)
  • 7. FMOD • 다양한 사운드 파일 포맷 지원 • 다양한 플랫폼 지원 PC, Mac, 콘솔, 휴대용 게임기, iPhone, iPad … • DSP, 사실적인 3D 사운드 효과 많은 업체에서 널리 사용 / 유명 게임 엔진에 통합
  • 8. 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()만 하면 된다!
  • 14. 예제 •Event System을 전부 설명하기엔 무리가 따르므로 … •사운드 작업의 간단한 예를 들어 극히 일부 기능만 간단히 소개
  • 15. 총소리 • 거리에따라소리가다르게들린다 • 각각의거리에맞는사운드가필요 발자국 • 바닥재질에따라소리가다르다 • 하나의바닥재질당2~4개의사운드가필요 소리 환경음 • 바람소리, 풀벌레소리, 부엉이소리등등… • 각각의사운드를일정주기또는랜덤하게재생
  • 16. 총소리 하드코딩 하지만 재생방법 자체에 변화가생기면 결국코드수정이불가피! 아니면 데이터화
  • 17. 발자국 • 역시비슷한작업필요 소리 환경음 • 각각의사운드에대해서 재생주기및랜덤확률은어디서설정할것인 가?
  • 18. • 물론 작업 자체가 어려운 것은 아님 • 하지만 다양한 변화를 주는 시도나 세세한 튜닝 작업은 어려움이 따르고 • 어떤한 방식으로든 프로그래머의 추가 작업을 필요로 하게 된다
  • 19. 그렇다면 Event System을 사용할 경우? • 많은 부분을 사운드 디자이너의 손에 맡기고, 프로그래머의 작업을 최소화 할 수 있다.
  • 20. 그렇다면 Event System을 사용할 경우? • 많은 부분을 사운드 디자이너의 손에 맡기고, 프로그래머의 작업을 최소화 할 수 있다.
  • 21. 총소리 • 툴에서 “rifle” 사운드 이벤트를 제작한다.
  • 22. 총소리 • 툴에서 “rifle” 사운드 이벤트를 제작한다. 가로축은 거리 파라미터 부드러운 트랜지션도 가능! rifle_near.wav rifle_mid.wav rifle_far.wav
  • 23. 총소리 // 이벤트 객체 획득 EventObj rifleSound = EventSystem->GetEvent( “rifle” ); // 좌표 설정 rifleSound->SetPosition(currentPos); // 사운드 재생 (객체는 이후 재사용 가능) rifleSound->Play(); • 클라이언트 코드에서는 사운드 이벤트 이름만 알면 된다
  • 24. 발자국 소리 • 역시 툴에서 “footstep” 사운드 이벤트 제작
  • 25. 발자국 소리 여러 개의 사운드 파일을 정의할 수 있다 • 역시 툴에서 “footstep” 사운드 이벤트 제작 파라미터는 바닥 재질 타입으로 사용 각 파일의 재생 빈도도 설정 가능! 현재 파라미터값에 각 바닥 재질 별 사운드들 해당하는 사운드가 재생!
  • 26. 발자국 소리 // 이벤트 객체 획득 EventObj footstepSound = EventSystem->GetEvent( “footstep” ); // 재질 설정 (바뀔때만 처리해주면 OK) footstepSound->SetParameter(groundType); // 사운드 재생 footstepSound->Play(); • 코드에서는 바닥 재질만 설정해주면 된다
  • 28. 환경음 파라미터를 타임라인으로 사용 (지정한 속도에 따라 자동 변화) 다중 레이어 (멀티 트랙)
  • 30. “소리가 왼쪽에서 오른쪽으로 지나갈 때 부드럽게 연결되지 않고 왼쪽 스피커에서 들리다가 갑자기 오른쪽 스피커로 튀는데 어떻게든 해줘요”
  • 31. • 특별히 무슨 문제가 있었던 것은 아님 원래그래요…다른게임도 그렇던데 하지만 확실히 듣기에 거슬린다
  • 32. • 거리가 가까울 때에는 2D 사운드로 재생하면 된다 3D Pan Level 이펙트 0일때 2D 사운드로, 1일때 3D 사운드로 트랜지션 된다 거리가 4m이상인 경우 1 거리가 0m일 때에는 0
  • 33. • 거리가 가까울 때에는 2D 사운드로 재생하면 된다 3D Pan Level 이펙트 0일때 2D 사운드로, 1일때 3D 사운드로 트랜지션 된다 거리가 4m이상인 경우 1 거리가 0m일 때에는 0
  • 34. “제 컴퓨터에서 소리가 작게 들리고 좀 이상한 것 같아요”
  • 35. 원래 그래요… 가 아니고 • 원인을 찾아 헤맸는데… ?!
  • 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 항목 최하단) ※안됨 ㄳ
  • 40. 사운드 시스템 및 사운드 인스턴스 클래스 내부에서 처리되던 모든 작업을… • Command Queue에 명령을 쌓아두는 것으로 변경 • 메인 스레드에서 Queue를 일괄 처리하도록 수정
  • 43. 별도의 trial 버전 없이 full 버전의 툴과 API를 마음껏 다운로드 가능
  • 44. 자체적인 Forum이 있어 문제 발생시 정보를 찾아보기 용이함 Email 답변도 빠른 편
  • 45.
  • 46. 요약 • FMOD Event System을 사용하면 디자이너 프로그래머
  • 47. 개인적인 생각으로 • 게임 개발시 사운드 작업은 다른 부분에 비해 상대적으로 비중을 낮게 두는 경향이 있지 않은지…
  • 48. • 당연한 이야기지만 소홀히 할 수 없는 부분 좋은사운드가게임을돋보이게만들어줄수있을것이다 • FMOD Designer라는 강력한 툴을 사용하여 더 나은 결과물 제작, 다양한 사운드 연출이 가능 + 게임의 생산성 및 작업 능률 향상