누구나 사용할 수 있는 WAAPI - 제 1부: 개요

오디오 프로그래밍 / 사운드 디자인

안녕하세요. 저는 왕양 (汪洋) 이라고 합니다 (혹은씨 예’, 라고도 불립니다).

저는 작년 하반기에 WAAPI에 대해 알게 되었습니다 (Wwise 저작 API). 저같이 전문적이지 않은 프로그래머에게는 WAMP JSON과 같은 새로운 개념이 어렵게 느껴질 수 있습니다. 하지만 공식 문서 외에는 다른 개발자들이 공유해준 동영상, 기사, 프로젝트가 많지 않더군요. 저는 도움을 청하는 대신 제가 직접 알아보기로 했습니다. 그리고 정말 많은 것을 배우게 되었죠.

리누스 토발즈(Linus Torvalds) 이렇게 말했습니다.
오픈 소스에서 뭔가를 해내려면 많은 사람이 필요하다고 믿고 있죠.

 

아이디어라는 것은 세상에 알려져야만 값진 것입니다.     그렇죠? 그래서 이러한 오픈 소스의 정신으로 제가 이 WAAPI 안내서를     공유해드리고자 합니다. 이 안내서는 공식 설명서를 보완해주지만 좀 더 접근하기 쉽고 초보자도 잘 이해할 수 있도록 구성되어 있습니다.

초보자가 이해하기 쉽게 구성되었다고 해서 무조건 처음부터 시작해야 하는 것은 아닙니다. 대신 이 안내서를 사용하면 여러분이 WAAPI의 세계를 탐험하는 것이 조금 더 쉬워질 것입니다. 저는 파이썬(Python)을 도구로 사용하고 있기 때문에 모든 내용은 파이썬을 기반으로 합니다. 물론 WAAPI에서 지원하는 다른 프로그래밍 언어를 사용해서 원격 호출을 만들 수도 있습니다 (예를 들어 C#을 사용해서 WAAPI를 호출).

이 블로그 시리즈는 다음 사항을 가정합니다.

1) 독자는 개발 환경을 구성하고 파이썬(Python), 아나콘다(Anaconda), (pip), VS 코드(VS Code), 파이참(PyCharm)과 같은 도구를 설치 및 사용할 수 있습니다.
2) 기본적인 파이썬 구문법에 익숙합니다.
3) Wwise 기능을 포괄적으로 이해합니다.
4) 기존의 Wwise 작업 과정을 최적화하기를 원합니다.
5) 마인드 맵에 대해 어느 정도 알고 있습니다.

목차:

WAAPI를 사용해야 할까요?

  • 1.1. Wwise를 사용할 때       효율적으로 작업하는 게 힘들었던 적이 있나요?
  • 1.2. WAAPI를 소개한 이유는 무엇일까요?
  • 1.3. 공식 문서로 충분하지 않나요?

마인드 맵을 사용해서 WAAPI를 좀 더 효율적으로 배우기

  • 2.1. 마인드 맵으로 WAAPI의 필수 내용 요약하기
  • 2.2. 추가 설명을 위해서 기술 자료로 가져오기

제가 이 블로그 시리즈를 쓴 방법
WAAPI 기본 사항

  • 4.1. WAAPI?
  • 4.2. WAAPI에 의해 지원되는 프로그래밍 언어와 호출 방법

프로그래밍 언어와 호출 방법

  • 4.3. 개발 환경 구성하기

아나콘다(Anaconda) 설치하기
아나콘다 구성하기 및 핍(pip)을 사용하여 waapi-client 패키지 추가하기
VS Code 개발 환경 구성하기
Wwise에서 WAAPI 활성화하기

  • 4.4. 실행(Execution) API와 구독(Subscription) API의 차이점
  • 4.5. JSON WAAPI 문서

JSON이란?
전달인자와 결과 (Execution API)
JSON 사용법
가독성을 높이기 위한 JSON 구문법 형식
옵션과 퍼블리시 (Subscription API)

  • 4.6. Hello Wwise!

사용할 API 결정하기
코드
결과

WAAPI 사용 사례

  • 5.1. 실행(Execution) API

전달인자 사용하지 않기
전달인자 사용하기

  • 5.2. 구독(Subscription) API
  • 다음 단계

WAAPI를 사용해야 할까요?

1.1. Wwise를 사용할 때     더 효율적으로 작업하는 게 힘들었던 적이 있었나요?

  • 클릭 및 드래그하여 놓기 작업을 줄일 수 있을까요?
  • 수백, 수천 개에 달하는 에셋을 가져왔을 때 어떻게 하면 재생 규칙을 좀 더 쉽게 만들 수 있을까요?
  • Game Sync, Event, SoundBank를 사용할 때 논리적 연결을 오토메이션(자동화)할 수 있을까요?
  • 어떻게 하면 DAW Wwise의 동적 상호 작용을 제작할 수 있을까요?
  • 어떻게 하면 CI 시스템이 통합 파이프라인을 지속적으로 최적화할 수 있을까요?
  • 기타 내용

1.2. WAAPI를 소개한 이유는 무엇일까요?

만약 위에 나온 내용 하나라도 질문해본 경험이 있다면 아마 WAAPI가 좋은 해답이 될 것입니다. Wwise 2017.1에서 소개한 훌륭한 WAAPI는 반복적인 작업을 쉽게 실행하고 작업 과정을 단일화하기 위해 고안되었습니다. WAAPI를 사용하면 프로젝트 정보 가져오기, 오디오 파일 가져오기, 컨테이너 계층 구조 제작하기, Event 게시하기, Game Sync 설정하기 등 굉장히 다양한 작업을 실행할 수 있습니다. WAAPI는 사운드 디자이너가 Wwise 작업 과정을 최적화하는 데에 필수적인 도구입니다. 시간을 절약해줄 뿐만 아니라 창의적인 작업에 집중할 수 있게 해주죠.

업계에는 게임 오디오 프로그래머나 기술적 사운드 디자이너와 같은 직책이 없는 회사가 아주 많습니다. 만약 그런 회사에 취직할 경우 이 블로그가 굉장한 도움이 될 것입니다. 작업 과정을 단일화할 수 있는 최고의 방법은 반복적인 작업을 지속적으로 최적화하는 것입니다.      막연히 궁금해하는 대신 어떻게 최적화할 수 있는지 직접 살펴봅시다.

1.3. 공식 문서로 충분하지 않나요?

제가 알고 있는 모든 오디오 미들웨어 중에서 Wwise가 가장 완벽하게 현지화된 공식 문서를 갖고 있습니다. 하지만 WAAPI를 배우고 사용하려면 여전히 기술적 배경 지식이 어느 정도 필요합니다.  그게 바로 제가 이 블로그 시리즈를 기획한 이유입니다. 이러한 문서에 도움이 되길 원하는 마음으로 말이죠. 한편 Audiokinetic 블로그에는 WAAPI에 대한 훌륭한 글이 있습니다. 관심이 있으시다면 읽어보세요.

마인드 맵을 사용해서 WAAPI를 좀 더 효율적으로 배우기

2.1. 마인드 맵으로 WAAPI의 필수 내용 요약하기

마인드 맵은 지난 8년 동안 저에게 중요한 학습 도구로서 정말 많은 영감을 주었습니다. 직접 봐서 알겠지만, 정말로 다양한 WAAPI API 가 나와있습니다. 일일이 설명서를 뒤져 무엇이 어떤 기능을 하는지 알아내는 데 시간이 꽤 걸리죠. 예를 들어 API 쿼리를 실행하기 위해 ak.wwise.core.object.get을 써야 한다는 것을 어떻게 알 수 있을까요?

1

저는 이 작업을 실행하는 좀 더 나은 방법이 있는지 궁금했습니다. 그리고, 빙고! 마인드 맵을 제작하자는 생각이 들었죠. 마인드 맵을 사용하여 WAAPI 필수 내용을 어떻게 요약할 수 있을까요? ak.wwise.core.object.get을 예로 들어볼까요.

  1. 먼저 ak 접두어는 잠깐 잊어주세요. 그리고 나머지를 wwise.core, object, get 이렇게 세 가지 부분으로 나누어봅시다.
  2. 그런 다음 모든 API를 기능별로 분류하고 상자를 사용해서 식별해봅시다.

2전체 뷰

3지역적 뷰

2.2.추가 설명을 위해서 기술 자료로 가져오기

이렇게 WAAPI를 배우기 위한 기본적인 논리 시스템이 제작되었습니다. 다음으로 좀 더 자세한 설명을 위해 정보를 MarginNote 3으로 가져와야 합니다.

4MN3에서 위와 같이 표시됩니다

이제 WAAPI의 전체 그림을 아주 명확하게 확인할 수 있습니다. 그보다 더 중요한 것은 바로 이 API를 배우고 사용할 수 있는 보다 나은 방식을 제공해준다는 것이죠. 저에게는 꽤 유용했던 이 방법이 여러분에게도 잘 맞았으면 좋겠습니다. 물론 여러분에게 더 알맞은 다른 도구를 선택하셔도 좋습니다. 제가 만든 마인드 맵을 모두 보여드리지는 않겠습니다. 앞서 말씀드린 방법으로 여러분이 직접 마인드 맵을 제작해보시기를 바랍니다. 별로 어렵지 않을 겁니다. 관심이 있으시다면 그냥 제가 한 그대로 다시 하시면 됩니다. MarginNote 3, XMind, 혹은 다른 도구를 선택하셔도 좋습니다. 가장 중요한 것은 여러분이 직접 해보는 것입니다.

제가 이 블로그 시리즈를 쓴 방법

이제 제가 WAAPI 필수 내용을 요약한 방법을 알게 되셨겠죠. 그렇다면 제가 이 블로그 시리즈를 쓴 방법에 대해 살펴볼까요. WAAPI API는 실행 (Function, 함수)과 구독 (Topic, 주제) 이 두 가지 유형으로 나눌 수 있습니다. 저는 이를 따라서 블로그 시리즈를 썼습니다. (참고: 다시 말하지만 저는 ak. 접두어는 생략했습니다.)

이 블로그의 목록은 다음과 같습니다:

  1. 개요
  2. wwise.core (주로 실행 APIs)
  3. wwise.ui, wwise.debug, wwise.waapi
  4. soundengine
  5. wwise.core, wwise.debug, wwise.ui (구독 APIs)
  6. 게임 엔진에서 WAAPI로의 호출 만들기
  7. 예시

WAAPI 기본 사항

4.1. WAAPI란?

WAAPI (Wwise 저작 API) Wwise에서 필수적인 모듈입니다. 이러한 API로 호출을 만들면 마우스를 움직이거나 키보드로 입력할 필요 없이 Wwise가 직접 작업을 실행할 수 있습니다. 이를 통해 할 수 있는 작업으로는 UI (, 옵션, 명령어), 주요 기능 (오디오 파일 빠르게 추가하기), 사운드 엔진 (RTPC 값 설정하기, Events 게시 등) 작업 등이 있습니다. WAAPI에 대한 더 많은 정보는 여기를 참고하세요https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi.html

4.2. WAAPI에 의해 지원되는 프로그래밍 언어와 호출 방법

프로그래밍 언어

C++, C#, 자바스크립트(JavaScript), 파이썬(Python) 등과 같이 다양한 언어를 사용해서 WAAPI 호출을 만들 수 있습니다. 마지막 세 가지 언어는 상대적으로 초보자가 다루기 쉬운 언어입니다. (파이썬 3.6+를 권장합니다.) 플러그인 안에서 WAAPI 호출을 만들 필요가 없다면 C++를 사용할 필요가 없습니다.

호출 방법

WAAPI API 호출을 만들기 위해 WAMP, HTTP POST, Wwise 플러그인이라는 세 가지 방법을 제공합니다. 대부분 저희는 WAMP를 사용합니다. 이 방법이 실행과 구독 API를 모두 지원하는 유일한 방법이기 때문이죠. 그렇다면 WAMP란 무엇일까요? WAMP WebSocket을 통한 통신 방법입니다. 네트워크 통신의 원리를 잘 모르실 경우 네트워크 상으로 정보를 전달하는 방법이라고 생각하시면 됩니다. 그렇게 하기 위해서는 IP 주소와 WAAPI로 연결한 포트가 필요합니다. 애플리케이션이 WAMP를 통해 Wwise에 연결되어 있을 경우에만 필요한 작업을 실행할 수 있습니다. WAAPI 호출 만들기에 대한 더 많은 정보는 여기를 참고하세요: https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi_gettingstarted.html.

4.3. 개발 환경 구성하기

개발 환경에는 딱히 새로 말씀드릴 것이 없기 때문에 그냥 넘어가도록 하겠습니다. 관심이 있으시다면 아래 링크를 확인해주세요. 콘다(Conda, 아나콘다)의 경우 WAAPI가 필요로 하는 the waapi-client 패키지를 가지고 있지 않기 때문에 직접 설치해야 합니다. 아나콘다를 좋아하지 않는 분들은 대신 핍을 사용하실 수 있습니다. 이 경우 공식 문서에서 설명한 대로 먼저 핍을 설치하고 아나콘다 안에서 핍으로 패키지를 관리하는 것이 좋습니다. 더 많은 정보는 아래 링크를 확인해주세요. (고급 사용자의 경우) 콘다 스켈레톤 pypi 와 콘다 빌드 명령어를 사용해서 패키지를 설치할 수 있습니다. 하지만 제가 개인적으로 시도해보지 않았기 때문에 이 부분은 여러분들에게 맡기도록 하겠습니다.

아나콘다(Anaconda) 설치하기

https://segmentfault.com/a/1190000022797661

아나콘다 구성하기 및 핍(pip)을 사용하여 waapi-client 패키지 추가하기

https://zhuanlan.zhihu.com/p/25198543

https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html#installing-non-conda-packages

참고: 핍이 설치되어 있으면 파이썬 3에서 pip install waapi-client를 직접 실행할 수 있습니다.

VS Code 개발 환경 구성하기

https://zhuanlan.zhihu.com/p/30324113

Wwise에서 WAAPI 활성화하기

https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi_prepare.html


4.4. 실행(Execution) 및 구독(Subscription) API의 차이점

실행 API는 특정 작업을 실행하며 구독 API는 그 후 결과를 반환합니다. API는 공식 Wwise 문서에서 '원격 호출' '퍼블리시 & 발송'이라고 불립니다. 실행 API는 이름에서 알 수 있듯이 모든 API가 특정 작업을 실행하는 데에 사용됩니다. API 호출을 만들면 특정 작업이 실행되죠. 세 가지 방법 모두 실행 API 호출을 만들 수 있지만 HTTP POST는 굳이 권장하지 않습니다.

구독 API:

구독 API 호출을 만들면 애플리케이션이 Wwise가 반응할 때까지 기다립니다. 오브젝트 생성 동작에 구독했을 경우 동작이 실행된 이후에만 결과가 반환됩니다. 이러한 호출은 WAMP를 통해서만 가능합니다. 다른 두 방법으로는 불가능합니다.

4.5. JSON과 WAAPI 문서

JSON이란?

 전문적인 프로그래머가 아닌 분들은 (도 그 중 하나랍니다) WAAPI를 처음 사용하실 때 JSON이 무엇인지 궁금하실 수 있습니다. JSON (JavaScript Object Notation, 자바스크립트 오브젝트 표기법)     데이터 오브젝트를 사람이 읽을 수 있는 텍스트로     저장 및 전달하는 경량급 데이터 교환 형식입니다. XML을 알고 계신 분이라면 아마 JSON에 대해서도 어느 정도 알고 계실 거예요. JSON이 무엇인지를 아는 것은 중요합니다. 왜냐하면 WAAPI로 원격 호출을 만들 때 전달인자를 입력하고 값을 반환하는 데에 모두 이 형식이 사용되기 때문입니다. 계속하기 전에 먼저 이에 대한 답을 찾아봅시다. 좀 더 분명하게 설명하기 위해서 다음 예시를 살펴보겠습니다.

전달인자와 결과 (실행 API)

다음은 두 개의 표가 있는 ak.wwise.core.object.create 설명서입니다.

5전달 인자


6
결과


두 표 모두 Name(이름), Type(종류), Description(설명)이라는 세 가지 열을 가집니다. 함수를 사용하면 전달인자를 전달하고 반환된 결과를 받을 수 있습니다. 전달인자 표에서는 함수 호출을 만들 때 전달해야 할 전달인자를 보여줍니다. 결과 표에서는 작업이 실행되었을 때에 반환되는 결과를 보여줍니다. 앞서 말씀드린 것처럼 모두 JSON 형식으로 되어있습니다. 별표(*)가 표시된 것들은 필수적인 전달인자이며 나머지는 선택적입니다.

전달인자 표를 살펴봅시다. 전달인자에는 세 가지 종류가 있습니다.

  • name *은 이름을 정의하기 위해 전달인자 단일한 문자열을 필요로 합니다. 그렇기 때문에 JSON에 사용하도록 문자열 형식의 이름 하나만 제공하면 됩니다. 하지만 왜 parent *는 전달인자를 네 개나 필요로 할까요? 보다시피 첫 번째 전달인자는 any of: 입니다. , 다음 세 가지 전달인자 중 아무 것이든 선택해서 상위 계층을 정의할 수 있습니다. 이름을 사용할 수도 있고 GUID나 경로를 사용할 수도 있습니다.
  • notes의 경우 별표가 없습니다. 왜냐하면 필수적인 전달인자이기 때문입니다. 다시 말해wwise.core.object.create를 사용할 때 필요에 따라 메모를 전달할 지 여부를 결정할 수 있습니다.
  • children의 경우 약간 헷갈릴 수 있습니다. 이전의 전달인자와는 다르죠. 사실 이 전달인자는 전달할 전달인자를 구성해야 하는 배열(array)입니다. children[... ].type * children[... ].name *은 필수 전달인자입니다. 그렇기 때문에 종류와 이름 하위 전달인자를 구성해야 합니다.

이제 결과 표를 살펴봅시다. 어떤 전달인자가 전달되는지 안다면 아마도 어떤 종류의 결과가 반환될 지를 알아낼 수 있을 것입니다. 예를 들어 ak.wwise.core.object.create를 사용해서 몇몇 오브젝트를 만들 수 있습니다. 당연히 Wwise는 이에 따라 이름, GUID, 경로를 반환해야 합니다. 그동안 실패할 경우 오류가 보고됩니다.

JSON 사용법

이전 섹션에서는 전달인자가 무엇인지와 어떤 결과가 반환되는지에 대해 살펴보았습니다. 이제 WAAPI가 올바르게 수신할 수 있도록 이러한 전달인자를 어떻게 구성해야 할 지 궁금하실 거예요. 예를 들어 ak.wwise.core.object.create가 어떻게 작동하는지 살펴봅시다.

7# ak.wwise.core.object.create를 실행하기 위해 필요한 전달인자
# ak.wwise.core.object.create
를 실행하고 전달인자를 전달한 후에 얻게 되는 결과

예시에서 볼 수 있듯이 JSON은 사실 파이썬에서의 딕셔너리(dictionary)     같습니다. 여기서 차이점은 JSON에 있는 모든 따옴표가 큰따옴표여야 하며 JSON 부분이 문자열 형식이어야 한다는 것입니다. 하지만 파이썬 + WAAPI 환경에서는 이 두 가지 규칙이 철저하게 검토되지 않는 것 같습니다. 그렇기 때문에 형식 변환을 위해 파이썬에서 json 모듈을 사용하지 않아도 됩니다. 딕셔너리 형식으로 제작하더라도 작동됩니다.

8

파이썬과 JSON을 비교하면 데이터 구조 방면에서 상호 관계를 볼 수 있습니다. 이러한 오브젝트는 WAAPI를 사용할 때 필수적입니다. 여기서 설명한대로 전달인자를 구성할 경우에만 필요한 결과를 얻을 수 있죠.

가독성을 높이기 위한 JSON 구문법 형식

WAAPI 전달인자 문서는 JSON을 사용하여 정의되기 때문에 가독성이 떨어집니다. WAAPI를 사용할 때 이러한 전달인자를 더 잘 이해하기 위해서는 JSON 구문법을 형식화해야 합니다.

다음은 ak.wwise.core.object.create의 전달인자 구문법입니다.

9

가독성이 굉장히 떨어지죠. 가독성을 높이기 위해서는 JSON Editor (>https://jsoneditoronline.org/)와 같이 JSON 형식 도구를 사용할 수 있습니다.

이전 형식이 얼마나 지저분했는지 기억하시나요? 이제 훨씬 나아졌죠!

10

전달인자 구문법을 형식화하면 필수 섹션에서 필수 전달인자를, 그리고 속성 섹션에서 종류와 설명을 분명하게 확인할 수 있습니다. 그리고 두 가지 속성이 더 있습니다. localDefinitions는 사실 앞서 언급한 children의 정의입니다. patternProperties @propertyName을 통해 오브젝트 속성을 설정할 경우 잠재적인 값의 종류입니다.

11

결과 표도 마찬가지입니다. 다음 이미지에서는 name, children, ID라는 기본 반환값을 분명하게 확인할 수 있습니다. JSON 구문법을 형식화하면 전달인자와 반환값의 가독성을 훨씬 높일 수 있습니다. WAAPI 함수를 호출하려고 할 경우 JSON 프레임워크 아래 있는 필요한 전달인자만 변경한 다음 원격 호출을 만들면 됩니다. JSON과 파이썬의 상호 관계를 이해하기 위해서는 먼저 예시를 참조해보아야 합니다. Wwise Authoring API Examples Index (Wwise 저작 API 예시 색인)에 열거된 모든 예시를 확인하는 것이 좋습니다. 예시가 꽤나 간단하기 때문에 먼저 여기에 있는 설명을 읽어보를 권장     합니다.

이제 이러한 전달인자를 어떻게 사용하는지를 전체 맥락에서 살펴봅시다. 다음은 공식 설명서에서 두 개의 Sound SFX 오브젝트가 있는 Random Container를 만드는 방법을 설명하는 예시입니다.

12# 1. 예시 코드에서 제공된 전달인자
#
상위계층 GUID, 종류, 이름, 속성값
#
하위 계층 종류와 이름
# 2.
실제 상황에서의 전달인자


12(2)# JSON으로 형식화된 전달인자를 전달인자로 지정하세요.
#
원격 호출을 실행하세요. 첫 번째 전달인자는 API 이름이며 두 번째는 JSON 전달인자입니다.
# 3.
원격 호출을 만든 후
     반환되는 결과 (상위 계층 GUID, 상위 계층 컨테이너 이름, 하위 계층 GUID, 하위 계층 이름 포함).

옵션과 퍼블리시 (구독 API)

공식 설명서를 자세히 살펴보면 구독 API 전달인자가 약간 다르다는 것을 알 수 있습니다. 전달인자와 결과 대신 옵션과 퍼블리시라는 두 표가 제공되죠. 구독 API는 주제(topic)를 퍼블리시할 때 실행되는 콜백 함수를 기반으로 합니다. 옵션 표에 있는 전달인자는 반환값의 종류를 콜백 함수로 정의하여 불필요한 쿼리를 방지합니다. 한편 퍼블리시 표에 있는 전달인자는 결과 표에 있는 전달 인자의 다른 형식이라고 생각하시면 됩니다. 기본적으로 동일한 정보를 JSON 형식으로 리턴하고 구독한 주제가 변경되었을 경우에만 퍼블리시됩니다. 그렇지만 실행 API에는 ak.wwise.core.audio.importTabDelimited, ak.wwise.core.object.get, ak.wwise.core.profiler.getBusses, ak.wwise.core.profiler.getVoices라는 예외가 있습니다. API는 전달인자와 옵션 표가 모두 열거되어 있죠. 전자는 쿼리 범위를 지정하고 (필수), 후자는 쿼리 옵션을 표시합니다 (선택적). 이에 대해서는 제 2부에서 더 자세하게 설명해드리겠습니다.

4.6. Hello Wwise!

, 이제까지 기본 지식을 알아보았습니다. 이제 실제 상황에서 어떻게 작동하는지 살펴볼까요! 'Hello Wwise!'를 예로      들어보겠습니다.

사용할 API 결정하기

물론 Hello World와 같은 상황의 경우 실행 API를 사용해야겠죠. ak.soundengine.postMsgMonitor를 사용하면 올바르게 작업을 실행할 수 있습니다.

코드

가독성을 높이기 위해서 제가 코드에 메모를 자세하게 추가해놓았습니다. 아래에서 각 메모를 확인해보실 수 있습니다.

13
# 파이썬 예외를 처리하기 위한 “...를 제외하고 ...시도구문. 예를 들어, WAAPI 연결이 실패할 경우.
# Wwise
에 연결하기 위해 기본 주소를 사용합니다. 필요에 따라 포트를 변경할 수 있습니다.
#
전달되거나 다시 반송되었는지의 여부에 상관없이 모든 WAAPI 전달인자는 JSON 형식입니다. 출력할 메시지 (Hello Wwise!)를 정의하기 위해 딕셔너리를 사용합니다.
# ak.soundengine.postMsgMonitor
로 원격 호출을 만든 후 방금 정의한 대로 전달인자를 전달합니다.



결과

스크립트를 실행하기 전에 Start Capture를 클릭하는 것을 잊지 마세요. 그렇지 않으면 Profiler가 캡처 과정을 시작하지 않습니다. 마지막으로 다음 정보를 얻게 됩니다.

14
Logs WAAPI 탭에서 WAMP가 연결되었다는 내용이 보입니다.

15
Profiler에서 'Hello Wwise!'라는 출력 메시지가 보입니다.

WAAPI 사용 사례

5.1. 실행 API

전달인자 사용하지 않기

getInfo 함수를 통해 현재 프로젝트에 대한 정보 얻기

16waapi에서 WaapiClient, CannotConnectToWaapiException을 가져오세요

 

17전달인자 사용하기

'Hello Wwise!' 섹션을 참고해주세요.

5.2.구독 API

ak.wwise.core.object.nameChanged를 사용하면 오브젝트 이름이 변경되었을 때 프로젝트 정보 구독하고 새로운 이름, 이전의 이름, 종류를 반환할 수 있습니다.

1818(2)# 파이썬 예외를 처리하기 위한 '...를 제외하고시도, 아니면…' 구문.
#
 반환된 결과를 딕셔너리 형식으로 얻기 위해 on_name_changed()를 콜백 함수로 사용합니다
#
오브젝트 종류를 가져옵니다
#
이전 이름을 가져옵니다
#
새로운 이름을 가져옵니다
#
형식 함수를 사용해서 정보를 출력하고 XXX 종류의 오브젝트 이름이 A에서 B로 변경되었다고 사용자에게 말해줍니다
#
필요에 따라 WAMP 연결을 제거합니다
#
필요한 주제에 구독하고 콜백 함수를 전달합니다. 이름이 변경되었을 때에 오브젝트의 종류를
반환하기 위해 type(종류)를 선택합니다
handler = client.subscribe("ak.wwise.core.object.nameChanged", on_name_changed, {"return": ["type"]})
# ak.wwise.core.object.nameChanged
에 구독되었음을 사용자에게 알려주기 위해 정보를 출력합니다. 스크립트를 검토하기 위해 사용자가 오브젝트의 이름을 변경해야
     할 것을 권장합니다
print("Subscribed 'ak.wwise.core.object.nameChanged', rename an object in Wwise")


다음은 된 결과입니다. 예상한 대로 프로젝트 정보가 출력됩니다.

 

19

 

다음 단계

2부에서는 wwise.core 실행 API에 대해 알아봅시다. 공식 설명서에는 이에 대한 예시가 아주 많이 있습니다. 하지만 좀 더 빨리 시작할 수 있도록 하기 위해서 실제 사용 사례들을 보여드리겠습니다.  조금만 기다려주세요!

토마스 왕 (THOMAS WANG, 汪洋)

프리랜스 오디오/게임 사운드 디자이너

토마스 왕 (THOMAS WANG, 汪洋)

프리랜스 오디오/게임 사운드 디자이너

현재 게임 오디오 작업 과정 최적화와 미들웨어 통합 및 오디오 프로그래밍을 포함한 기술적 오디오 연구에 집중하고 있습니다.

 @zcyh_147

댓글

댓글 달기

이메일 주소는 공개되지 않습니다.

다른 글

게임 오디오 직업 스킬 - 게임 사운드 디자이너로 고용되는 법

20.1.2021 - 작성자: 브라이언 슈밋(BRIAN SCHMIDT)

눈이 보이지 않는 사람에게 Wwise 가르치기

원거리에 있는 학생들에게 게임 오디오를 가르치는 것은 쉬운 일이 아닙니다. 앞을 보지 못하는 원거리 학생에게 게임 오디오를 가르치는 것은 심지어 더 어렵겠죠. 바로 이 과제가 저희...

15.2.2022 - 작성자: 에릭 버진스(Eric Berzins)

Strata 멀티트랙 SFX 라이브러리를 먼저 사용해본 사람들은 이렇게 말했습니다.

Strata의 시작 지난 40~50년 동안 SFX 라이브러리 제작자들은 거의 동일한 방식으로 콘텐츠를 제작하고 배포했습니다.디자인한 사운드를 녹음, 믹싱, 렌더링하고 테마별...

1.12.2022 - 작성자: 시몽 아슈비 (Simon Ashby)

상호작용 음악: '여러분이 직접 선택하는 모험' 스타일의 발라드

2018년 크라우드 펀딩 캠페인을 성공적으로 마친 inXile Entertainment(인엑사일 엔터테인먼트)는 '웨이스트 랜드 3(Wasteland 3)' 게임의 본격적인 제작에...

23.5.2023 - 작성자: Alexander Brandon (알렉산더 브랜드)

Wwise 2023.1의 WAAPI

Wwise 2023.1은 2017년 API 도입 이후 가장 방대한 Wwise Authoring API (WAAPI) 업데이트를 포함하고 있습니다. 아직 Wwise 2023.1...

1.8.2023 - 작성자: 베르나르 로드리그 (Bernard Rodrigue)

임펄스 응답 리버브로 현실감 있는 사운드 만들기

임펄스 응답은 실제 공간을 초현실적으로 재구현하는 것으로 유명합니다. 최고 품질의 임펄스 응답을 녹음하는 것은 다소 기술적이며 고급 장비가 필요한 일입니다. 공간적인 품질을 갖춘...

8.9.2023 - 작성자: BOOM Library

다른 글

게임 오디오 직업 스킬 - 게임 사운드 디자이너로 고용되는 법

눈이 보이지 않는 사람에게 Wwise 가르치기

원거리에 있는 학생들에게 게임 오디오를 가르치는 것은 쉬운 일이 아닙니다. 앞을 보지 못하는 원거리 학생에게 게임 오디오를 가르치는 것은 심지어 더 어렵겠죠. 바로 이 과제가 저희...

Strata 멀티트랙 SFX 라이브러리를 먼저 사용해본 사람들은 이렇게 말했습니다.

Strata의 시작 지난 40~50년 동안 SFX 라이브러리 제작자들은 거의 동일한 방식으로 콘텐츠를 제작하고 배포했습니다.디자인한 사운드를 녹음, 믹싱, 렌더링하고 테마별...