자주 묻는 질문 (FAQ)
일반
텐투플레이를 쓰면 가장 큰 이득을 보는 게임 장르와 그렇지 않은 장르가 있나요?
텐투플레이는 게임 장르마다 다른 메소드를 사용하지만 AI가 게임 환경에 적응하는 방식은 게임마다 비슷하도록 설계되었습니다. 따라서 장르와 무관하게 LTV의 증가를 경험하실 수 있습니다.
텐투플레이를 제품에 통합시키는데 드는 비용과 시간이 어떻게 되나요?
게임의 규모(MAU)와 장르에 따라 다릅니다만 보통 인디게임이라면 6시간이 넘지 않을 것이고, 중대형 게임이라면 2,3일 정도면 됩니다.
텐투플레이를 사용하고 있는 게임에는 어떤 것들이 있나요?
정확한 게임명은 비밀 유지 협약 때문에 공개할 수 없지만 현재 텐투플레이는 MMORPG와 방치형 게임, 소셜 네트워크 게임과 네러티브 중심 게임에 적용되어 있습니다. MAU는 30만에 달합니다.
어떤 점에서 텐투플레이가 내부 BI나 O&M 팀보다 낫나요?
낮은 비용과 높은 시간 효율, 그리고 게임 종류를 가리지 않고 AI 알고리즘을 쉽게 적용하여 성과를 창출할 수 있다는 점입니다.
기본 애널리틱스에 포함된 내용은 무엇인가요?
기본 애널리틱스에는 일/주/월 단위로 잔존율과 전환율에 대한 통계 자료가 제공되며 여기에 과금 사용자 및 인앱 결제에 대한 상세 내용도 함께 제공됩니다. 고급 애널리틱스에는 코호트 분석, 휴면 사용자, 인게임 경제 애널리틱스 등이 포함되어 있습니다.
텐투플레이에서 쓰는 표준 시간대가 어떻게 되나요? 이를 변경할 수 있나요?
텐투플레이는 UTC(Universal Time Coordinated, 협정세계시)를 사용하고 있으며 현재 이를 다른 시간대로 바꿀 수 없습니다. 이벤트가 업로드될 때 이벤트 시간은 자동으로 UTC로 변환되어 데이터베이스에 저장됩니다. 따라서 텐투플레이 콘솔의 모든 데이터와 그래프에 표시된 시간은 모두 이벤트가 업로드된 시점의 UTC 시간입니다. 가령 어떤 사용자가 3월 2일 오전 1:00 KST (GMT+9)에 등록했다면 UTC로는 3월 1일(정확히는 3월 1일 오후 4시 UTC)에 등록한 걸로 간주됩니다.
데이터 관련
AI 인게임 상점
세그먼트는 어떻게 작동하나요?
텐투플레이 SDK로 구현하면 데이터 수집과 분석이 자동으로 이루어집니다. 텐투플레이 AI가 사용자의 플레이 스타일을 기반으로 사용자 유형을 나누는데 그렇게 분류된 페르소나별 플레이어 수는 콘솔에서 확인할 수 있습니다.
공통 메소드와 장르별 메소드의 차이점이 뭔가요?
Login
이나 Join
같은 일반 메소드는 어느 게임에나 공통적으로 필요한 메소드를 말합니다. 그 외의 장르별 메소드는 게임 장르에 따라 적용 가능 여부가 달라집니다. 가령 스킨이나 의상, 소비성 아이템이 없는 게임에선 GetCosmetic
이나 UseConsumable
메소드가 필요하지 않습니다.
AI 인게임 상점의 성과를 어떻게 확인할 수 있나요?
콘솔에서 각 플레이어 세그먼트와 메시지에 대한 개봉율 및 전환율을 확인할 수 있습니다. 다만 이것이 곧 실제 구매율을 뜻하지는 않습니다.
한 플레이어가 두 개 이상의 페르소나에 속할 수도 있나요?
네, 각 페르소나가 늘 상호 배타적인 건 아니기 때문에 한 명의 플레이어가 두 개 이상의 페르소나를 갖는 일은 종종 있습니다.
28개의 페르소나가 모든 게임에 항상 나타나나요?
발현되는 페르소나의 수는 게임마다, 특히 장르마다 다릅니다. 평균적으로 RPG/MMO 게임에서는 12~15개의 페르소나를, 방치형 게임에선 7~9개, 캐주얼 및 퍼즐 게임에선 3~7개의 페르소나를 볼 수 있습니다.
플레이어가 오랜 기간 동일한 페르소나 그룹에 머물러 있다면 그동안 늘 같은 내용의 오퍼만 받는 거 아닌가요?
플레이어에게 발송되는 동일 오퍼수를 제한하거나 설정을 변경할 수 있습니다.
각 페르소나에 대한 스레스홀드는 어떻게 정해지나요?
SDK 구현 후 텐투를레이 AI가 24시간에서 72시간 동안 데이터를 분석하여 자동으로 페르소나별 스레스홀드를 설정합니다. 이러한 스레스홀드는 고정되어 있지 않고 게임이 성숙해감에 따라 혹은 플레이어의 성향이 바뀜에 따라 변화합니다.
AI 인게임 오퍼는 게임 어디에 표시되나요?
오퍼를 표시하고 싶은 위치는 직접 설정해야 합니다. 가령 로그인 시 팝업으로 나타나게 할 수도 있고 화면의 특정 아이콘을 클릭했을 때만 나타나게 할 수도 있습니다.
텐투플레이는 게임 내 제품에 표시되는 정보 (가격, 이미지 등)는 어디서 얻나요?
이를 위해 콘솔에 csv 파일을 업로드해야 합니다. 제품 상세 정보에 변동이 있다면 최신 버전을 업로드하여 기존 csv파일을 대체하도록 합니다.
현재 가이드상으론 상품 정보를 업로드하는 csv 파일에 url을 입력하게 되어 있던데 상품을 클릭할때 이런 url이 아니라 구글 인앱결제로 들어가는 방식이 아닌가요? purchase_link 항목의 의미가 궁금합니다.
샘플 csv에 있는 url은 예시입니다. 실제 구매 링크(외부 링크 또는 내부 딥링크)가 있다면 해당 링크를 purchase_link 에 입력하여 활용하시면 됩니다. purchase_link 에 아무런 값을 입력하지 않고, 아래 예시와 같이 purchasable_slug 또는 product_index 로 추천 상품의 purchase_link를 가져오는 형태로 활용할 수도 있습니다.
purchase_link = getProductUrl(purchasable_slug); // purchase_link 를 가져오기 위한 커스텀 메소드
자세한 것은 코드 수정하기를 참고하십시오.
게임이 다국어(예: 6개국어)를 지원하면 AI 인게임 상점의 각 페르소나에 대응되는 언어별 메세지를 전부 수동으로 입력해야 하는것인가요?
저희가 디폴트 메시지로 한국어, 영어, 일본어를 제공하고 있습니다. 이외 언어는 디폴트 메시지를 참고하여 번역 후 직접 입력해주셔야 합니다.
개인화 오퍼
콘솔에서 여러 사용자 ID를 하나의 목록으로 입력할 수 있나요?
사용자 ID를 원하는 수만큼 입력하여 수동으로 하나의 그룹을 생성할 수 있습니다. 또한 콘솔에서 고래 사용자와 신규 과금 사용자 목록 중 특정 사용자 ID를 가진 사용자를 선택하여 이들을 대상으로한 오퍼를 생성할 수도 있습니다.
"즉시 전송"과 "캠페인"의 차이는 무엇인가요?
“즉시 전송”는 말그대로 지정된 오퍼를 타겟 사용자에게 즉각 보내는 것을 말합니다(예: 플레이어 AAA, ABC, XYZ에게 20% 할인 쿠폰 즉시 보내기). "캠페인"은 지정된 기간동안 진행되는데 그 기간 동안 특정 전송 시점을 트리거하는 플레이어에게 지정된 오퍼를 보내는 기능을 말합니다(예: 향후 2주간 스테이지 11에 도달하는 플레이어 모두에게 20% 할인 쿠폰 보내는 캠페인 생성하기).
개인화 오퍼의 부정 사용 막기위한 검증 기능 같은 것이 있나요?
네, 오퍼 검증 API가 있습니다. 자세한 것은 오퍼 검증하기를 참고하십시오.
SDK 관련
게임을 업데이트할 때마다 텐투플레이 SDK 쪽도 업데이트해 줘야 하나요?
늘 필요한 건 아닙니다. 그렇지만 게임 업데이트에 비즈니스 모델 변경이 있다면 텐투플레이 기술팀에 연락하여 지원을 받는 것이 좋습니다.
SDK 구현이 제대로 되었는지 검증하는 QA 프로세스 같은 것이 있나요?
데이터 수집과 업로드 구현에 대한 디버그 작업이 있습니다. 데이터 수집 디버깅하기를 참고하십시오. 그리고 저희 텐투플레이 기술팀이 서버에 문제가 없는지 지속적으로 점검하고 있습니다.
현재 TPStashEvent
클래스 일부 파라미터의 자료형(예: currency)이 float인데 입력 데이터가 float의 범위를 넘게 되면 어떻게 해야 하나요? 데이터 업로드 관련하여 한 메소드에 이처럼 잘못된 데이터가 들어가면 다른 메소드의 데이터도 영향을 받나요?
내장 형변환이 제대로 작동하는 상황이라면 형변환을 쓰면 됩니다. 다만 이 경우 오버플로우가 발생하므로 다음과 같이 추가적 데이터 처리를 해주어야 합니다.
-
float 범위: 1.40129846432481707e-45 ~ 3.40282346638528860e+38
-
double 범위: 1.7e-308 ~ 1.7e+308
여기서 값이 10^38을 넘어가는 순간 오버플로우가 발생하고 값이 무한대로 인식되어 오류가 발생합니다. 이런 경우 입력 값의 로그를 취하는 방법이 있습니다만 이 방법에는 콘솔에서 값이 로그의 형태로 나타난다는 단점이 있습니다.
두번째 질문에 대해서는 가령 GetCurrency
의 데이터 중 하나라도 데이터 타입 범위가 넘어가는 데이터가 있다면, GetCurrency
데이터는 텐투플레이 서버로 업로드 되지 않습니다. 하지만 다른 메소드(예: UseCurrency
)에는 영향이 없고 정상적으로 데이터가 업로드 됩니다.
설정에서 Auto Upload가 체크된 상태에서 플레이어가 다음 업로드 시간 도달 전에 앱을 닫아버렸다면 직전까지 수집된 데이터는 어떻게 되나요?
이런 경우 업로드 시간 전까지 수집된 데이터는 플레이어의 장치에 보관되어 있다가 다음에 게임을 플레이할 때 다시 업로드됩니다. 물론 이를 방지하기 위해 업로드 간격을 줄일 수는 있지만 그만큼 잦은 업로드로 인한 영향(예: 데이터 전송 시 오버헤드 증가)이 있을 수 있으므로 각각 장단점이 있습니다.
TPStashEvent 클래스는 얼마나 자주 호출해야 하나요?
TPStashEvent 클래스가 사용되는 방식은 다음과 같습니다. Auto Upload가 선택되어 있다고 가정하고 호출이 잦은 이벤트에 대해 는 상태에서 new TPStashEvent()
클래스를 활용하여 필요한 메소드를 호출하면 업로드 간격에 따라 업로드가 자동으로 이루어집니다. (예: 재화의 획득과 사용 시 수집 메소드를 각각 new TPStashEvent().GetCurrency()
, new TPStashEvent().UseCurrency()
로 호출하기). 만약 new TPStashEvent()
가 플레이 시작 시에만 호출된다면 플레이 도중 수집 데이터가 업로드되는 일은 일어나지 않습니다.
데이터 제대로 업로드되었는지 어떻게 확인할 수 있나요? 이를 위한 콜백이 있나요?
현재 그런 콜백 함수는 없습니다. 대신 업로드가 성공하면 텐투플레이 디버그 모드에서 "TPDebug||Upload successful"라는 메시지가 유니티 콘솔에 나타납니다.
업로드 실패시 수집된 데이터는 다음 게임 플레이시까지 플레이어의 장치에 남아 있습니다.
콘솔에서 SDK 상태를 보면 PlayerGetCharacter
이벤트가 Join
이벤트 후 항상 나타나는데 괜찮은건가요?
정상입니다. Join
직후 PlayerGetCharacter
가 자동 호출되도록 설계되었습니다.
문서에는 TPStashEvent.Join
이 사용자 등록에 쓰인다고 하는데 등록하려는 사용자가 이미 등록된 사용자인지 확인할 수 있는 방법이 있나요? (그래서 기등록 여부에 따라 Join
과 Login
을 모두 호출하거나 Login
만 호출하길 원함)
텐투플레이는 호출하는 모든 것을 그냥 업로드하므로 텐투플레이를 사용 중 특정 사용자가 이미 등록했는지 확인하기는 어렵습니다. 대다수의 게임에서 TPStashEvent.Join
은 최초 일회성으로 이루어지는 이벤트(예: 구글 사용자로 로그인)에 대해 호출됩니다.