コンテンツにスキップ

資産変動ログ

  • 資産は、指定されたカテゴリにそれぞれ送信するために、現金化可能なものと現金化不可能なものに分けられます。 例:Tiny Farmには、現金タイプ(ベル)と現金化不可能タイプ(ゴールド)の2つのカテゴリがあります。
  • ゲームサーバーからの資産(現金、ゲームマネーなど)の変動ログを収集することは、より良いサービスのために各ユーザーのプレイパターンを分析することを目的としています。

カテゴリー

共通サーバー
172.19.1.10
noncash_var_log, cash_var_log
テストサーバー
222.112.182.65
test_noncash_var_log, test_cash_var_log

ログ仕様

Note

スネークケースのフィールド、例えば server_id は、最終ストレージ(BigQuery)に保存されるときにキャメルケース、例えば serverId に変換され、指定されていない形式で送信されたログ、例えば serverid はその列に保存されません。

フィールド名 説明 タイプ 必須
date ログを保存する時間、形式: yyyy-mm-dd hh🇲🇲ss
例: 2012-01-19 16:24:00
string Y
channel C2S: HIVE, KAK: Kakao, LIN: LINE, WEI: Weibo string(3) Y
user_id クライアントから送信されたHub uid(他のチャネルの場合は、各チャネルで使用されるuser_idを意味します) bigint Y
user_seq ゲームサーバーで使用されるユーザーアカウントの番号(PK) bigint N
lang クライアントから送信された言語コード
ISO 639-2(3バイトの言語コード)
例: KOR
string(3) Y
game ゲームのブランド名を使用してください
(例: derbydays)。
app_idの3番目の項目
例: com.com2us.littlelegends.kakao.freefull.apple.global.ios.universal
→ littlelegends
string(50) Y
market 市場情報
"TS": SKT Tstore
"OL": KT OllehMarket
"OZ": LGU+ OzStore
"AP": Apple Appstore
"GO": Google Play
"SA": Samsung Apps
"LE": Com2us Lebi
string(2) Y
level ゲーム内のユーザーレベル int Y
action_id ゲーム内のユニークなゲームマネーの変化に関連するユーザーのアクションID
範囲: [1–(2^31−1)] APIまたはプロトコルはゲーム内のアクションを区別するため、ゲームサーバーは各アクションに関するIDを定義する必要があります
一度定義したら、変更しないでください。テストが必要です
int Y
action_name action_idに1:1でマッピングされる値。action_idが異なる場合、action_nameも異なります
例: Feeding, Harvestingなど
実際のデータはaction_idに基づいてスタックされます。
変更された場合、メタテーブルは自動的に更新されます
string(50) Y
item_id 資産の変動を引き起こすアイテム識別子。この値は、資産の変動アクションがアイテムに関連していない場合は0に設定してください。
範囲: [1–(2^31−1)] このパラメータはアクションがアイテムに関連している場合に必要です。各ゲームはアイテムIDを定義する必要があります
一度定義したら、変更しないでください。テストが必要です
int Y
item_name item_idに1:1でマッピングされる値。
item_idが0でない限り、すべての値には説明が必要です。
item_idが0の場合は0を入力してください
item_idについての簡単な説明
string(50) Y
asset_id 現金化可能な資産/ソーシャルメディアポイントについては1から100の値を設定し、現金化不可能な資産については101以上の値を設定してください
一度定義したら、変更しないでください。テストが必要です
(参考: 現金化可能な資産がユーザーが通常ゲーム内で取得するものであれば、101以上の数字を設定してください)
int Y
asset_name asset_idについての簡単な説明
(例: bell, star, goldball, gold)
string(50) Y
amount_prev asset_idに関連する資産の変動前の金額 bigint Y
amount_var asset_idに関連する資産の変動金額。
資産の減少: 負の数、資産の増加: 正の数
bigint Y
amount_curr asset_idに関連する資産の変動後の金額。
amount_curr = amount_prev + amount_var
int Y
amount_free_prev asset_idに関連する資産の変動前の無料資産の金額
(日本の資金決済法改正により追加)
bigint Y (2018年1月18日追加)
amount_free_var asset_idに関連する無料資産の変動金額
資産の減少: 負の数、資産の増加: 正の数(日本の資金決済法改正により追加)
bigint Y (2018年1月18日追加)
amount_free_curr asset_idに関連する無料資産の変動後の金額
(日本の資金決済法改正により追加)
amount_free_curr = amount_free_prev + amount_free_var
int Y (2018年1月18日追加)
amount_paid_prev 資産_id に関連する資産の変動前に支払われた金額
(日本の資金決済に関する法律の改正により追加)
bigint Y (2018年1月18日追加)
amount_paid_var 資産_id に関連する資産の変動に支払われた金額
資産減少: 負の数, 資産増加: 正の数 (日本の資金決済に関する法律の改正により追加)
bigint Y (2018年1月18日追加)
amount_paid_curr 資産_id に関連する支払われた資産の変動後の金額
(日本の資金決済に関する法律の改正により追加)
amount_paid_curr = amount_paid_prev + amount_paid_var
int Y (2018年1月18日追加)
client_ip クライアントIP。この値はGeoIPから国の値を抽出します string(32) Y
country client_ip が指定されていない場合、国コードを直接入力してください
例: KR
string(2) N
server_ip サーバーIP string(32) Y
company ゲーム出版会社、ログの対象:
例: "C2S": Com2uS, "GVI": Com2uS Holdings
string(3) Y
server_id サーバーコード
サーバーコードを入力するには サーバーコードの表 を参照してください (JSON入力コード)
string Y
is_emulator BlueStacksなどのPC用エミュレーターに接続している場合、返す
1; そうでない場合は0を返す
PC版には2を返す
tinyint(1) 必須ではありませんが、推奨されます。
game_language ゲーム内の言語を2文字で
例: ko
参考: 識別子ポリシー
varchar 必須ではありませんが、推奨されます。(2018年1月18日追加)
account_id サーバー内のユニークなアカウント識別子 (PK) bigint N (2018年1月18日追加)
deviceid HIVE上のデバイスID。広告識別子を抽象化した識別子 (Android: AdvertisingID; iOS: IDFA) bigint N (2018年1月18日追加)
guid ログごとに生成されるユニークキー
uuidのようなランダム形式が推奨されます
varchar(64) N
real_count ユーザーが取得した資産の実際の数
例: ユーザーが一度に10個の資産を取得した場合、ログは1つだけ残りますが、資産の実際の数は10です
int Y (2019年9月4日追加)

スクリプトタイプ

<?php
$GLOBALS['THRIFT_ROOT'] = '/dev/scribe-php'; // The route is an example. Modify it in accordance with the development environment.
include_once $GLOBALS['THRIFT_ROOT'].'/scribe.php';
include_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
include_once $GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php';
include_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';

public function writeCashVarLog(.....params.....) // Function is an example as well. Modify it in accordance with the development environment. (Category, however, should be fixed as ‘cash_var_log’)
{
        $msg['category'] = 'cash_var_log';
        $msg['message'] = array();
        $msg['message']['date'] = date('Y-m-d H:i:s', time());
        $msg['message']['channel'] = $channel;
        $msg['message']['user_id'] = $uid;
        $msg['message']['country'] = $country;
        $msg['message']['lang'] = $lang;
        $msg['message']['game'] = $game;
        $msg['message']['market'] = $market;
        $msg['message']['level'] = $level;
        $msg['message']['action_id'] = $action_id; // Once you define, change is unavailable.
        $msg['message']['action_name'] = $action_name;
        $msg['message']['item_id'] = $item_id; // Once you define, change is unavailable.
        $msg['message']['item_name'] = $item_name;
        $msg['message']['asset_id'] = $asset_id; // Use the value between 1 and 100 for each game.
        $msg['message']['asset_name'] = $asset_name;
        $msg['message']['amount_prev'] = $amount_prev;
        $msg['message']['amount_var'] = $amount_var;
        $msg['message']['amount_curr'] = $amount_curr;
        $msg['message'] = json_encode($msg['message']);

        $entry = new LogEntry($msg);
        $messages = array($entry);
        //var_dump($messages);

        $socket = new TSocket('localhost', 1463, TRUE); // the target host to send logs(fixed port)
        $transport = new TFramedTransport($socket);
        $protocol = new TBinaryProtocol($transport, FALSE, FALSE);
        $scribe_client = new scribeClient($protocol, $protocol);

        $transport->open();
        $scribe_client->Log($messages);
        $transport->close();  
}
public function writeNonCashVarLog(.....params.....) // Function is an example as well. Modify it in accordance with the development environment. (Category, however, should be fixed as ‘noncash_var_log’)
{
        $msg['category'] = 'noncash_var_log';
        $msg['message'] = array();
        $msg['message']['date'] = date('Y-m-d H:i:s', time());
        $msg['message']['channel'] = $channel;
        $msg['message']['user_id'] = $uid;
        $msg['message']['country'] = $country;
        $msg['message']['lang'] = $lang;
        $msg['message']['game'] = $game;
        $msg['message']['market'] = $market;
        $msg['message']['level'] = $level;
        $msg['message']['action_id'] = $action_id; // Once you define, change is unavailable.
        $msg['message']['action_name'] = $action_name;
        $msg['message']['item_id'] = $item_id; // Once you define, change is unavailable.
        $msg['message']['item_name'] = $item_name;
        $msg['message']['asset_id'] = $asset_id; // Use the value between 1 and 100 for each game.
        $msg['message']['asset_name'] = $asset_name;
        $msg['message']['amount_prev'] = $amount_prev;
        $msg['message']['amount_var'] = $amount_var;
        $msg['message']['amount_curr'] = $amount_curr;
        $msg['message'] = json_encode($msg['message']);

        $entry = new LogEntry($msg);
        $messages = array($entry);
        //var_dump($messages);

        $socket = new TSocket('localhost', 1463, TRUE); // the target host to send logs(fixed port)
        $transport = new TFramedTransport($socket);
        $protocol = new TBinaryProtocol($transport, FALSE, FALSE);
        $scribe_client = new scribeClient($protocol, $protocol);

        $transport->open();
        $scribe_client->Log($messages);
        $transport->close();  
}
?>

使い方

  • アセットバリアンスログは、アセットによるアイテムの配信/回収の状態を調査し、回収率を確認するのに役立ちます。売上の額は回収率に依存します。
  • ゲーム内の区別可能なアイテムタイプとユーザーアクションは、アイテムの配信/回収が積極的に行われている場所を示します。
  • 様々なタイプのイベントによる追加アイテムの販売や無料アセットの詳細を確認することができます。
  • ログを使用する前に、ゲームプロジェクトマネージャー、プラットフォーム計画チームのPIC、BI計画チームとアセット/アクション/アイテムを区別する方法について話し合うことを確認してください。