ゲーム「神弓」で始めよう

ゲーム「神弓」について

「神弓」はTentuPlayのサービス環境下で動く簡単なデモゲームです。初めてTentuPlayを体験する方は本ゲームでTentuPlayの様々な機能を体験しながら、ゲームにTentuPlayサービスをどのように組み込むことができるかを理解することができます。デモゲームを通じてTentuPlayの概要と技術に対する全体像が掴めると、他のゲームにも適用できるようになるはずです。

ガイドを活用する

TentuPlayのドキュメントに含まれる様々な情報やチュートリアルの大半は本デモゲームに基づいて作られており、本デモゲームに関する説明はドキュメント全般に渡るため、本ガイドはより詳細な情報を見つけるためのガイドラインとして活用してください。

概要

概要では本デモゲームがどのようにコンソールやサーバーといったTentuPlayのコンポーネントと連携して動くのかを説明します。これで自分で行うべき作業に関する全体像が掴めるはずです。

300
簡単なワークフロー

設定

まず、デモゲームが含まれたSDKパッケージをダウンロードし、Unityプロジェクトで読み込みます。続けてUnity EditorでTentuPlayに関する設定を行い、プレイヤーの行動データ収集に必要な作業を行います。データ収集はすでに記載されているTentuPlayクラスとメソッドのコードをそのまま利用するか、必要に応じてデモゲームのスクリプトに収集イベントごとに新しいメソッドを追加してください。最後に収集したデータがTentuPlayサーバーに無事アップロードされているかを確認します。

プレイ

それではゲームをプレイしましょう。イベントが発生すると、それに関連するメソッドが呼び出されます。代表的なイベントにはログイン、ステージ開始、インゲーム財貨の使用などがあります。メソッドを通じてプレイヤーの行動データが収集され、予め指定したアップロードルールに従ってTentuPlayサーバーに送られます。

成果物

アップロードされたデータはTentuPlayデータベースに格納され、定期的にデータ分析エンジンによって処理されます。その結果としてオファーに必要なコンテンツが作成され、関連APIを呼び出して取得することができます。TentuPlayにおけるオファーとは一種の購入推薦システムのことで、プレイヤーのゲームパフォーマンスとユーザーエクスペリエンスを向上させる目的で使われます。オファーに必要な主な作業は送信するオファーの種類、オファーメッセージのレイアウト、送信タイミングなどを決め、Unity Editorとコンソールで設定することです。

オファーのテンプレート、メッセージ本文、そしてメッセージの種類を組み合わせてようやくオファーが完成すると、指定したイベントの発生時に(デモゲームの場合はゲームオーバーのとき)そのオファーがゲーム画面に表示されます。

データ収集とアップロードの用意

SDKのダウンロード

「神弓」のゲームデモはTentuPlay SDKに含まれています。

デモゲームはUnityバージョン2019LTS以上で動きます。

  1. コンソールで新しいアカウントとプロジェクトを作成します

  2. SDKをダウンロードします

    「神弓」デモが含まれたSDKを入手するには、 Unity SDK v2021.4 + Demo (NET 4.x)をダウンロードしてください。TentuPlayに慣れている場合は デモゲームを含まないSDKをダウンロードしてください。

SDKのインストール

SDKのインストールはUnity Editor上で行います。

データ収集とアップロードの設定

ここからはコーディング作業になりますが、何もない状態から始めるわけではなく、コアなゲームロジックには追加すべき主なメソッドがデモゲームのソーススクリプトにコメント付きで記載されています。ゲームのソースコードの中からTentuPlayサービスに関するソースを確認するには APIドキュメントをご覧ください。手短に言えば2つのネームスペースに3つのクラスがあり(TPStashEventTPUploadDataTPPersonalizedOffer)、これらのクラスにはイベントごとにデータ収集、データアップロード、オファーの作成を行うメソッドが含まれています。

特にデータ収集とアップロードにはTPStashEventTPUploadDataの2つのクラスだけが使われます。TPUploadDataは手動アップロードにのみ使われるため、TentuPlay Settingsの設定Auto Uploadを選択した場合はTPStashEventとサブメソッドだけが必要になります。

以下はデモゲームで使われたAPIの一部になります。

クラス メソッド 説明 タグ ゲームスクリプト

TPStashEvent

Join()

ユーザー登録データの収集

データ収集

Player.cs

LoginApp()

ユーザーのアプリログインデータの収集

GetCurrency()

キャラクターのゲーム内財貨獲得データの収集

UseCurrency()

キャラクターのゲーム内財貨消費データの収集

GetEquipment()

キャラクターの装備獲得データの収集

EquipEquipment()

キャラクターの装備装着イベントの収集

EquipSkill()

キャラクターのスキルセットイベントの収集

LevelUpCharacter()

キャラクターのレベルアップデータの収集

Playerinfo.cs

PlayStage()

ゲーム内キャラクターがプレイするステージに関する情報収集

StageManager.cs

PlayStageWithSkill()

キャラクターが特定ステージでセットするスキルに関するデータ収集

PlayStageWithEquipment()

キャラクターが特定ステージで装着する装備に関するデータ収集

TPUploadData

UploadData()

収集したデータを手動でアップロード

データアップロード

Player.cs

データ収集に関する詳細はデータの収集をご覧ください。ここでは主にゲーム開始前に発生する登録とログインイベントを収集する2つのメソッド(Join()LoginApp())を呼び出す方法について説明します。データ収集とアップロードが無事行われたかどうかを確認するには収集したデータのデバッグをご覧ください。

デモゲームと異なるゲームジャンルとイベントの種類ごとにどのようなメソッドを使うべきかがわからない場合はレシピのドキュメントをご覧ください。

オファーの事前準備

TentuPlayのオファーは大きく分けて2種類があります。1つ目はパーソナライズされたオファーで、もう1つはAIショップオファーです。要するにパーソナライズされたオファーは特定の受信者向けにカスタマイズされたメッセージを送信する手動オファーのことで、AIショップオファーはAIが分析したプレイヤーの行動タイプごとのメッセージを、それに該当するプレイヤーに送信する自動オファーのことです。

Unity Editorで

TPPersonalizedOfferはこの2つのオファーで共通的に使われるクラスです。 いくつかのメソッドがこれに含まれますが、中にはオファーの取得または表示を行う `ShowOfferById`と `ShowLatestOffer`があります。

  1. TPPersonalizedOfferControllerオブジェクトをデモゲームのシーンに組み込みましょう。

  2. TPPersonalizedOfferControllerゲームオブジェクトのパラメータを用いてShowOfferByIdまたはShowLatestOfferを呼び出し、オファーを自動的に表示しましょう。

コンソールで

TentuPlayコンソールではTentuPlayサービスのオファー機能を使用するのに必要なすべてのツールを提供しています。コンソールインターフェースを通じていつ、何を、どのように、誰に送信するかを設定することができ、既存のユーザーセグメントを制御することができます。送信するオファーをプレビューしながらオファーをプレイヤーに送る前にテストすることも可能です。さらにプレイヤーに対し、送信したオファーがどのような成果を上げたかをダッシュボードで確認することができます。

詳しくはパーソナライズされたオファーAIショップをご覧ください。

「神弓」をプレイする

準備が整いましたので、早速ゲームをプレイしましょう。

ゲームを始める

  1. TentuPlay SDKが組み込まれたUnityプロジェクトを開きます。

  2. Assets > ShingGoongDemo > Scenesフォルダに移動します。

  3. StartSceneをダブルクリックし、画面上部のPlayをクリックします。

    7 1
  4. メイン画面でSTARTをクリックしてゲームを始めます。

    8 1
    「神弓」デモのスタート画面(StartScene)

    ゲームを終了するにはESCを押し、ドアの形をしたボタンをクリックします。

ゲームプレイ

目標

弓でステージ上のすべてのロボット(モンスター)を倒す

  • キーアサインを表示するにはESCを押して「?」ボタンをクリックします。

  • 必要に応じて隠れ家にあるNPCショップで装備を購入し、装着しましょう。

  • モンスターが落としたコインと再利用可能な弓は回収しましょう。

ルール

ゲームのルールは以下の通りです。

  • プレイヤーキャラクターのライフは1つのみです。

  • キャラクターが敵の視野に入ると、ゲームオーバーとなります。

  • キャラクターが電気フェンスに触れると、ゲームオーバーとなります。

  • 矢は数に限りがあります。一度放った矢は回収することができます。

  • 矢は壁や地面を貫通することができない上、電気フェンスに当たると消えてしまいます。

プレイ中のメソッド動作方法

ここではゲームをプレイしながらどのような変化が生じ、どのメソッドが呼び出されるかを見てみましょう。

500
ユーザーがオファーを受け取るまでのサービスフロー
ステップ 説明 メソッド シーン ゲームスクリプト

1

アプリの起動とメイン画面に進む

StartScene

2

メイン画面でSTARTをクリックして隠れ家に進む

ShelterScene

3

ゲームにログイン

LoginApp(), Join(), (UploadData())

ShelterScene

Player.cs

GetOfferAsync(), SelectOfferInfo()

TentuPlayCRMPlayerController.cs

4

NPCに話しかけ、ショップでBomb Bowを購入

UseCurrency(), GetEquipment()

ShelterScene

Player.cs

5

インベントリーを開いてBomb Bowを装備

EquipEquipment(), EquipSkill()

ShelterScene

Player.cs

6

プレイのためにテレポートし、最初のステージに進む

PlayStage(), PlayStageWithSkill(), PlayStageWithEquipment()

Stage1Scene

StageManager.cs

7

ロボット破壊して落ちたコインを拾う

GetCurrency()

Stage1Scene

Player.cs

8

経験値を積んてキャラクターをレベルアップ

LevelUpCharacter()

Playerinfo.cs

9

キャラクターが死亡してゲームオーバー

ShowOfferById()

MainBoxOpen_offer.cs

10

すべてのモンスターを破壊して最初のステージをクリア

PlayStage()

StageManager.cs

11

テレポートでボスステージに進む

PlayStage(), PlayStageWithSkill(), PlayStageWithEquipment()

BossScene

StageManager.cs

Unity Editor (TentuPlay> Edit Settings)でAuto Uploadを有効にした場合はプロジェクト設定 > SDKログでデータをリアルタイムで確認することができます。

「神弓」に行ったプレイデータは、プレイヤーUUID:TentuPlayerのものとして収集されます。

5f
デモプレイデータのリアルタイムモニタリング