しかし、ニコニコ動画と違い現実の時間軸と同じ映像が必ず流れることは無いため、ゲームのような不規則かつ順不同に物事が発生するため、コメントの流れるタイミングが決定的に動かすことが出来ません、そのためゲームロジック側からRPGアツマールサーバーに、適切なタイミングでコメントを流してもらうためのイベントを通知する必要があります。
ゲームのイベントの時間軸には、「シーン」「イベントのコンテキスト」「イベントステップ」「イベントのサブステップ」が存在しRPGアツマールでは、それぞれ「シーン」「コンテキスト」「コンテキストファクター」「マイクロコンテキスト」と定義しておりそれぞれのタイミングをコントロールすることで、コメントの流れを制御出来ます。
using RpgAtsumaruApiForUnity;
using UnityEngine;
public class RpgAtsumaruSample : MonoBehaviour
{
private void Awake()
{
// もしプラグインの初期化が終わっていないなら
if (!RpgAtsumaruApi.Initialized)
{
// プラグインの初期化
RpgAtsumaruApi.Initialize();
}
}
// ゲーム内の場面「シーン」を切り替える
// さらに、その場面が全体の流れの最初に戻ることがあるのなら、リセットする
public void ChangeScene(string sceneName, bool reset)
{
// コメントAPIにシーン名とリセットするかどうかのフラグを渡してシーンの切り替えをする
RpgAtsumaruApi.CommentApi.ChangeScene(sceneName, reset);
}
// ゲーム内のイベントをトリガーします(会話が始まった、宝箱を調べた、何かのアクションが実行された、等)
public void OnEventRaised(string eventName)
{
// ゲーム内で起きたイベントをRPGアツマールに通知します
RpgAtsumaruApi.CommentApi.SetContext(eventName);
}
// ゲーム内で発生したイベントのステップを実行します(会話の選択肢で "はい", "いいえ" を選んだ、アイテムを所持 "している", "していない"、等)
public void OnEventStep(string stepName)
{
// トリガーされたイベントのステップを通知します
RpgAtsumaruApi.CommentApi.PushContextFactor(stepName);
}
// イベントのステップ内で起きた小さなステップを実行します(次の会話に続いた、アクションタイマーが経過した、等)
public void OnEventSubStep()
{
// イベントのステップの進行を通知します
RpgAtsumaruApi.CommentApi.PushMinorContext();
}
}