設計を見直そう26、処理の位置とターンのズレ。

アクションの処理の位置に関して考える。
TRPGさん1号ではプレイヤーがアクションを選択するターンと、エンジンがアクションを実行するターンが異なる。
これは、構造上仕方がないのだけれど。

ええと。

ターンという表現が内部の処理とマッチしていない状態が起きていて。
ゲームの新規スタートから時系列で考えてみる。

ゲームつくるー。
 
 
分かり易くするために番号を振って。

———
1ターン目。
(01) エンジンは新規スタートとして、固定セーブ・データを用いてカラのアクションを実行
(02) アクション結果から次回の提案アクションを選出
(03) 出力シートを生成

(04) プレイヤーは出力シートを取得
(05) 入力シート生成

2ターン目。
(06) エンジンは入力シートからセーブ・データとアクションをパース、アクションを実行
(07) アクション結果から次回の提案アクションを選出
(08) 出力シートを生成

(09) プレイヤーは出力シートを取得
———

いきなり核心からはじめてしまうと、(06)がズレている。
本来1ターン目と呼ばれる範囲は(02)あたりから(05)で終わっていることが望ましい。
というか分かり易い。

プレイヤーにとって、どこまでが1つのターンで括られているかという「見え」の部分。
処理においても「今起きている」ことと、「そこで選んだ行動」の扱いが同じ時間であった方が助かる。

のだけれど。

実際は(03)の段階で、一度エンジンの手を離れて、(06)の段階でまで進んではじめて1ターン目が終了する。
つまり、エンジンの実行においてのターン的概念は前半と後半にわかれて2回の実行をまたいでいる。
これは図にした方が分かり易いかな。

ええと。

・・・。

・・・・。

よし、描けた。

説明文かく

いちばん右側の紫の線がエンジン。
つまりTRPGさん1号が実行される時間軸。

紫の線をみると。
最初の塊の後半の時間で「選択」の処理を行っている。
言い方を変えると、「今回はこんなことが起きて、アクションはこれが選べるよ」という情報を作っている。
赤い線でくくっている箇所。

で、その「アクションはこれが選べるよ」という情報を出力シート経由で受け取ったプレイヤーが入力シートを用意。
それをエンジンに渡して次回のエンジンの実行タイミング(紫の塊の上から2番目)の前半の時間で「実行」の処理を行う。
これも言い方を変えると、「選択されたアクションを実行したらこんなことが起きた」という情報を作っている。
黄色い線でくくっている箇所。

ここまで進んでゲーム上は1ターン目が終了する。

んー。

ターンという言葉を使うのに抵抗があるのは、そのターンという言葉が指しているものは、エンジンのどこの実行タイミングを指しているのかがわからないこと。

ただ、プレイヤーにとってみれば意味は1つになってそう。
少なくとも図を見る限りは。
だとしたら内部処理的に名前を付けるなどをして区別できればさしたる問題はないのかな。

いやでも出力シート上は2枚に分かれているよね。

むむむむー。

できればターン的な表現は欲しい気もする。

「次のターンどうしようか?」とか。
「今回のターンは失敗だったね」とか。

そういった1つの単位で捉えられた方が、コミュニケーションや時間的概念を認識する上では容易になると思うから。

むー。
表現とかかな?

例えば1ターン目の選択フェーズ、1ターン目の実行フェーズ的な。
そのあたりはいい感じの名前を定義しよう。

とりあえずターンという表現が1つのエンジンの実行タイミングを指すのではないという概念は整理出来た気がするので前進。
適切に認識できるのであれば、それは「ズレている」わけではなくなるよね。

次は前回も話題にあげていた、えーっと、あれ。
あれ。

なんだっけ?

ああ、うーん、アクション実行時に対象が移動して「いなくなった」時と、「やってきた」場合の判定か。
組み合わせで条件式を考えればいけそうかな。
うーん、うーん。

頭動かないので次回までに考えよう。
 
・・・。
 
 
低気圧?だかなんだかがGoToしてきてビックリの暖かさ。
じつは地球の自転が止まってしまっていて、宇宙線がばんばん降り注いでいて。
地球上の生物が死滅に向かっていてどーたらこーたら。
とかね。

話は聞かせてもらった!人類は(ry

そんなこんな。
紫外線対策を忘れずに生き延びて下さいな。
宇宙線じゃないのかよ、とかいう突っ込みはのーざんらいとすたーなんとか。

大丈夫。
内緒でよいので、はっぴーでいてください。

よい週末をね。