先日(d:id:OBONO:20150804#p1)の続き。
せっかく30本もプログラム書いたんだから、そこから何か知見でも得られないかと思って、一通りプログラムのソースを見直してみる事にした。
WIDTH 16 で一画面に納めるために、タイトル画面とかゲーム終了後のリトライ待ちとかを書く余裕は無く、ほとんどのプログラムは
- 初期化
- メインループ開始
- プレイヤーの入力の受付
- ゲームロジックの各種処理
- ビューの更新
- ゲームオーバーじゃなければループ継続
というパターンになっている。ただ、一画面にするために、必ずしもこの流れの通りにコードが書かれているわけではなく、順番がごちゃ混ぜになっていたりする事もしばしば。
そこで、実際書いてみたプログラム達が、何の処理をどのくらいやっているのかを把握するために、プログラム内の各種命令を、以下の要素でカテゴリ分けしてみることにした。
- 初期化
- メインループとウェイト
- プレイヤーからの入力受け付けと制御
- その他(敵キャラ、ゲーム全体)の制御
- ビューの更新
- 音
例えば、バルーントリップもどきのソース。
これを、先程のカテゴリで別けると、こんな感じになる。
※色は、1.灰色、2.緑、3.赤、4.黄、5.青
これを30本全部でやってみて、処理内容でカテゴリ別の文字数を集計してみた結果が以下の通り。
このカテゴリ分けと集計の作業にアホみたいに時間がかかって、少し後悔。
で、集計してみて何か分かったかと言われると、う〜ん、正直良く分からない。
一応、各カテゴリの文字数の平均値を取ってみたわけだが、所詮、平均値でしかなく、この文字数の配分で一画面プログラムを書けば良い…なんて話には絶対にならない。ただ、各カテゴリの平均値の1.5倍程度が、そのカテゴリの文字数の限界…という目安くらいにはなるかもしれない。今後、WIDTH 16 で一画面プログラムを書く人の参考になるかもね。
プレイヤーからの入力受け付けについて。プレイヤーを上下左右に動かすようなゲームだと、プログラムの大半がそれの処理に取られてしまうので、ゲームロジックはあまり凝った事ができない。一画面プログラムでは、ワンキーゲーム、もしくはせいぜい左右に動くだけとか、そのくらいに留めておくべきなのかもしれない。まぁ、言わずもがなだとは思うが。
画面の見た目について。自分の場合はコンソール画面を使っているわけだが、LOCATE 命令がかなり文字数を食うため、極力シンプルにせざるを得ない。たくさんの登場人物を同時に動かすというのはかなり厳しくて、画面端に何かを PRINT して、あとは SCROLL 命令で全体を動かすというのが常套手段となってくる。昔の BASIC では、一番下で PRINT するなどして、スクロール方向は上のみ一択だったのだが、プチコン3号の SCROLL 命令は本当にステキだと思う。
っつーわけで、苦労して集計した割には、大した知見も得られず、ただただ虚しさだけが残ってしまった。
もうちょっとだけ続くんじゃ。