2016年9月11日日曜日

ソビエトロシアではソースコードを元に設計書が書かれる

さて、ソースが一通り完成したので、一旦こないだのようなメモ程度の設計書を起こそうと思っています。しかし、前回同様の呼び出しや参照・更新を線で繋いだような図では対応しきれないことに気付きました。
それもそのはず、モジュールを分割し、内部処理を隠蔽して、明確なインターフェースを定義するのは、その処理を必要とする広範な状況に対して呼び出しを許すためでした。

そこで、各モジュールを役割とインターフェースができるだけ明確になるように再び紹介することで、設計書に代えたいと思います。


Interval_Execute

毎フレーム実行すべき処理をキックするためのモジュールです。
他のモジュールでそうした処理を実装した場合、ここに起動する処理を追加します。
なお、ツクール既存の毎フレーム実行処理を再定義して拡張することで実装しています。


Pee_Holder

尿量、尿意、利尿度の3つのパラメータと、それらを更新するためのメソッドを持つモジュールです。
各更新メソッドは毎フレーム呼び出されることを想定しています。
尿意更新メソッドは尿意が100%になった時に、限界フラグを立てることで、おもらしイベントを誘発します。
尿量更新メソッドは排尿中の場合のみ、尿量を減ずるモードで動作します。


Status_Drawer

マップ上の画面左上の各ステータスの表示を管理するモジュールです。
文字画像のビットマップと、表示位置を保存したスプライトを管理しています。
HP,SPなどのプレイヤーステータスとPee_Holderの各値を参照して表示を更新するメソッドがあり、これは毎フレーム実行されることを想定しています。


Potion_Manager

ポーションの使用に関する処理をまとめたモジュールです。
ポーションの効果やエフェクトを実現する各メソッドを持っています。
また、ショートカットキーの入力を検知して他の処理を呼び出すためのメソッドもあり、これは毎フレーム実行されることを想定しています。
なお、ショートカットキー以外からポーションが使用された場合、利尿度以外の値の更新はこのモジュール内ではなく、通常のアイテムの効果として実装しています。


Hand_Hold_Manager

前押さえに関する処理をまとめたモジュールです。
前押さえ状態であるかどうか、前押さえの強さなどを返すメソッドを持ちます。
また、前押さえ状態のフラグと歩行グラフィックを更新するメソッドがあり、これは毎フレーム実行されることを想定しています。


Script_Item

アイテムのメモ欄に任意のコードを記述し、使用時に実行するためのモジュールです。
ツクール既存のアイテム使用処理を再定義して拡張することで実装しています。
戦闘中とメニュー画面で、別の処理になっていたので、双方に同様の拡張を加えています。


ツクールのイベント、変数、スイッチなど

モジュールとは違いますが、使い分けを明確にすべきだと思うので追記します。
ゲームシステムのコア部分はスクリプトで、プレイヤー視点でイベントが発生したと言えるようなものはイベント、コモンイベントで実装するのが良いと考えています。
スイッチと変数は、イベントやコモンイベントとして実装する部分と、スクリプトで実装する部分が連携する場合に使います。
スイッチと変数はグローバル汚染に対して脆弱な部分なので、スクリプトからは上記以外の目的では使わないようにします。
また、イベントからの使用はセルフスイッチだけで解決できない場合にのみ限定します。




こんなもんですかね。これ書きながら何か所か役割分担という観点から見て望ましくない実装を改良できたので、書いた価値はあったと思います。
最大の目的は、後から自分が見返して昔書いたコードを解読する助けになることですが。

さあ、あとはイベントを最後まで作り切って、おもらし絵を描いたらいよいよプレビュー版の完成です。

0 件のコメント:

コメントを投稿