Skill Flow Builderの応用構文

Skill Flow Builderの応用構文

このドキュメントは、Skill Flow Builderの応用構文の使用について詳しく説明します。

特殊なシーンの終端子

<-> (遷移して戻る)

<->指示を使うと、再利用可能なシーンに遷移してから、またゲームのフローに戻ることができます。

@start
    *then
        <-> test your luck
        >> END

@test your luck
    *say
        残念でした。
    *then
        >> RETURN

プレイヤーは、<-> test your luckにより@test your luckシーンに遷移してから、>> RETURNにより<->指示以降の行に戻ります。

<->は特殊な種類の終端子で、<->以降の指示は>> RETURN指示が実行されるまで実行されません。複数の<->指示と複数の>> RETURN指示をつなげて使うこともできます。

特殊終端子

慣例的に、特殊終端子はすべて大文字で記述しますが、大文字にしなくても機能には影響しません。

» RESTART

>> RESTART終端子の形式は次のとおりです。

  • 付加されたすべての拡張子について、startシーケンス、またはonStart関数を実行することでストーリーやゲームを再開します。
  • 利用可能な選択肢をリセットします。
  • @startシーンに遷移します。

この終端子はゲーム内で使用されている変数をクリアしません。つまり、ゲームの複数セッション間で保持する必要のある永続的な変数を削除しないようにできます。変数をクリアするには、clear *コマンドを実行します。

» PAUSE

>> PAUSE終端子の形式は次のとおりです。

  • 残りの指示をすべて直ちに停止することで、ストーリーを一時停止します。
  • 付加されたすべての拡張子について、pauseシーケンス、またはonSessionEnded関数を実行します。
  • @pauseシーンが定義されている場合は、完全に一時停止する前にシーン内のコンテンツを再生します。

» RESUME

>> RESUME終端子は、プレイヤーが前回プレイした最後のシーンからゲームを再開します。

この終端子はRelaunch動作を制御します。詳細は、再起動の動作を制御するを参照してください。

» REPEAT

>> REPEAT終端子はプレイヤーが今聴いたか、以前に聴いたことのあるオーディオ構成要素をリプレイします。

» REPROMPT

>> REPROMPT終端子は、再プロンプトとして使われたオーディオ構成要素をリプレイします。

» BACK

>> BACK終端子は、前回の対話の最初に戻ります。

前回の対話によってプレイヤーが複数のシーンに遷移した場合、プレイヤーは最初のシーンに戻ります。

» END

>> END終端子の形式は次のとおりです。

  • セッションを終了することでストーリーやゲームを終了します。
  • STARTシーケンスを直ちに実行し、拡張子に対してonStart関数を実行して次のシーンを@startにセットします。
  • プレイヤーが次回ゲームを起動すると、プレイヤーは@startシーンに遷移します。

» RETURN

>> RETURN終端子は、最後の<->指示以降の行に直ちに戻ります。

特殊終端子を使用する

慣例的に、特殊終端子はすべて大文字で記述しますが、大文字にしなくても機能には影響しません。

» RESTART

>> RESTART終端子の形式は次のとおりです。

  • 付加されたすべての拡張子について、startシーケンス、またはonStart関数を実行することでストーリーやゲームを再開します。
  • 利用可能な選択肢をリセットします。
  • @startシーンに遷移します。

この終端子はゲーム内で使用されている変数をクリアしません。つまり、ゲームの複数セッション間で保持する必要のある永続的な変数を削除しないようにできます。変数をクリアするには、clear *コマンドを実行します。

» PAUSE

>> PAUSE終端子の形式は次のとおりです。

  • 残りの指示をすべて直ちに停止することで、ストーリーを一時停止します。
  • 付加されたすべての拡張子について、pauseシーケンス、またはonSessionEnded関数を実行します。
  • @pauseシーンが定義されている場合は、完全に一時停止する前にシーン内のコンテンツを再生します。

» RESUME

>> RESUME終端子は、プレイヤーが前回プレイした最後のシーンからゲームを再開します。

この終端子はRelaunch動作を制御します。詳細は、再起動の動作を制御するを参照してください。

» REPEAT

>> REPEAT終端子はプレイヤーが今聴いたか、以前に聴いたことのあるオーディオ構成要素をリプレイします。

» REPROMPT

>> REPROMPT終端子は、再プロンプトとして使われたオーディオ構成要素をリプレイします。

» BACK

>> BACK終端子は、前回の対話の最初に戻ります。プレイヤーが「はい」または「いいえ」など、Alexaに何かを言うように促された場合の対話です。

前回の対話の開始点が、戻りたい対話とは何シーンか離れている場合があります。

前回の対話によってプレイヤーが複数のシーンに遷移した場合、プレイヤーが「戻って」と言った場合、プレイヤーは最初のシーンに戻ります。

» END

>> END終端子の形式は次のとおりです。

  • セッションを終了することでストーリーやゲームを終了します。
  • STARTシーケンスを直ちに実行し、拡張子に対してonStart関数を実行して次のシーンを@startにセットします。
  • プレイヤーが次回ゲームを起動すると、プレイヤーは@startシーンに遷移します。

» RETURN

>> RETURN終端子は、最後の<->指示以降の行に直ちに戻ります。

複雑なスキルの構成

ゲームのコンテンツをわかりやすい構造に整理するには、コンテンツファイルを複数使用することを検討してください。複数のコンテンツファイル(.abcファイル)をセットアップするには、ディレクトリのMANIFEST.jsonファイルに結合する.abcファイルのパスを追加します。以下は、MANIFEST.jsonファイルの構造を表しています。

{
    "include": [
        "*.abc"
    ]
}

コア拡張子

roll、rollResult

    *then
        roll 2d6,
        set attack to rollResult,
        -> resolve attack.

roll指示はサイコロを転がすのに使用します。rollResult指示はrollの結果にアクセスできます。この例では、6面のサイコロを2つ転がして、出た目の合計をrollResult変数に入れています。

  • rollは入力としてXdYを受け取ります。XとYは整数です。Xは転がすサイコロの数、Yはサイコロの面の数を表します。
  • 1d6 + 31d6 - 3のように記述することで、数を足したり引いたりできます。
  • 複数のサイコロを転がして、最も大きな数をZ個取り出すこともできます。その場合は、XdYkZのように記述します。Xがサイコロの数、Yが面の数、Zが取り出したい最大値の数を表します。たとえば、roll 2d6k1では、6面のサイコロを2つ転がして、最も大きな数を1つ取り出します。

time

    *then
        time
        set timeSinceLast as system_return
        decrease timeSinceLast by lastUpdateTime
        if timeSinceLast >= 300000 {
            -> long time no see
        }

time指示は、現在時刻をsystem_returnという特殊なシステム変数に保存します。ゲームで時刻を使うには、set指示を使って時刻を独自の変数に割り当てます。時刻はエポックミリ秒形式です。つまり、1970年1月1日(UTC/GMTの深夜0時)からの経過時間をミリ秒で表したものです。

bgm(バックグラウンドミュージック)

    *then
        bgm https://url-to-the-background-music.mp3

シーンのナレーションにBGMを組み合わせます。

BGMは、カスタムのAmazon Pollyを使ったフォアグラウンドのオーディオまたはナレーションと組み合わせた場合にのみ機能します。Alexaの音声と組み合わせることはできません。また、エディターのプレビューモードでも機能しません。

monetization

    *then
        buy item='sample product' success='purchase success' fail='purchase failed'
        declined='purchase declined'
        already_purchased='purchased already' error='purchase error'

プロジェクトディレクトリのresources/ProductISPs.jsonにあるISP IDコンフィギュレーションファイルで、アイテム名にマッピングしたスキル内商品(ISP)の収益化フローを開始します。購入フローが正常に完了すると、プレイヤーは「success」に定義されたシーン、またはこの例にある@purchase successに遷移します。購入フローが失敗またはキャンセルされると、「fail」に定義されたシーン、またはこの例にある@purchase failedに遷移します。

declinedalready_purchasederrorのパラメーターは任意です。これらのパラメーターを割り当てなかった場合、プレイヤーはfailパラメーターで定義されたシーンに遷移します。各購入フローでプレイヤーが遷移するシーンを細かく制御したい場合は、これらのパラメーターを定義してください。