버전

menu_open
경고 : 이 페이지에서 보호된 일부 정보가 표시되지 않았습니다.
특정 플랫폼의 라이선스 사용자일 경우 로그인하셨는지 확인해 주세요.
Wwise SDK 2024.1.1
Wwise Motion(모션) 통합하기

Motion 플러그인을 사용하면 컨트롤 인터페이스의 햅틱 피드백을 제어할 수 있습니다. Wwise와 함께 동일한 도구 세트를 사용하여 애플리케이션의 동작(모션)과 오디오를 관리할 수 있습니다. 내부적으로, 모션 데이터는 오디오 데이터와 차이점이 없으며, 오디오에서 사용할 수 있는 모든 기능을 모션에서도 사용할 수 있습니다. 모션 기능을 통해 두 가지 유형의 햅틱 피드백을 사용할 수 있습니다. 하나는 프로젝트의 모든 오디오 신호를 모션으로 변환하는 유형이고, 다른 하나는 Motion 소스를 사용하여 전용 모션 신호를 생성할 수 있는 유형입니다. 지원되는 컨트롤러를 사용하여 Windows에서 Wwise Authoring을 통해 직접 동작을 테스트할 수 있습니다.

Motion 구성 요소

Motion은 애플리케이션에서 작동하기 위해 Wwise Sound Engine 플러그인 시스템을 사용하며, Motion 이라는 오디오 소스와 Wwise Motion 이라는 Audio Device의 두 모듈로 세분될 수 있습니다. Motion 오디오 소스는 선택 사항이기는 하지만 정밀하고도 유연한 모션 디자인을 만들 수 있는 강력한 도구입니다.

Wwise Motion 오디오 장치 플러그인

Wwise Motion 오디오 장치 플러그인은 사운드 엔진을 모션 지원 장치에 연결합니다. 모든 오디오 장치 플러그인과 마찬가지로 이 플러그인도 Listener(리스너)로부터 데이터를 수신해 이 데이터를 장치에 '제공'합니다. 이 플러그인은 별도의 라이브러리 내에 있으며 Wwise Authoring과 애플리케이션에 모두 포함되어야 합니다. 더 많은 정보는 Motion 설정하기 섹션을 참고하세요.

Motion 소스 플러그인

Motion 소스 플러그인을 사용하면 햅틱 피드백 효과의 동작을 설계할 수 있습니다. 다른 오디오 음원과 마찬가지로 자신의 Wwise 프로젝트에서 Sound SFX 노드에 Motion 소스 플러그인을 추가할 수 있습니다. Sound SFX 노드의 Output Bus는 반드시 모션 준비(motion-ready) 버스로 설정돼 있어야 합니다. 더 자세한 정보는 Motion을 참조하세요.

Motion 설정하기

애플리케이션에서 모션을 사용하려면 각 구성 요소들을 올바르게 설정해야 합니다. 오디오 작업 과정에 적용되는 모든 개념은 모션에도 적용 가능하다는 점을 기억하세요. 모션은 동일한 버스와 리스너, 이미터를 사용합니다 ( 리스너 통합하기 참고).

Wwise Authoring 설정

사운드나 모션 데이터를 장치로 보내려면 라이선스가 있는 Wwise Motion Audio Device를 Wwise 프로젝트에서 Project Explorer의 Audio 탭에 있는 Audio Device 폴더에 추가해야 합니다. Wwise Motion Audio Device는 모션-레디 장치와 소통할 때 사운드 엔진이 사용하는 플러그인입니다. 이 플러그인은 Wwise Motion Audio Device를 상위 레벨 Audio Bus에 할당할 때에도 중요한 역할을 합니다. 모션 버스 라는 용어는 Wwise Motion Audio Device가 할당된 최상위 Audio Bus를 나타냅니다. 손쉽게 문제를 해결하고 모니터링하기 위해서는 프로젝트에서 단일 모션 버스 계층을 사용하는 것이 좋습니다. 그러면 모든 Sound SFX의 Output Bus를 모션 버스로 설정해 햅틱 피드백을 생성할 수 있습니다. 일반적으로 모션 버스를 사용하는 사운드 SFX 구성 요소는 Motion 소스도 사용합니다. 오디오와 모션을 동시에 가지려면, Sound SFX에 Output Bus나 Auxiliary Bus로서 최소한 한 개의 모션 버스와 Audio Bus가 있어야 합니다.

게임 설정

게임 단에서는 AkMotionSink 라는 별도의 라이브러리와 연결합니다. 이 라이브러리는 지원하는 플랫폼의 표준 컨트롤러를 제공합니다. 또한 SDK\include\AK\plugin에 위치한 AkMotionSinkFactory.h 파일을 포함시켜야 합니다. 이 파일을 포함하면 플러그인이 자동으로 등록되기 때문에 매우 중요합니다.

참고: Unity와 Unreal에서는 플러그인 라이브러리가 자동으로 관리됩니다. 즉 AkMotionSink 를 직접 추가할 필요가 없습니다.

지원하는 컨트롤러와 추가 요구사항에 관한 목록은 다음 표를 참고하세요.

PlatformDeviceDevice Channel Config and LayoutAdditional Requirements
AndroidAndroid device with vibration supportAnonymous 1-channelHigh-resolution vibration support for Android 8 and later
iOSiOS device with vibration support
iOS-compatible Controllers (iOS 14.0 and later)
Anonymous 1-channelCoreHaptics.framework
GameController.framework
iOS 13.0 or later
tvOStvOS-compatible Controllers (tvOS 14.0 and later)Anonymous 1-channelCoreHaptics.framework
GameController.framework
LinuxNot supported.
MacMac-compatible Controllers (macOS 11.0 or later)Anonymous 1-channelCoreHaptics.framework
GameController.framework
macOS 10.15 or later
OpenHarmonyOpenHarmony device with vibration supportAnonymous 1-channel
PlayStation 4DUALSHOCK 4
PlayStation 무브
Anonymous 2-channel:
왼쪽 모터, 오른쪽 모터
PlayStation 5DualSense
VR 컨트롤러
Stereo 2-channel:
왼쪽 진동, 오른쪽 진동
Switch조이콘Anonymous 4-channel:
왼쪽 낮은 진동, 왼쪽 높은 진동,
right low-freq vibration, right high-freq vibration
WindowsXInput-compatible ControllersAnonymous 2-channel:
Left motor, right motor
Xinput.lib
WindowsGameInput-compatible ControllersAnonymous 4-channel:
Left motor, right motor, left Impulse Trigger, right Impulse Trigger
GameInput.dll installed in Windows.
WindowsDualShock 4 and DualSense ControllersAnonymous 2-channel and Stereo 2-channelSee the "Support for DualShock 4 and DualSense on Windows" section below (login with PS5 license required)
Xbox One
Xbox Series X
Xbox 컨트롤러Anonymous 4-channel:
Left motor, right motor, left Impulse Trigger, right Impulse Trigger


만약 애플리케이션이 모션을 하나 이상의 장치에 사용할 경우 각 장치에 대해 별도로 지정된 출력을 추가해줘야 합니다. 예를 들어, 4인 플레이어가 연결된 분할 화면 게임은 컨트롤러가 햅틱 피드백을 받기 위해 네 개의 서로 다른 출력이 필요합니다. 출력 장치를 추가하려면 Wwise API의 AK::SoundEngine::AddOutput 함수를 사용하고 AkOutputSettings 매개변수에 ShareSet 이름(Wwise 프로젝트에 정의된 이름)을 지정합니다. 추가로, 복수의 장치가 연결되기 때문에 장치 ID를 제공해줘야 합니다. 다음 표는 장치 ID에 대한 자세한 정보입니다.

플랫폼장치정보
Android진동을 지원하는 Android 장치0을 사용합니다.
iOS진동 지원 및 iOS 호환 컨트롤러가 있는 iOS 기기기기를 진동시키려면 0을 사용합니다. 연결된 컨트롤러를 진동시키려면 먼저 GameController.framework API를 사용하여 원하는 GCController 인스턴스에 플레이어 인덱스를 할당합니다. 그런 다음 AK::SoundEngine::GetDeviceIDFromPlayerIndex 를 호출하여 해당 플레이어 인덱스의 DeviceID를 검색합니다.
상주 모드를 사용하려면 DeviceID에 AKMOTION_RESIDENT_MODE 를 추가하세요. 일반적으로 무음 모드에서 실행할 경우 수십 밀리초 동안 진동이 무시되지만, 상주 모드에서 실행하면 이러한 딜레이가 제거됩니다. 그러나 상주 모드로 실행하면 장치의 전력 소비가 다소 증가합니다.
Linux지원되지 않음.-
MacMac 호환 컨트롤러먼저, GameController.framework API를 사용하여 원하는 GCController 인스턴스에 플레이어 인덱스를 할당합니다. 그런 다음 AK::SoundEngine::GetDeviceIDFromPlayerIndex 를 호출하여 해당 플레이어 인덱스의 DeviceID를 검색합니다.
상주 모드를 사용하려면 DeviceID에 AKMOTION_RESIDENT_MODE 를 추가하세요. 일반적으로 무음 모드에서 실행할 경우 수십 밀리초 동안 진동이 무시되지만, 상주 모드에서 실행하면 이러한 딜레이가 제거됩니다. 그러나 상주 모드로 실행하면 장치의 전력 소비가 다소 증가합니다.
OpenHarmony진동을 지원하는 OpenHarmony 장치0을 사용합니다.
PlayStation 4DUALSHOCK 4와 PlayStation MovescePadOpen나 scePadGetHandle에서 반환된 장치의 핸들을 사용합니다.
PlayStation 5DualSense 및 VR 컨트롤러scePadOpen나 scePadGetHandle에 의해 반환되는 장치의 핸들을 사용합니다. PSVR2의 경우, 왼쪽과 오른쪽 VR 컨트롤러의 핸들 중 하나를 사용하여 단 하나의 출력 장치만 생성하면 두 VR 컨트롤러 모두에서 진동이 발생합니다. 장치 ID를 0으로 지정하면 시스템은 VR 컨트롤러가 아닌 무선 컨트롤러에 대해서만 초기화됩니다.
햅틱 피드백에 필요한 Advanced(고급) 진동 제어 모드는 PlayStation 5의 DualSense 및 VR Controller의 System Software에서 기본적으로 활성화되어 있습니다. 코드에서 scePadSetVibrationMode를 호출하는 경우, SCE_PAD_VIBRATION_MODE_COMPATIBLE의 진동 모드를 설정하는 등 Advanced 진동 제어 모드를 비활성화하는 동작을 사용하지 않도록 주의하세요.
Switch조이콘원하는 인덱스로 nn::hid::NpadId를 사용합니다.
WindowsXInput-compatible ControllersUse the player index between 0 to 3.
WindowsGameInput-compatible ControllersRetrieve the GameInputDeviceInfo for a gamepad, and call AK::GetAppLocalDeviceIdHash with the address of the GameInputDeviceInfo::deviceId as the parameter.
Note that the Motion output is only initialized for devices with a non-zero value for GameInputDeviceInfo::supportedRumbleMotors. Devices that only use force feedback, such as some racing wheels and flight sticks, are not supported.
Xbox One (XDK)Xbox ControllersUse the ID stored in a IGamepad object.
Xbox One (GDK)
Xbox Series X
Xbox 컨트롤러AK::SoundEngine::GetGameInputDeviceID 를 호출해 게임패드의 DeviceID를 구합니다.


참고: Windows를 제외한 모든 플랫폼에서 장치 ID '0'은 모션을 지원하는 첫 번째 사용 가능한 장치를 대상으로 합니다. On Windows, a device ID of "0" is initialized as an XInput device.

게임 컨트롤러는 물리적인 분리나 통신 문제로 연결이 끊어질 수 있다는 점에 유의하세요. 연결 해제는 불필요하게 리소스를 사용하는 것 외에는 사운드 엔진에 부정적인 영향을 미치지 않습니다. 장치가 오랫동안 연결이 끊어졌다고 생각되면 AK::SoundEngine::RemoveOutput 을 호출하고 해당 AddOutput() 함수 호출에서 반환된 AkOutputDeviceID를 제공합니다.

멀티플레이어 고려 사항

모션 출력은 다른 Secondary Output(2차 출력)과 같으므로 동일한 제한 및 요구 사항이 적용됩니다. 게임을 로컬에서 제어하는 플레이어 한 명만 있는 1인 플레이어 게임을 만드는 경우, Listener(리스너)/Game Object(게임 오브젝트) 설정이 매우 간단합니다. 일반적인 경우, 새로운 모션 출력은 기본 오디오 출력과 동일한 기본 Listener를 재사용합니다. 즉, 1인 플레이어 설정에서는 Listener를 관리할 필요가 거의 없습니다.

멀티플레이어 게임의 경우 모션 출력마다 하나씩 Listener/Game Object를 생성해야 합니다. 이는 각 플레이어가 게임에서 처한 상황에 따라 원하는 햅틱 피드백을 얻을 수 있도록 하기 위해서입니다. 장치와 연관된 Listener는 반드시 AK::SoundEngine::AddOutput() 에 의해 해당 출력이 초기화되는 동시에 함께 초기화되어야 합니다. 지정된 Listener는 사운드나 모션을 전송하는 추가 레이어를 제공합니다. 해당 플레이어의 Listener와 고유하게 연결된 Game Object에 Event를 재생하면 특정 플레이어를 지정할 수 있습니다. 이러한 연결을 설정하려면 AK::SoundEngine::SetListeners 를 호출합니다. 하나의 게임 오브젝트에 여러 리스너를 연결할 수도 있는데, 이 경우 모든 리스너에 '전송(broadcast)' 효과가 생깁니다. Listener와 게임 오브젝트에 대한 더 많은 정보는 리스너 통합하기 를 확인하세요.

참고: Emitter에 Listener가 모션 출력으로 설정되어있다 하더라도 사운드는 모션 버스 계층 구조로 라우팅되어야 합니다.

예제

다음 예제에서는 모션을 사용하기 위해 애플리케이션을 설정하는 방법을 보여줍니다. SDK 예제에 포함된 Integration Demo (DemoMotion.cpp)에서 Demo Motion 예제를 참고해도 됩니다. 여기에는 지원하는 모든 플랫폼에서 대해 작동하는 예제가 나와있습니다.

단일 플레이어 구축

먼저, 다른 플러그인과 마찬가지로 해당 파일을 포함시키고 라이브러리를 연결해야 합니다 (Wwise 네이티브 개발에만 해당, Unity에는 필요 없음).

#include "AkMotionSinkFactory.h" //Link to AkMotionSink.lib

다음으로, Wwise 프로젝트의 Wwise Motion Audio Device ShareSet 이름(여기서는 'Wwise_Motion')으로 다른 출력을 추가합니다 . 출력 ID는 0으로 설정되어 첫 번째로 연결된 게임 컨트롤러가 사용되도록 합니다.

AkOutputSettings outputSettings("Wwise_Motion", 0);
AK::SoundEngine::AddOutput(outputSettings);

다음으로, Event를 재생합니다. Wwise 프로젝트에서 'Play_Explosion' Event는 Sound SFX에 연결되고, Sound SFX는 Audio Device로서 'Wwise_Motion' ShareSet이 할당된 버스로 라우팅됩니다.

AkGameObjectID explosionGO = 100;
AK::SoundEngine::RegisterGameObj(explosionGO, "Explosion");
AK::SoundEngine::PostEvent("Play_Explosion", explosionGO);

멀티플레이어 구축

이 섹션에서는 네트워크 멀티플레이어 게임이 아니라, 하나의 콘솔에서 여러 플레이어의 동작을 설정하는 방법을 설명합니다. 멀티플레이어의 경우, 게임 월드에서 플레이어의 관점을 표현하기 위해 동작이나 플레이어별 출력의 조합이 달라야 합니다. 그러므로 플레이어는 자신만의 Listener가 필요합니다.

int NUM_PLAYERS = 4;
const AkGameObjectID OBJ_FOR_PLAYER[MAX_PLAYERS] = {100 ,200, 300, 400}; // 임의의 Game Object ID를 사용합니다.
for(int i = 0; i < NUM_PLAYERS; i++)
{
AK::SoundEngine::RegisterGameObj(OBJ_FOR_PLAYER[i]); // Listener로 사용할 GameObject를 등록합니다.
AK::SoundEngine::SetListeners(OBJ_FOR_PLAYER[i], &OBJ_FOR_PLAYER[i], 1); // 직접 수신할 수 있는 Game Object를 만듭니다.
}

각 플레이어에 대한 출력을 추가합니다. 하나의 Audio Device ShareSet를 여러 번 사용할 수 있으므로 여러 개의 Audio Device ShareSet를 만들 필요는 없습니다. 모든 컨트롤러에 대한 실제 장치 ID를 제공해야 합니다. 이 예제는 Windows의 Xbox 컨트롤러를 사용합니다. 특정 플랫폼에 대한 장치 ID를 구하는 방법은 게임 설정 표를 참고하세요.

const AkUInt32 DEVICE_SPECIFIC_ID[MAX_PLAYERS] = {0, 1, 2, 3}; // Windows의 Xbox 컨트롤러에 대한 장치 ID는 간단히 0부터 3 사이 값입니다. 다른 플랫폼들은 그에 따라 다른 요구사항이 있습니다.
for(i = 0; i < NUM_PLAYERS; i++)
{
AkOutputSettings settings("Wwise_Motion", DEVICE_SPECIFIC_ID[i]); // 'Wwise_Motion' ShareSet를 사용해 장치 DEVICE_SPECIFIC_ID[i]를 다룹니다.
res = AK::SoundEngine::AddOutput(settings, &motionOutputIDs[i], &OBJ_FOR_PLAYER[i], 1); // 출력을 추가해 적절한 Listener로 연결합니다.
}

다음으로, Event를 재생합니다. Wwise 프로젝트에서 'Play_GunFire' Event는 Sound SFX에 연결되고, Sound SFX는 Audio Device ShareSet로서 'Wwise_Motion'이 할당된 버스로 라우팅됩니다.

AK::SoundEngine::PostEvent("Play_GunFire", OBJ_FOR_PLAYER[0]); // Game Object-Listener 관계에 따라 플레이어 컨트롤러 0에서만 재생하게 됩니다.

여러 기기에 영향을 미치는 Event를 재생하려면 새로운 Game Object를 설정하고 모든 플레이어 전용 Listener가 해당 Event를 수신하도록 해야 합니다.

AK::SoundEngine::RegisterGameObj(explosionGO, "Explosion"); // 폭발음을 재생할 Game Object를 등록합니다.
AK::SoundEngine::SetListeners(explosionGO, OBJ_FOR_PLAYER, 4); // 플레이어의 리스너 4개 전부를 Game Object에 연결해 Motion Effect를 모두 다 받을 수 있도록 합니다.
AK::SoundEngine::PostEvent("Play_Explosion",explosionGO ); // 4개의 모든 리스너가 explosionGO에 연결되어 있기 때문에, Play_Explosion Event가 모든 게임 오브젝트에 전송됩니다.

멀티플레이어 설정의 예는 IntegrationDemo 예제의 DemoMotion 클래스를 참조하세요.

확인사항 및 문제해결

특정 장치가 하나의 장치로 동작을 수신하려면 다음이 필요합니다.

  1. 프로젝트에 Wwise Motion Audio Device ShareSet를 추가합니다.
  2. 최상위 Audio Bus를 생성하고 해당 Audio Device를 방금 추가한 Wwise Motion Audio Device ShareSet로 설정합니다.
  3. Sound SFX를 생성하여 모션 버스 계층 구조로 라우팅합니다.
  4. 게임에서 AkMotionSink 라이브러리에 연결합니다. AkMotionSinkFactory.h를 포함시키고 AkMotionSink 라이브러리와 연결합니다.
    참고: Unity와 Unreal에서는 플러그인 라이브러리가 자동으로 관리됩니다. 이 단계는 필요하지 않습니다.
  5. AK::SoundEngine::RegisterGameObj를 사용하여 모션 Event를 호출하고 수신하는 Game Object를 생성합니다.
  6. Wwise Motion ShareSet와 장치 ID를 사용하여 Ak::SoundEngine::AddOutput 을 호출합니다. 멀티플레이어의 경우 각각에 대한 Listener 오브젝트를 제공합니다.
  7. 오디오 Event와 같은 방식으로 Event를 트리거합니다.

Wwise 프로젝트에 Motion을 추가하려면,

  1. 프로젝트에 Wwise Motion Audio Device ShareSet를 추가합니다.
  2. 최상위 Audio Bus를 생성하고 해당 Audio Device를 방금 추가한 Wwise Motion Audio Device ShareSet로 설정합니다.
  3. Sound SFX를 생성하여 모션 버스 계층 구조로 라우팅합니다.
  4. Audio Preferences에서 모션을 사용하려는 버스를 찾은 다음, 목록에서 각 버스의 장치를 원하는 모션 장치로 설정합니다.

프로파일링

문제를 해결하려면 애플리케이션을 프로파일링하는 것이 좋습니다. Wwise Authoring에서 프로파일링에 설명된 대로 애플리케이션을 프로파일링할 수 있습니다. 몇몇 도구는 문제가 있는 소스코드를 이해하는 데 도움이 될 수 있습니다. Capture Log 보기에 오류 코드가 빨간색으로 나열됩니다. Graph 뷰는 사운드 엔진 파이프라인을 시각적으로 표현해 출력합니다. 모션 장치는 파이프라인의 끝에 나타납니다. 모션 장치가 표시되지 않으면 지정한 장치를 사운드 엔진이 찾을 수 없습니다. 마지막으로, Emitter/Listener 탭에 모든 Emitter-Listener 조합이 표시됩니다. Motion Effect가 작동하지 않는 경우, Emitter가 모션 장치에 지정된 Listener와 연결되지 않았을 수 있습니다.

Motion 효과를 트리거 했지만 작동하지 않는다면, 다음 사항을 확인하세요.

  • Capture Log를 확인해 플러그인에 등록 오류가 없는지 확인하세요. 만약 등록 오류가 있는 경우, AkMotionSinkFactory.h 를 포함시키고 AkMotionSink 라이브러리에 연결했는지 확인하세요.
  • 사운드 엔진이 장치를 초기화했는지 확인하세요. 그렇지 않은 경우 게임에서 AddOutput 을 호출하면 Capture Log에 오류가 표시됩니다.
  • 재생하는 Sound SFX가 모션 장치로 연결되는 버스로 라우팅되었는지 확인하세요. Sound SFX의 Audio Bus 속성과 이 버스의 Audio Device 속성을 확인하세요.
  • Voices Graph 탭에서 각 Emitter의 트리거를 확인하세요. Emitter-Listener 탭에 연관된 Listener가 있는지 확인하세요. 이미터와 리스너가 같은 Game Object일 수 있습니다. 연관된 Listener가 없으면 RegisterGameObj , SetListeners , AddOutput 의 호출을 확인하세요.
  • Listener가 원하는 출력 장치와 연결되어 있는지 확인하세요.
  • 수행한 API 호출의 결과를 검토하고 오류가 있는지 확인하세요.

Android 기기의 경우 애플리케이션의 AndroidManifest.xml 파일에 권한을 추가하세요.

<uses-permission android:name="android.permission.VIBRATE"/>
AkUInt64 AkGameObjectID
Game object ID
Definition: AkTypes.h:60
AKSOUNDENGINE_API AKRESULT RegisterGameObj(AkGameObjectID in_gameObjectID)
AkUInt32 AkDeviceID
I/O device ID
Definition: AkTypes.h:78
Platform-independent initialization settings of output devices.
#define AKMOTIONSINK_DYNAMIC_LINK_SCEPAD_FUNCTIONS
AKSOUNDENGINE_API AKRESULT SetListeners(AkGameObjectID in_emitterGameObj, const AkGameObjectID *in_pListenerGameObjs, AkUInt32 in_uNumListeners)
#define AKMOTIONSINK_STATIC_LINK_SCEPAD_FUNCTIONS
AKSOUNDENGINE_API AKRESULT AddOutput(const AkOutputSettings &in_Settings, AkOutputDeviceID *out_pDeviceID=NULL, const AkGameObjectID *in_pListenerIDs=NULL, AkUInt32 in_uNumListeners=0)
#define AKMOTION_SCEPAD_HAPTICS_MODE
uint32_t AkUInt32
Unsigned 32-bit integer
AKSOUNDENGINE_API AkPlayingID PostEvent(AkUniqueID in_eventID, AkGameObjectID in_gameObjectID, AkUInt32 in_uFlags=0, AkCallbackFunc in_pfnCallback=NULL, void *in_pCookie=NULL, AkUInt32 in_cExternals=0, AkExternalSourceInfo *in_pExternalSources=NULL, AkPlayingID in_PlayingID=AK_INVALID_PLAYING_ID)

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요