하나의 GME SDK로 모든 시나리오의 음성 인터랙션 니즈를 충족할 수 있으며 손쉽게 게임에 소셜 네트워크를 도입할 수 있습니다. 또한 몰입형 공간 인터랙션 음성 서비스를 제공하므로 유저는 음성을 기반으로 팀원의 거리와 위치를 들을 수 있어 몰입감 높은 게임 경험을 즐길 수 있습니다.
10억
일일 서비스 사용 시간 10억 분
20,000+
20000개 이상의 디바이스 및 클라우드 매개변수 지원
99.99%
99.99% 이상의 글로벌 연결성 및 가용성
<300ms
엔드 투 엔드 통화 지연 시간 300ms 미만
하나의 GME SDK로 모든 시나리오의 음성 인터랙션 니즈를 충족할 수 있으며 손쉽게 게임에 소셜 네트워크를 도입할 수 있습니다. 또한 몰입형 공간 인터랙션 음성 서비스를 제공하므로 유저는 음성을 기반으로 팀원의 거리와 위치를 들을 수 있어 몰입감 높은 게임 경험을 즐길 수 있습니다.
GME는 iOS, Android, Windows, macOS, Web, Unity, Unreal 및 Cocos와 호환되며, 20,000개 이상의 단말 및 수많은 주변 장치 모델을 지원하여, 모든 플랫폼에서 원활한 음성 채팅 경험을 보장합니다.
GME의 3D 공간 음성 및 근거리 기반 음성 기능은 유저가 가상 게임 세계에서 자신의 음성을 기반으로 팀원과 적의 위치를 추정할 수 있도록 지원하여 가장 사실적인 공간 감각을 제공합니다.
GME는 에코 및 주변 소리 제거는 물론 소음 및 하울링 억제를 위한 특허 알고리즘을 통해 HD 음질을 제공합니다. 유저는 네트워크가 약한 환경에서도 서로의 소리를 명확하게 듣고 원활하게 의사 소통할 수 있습니다.
GME는 수억 명의 사용자로부터 입증된 안정적인 초저지연 스마트 라우팅 음성 채팅 서비스를 제공합니다. 또한 연중무휴 24시간 고객 서비스 및 SLA를 통해 걱정 없는 비즈니스 운영을 지원합니다.
GME는 6개 대륙에서 사용할 수 있습니다. 유저는 200개 이상의 국가/리전에 배치된 2800개 이상의 캐시 노드를 통해 근거리에서 편리하게 액세스할 수 있습니다.
ITMGContext* context = ITMGContextGetInstance(); context->Init(sdkappid, openId);//1. Initializing the SDK context->EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, (char*)retAuthBuff,bufferLen); //2. Entering a room void GMETestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){ switch (eventType) { case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: { ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 3. Enabling mic ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 4. Enabling speaker break; } } }
ITMGContext.GetInstance().Init(sdkAppId, openID);//1. Initializing the SDK ITMGContext.GetInstance().EnterRoom(strRoomId, ITMGRoomType.ITMG_ROOM_TYPE_FLUENCY, byteAuthbuffer);//2. Entering a room ITMGContext.GetInstance().OnEnterRoomCompleteEvent += new QAVEnterRoomComplete(OnEnterRoomComplete); void OnEnterRoomComplete(int err, string errInfo) { if (err == 0) { ITMGContext.GetInstance().GetAudioCtrl().EnableMic(true);//3. Enabling mic ITMGContext.GetInstance().GetAudioCtrl().EnableSpeaker(true);//4. Enabling speaker } }
import { GmeSDK } from './GmeSDK/GmeSDK'; if (!this.gmeSDK) { this.gmeSDK = new GmeSDK(); } this.gmeSDK.Init(appId, openId);//1. Initializing the SDK this.gmeSDK.EnterRoom(roomId, roomType, appKey);//2. Entering a room this.gmeSDK.SetTMGDelegate({ onEvent(eventType: number, eventValue: string){ if(eventType == ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM) { this.gmeSDK.EnableMic(micToggle.isChecked);// 3. Enabling mic this.gmeSDK.EnableSpeaker(speakerToggle.isChecked);//4. Enabling speaker } } });
ITMGContext.GetInstance(this).Init(sdkAppId, openId);//1. Initializing the SDK ITMGContext.GetInstance(this).EnterRoom(roomId,roomType, authBuffer); //2. Entering a room private ITMGContext.ITMGDelegate itmgDelegate = null; itmgDelegate = new ITMGContext.ITMGDelegate() { public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) { if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type) { ITMGContext.GetInstance(this).GetAudioCtrl().EnableMic(true); // 3. Enabling mic ITMGContext.GetInstance(this).GetAudioCtrl().EnableSpeaker(true);// 4. Enabling speaker } } }
[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];//1. Initializing the SDK [[ITMGContext GetInstance] EnterRoom:_roomId roomType:_roomType authBuffer:authBuffer];//2. Entering a room -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{ switch (eventType) { case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: { [[[ITMGContext GetInstance] GetAudioCtrl] EnableMic:YES];// 3. Enabling mic [[[ITMGContext GetInstance] GetAudioCtrl] EnableSpeaker:YES];// 4. Enabling speaker } break; } }
ITMGContext* context = ITMGContextGetInstance(); context->Init(sdkappid, openId);//1. Initializing the SDK context->EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, (char*)retAuthBuff,bufferLen); //2. Entering a room void GMETestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){ switch (eventType) { case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: { ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 3. Enabling mic ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 4. Enabling speaker break; } } }
ITMGContext* context = ITMGContextGetInstance(); context->Init(sdkappid, openId);//1. Initializing the SDK context->EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, (char*)retAuthBuff,bufferLen); //2. Entering a room void GMETestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){ switch (eventType) { case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: { ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 3. Enabling mic ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 4. Enabling speaker break; } } }
ITMGContext.GetInstance().Init(sdkAppId, openID);//1. Initializing the SDK ITMGContext.GetInstance().EnterRoom(strRoomId, ITMGRoomType.ITMG_ROOM_TYPE_FLUENCY, byteAuthbuffer);//2. Entering a room ITMGContext.GetInstance().OnEnterRoomCompleteEvent += new QAVEnterRoomComplete(OnEnterRoomComplete); void OnEnterRoomComplete(int err, string errInfo) { if (err == 0) { ITMGContext.GetInstance().GetAudioCtrl().EnableMic(true);//3. Enabling mic ITMGContext.GetInstance().GetAudioCtrl().EnableSpeaker(true);//4. Enabling speaker } }
import { GmeSDK } from './GmeSDK/GmeSDK'; if (!this.gmeSDK) { this.gmeSDK = new GmeSDK(); } this.gmeSDK.Init(appId, openId);//1. Initializing the SDK this.gmeSDK.EnterRoom(roomId, roomType, appKey);//2. Entering a room this.gmeSDK.SetTMGDelegate({ onEvent(eventType: number, eventValue: string){ if(eventType == ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM) { this.gmeSDK.EnableMic(micToggle.isChecked);// 3. Enabling mic this.gmeSDK.EnableSpeaker(speakerToggle.isChecked);//4. Enabling speaker } } });
ITMGContext.GetInstance(this).Init(sdkAppId, openId);//1. Initializing the SDK ITMGContext.GetInstance(this).EnterRoom(roomId,roomType, authBuffer); //2. Entering a room private ITMGContext.ITMGDelegate itmgDelegate = null; itmgDelegate = new ITMGContext.ITMGDelegate() { public void OnEvent(ITMGContext.ITMG_MAIN_EVENT_TYPE type, Intent data) { if (ITMGContext.ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM == type) { ITMGContext.GetInstance(this).GetAudioCtrl().EnableMic(true); // 3. Enabling mic ITMGContext.GetInstance(this).GetAudioCtrl().EnableSpeaker(true);// 4. Enabling speaker } } }
[[ITMGContext GetInstance] InitEngine:SDKAPPID openID:_openId];//1. Initializing the SDK [[ITMGContext GetInstance] EnterRoom:_roomId roomType:_roomType authBuffer:authBuffer];//2. Entering a room -(void)OnEvent:(ITMG_MAIN_EVENT_TYPE)eventType data:(NSDictionary *)data{ switch (eventType) { case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: { [[[ITMGContext GetInstance] GetAudioCtrl] EnableMic:YES];// 3. Enabling mic [[[ITMGContext GetInstance] GetAudioCtrl] EnableSpeaker:YES];// 4. Enabling speaker } break; } }
ITMGContext* context = ITMGContextGetInstance(); context->Init(sdkappid, openId);//1. Initializing the SDK context->EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, (char*)retAuthBuff,bufferLen); //2. Entering a room void GMETestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){ switch (eventType) { case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: { ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 3. Enabling mic ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true); // 4. Enabling speaker break; } } }
간편한 테스트, 사용량 과금 및 제어 가능한 서비스 사용