よくある質問(FAQ)

一般

複数のプロジェクトを作成することはできますか?

はい、必要に応じて複数のプロジェクトを作成することができます。

TENTUPLAYがもっとも効果を発揮するゲームジャンルは何ですか?

TENTUPLAYはゲームジャンルに応じて異なるメソッドを使用するものの、ゲーム環境をAIが学習する方法にはあまり差がないため、ジャンルを問わずにLTVの増加を実感することができるはずです。

TENTUPLAYの導入にかかる費用と時間が知りたいです。

ゲームの規模(MAU)とジャンルによって異なりますが、通常のインディーゲームなら6時間未満、中・大型ゲームでも2~3日ほどです。

TENTUPLAYが対応している言語を教えてください。

英語、韓国語、日本語に対応しています。

無料体験は可能ですか?

はい、詳しくはTENTUPLAYの窓口にお問い合わせください。

TENTUPLAYを導入しているゲームには何がありますか?

秘密保持契約のため、タイトル名を公開することはできませんが、MMORPG、放置系ゲーム、ソーシャルゲームやアドベンチャーゲームなどに導入されており、そのMAUは30万に達しています。

内部BIやO&MチームよりもTENTUPLAYが優れている点は何ですか?

低コストと高い時間効率、そしてゲームの種類を問わずにAIアルゴリズムを簡単に導入して成果が出せるという点が優れています。

基本分析には何が含まれますか?

基本分析には日・週・月ごとのリテンションと転換率に関する統計に加え、課金ユーザーとアプリでの購入に関する詳細が提供されます。一方の上級分析にはコホート分析、休眠ユーザーやゲーム内経済分析などが含まれます。

TENTUPLAYのタイムゾーンはどこですか?タイムゾーンを変更することは可能ですか?

TENTUPLAYではUTC(Universal Time Coordinated、協定世界時)を使用しており、他の時間帯に変更することはできません。アップロードされたイベントは自動的にUTC時間に変換されてデータベースに保存さるため、TENTUPLAYコンソールのデータとグラフに表示されるすべての時間帯はイベントがアップロードされた時点のUTC時間になります。例えば3月2日午前01:00 KST(GMT+9)に登録したユーザーの場合、UTCでは3月1日(厳密には3月1日午後4時UTC)に登録したものとみなされます。

TENTUPLAYでコンサルティングサービスは行っていますか?

弊社はコンサルティングサービスを行っておりませんが、必要であれば専属のプロジェクトマネージャーをご紹介いたします。

データ関連

TENTUPLAYは人口統計学的属性も収集しますか?

いいえ、TENTUPLAYは行動データのみを収集します。

TENTUPLAYはサーバーデータベースから直接データを抽出しますか?

TENTUPLAY SDKはクライアント側でデータを収集するサードパーティSDKです。

外部にデータを送りたくないですが…

TENTUPLAYではサーバー間(S2S)サービスも提供しています。詳しくはTENTUPLAYの窓口にお問い合わせください。

AIショップに必要なデータの最低容量を教えてください。また、ゲームサーバー上にある既存データは必要ですか?

TENTUPLAY AIはスレッショルドを設定したペルソナごとのプレイヤー分類に通常1日~2日分のデータを要します。なお、TENTUPLAYはサーバー上にある既存データは一切使用しません。

AIショップに必要な最低プレイヤー数はありますか?

AIショップはプレイヤーの人数にはあまり影響されませんが、より正確で様々なペルソナ分析を行うには3,000人以上のMAU(Monthly Active Users、月間利用者)が望ましいです。

AIショップ

セグメントはどのように動きますか?

TENTUPLAY SDKを実装すると、データ収集と分析は自動的に行われます。TENTUPLAY AIがユーザーのプレイスタイルに基づいてユーザータイプを分類し、分類された各ペルソナに属するプレイヤー数はコンソールで確認することができます。

セグメント分類はプレイヤーの行動のみに基づいていますか?

セグメントの分類基準は大きく分けて行動経済学と購入およびリテンションの2つがあります。

パーソナライズされたオファーの内容を編集することは可能ですか?

はい、コンソールでコードを編集することができます。

イベントログは多ければ多いほど良いですか?

必ずしもそうではなく、ビジネスモデルとの関連性の高いイベントを選択的に収集することがベストです。

共通メソッドとジャンル別メソッドの違いは何ですか?

LoginJoinのような一般的なメソッドはゲームジャンルを問わずに共通的に必要なメソッドであり、一方のジャンル別メソッドはゲームジャンルによって適用状況が異なります。例えばコスチュームや衣装、消耗アイテムのないゲームではGetCosmeticUseConsumableメソッドは不要です。

AIショップの成果はどのように確認できますか?

コンソールでプレイヤーごとのセグメント、メッセージのオープン率や転換率を確認することができますが、実際の購入率を意味するわけではありません。

プレイヤーが複数のペルソナに属することもありますか?

はい、ペルソナ同士は排他的ではないため、1人のプレイヤーが2つ以上のペルソナに属することはよくあります。

28種類のペルソナはゲームジャンルを問わずに常に現れますか?

現れるペルソナの数はゲームによって、特にジャンルによって異なります。RPG、MMOゲームでは通常12~15種類のペルソナが、放置系ゲームでは7~9種類、カジュアルやパズルゲームでは3~7種類のペルソナが現れます。

プレイヤーが長期間同じペルソナグループに留まると、いつも同じ内容のオファーだけが送られるわけではありませんか?

プレイヤーに送る同一オファーの件数を制限したり、設定を変更したりすることがきます。

コンソールでデータを抽出してサーバー上のデータと照らし合わせたいです。

コンソールからCSVファイルをダウンロードしてください。

各ペルソナのスレッショルドはどのように決まりますか?

SDK実装後にTENTUPLAY AIが24~72時間をかけてデータを分析し、自動的にペルソナごとのスレッショルドを設定します。スレッショルドは固定されず、ゲームの成長やプレイヤー傾向の変化によって変化します。

AIオファーはゲーム内でどこに表示されますか?

オファーを表示する場所を予め設定する必要があります。例えばログインしたときにポップアップさせることも、特定のアイコンをクリックしたときに表示させることも可能です。

TENTUPLAYではゲーム内の商品に表示する情報(値段や画像など)をどのように取得していますか?

そのためにはコンソールでCSVファイルをアップロードする必要があります。商品情報が変わった場合は最新バージョンのCSVファイルをアップロードし、既存のものを置き換えてください。

ガイドによりますと商品情報のCSVファイルでURLを設定することが可能ですが、実際商品をクリックした場合はこのURLではなくGoogleアプリ内決済に進む仕組みだと思います。purchase_linkの意味が知りたいです。

サンプルCSVのURLは一例に過ぎません。実際の購入リンク(外部リンクまたは内部ディープリンク)がある場合は、そのリンクをpurchase_linkに記載して使用してください。purchase_linkを空欄にし、次のようにpurchasable_slugまたはproduct_indexでおすすめアイテムのpurchase_linkを取得する形で利用することも可能です。

purchase_link = getProductUrl(purchasable_slug); // purchase_linkを取得するためのカスタムメソッド

多国語(例:6カ国語)に対応させるにはAIショップでペルソナのメッセージを言語ごとに用意する必要がありますか?

基本的に韓国語、英語、日本語のメッセージが用意されていますが、他の言語に対応させるにはこれらのメッセージを翻訳して使用してください。

AndroidとiOS両方で同じ商品コードで販売している場合、CSVのプラットフォームを空にしてもいいですか?

storeは必須のため、入力する必要があります。すべてのstoreで同じ商品コード(例:purchasable_slug or product_index)を使用している場合でもストアごとにStore値を入力する必要があります。

AIショップメッセージを表示するために最適なUIサイズを教えてください。

デバイスごとにメッセージに表示可能な文字数が異なるため、表示文字数に対応可能なUI作りを心がけてください。

パーソナライズされたオファー

パーソナライズされたオファーの送信タイミングを強制的にトリガーすることは可能ですか?

いいえ。しかし、カスタムイベントに関するアップデートを検討しております。

コンソールで複数のユーザーIDを1つのリストとして入力することは可能ですか?

入力した複数のユーザーIDをグループにすることができます。またはコンソールで廃課金ユーザーと新規課金ユーザーのリストから選択した特定のユーザーID向けのオファーを作成することもできます。

TENTUPLAYコンソールにオファー通知を表示させることはできますか?

いいえ、ゲーム内メッセージとポップアップにしか表示できません。

「すぐに送信」と「キャンペーン」の違いは何ですか?

「すぐに送信」とは文字通りにターゲットユーザーに指定したオファーを直ちに送信することです(例:プレイヤーAAA、ABC、XYZに20%オフクーポンを直ちに送る)。一方の「キャンペーン」は指定した期間中に実施され、その期間中に特定の送信タイミングをトリガーしたプレイヤーにオファーを送る機能です(例:今後2週間、ステージ11に到達したプレイヤー全員に20%オフクーポンを送るキャンペーンを作成する)。

キャンペーン期間中にプレイヤーが特定の送信タイミングをトリガーすると、オファーがすぐに送信されますか?

いいえ、すべてのキャンペーンオファーは送信タイミングのトリガーしたUTC基準で翌日に一斉送信されます。

パーソナライズされたオファーの不正利用を防ぐための検証機能はありますか?

はい、オファーを検証するためのAPIが用意されています。詳しくはオファー検証をご覧ください。

作成したキャンペーンを編集することは可能ですか?

作成済みのキャンペーンはスケジュールのみ編集可能です。オファーの内容とターゲットユーザーを変更するにはキャンペーンのコピーを作成して行ってください。

ディープリンクとは何ですか?

ディープリンクには対象商品に関する情報が含まれます。ディープリンクの作成方法については次のサイトをご覧ください。

コンソールでゲームアイテムの値段を変更することは可能ですか?

いいえ、ゲームアイテムをオファーに入れる前にGoogle PlayやApp Storeで値段を登録する必要があります。

SDK関連

ゲームをアップデートするたびにTENTUPLAY SDKも更新する必要がありますか?

毎回更新する必要はありませんが、アップデートによってビジネスモデルが変わる場合は、TENTUPLAYテクニカルサポートに連絡してサポートを受けることをお勧めします。

SDKではなく、APIを介してTENTUPLAYサービスを利用することは可能ですか?

可能です。詳しくはTENTUPLAYテクニカルサポートにお問い合わせください。

TENTUPLAY SDKが対応しているゲームエンジンには何がありますか?

現在Unityエンジンに対応しています。

SDKが正しく実装されたかどうかを検証するQAプロセスはありますか?

データ収集とアップロード実装に関するデバッグ作業があります。収集したデータのデバッグをご覧ください。同時にTENTUPLAYテクニカルサポートでサーバーに問題がないかを常にチェックしています。

難読化を行う場合に例外処理すべきクラスは何ですか?

com.sentience.tentuplayです。

現在TPStashEventクラスで一部パラメータのデータ型(例:currency)がfloatになっていますが、入力データがfloatの範囲を超えると、どうなりますか?データのアップロードによって特定メソッドに誤ったデータが保存されると、他のメソッドのデータにも影響を与えますか?

内蔵された型変換が正しく動作する場合は型変換を行ってください。ただし、この場合はオーバーフローが発生するため、次のように追加でデータ処理を行う必要があります。

  • floatの範囲:1.40129846432481707e-45 ~ 3.40282346638528860e+38

  • doubleの範囲:1.7e-308 ~ 1.7e+308

値が10^38を超えるとオーバーフローが発生し、値が無限大になってエラーが発生します。この場合は入力値のログを取得する方法がありますが、この方法にはログ形式でコンソールに値が表示されるという欠点があります。

2つ目の質問については例えばGetCurrencyのいずれかのデータがデータ型の範囲を超えると、GetCurrencyのデータはTENTUPLAYサーバーにアップロードされなくなります。しかし、他のメソッド(例:UseCurrency)には影響を与えずに正常にデータがアップロードされます。

設定でAuto Uploadをチェックした状態でプレイヤーが次回のアップロード時間前にアプリを閉じてしまうと、直前までに収集されたデータはどうなりますか?

アップロード時間までに収集したデータはプレイヤーのデバイスに保存され、ゲームを再開したときに再度アップロードされます。これを防ぐためにアップロード間隔を短く設定することも可能ですが、逆に頻繁にアップロードを行うことによる影響(例:データ送信時の負荷増加)が発生する可能性があります。

TPStashEventクラスはどのくらいの頻度で呼び出すべきですか?

TPStashEventクラスが使われる仕組みは次の通りです。Auto Uploadが選択されている場合、頻繁に呼び出しが発生するイベントに対してnew TPStashEvent()クラスで必要なメソッドを呼び出すと、アップロード間隔に応じて自動的にアップロードが行われます。(例:財貨の獲得と使用時の収集メソッドをそれぞれnew TPStashEvent().GetCurrency()new TPStashEvent().UseCurrency()で呼び出す)例えばnew TPStashEvent()をプレイ開始時にのみ呼び出す場合、プレイ中に収集データがアップロードされることはありません。

データが正しくアップロードされたかどうかを確認するコールバックはありますか?

現在そのようなコールバック関数は用意されていませんが、アップロードが成功すると、TENTUPLAYデバッグモードで"TPDebug||Upload successful"というメッセージがUnityコンソールに表示されます。

アップロードが失敗しても収集したデータは次回のゲームプレイまでにプレイヤーのデバイスに残ります。

SDKの状態をコンソールで確認するとPlayerGetCharacterイベントがJoinイベントの後に常に表示されますが、これは正常ですか?

はい、正常です。Joinの直後にPlayerGetCharacterが自動的に呼び出されるように設計されています。

ドキュメントにはTPStashEvent.Joinがユーザー登録に使われると書かれていますが、登録済みのユーザーかどうかを確認する方法はありますか?(登録状況によってJoinLoginの両方を呼び出すか、またはLoginのみを呼び出したい)

TENTUPLAYは呼び出したものすべてをアップロードするだけでTENTUPLAYで特定のユーザーが登録済みかどうかを確認することはできません。多くのゲームではTPStashEvent.Joinを最初のワンタイムイベント(例:Googleアカウントでログイン)として呼び出します。

サーバーエラーが発生した場合にTENTUPLAY SDKはどのように対処しますか?

TENTUPLAY SDKは数回リトライを試みたあと、自動的にシャットダウンされます。このような一連の動作はゲームがシングルスレッドのみを使用するという想定でSDKは別のスレッドやコルーチン・コールバックで動くため、ゲームプレイには影響を与えません。

以後3~5日程度の十分な時間が経過した後に、SDKはアプリ起動時のヘルスチェックプロセスでサーバーが回復したかどうかを確認します。これらの作業はゲームプレイには影響を与えません。

TENTUPLAYサーバーの処理能力はどのくらいですか?

ゲームのジャンルと容量に応じてRDBとNoSQLの両方を使用しているため、様々な容量に柔軟に対応しています。大容量とは200,000 DAU、80,000 concurrent connections以上を意味しますが、数十万DAUを誇るMMORPGクライアントでもサーバーが落ちたことはこれまでに一度もありません。