シーン抽象及び高階シーン型(ゲーム設計その6)

シーンとは何だろうか。
ここでまずシーンについて再考してみることにする。


ゲームを割と区切りのいいところで分割したものだと考えると
ゲーム=(シーンの集合)
ということになる。
シーン間に順序なり主従関係なりコーラーコーリー関係?なりを
定義できればゲームの全体の構造を非常にマクロなレベルで
記述することが可能になるであろう。
シーンをそのように捉えるとき、シーンというものが満たすべき
性質としてどのようなものを考えればいいのか?


まず、シーンが使うリソースの読み込み、解放など。
これらはシーンというものに組み込んでおくべきだろう。
次にシーンが何をするのか。
適当に考えると、シーンは画面のリストを生成すればそれでいいと思う。
効果音などの都合もあるので、その辺は適宜。
シーンの順次実行はシーンの生成する画面リストを適当につなげば
行えるはず。問題はシーン同士の呼び出しである。


シーンからシーンを呼び出すような処理は実際的にかなり重要だと思う。
たとえばステータス画面など。
そういうわけなのであるが、シーンが適当にスクリーン列を生成するだけ
のようなものである場合、実は直接的には実装できないんでないかなぁと思う。


そういう場合にどうするか…。
コンティニュエーションの考えに基づき、シーンがおのおの
自分の後に実行するべきシーンを受け取り、
シーンが生成するのは画面リストと継続シーンのペアとかにするなど
とすれば何とか成りそうもするが、今回の設計においては本質で無い部分を
少しでも記述するのはいやなのである。
わざわざHaskellでこんなものを作ろうとしているのだから
完全に私が最初に夢想していたものを作らねばならないのである。


ということで、実はこの先どうするかは全然考えてなくて(いつもだけど…)、
いま即興で思いつく方法はごみのような方法ばっかりだもんで、
もうちょっと考えることにする。車酔いしんどい…