목차

예제

다음 내용들은 SDK에서 배포하는 모든 예제 프로젝트의 전체 목록입니다.

SDK 내 예제 코드의 위치에 대한 더 자세한 정보는 디렉터리 구조 를 참고하세요.

Integration Demo

Integration Demo 예제 'Integration Demo'는 다양한 Wwise 기능을 게임에 어떻게 적용하는 지 보여주는 간단한 사용 예제들이 포함된 애플리케이션입니다.

현재 다음과 같은 내용의 통합 방법에 대해 설명하고 있습니다.

Integration Demo에 대한 더 자세한 정보는 Integration Demo 예제 를 참고하세요.

예제 플러그인

다음 Source 및 Effect 플러그인은 Wwise를 통해 설치할 수 있으며, 이 SDK의 예제 코드에서도 확인하실 수 있습니다.

Caution.gif
Caution: 자신의 플러그인이 여기 나온 예제 코드를 기반으로 하는 경우, 반드시 WwiseObject Elements 를 참고하여 플러그인 ID와 관련된 중요한 정보를 확인하시기 바랍니다.

예제 음원 플러그인

사인 예제 음원 플러그인

이 간단한 음원 플러그인을 이용해 Wwise 사용자가 사인(sine) 음의 주파수와 게인, 길이를 선택할 수 있습니다.

위치: 'samples'

Tone Generator 예제 음원 플러그인

이 고급 음원 플러그인을 사용하면 Wwise 사용자가 한층 강력한 제어권을 갖게 돼 다양한 파형 사용 여부를 추가하거나, 미리 정의된 주파수 범위를 스위핑하며 오르내리거나, 사용자 지정 엔벨로프를 지정하거나, 주파수 랜덤화를 추가할 수 있습니다.

위치: 'samples'

오디오 입력 음원 플러그인

이 플러그인을 이용해 사운드 디자이너가 네트워크 스트림이나 PC 사운드 카드에 연결된 마이크 같은 외부 음원 오디오를 사용할 수 있습니다.

위치: 'samples'

이 플러그인에 대한 더 자세한 정보는 오디오 입력 음원 플러그인 을 참고하세요.

예제 효과 플러그인

지연 예제 효과 플러그인

간단한 지연 효과입니다.

위치: 'samples'

예제 오디오 장치 플러그인

예제 오디오 장치 플러그인

오디오를 사용자 지정 사운드카드로 보내는 간단한 오디오 장치 플러그인입니다. (Mac과 Windows만 지원됨)

위치: 'samples'

게임 통합 예제 코드

AkCube 사운드 엔진 통합 예제 프로젝트

Wwise 사운드 엔진을 오픈 소스 1인칭 슈팅 게임에 통합하는데 모든 것이 갖춰진 완전한 프로젝트입니다. 아직 실행해본 적이 없을 경우, Audiokinetic 다운로드 페이지에서 해당 게임과 Wwise 프로젝트를 다운받으실 수 있습니다. 추가적인 도움이나 정보가 필요하신 경우, 서비스 지원에 문의하시기 바랍니다.

사운드 엔진 예제 DLL

이 사운드 엔진 DLL은 사운드 엔진의 다양한 모듈을 결합하고 초기화, 종료 등과 관련된 간단한 함수를 제공해 통합 작업을 간편하게 만듭니다. 사운드 엔진과 관련된 모든 라이브러리를 하나의 DLL로 결합해 게임의 Windows 버전에서 사용하고자 할 경우, 이 예제 프로젝트를 이용해 원하는 DLL을 생성할 수 있습니다. 자신의 게임에 이 DLL을 이용하는 예제는 AkCube 사운드 엔진 통합 예제 프로젝트 를 참고하세요.

Note.gif
Note: 이 프로젝트는 아래 나오는 기본 Low-Level I/O 구현 를 사용합니다.

위치: 'samples'

기본 Low-Level I/O 구현

Low-Level I/O 인터페이스(AkStreamMgrModule.h에서 정의됨)는 Wwise I/O를 게임에 통합하는 기본 권장 방법입니다. SDK는 기본적인 Low-Level I/O의 플랫폼별 구현을 제공하고 있습니다. Wwise I/O에 대한 간략한 내용은 스트리밍 / 스트림 매니저 를 참고하세요.

이 예제들은 있는 그대로 사용해도 되고 자신의 Low-Level I/O 시스템을 직접 구현할 때 기본 바탕으로 사용해도 됩니다. Integrating Wwise I/O 에서 이 예제들을 사용해야 하는 이유와 방법을 명확하게 설명하고 있습니다.

샘플 기본 구현 설명 에서는 기본 Low-Level I/O 구현 예제에 대해 더 자세한 내용을 다룹니다.

위치 (공통):

  • 'samples.h'
  • 'samples.cpp'

위치 (플랫폼별):

  • 'samples\{Platform name}.h'
  • 'samples\{Platform name}.cpp'
  • 'samples\{Platform name}.h'
  • 'samples\{Platform name}.cpp'

추가적으로, CAkDefaultLowLevelIODispatcher 클래스를 이용해 여러 장치에서 I/O 시스템을 관리할 수 있습니다.

위치 (공통):

  • 'samples.h'
  • 'samples.cpp'

파일 패키지 Low-Level I/O 구현

이 예제는 File Packager 유틸리티로 생성한 파일 패키지 사용을 지원해 기본 Low-Level I/O 구현을 향상시킵니다 ( File Packager 유틸리티 참고). Low-Level I/O 모듈을 뒷받침하는 개념에 대한 더 자세한 설명은 Low-Level I/O 를 참고하세요. 이 페이지의 마지막에 보시면 File Package Low-Level I/O 구현의 기능들에 대한 설명이 있습니다 (예제 파일 패키지 Low-Level I/O 구현 설명 ).

기본 Low-Level I/O의 코드를 따라 게임에 클래스를 포함시키면 사용자 게임에서 바로 파일 패키지를 사용할 수 있습니다. 이 구현 내용과 File Packager를 편집해 자신의 게임에 특화된 파일을 포함시킬 수 있습니다. 게임의 모든 I/O에 Audiokinetic의 Stream Manager를 이용할 경우 더욱 유용합니다. 또는 이 코드는 파일 설명자에 파일 ID 매핑하는 전략을 구현할 때 입증할 용도로 사용할 수도 있습니다.

위치:

  • "samples\SoundEngine\Common\AkFilePackageLowLevelIO.h"
  • "samples\SoundEngine\Common\AkFilePackageLowLevelIO.inl"
  • "samples\SoundEngine\Common\AkFilePackage.h"
  • "samples\SoundEngine\Common\AkFilePackage.cpp"
  • "samples\SoundEngine\Common\AkFilePackageLUT.cpp"
  • "samples\SoundEngine\Common\AkFilePackageLUT.cpp"

CAkFilePackageLowLevelIO<>은 템플릿 클래스로서, 기본 Low-Level I/O 플랫폼 전용 구현에 서비스를 추가합니다. File Package Low-Level I/O 클래스의 실질적인 정의는 플랫폼별 폴더에 있습니다.

  • "samples\SoundEngine\{Platform name}\AkFilePackageLowLevelIOBlocking.h"
  • "samples\SoundEngine\{Platform name}\AkFilePackageLowLevelIODeferred.h"

File Packager 유틸리티

File Packager 유틸리티는 위에 나온 File Package Low-Level I/O와 함께 사용할 수 있는 파일 패키지를 생성합니다 ( 파일 패키지 Low-Level I/O 구현 ). 실행 파일은 Wwise와 함께 Tools\ 하위폴더에 설치됩니다. Wwise SDK에서 제공하는 File Packager 유틸리티의 소스 코드를 참고하시면 도움을 얻으실 수 있습니다.

위치: 'samples'

File Packager는 특정 플랫폼과 프로젝트에 대해 Wwise가 생성한 모든 파일, 즉 뱅크와 스트림 오디오 파일같이 사운드 엔진이 런타임에 읽어야 하는 파일들을 연결시킵니다. 주로 SoundBank를 생성한 후 사용하게 됩니다. File Packager에는 사용자 인터페이스가 있어, 패키지 파일들의 순서를 편집하고 저장할 수 있습니다. File Packager는 'generate mode'로도 실행할 수 있습니다. 이 모드에서는 파일 패키지를 직접 생성해 File Package Low-Level I/O로 로드할 수 있습니다. 더 자세한 내용은 Wwise 도움말에 나온 File Packager의 명령줄 인수에서, SoundBank 생성 과정의 마지막에 자동으로 실행되는 명령줄을 지정한 부분을 참고하세요. 여기서부터는 File Packager 코드의 클래스들을 간략히 설명합니다.

File Packager는 C#으로 작성합니다. GenerateModeAppContext 클래스는 'generate mode'일 때 해당 애플리케이션을 다루며, EditModeForm 클래스는 'edit mode'일 때 애플리케이션을 다룹니다 (UI). 'Package Layout' 폴더에 그룹화된 클래스들은 편집 모드 UI의 비즈니스 로직과 해당 레이아웃의 지속을 다룹니다. 패키징은 SoundBanksInfo.xml 파일의 내용물을 기반으로 합니다 ('Info File' 폴더 내 클래스를 이용해 파싱됨). SoundBanksInfo.xml 파일은 프로젝트의 모든 뱅크와 스트리밍된 오디오 파일을 플랫폼별로 나열합니다 ( SoundBanksInfo.xml 참고).

이 애플리케이션은 'File package header' 폴더의 클래스를 사용하는 FilePackageGenerator::Generate() 을 호출해 패키징을 실행합니다. 파일 패키징 단계는 다음과 같습니다. (SoundBanksInfo.xml 는 INFO 파일로 나타냈음)

  • INFO 파일이 파싱돼 프로젝트 내 모든 언어 이름을 검색함. 자동으로 생성된 언어 ID의 맵이 생성됨 (LanguageMap 클래스).
  • INFO 파일에서 검색된 모든 SoundBank에 대해 IncludedFiles 배열이 생성됨 (FileLUT). 파일 ID와 언어 ID 순서로 정렬돼있음.
  • INFO 파일에서 검색된 모든 Streamed Audio File에 대해 IncludedFiles 배열이 생성됨 (FileLUT). 파일 ID와 언어 ID 순서로 정렬돼있음.
  • 전체 헤더 크기가 계산됨.
  • 로드된 레이아웃이 있다면 이를 기반으로 포함된 파일의 순서가 결정됨 (FileOrganizer).
  • 두 LUT의 IncludedFiles를 다시 참고해 시작 블록을 계산하고 그 크기에 따라 필요한 여백을 계산합니다 (FileOrganizer).
  • 전체 헤더가 출력 파일에 작성됨.
  • 참조한 파일들이 복사돼 적절하게 여백 없이 출력 파일에 첨부됨.

생성 진행 과정과 알림을 보여주는 UI 양식은 Progress 클래스에서 구현됩니다 ('UI' 폴더). FilePackageGenerator로부터 오는 진행 알림을 받습니다.

File Packager의 명령줄 인수에 대한 자세한 설명은 Wwise 도움말을 참고하세요.

파일 패키지 사용하기

File Packager 유틸리티 나 다른 도구로 생성한 파일 패키지를 사용하려면 Low-Level I/O 코드를 작성해야 합니다. 기본적으로 적절한 AkFileDesc::uSector() 값으로 해당 패키지에서 요청된 파일의 오프셋 지정해야 합니다.

CAkFilePackageLowLevelIO 클래스는 예제 코드로 제공됩니다. 이 클래스는 기본 Default Low-Level I/O를 확장해, File Packager로 생성한 파일 패키지를 이용해 있는 그대로 사용할 수도 있습니다. 간단히 CAkDefaultLowLevelIO 대신 CAkFilePackageLowLevelIO 를 인스턴스화하면 됩니다. 그런 다음 가장 먼저 CAkFilePackageLowLevelIO::LoadFilePackage() 를 호출해 파일 패키지를 명시적으로 로드해야 합니다. Low-Level I/O가 파일 패키지의 헤더를 열어 파싱한 다음 조회 테이블을 생성하게 됩니다. 이 때 실제 패키징된 파일을 메모리에 로드하지는 않습니다. 그러면 Stream Manager가 AK::StreamMgr::IAkFileLocationResolver::Open() 을 호출할 때마다 Wwise가 모든 패키지에서 해당 파일을 검색합니다. 파일이 검색되지 않으면 기본 구현이 호출됩니다.

이 예제에서 패키지의 검색 순서는 LoadFilePackage() 로 로드된 순서의 정반대입니다. 파일 패키지를 이용해 DLC 를 구현하는 경우, 게임이 'base' (기본 설정) 파일 패키지를 가장 먼저 로드한 다음 DLC 패키지를 로드해야 합니다. 그러면 CAkFilePackageLowLevelIO::Open() 이 DLC 패키지를 먼저 검색합니다. 만약 파일이 DLC 패키지와 'base' 패키지 두 곳 모두에 존재할 경우 DLC 패키지에 있는 파일이 선택됩니다.

이 예제 구현에 대한 간략한 설명은 위쪽의 파일 패키지 Low-Level I/O 구현 의 목록을 참고하세요. 거기서 해당 문서 내 관련된 다른 내용으로 연결된 링크를 찾으실 수 있습니다 (예: Low-Level I/O 예제 코드 설명).

CAkFilePackageLowLevelIO 및 관련된 File Packager 유틸리티 코드는 더 복잡한 파일 패키징을 구현할 때 밑그림으로 사용할 수 있습니다.

Copy Streamed Files 유틸리티

Copy Streamed Files (스트리밍 파일 복사) 유틸리티는 File 패키저를 대신하거나 그와 함께 사용할 수 있습니다. 예제 코드로 제공되는 외부 툴처럼 구현해서 직접 수정하거나 자신의 툴의 기본으로 사용할 수 있습니다. 이는 C#으로 작성됐습니다.

이 툴은 프로젝트의 캐시로부터 스트리밍 파일을 복사해 SoundBank 폴더로 가져옵니다. 실행 파일은 Wwise에 의해 Tools 하위폴더에 설치됩니다. 이 툴을 수정할 경우, 반드시 회사 내 Wwise를 실행하는 모든 기기(개발자, 사운드 디자이너, 빌드 머신, 등)의 실행 파일을 업데이트하세요.

위치: "samples\Tools\CopyStreamedFiles"

SoundFrame 예제 코드 (추후 버전에는 사용 중단)

Using SoundFrame (deprecated) 에서 설명한 것과 같이, SoundFrame은 3D 애플리케이션이나 게임 편집기와 같은 다른 저작 도구와 Wwise를 연결시켜줍니다. 더 자세한 정보는 Using SoundFrame (deprecated) 을 참고하세요.

c

SoundFrame 테스트 애플리케이션

SoundFrame API의 사용 방법을 보여주는 예제 애플리케이션입니다.

위치: "samples\SoundFrame\SFTest"

소스 컨트롤 예제 코드

이 예제 플러그인에 대한 자세한 정보는 소스 컨트롤 플러그인 예제 코드 에서 확인하실 수 있습니다.

기본 소스 컨트롤 예제 플러그인

Wwise의 소스 컨트롤 플러그인을 만드는 법을 보여주는 예제 DLL 프로젝트입니다. 소스 컨트롤 작업 자체를 실행하지는 않지만 이런 종류의 플러그인을 개발할 때 기본 틀로 사용할 수 있습니다.

위치: "samples\SourceControl\SourceControlSample"

더 자세한 정보는 기본 소스 컨트롤 예제 플러그인 을 참고하세요.

Perforce 소스 컨트롤 예제 플러그인

Wwise에 기본으로 들어있는 Perforce 플러그인입니다. 이를 이용해 Wwise 저작 애플리케이션에서 Perforce 작업을 실행할 수 있습니다. 전체 소스 코드가 포함돼있어, 소스 컨트롤 플러그인에 필요한 모든 내용이 들어있는 예제를 제공합니다. 필요에 맞게 사용자 정의가 가능해 보다 향상된 플러그인을 만들 수도 있습니다.

위치: "samples\SourceControl\Perforce"

더 자세한 정보는 Perforce 소스 컨트롤 예제 플러그인 을 참고하세요.

Subversion 소스 컨트롤 예제 플러그인

Wwise에 기본으로 포함돼있는 Subversion 플러그인입니다. 이를 이용해 Wwise 저작 애플리케이션에서 Subversion 작업을 실행할 수 있습니다. 전체 소스 코드가 포함돼있어, 소스 컨트롤 플러그인에 필요한 모든 내용이 들어있는 예제를 제공합니다. 필요에 맞게 사용자 정의가 가능해 보다 향상된 플러그인을 만들 수도 있습니다.

Note.gif
Note: 이 플러그인은 현재 32 비트 버전만 제공되고 있습니다.

위치: "SDK\samples\SourceControl\Subversion"

더 자세한 정보는 Subversion 소스 컨트롤 예제 플러그인 을 참고하세요.

Wwise 저작 API

Wwise 저작 API(Wwise Authoring API, WAAPI)에는 세 개의 프로그래밍 언어, C++, JavaScript, Python에 대한 다양한 기능의 사용법을 보여주는 간단한 예제들이 들어있습니다.

C++ 폴더에는 구현 방법을 보여주는 사용 예제가 들어있습니다.

  • SampleClient
    • 명령줄에서 Wwise를 실행하고 UI 사용 없이 Wwise를 열 수 있습니다.
    • 위치: "SDK\samples\WwiseAuthoringAPI\cpp\SampleClient"

JavaScript 폴더에는 Wwie를 연결할 수 있는 다양한 프로토콜의 사용 예제가 들어있습니다.

  • HTTP POST
    • 위치: "SDK\samples\WwiseAuthoringAPI\js\hello-wwise-node-http"
  • WAMP
    • 위치: "SDK\samples\WwiseAuthoringAPI\js\hello-wwise-node-wamp"
  • 웹 WAMP
    • 위치: "SDK\samples\WwiseAuthoringAPI\js\hello-wwise-web-wamp"

간단한 연결 예제 외에도, JavaScript 폴더에는 Wwise 저작 프로토콜에 대한 다양한 기능을 직접 실행해볼 수 있는 예제들도 있습니다.

  • 웹 전송
    • 웹 전송을 이용해 웹 페이지에서 명령을 실행할 수 있습니다.
    • 위치: "SDK\samples\WwiseAuthoringAPI\js\web-transport"
  • XY-pad XY-pad를 이용해 2차원 공간에서 하나의 이동 가능한 지점으로 두 개의 게임 매개 변수를 동시에 조정할 수 있습니다.
    • 위치: "SDK\samples\WwiseAuthoringAPI\js\xy-pad"
  • selection
    • selection(선택) 예제는 Wwise 저작 API의 selection 함수를 사용하는 방법을 보여줍니다.
    • 위치: "SDK\samples\WwiseAuthoringAPI\js\xy-pad"

Python 폴더에는 Wwise를 연결할 수 있는 다양한 프로토콜의 사용 예제가 들어있습니다.

  • HTTP POST
    • 위치: "SDK\samples\WwiseAuthoringAPI\python\hello-wwise-http"
  • WAMP
    • 위치: "SDK\samples\WwiseAuthoringAPI\python\hello-wwise-wamp"
참고: