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

Más contenido relacionado

La actualidad más candente

[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
Shader model 5 0 and compute shader
Shader model 5 0 and compute shaderShader model 5 0 and compute shader
Shader model 5 0 and compute shaderzaywalker
 
NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준영준 박
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
모바일 게임 개발
모바일 게임 개발모바일 게임 개발
모바일 게임 개발hong sanghyun
 
뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론sinnoske
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기ByungChun2
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다Lee Dustin
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들강 민우
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
게임회사 실무용어 완전정복! 쿡앱스 용어정리집
게임회사 실무용어 완전정복! 쿡앱스 용어정리집 게임회사 실무용어 완전정복! 쿡앱스 용어정리집
게임회사 실무용어 완전정복! 쿡앱스 용어정리집 CookApps
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스Seungmo Koo
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)ChangHyun Won
 
한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013영욱 오
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법강 민우
 
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景UnityTechnologiesJapan002
 
Customize renderpipeline
Customize renderpipelineCustomize renderpipeline
Customize renderpipelineAkilarLiao
 

La actualidad más candente (20)

[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Shader model 5 0 and compute shader
Shader model 5 0 and compute shaderShader model 5 0 and compute shader
Shader model 5 0 and compute shader
 
NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준NDC 2011 영웅전 런칭팀 박영준
NDC 2011 영웅전 런칭팀 박영준
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
모바일 게임 개발
모바일 게임 개발모바일 게임 개발
모바일 게임 개발
 
뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
게임회사 실무용어 완전정복! 쿡앱스 용어정리집
게임회사 실무용어 완전정복! 쿡앱스 용어정리집 게임회사 실무용어 완전정복! 쿡앱스 용어정리집
게임회사 실무용어 완전정복! 쿡앱스 용어정리집
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)
 
한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013한국 게임의 역사 NDC 2013
한국 게임의 역사 NDC 2013
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
 
Customize renderpipeline
Customize renderpipelineCustomize renderpipeline
Customize renderpipeline
 

Destacado

박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기Kiheon Park
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback흥배 최
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASA스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASAChanho Song
 
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원cbs15min
 
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리MinGeun Park
 
GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터Mark Choi
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder우진 이
 
Cocos2d x a to z (상)
Cocos2d x a to z (상)Cocos2d x a to z (상)
Cocos2d x a to z (상)SeungIl Choi
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출abapier
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출hongsungbock
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정abapier
 
[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기Sun Park
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점JaeHong Park
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2진상 문
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash권 태혁
 
3D Engine (ICON 2007)
3D Engine (ICON 2007)3D Engine (ICON 2007)
3D Engine (ICON 2007)SeongWan Kim
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Thisisone Lee
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체Mark Choi
 

Destacado (20)

박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASA스마트폰 해킹과 대응 @KASA
스마트폰 해킹과 대응 @KASA
 
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
세바시15분 소리의 발명 사운드 디자인 - 박도영 현대기아차 기술연구소 연구원
 
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
[NHN_NEXT/윈도우 게암 프로그래밍] 3. 라이브러리
 
GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder
 
Cocos2d x a to z (상)
Cocos2d x a to z (상)Cocos2d x a to z (상)
Cocos2d x a to z (상)
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출
 
투영 공식
투영 공식투영 공식
투영 공식
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정
 
[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash
 
3D Engine (ICON 2007)
3D Engine (ICON 2007)3D Engine (ICON 2007)
3D Engine (ICON 2007)
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체
 

Similar a Fmod를 이용한 사운드 프로그래밍

[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기NHN FORWARD
 
디지털사운드
디지털사운드디지털사운드
디지털사운드Donghoi Kim
 
제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
 
안드로이드
안드로이드안드로이드
안드로이드teamoelly
 
디지털비디오
디지털비디오디지털비디오
디지털비디오Donghoi Kim
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art TechnologiesSangYun Yi
 
개발자 챌린지 수상_feever발표자료
개발자 챌린지 수상_feever발표자료개발자 챌린지 수상_feever발표자료
개발자 챌린지 수상_feever발표자료Se Man Kwon
 
Android mediacodec
Android mediacodecAndroid mediacodec
Android mediacodecTaehwan kwon
 
Android Screen Recorder
Android Screen RecorderAndroid Screen Recorder
Android Screen RecorderSooHwan Ok
 

Similar a Fmod를 이용한 사운드 프로그래밍 (13)

[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기[2018] 모바일 음악 인식 서비스 개발기
[2018] 모바일 음악 인식 서비스 개발기
 
디지털사운드
디지털사운드디지털사운드
디지털사운드
 
Udk] sound (sound cue)
Udk] sound (sound cue)Udk] sound (sound cue)
Udk] sound (sound cue)
 
Udk] sound (sound cue)
Udk] sound (sound cue)Udk] sound (sound cue)
Udk] sound (sound cue)
 
Tonicscape
TonicscapeTonicscape
Tonicscape
 
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
 
안드로이드
안드로이드안드로이드
안드로이드
 
디지털비디오
디지털비디오디지털비디오
디지털비디오
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art Technologies
 
Dcase
DcaseDcase
Dcase
 
개발자 챌린지 수상_feever발표자료
개발자 챌린지 수상_feever발표자료개발자 챌린지 수상_feever발표자료
개발자 챌린지 수상_feever발표자료
 
Android mediacodec
Android mediacodecAndroid mediacodec
Android mediacodec
 
Android Screen Recorder
Android Screen RecorderAndroid Screen Recorder
Android Screen Recorder
 

Último

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 

Último (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 

Fmod를 이용한 사운드 프로그래밍

  • 1. 데브루키203회 fMOD를 이용한사운드 프로그래밍 발표일 : 2011. 4. 8 발표자 : 홍성복
  • 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 할 수 있는 기능을 구현해 두자
  • 27. 실제 게임에 적용하기 위한아키텍처 구성
  • 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
  • 33. 참고 www.fmod.org NDC10 장용석 FMOD를 이용한 사운드 프로그래밍 http://ndc.nexon.com/150088648457