シナリオ
シナリオの概念とその概要について説明しています。
概要
シナリオは, プラグインのふるまいをフローで定義したものです。
プラグインの機能の発火・検証方法, およびテストを実行するための前提環境を1つのファイル(シナリオ(ファイル)という)に記述します。
Scenamatica はシナリオ(ファイル)を読み込み, その内容に沿ってプラグインの機能を発火させ, その結果を検証・報告します。
例えば, とあるプラグインの「プレイヤが村人をキルすると」(発火条件)
-> 「ダイアモンドがドロップする機能」(目標動作)をテストする方法について考えてみましょう。
このテストは, Scenamatica の以下の機能を用いて達成されます。
- コンテキスト - エンティティ 機能
この機能は, テストに必要なエンティティ(e.g. 村人, ガーディアン, 牛 等)をテストの開始前に生成, および終了後に破棄します。
発火条件にある村人をスポーンするのに使います。- コンテキスト - アクタ 機能
この機能は, テストに必要な専用のプレイヤ(アクタという)を生成します。
外部との通信を必要とせず, サーバ内で完結する, 特別なプレイヤのモックです。
発火条件にある村人をキルさせるのに使います。- アクションの実行 機能
この機能は, テストに必要な一般的な動作(e.g. プレイヤのキル, 食料の消費, プレイヤの退室)を実行します。
数あるアクションを組み合わせて利用し, プラグイン機能の発火・目標動作の検証を行います。
動作の検証には, アクションの実行期待 機能を使用します。
発火条件となるアクションを実行し, それによってもたらされたプラグインの動作を検証を繰り返すことで, シナリオテストが成立します。
Scenamatica はこのようなテストの需要に最適化して設計されています。
備考
このドキュメント内で使用される「シナリオ」という語は, 以下の2つの意味を持ちます。
- コンテキスト や トリガー, アクションのフローとしてのシナリオ など, シナリオファイルの内容すべてを一般に指す語。
- プラグインの振る舞いを検証するためのアクションとその振る舞いの組。
# このファイル自体をシナリオファイルで記述された「シナリオ」と呼ぶ。
#...
scenario:
# ↓の一つ一つまた「シナリオ」と呼ぶ。
- type: execute
action: player_death
with:
target: Actor001
- type: expect
action: player_death
with:
target: Actor001
シナリオの構成要素
シナリオテストを作成するためには, シナリオがどのような要素で構成されているか知る必要があります。
シナリオを構成する要素については, 次のページで説明されています:
シナリオファイルの構文
Scenamatica のシナリオは シナリオファイルと呼ばれる YAML ファイルで記述します。
シナリオファイルの構文については, 以下のページを参照してください。
シナリオの実行の状態
Scenamatica のシナリオの実行状況は以下の状態に分類されます。
シナリオの実行が異常終了した場合は, 以下の状態一覧を参考にしてエラー原因を特定できます。
STAND_BY
シナリオがコンパイルされ, 実行を待機している状態です。CONTEXT_PREPARING
シナリオの実行に必要なコンテキストを準備している状態です。STARTING
シナリオエンジンを初期化し, 起動を待機している状態です。RUNNING_BEFORE
(オプション)
メインシナリオの実行前に実行されるシナリオを実行している状態です。
トリガによっては実行されることがあります。RUNNING_MAIN
シナリオの実行を行っている状態です。RUNNING_AFTER
(オプション) シナリオの実行後に実行されるシナリオを実行している状態です。
トリガによっては実行されることがあります。CLEANING_UP
シナリオの実行後の後処理を行っている状態です。FINISHED
シナリオの実行が終了した状態です。