Wortal SDK for GameMaker
インストール
- GameMaker Marketplaceから、Wortal エクステンションをインストールする
 - 
Included Files ->
wortal_index.htmlに移動し、JSファイルのパスをあなたのゲームのものに置き換えてください1. GameMakerのビルド結果である .zip アーカイブを解凍する 2.
index.htmlを開き、画面下付近にある下記の行を見つける:<script type="text/javascript" src="html5game/yourgame.js?DBDYB=830673173"></script>3. 上記の行をコピー・保存する 4.wortal_index.htmlを開き、画面下付近にある下記の行を見つける:<!-- CHANGE THIS TO YOUR GAME's PATH →5. ステップ C でコピーしたコードでその行を置き換える - 
Game Options -> HTML5 -> Advanced -> Included file as index.html の順に開き、このオプションを
wortal_index.htmlに変更する 
使い方
広告
インタースティシャル広告では、レベルの達成や切り替えの合間に表示が可能です。
// プレイヤーがレベルを達成
wortal_ads_show_interstitial("next", "NextLevel");
// プレイヤーがゲームを一時停止
wortal_ads_show_interstitial("pause", "PausedGame");
// プレイヤーがアプリ内課金ページにアクセス
wortal_ads_show_interstitial("browse", "BrowseShop");
リワード広告は、プレイヤーが動画広告を最後まで視聴するなどの条件を満たした場合に、報酬を与える広告タイプです。必ずプレイヤーに通知し、許可を受けてから表示する必要があります。
// この例では、広告の条件達成とは関係なく、ゲームが進みます。
// 例:プレイヤーは広告を視聴することでボーナスコインを取得できますが、その結果に関わらずゲームは続行されます。
wortal_ads_show_rewarded("BonusCoins");
// この例では、広告の広告の条件達成に関係して、ゲームが進みます。
// 例:プレイヤーはゲームオーバーの際、広告を視聴することで復活できますが、広告をスキップするとそのレベルを失います。
wortal_ads_show_rewarded("ReviveAndContinue");
注: プレーヤーは、adViewed コールバックでのみ報酬を受ける必要があります。
アナリティクス
Wortalのアナリティクス APIを活用することによって、ゲームイベントを追跡し、プレイヤーのゲーム内アクティビティを把握することが可能です。このデータは、Wortalのダッシュボードで表示できます。
// レベルの開始をログ。
wortal_analytics_log_level_start("Level 3");
// レベルの終了をログ。名前が一致する場合、ゲーム時間を記録します。
// logLevelStart の最後の呼び出し名()
wortal_analytics_log_level_end("Level 3", "100", 1);
// プレイヤーのゲーム内の選択行動をログします。ゲームのバランスを取るのに役立ちます。
// そしてプレイヤーが多く利用するコンテンツを把握できます。
wortal_analytics_log_game_choice("Character", "Blue");
アチーブメント
Achievements API は、プレイヤーのゲーム内での進捗を追跡するために使用されます。特定のタスクを完了したり、特定のマイルストーンに到達することでアンロックできます。
// アチーブメントをアンロックする
wortal_achievements_unlock_async("achievementID");
// プレイヤーのアチーブメントの進捗状況を取得する
wortal_achievements_get_async();
コンテキスト
Context APIは、プレイヤー同士をつなぎ、ゲームセクションの参加、コンテンツの共有、またメッセージのやり取り等に活用できます。
// 友達をゲームに招待する。プレーヤーの現在のコンテキストを切り替えない。
payload = {
    image: "data:base64image",
    text: "Invite text",
    cta: "Play",
    data: { exampleData: "yourData" },
}
wortal_context_invite_async(json_stringify(payload));
// ゲームのアクティビティを友達と共有する。
payload = {
    image: "data:base64image",
    text: "Share text",
    cta: "Play",
    data: { exampleData: "yourData" },
}
wortal_context_share_async(json_stringify(payload));
アプリ内課金
アプリ内課金(IAP)APIは、プラットフォームでのゲーム内トランザクションの際に使用されます。このプロセスは、プレイされているプラットフォームによって異なりますが、IPは変わりません。
// プレイヤーが購入可能なアイテムリストを確認する。
wortal_iap_get_catalog_async();
// アイテムを購入する。
purchaseConfig = {
    productID: "my_product_123",
}
wortal_iap_make_purchase_async(json_stringify(purchaseConfig));
リーダーボード
Leaderboard APIを活用すると、プラットフォームのリーダーボード機能にアクセスが可能に。プレイヤーたちのスコアを追跡し、ランク付けすることができます。
// 上位10位にランクづけられたリーダーボードを取得する。
wortal_leaderboard_get_entries_async("global", 10, 0);
// プレーヤーのスコアをリーダーボードに追加する。
wortal_leaderboard_send_entry_async("global", 100, "details");
通知
Notifications API は、プレイヤーに通知を送信するために使用されます。これは、ゲーム内のイベントをプレイヤーに通知したり、再びプレイするよう促したりするために使用できます。
// プレイヤーに送信する通知をスケジュールします。
payload = {
    title: "Your energy is full!",
    body: "Come back and play again.",
    mediaURL: "https://example.com/image.png",
    label: "resources-full",
    scheduleInterval: 300 // 5 minutes
}
wortal_notifications_schedule_async(json_stringify(payload));
// スケジュール設定された通知をキャンセルする。
wortal_notifications_cancel_async("notification-id-123");
プレイヤー
現在のプレーヤーに関する詳細は、Player APIにて確認できます。
// プレイヤーの名前を取得する。
wortal_player_get_name();
// プレイヤーの友達で、ゲームをプレイことがある人のリストを取得する。
payload = {
    filter: "ALL",
    size: 20,
    hoursSinceInvitation: 4,
}
wortal_player_get_connected_players_async(json_stringify(payload));
セッション
現在のセッションの状態に関する詳細は、Session API でアクセスできます。
Wortal コールバック
SDKでは、コールバックイベントがある、多くの非同期コールを使用します。これらの関数は、 the _async suffix でマークされています。これらのコールバックをリッスンし、 Async - Social  イベントで適切に処理する必要があります。コールバックイベントは、以下SDK定義プロパティを持つマップとして返されます:
id: "wortal_callback", // Wortalのコールバックは常に同じ。
event, // コールバックのイベント名。
success, // エラーフラグ。”0” はエラーがあったことを意味し、”1” は呼び出しが成功したことを意味します。
payload, // オプションのリターンデータ。エラーが発生しなかった場合のみ存在し、そのタイプは呼び出しによって異なります。
error // エラーが発生した場合、エラーを含む JSON 文字列。
スタッツ
Stats API は、プレーヤーのゲーム内の統計情報を追跡するために使用されます。
// プレーヤーの統計情報を掲載する。
wortal_stats_post_async("level 1", 100);
// 特定のレベルに関するプレイヤーの統計情報を取得する。
wortal_stats_get_async("level 1");
トーナメント
Tournament API は、あなたのゲームのトーナメントを作成し、管理するために使用されます。
// Create a tournament.
const payload = {
    initialScore: 100,
    config: {
        title: "Level 1 Tournament",
    },
    data: {
        level: 1,
    },
};
wortal_tournament_create_async(json_stringify(payload));
// Post a score to a tournament.
wortal_tournament_post_score_async(200);
広告コールバックのハンドラの例:
var ID = async_load[? "id"];
if (ID != undefined) {
    if (ID == "wortal_callback") {
        switch (async_load[? "event"]) {
            case "ADS_BEFORE_AD_CALLBACK":
                // ここでゲームと音声を一時停止する。
                break;
            case "ADS_AFTER_AD_CALLBACK":
                // ここでゲームと音声を再開する。
                break;
            case "ADS_AD_DISMISSED_CALLBACK":
                // 広告がスキップされました - プレイヤーに報酬を与えない。
                break;
            case "ADS_AD_VIEWED_CALLBACK":
                // 広告を視聴したプレーヤーに報酬を与える
                break;
        }
    }
}
すべてのコールバックイベントとそのペイロードリスト:
INITIALIZE_CALLBACK // Void
START_GAME_CALLBACK // Void
ON_PAUSE_CALLBACK // Void
PERFORM_HAPTIC_FEEDBACK_CALLBACK // Void
ADS_BEFORE_AD_CALLBACK // Void
ADS_AFTER_AD_CALLBACK // Void
ADS_AD_DISMISSED_CALLBACK // Void
ADS_AD_VIEWED_CALLBACK // Void
ADS_NO_FILL_CALLBACK // Void
CONTEXT_CHOOSE_CALLBACK // Void
CONTEXT_CREATE_CALLBACK // Void
CONTEXT_SWITCH_CALLBACK // Void
CONTEXT_INVITE_CALLBACK // Void
CONTEXT_SHARE_CALLBACK // Number
CONTEXT_SHARE_LINK_CALLBACK // Void
CONTEXT_UPDATE_CALLBACK // Void
IAP_GET_CATALOG_CALLBACK // Product[]
IAP_GET_PURCHASES_CALLBACK // Purchase[]
IAP_MAKE_PURCHASE_CALLBACK // Purchase
IAP_CONSUME_PURCHASE_CALLBACK // Void
LEADERBOARD_GET_LEADERBOARD_CALLBACK // Leaderboard
LEADERBOARD_SEND_ENTRY_CALLBACK // LeaderboardEntry
LEADERBOARD_GET_ENTRIES_CALLBACK // LeaderboardEntry[]
LEADERBOARD_GET_PLAYER_ENTRY_CALLBACK // LeaderboardEntry
LEADERBOARD_GET_ENTRY_COUNT_CALLBACK // Number
LEADERBOARD_GET_CONNECTED_PLAYERS_ENTRIES_CALLBACK // LeaderboardEntry[]
NOTIFICATIONS_SCHEDULE_CALLBACK // NotificationScheduleResult
NOTIFICATIONS_GET_HISTORY_CALLBACK // ScheduledNotification[]
NOTIFICATIONS_CANCEL_CALLBACK // Boolean
NOTIFICATIONS_CANCEL_ALL_CALLBACK // Boolean
PLAYER_GET_DATA_CALLBACK // Developer-defined object
PLAYER_SET_DATA_CALLBACK // Void
PLAYER_GET_CONNECTED_PLAYERS_CALLBACK // Player[]
PLAYER_GET_SIGNED_PLAYER_INFO_CALLBACK // Object with id and signature
PLAYER_GET_ASID_CALLBACK // String
PLAYER_GET_SIGNED_ASID_CALLBACK // Object with id and signature
PLAYER_CAN_SUBSCRIBE_BOT_CALLBACK // Boolean
PLAYER_SUBSCRIBE_BOT_CALLBACK // Void
SESSION_GET_ENTRY_POINT_CALLBACK // String
SESSION_ON_ORIENTATION_CHANGE_CALLBACK // Orientation
SESSION_SWITCH_GAME_CALLBACK // Void
TOURNAMENT_GET_CURRENT_CALLBACK // Tournament
TOURNAMENT_GET_ALL_CALLBACK // Tournament[]
TOURNAMENT_POST_SCORE_CALLBACK // Void
TOURNAMENT_CREATE_CALLBACK // Tournament
TOURNAMENT_SHARE_CALLBACK // Void
TOURNAMENT_JOIN_CALLBACK // Void
Demo Project
SDK の呼び出しの実装例があるデモ・パッケージは、 here で確認できます。