kr_ryo 徒然日誌 <2006年8月13日分>

三國志製作記148〜嗚呼!一から〜

うう、とうとうやっちゃいました( ̄□ ̄;)何がって?作り直しです〜(≧▽≦)

なんだ、うまくいきそうだったんじゃないか?というお話は前回までのお話(-.-)せっかく考えた新しいルールだとか新しい知見をプログラムに適用しようとしても…しようとしても……作り直しが〜!(TдT)

これが結合度の高いとか、凝集度の高いとかいう状況です。プログラムは、命令の流れを順番につなげていくもの、です。結婚式だろうが卒業式だろうが、プログラムはそれなりの理由でそれなりの順番で流れていきます。それを突然、何かをそのプログラムに割り込ませたり、順番を変えたりするのは、かなーりの不都合が生じることがあるわけです。だんどりが狂う、ともいいますね。

もともとこういう順番でなければならない、という理屈があれば別ですが、理屈がなくとも、そういうプログラムだから、ということでそういう順番であることがなかば強制されたりします。そういう臨機応変の対応ができにくい、さりながら、そういう順番でよければ最も効率がよかったりする方法を、手続指向型プログラムと呼んでいました。

オブジェクト指向プログラムを学びデザインパターンを学びリファクタリングを学びしていても、はっと気がつけば、そういう流れ、がかちっと決まった、結合度の高いプログラムを作っていたりします。常備兵募兵の流れは、常備兵募兵の流れでかちっと作られています。動員兵徴兵の流れに流用するには、あまりに流れが固まりすぎていました…(T-T)

特に以前にもお話していましたが、私って、表示を重視したプログラム製作をしてきました。リストだとか画面だとかができあがってから、ルールを表現した流れをはめていく形です。そうすると、リスト表示をするがため、テストだろうが流れをかちっとしないといけません。ところがとりあえずテストのつもりですんで、オブジェクトを分けたり、手続をばらしたりというオブジェクト指向的な作り方をしません。そうなんです、結構オブジェクト指向で作るのは手続指向型から見ると、無駄っぽいんです。テストなんて流れは1つです。流れが1つであれば、オブジェクト指向より手続指向の方がはるかに早く作れます。

逆に、オブジェクト指向は流れがいろいろだったり、状況によって変わるというプログラムには強くなります。ちょっとだけ違う複数の流れがあったりすると、手続指向型だと、ちょっとだけ違う複数のプログラムを全部作らないといけないのに対し、オブジェクト指向だと、違うところだけ別に作ればいいだけなので、比較的楽なわけです。

で、考えたルールをテストしたい、とかいう状況だと、これは手続指向型の方が早くできるわけです。しかもリスト表示だとかの要素があって、テスト部分作りをしづらければ、余計に早く試したいがために、だんだん手続指向型になってきます。そしてうまくいけばいったで、それをつぶしてオブジェクト指向的に変えず、あれこれ付け足していったりします。はい、手続指向型プログラムいっちょうあがり!(´∇`)

気がつけばプログラムはかちんこちんになってたりします。動員兵徴兵なんて新しい要素をはめようとすると、訓練だとかあちこちの要素を変えないといけなくなり、リスト表示も変えないといけなくなり…はい、短気な私はえ〜い、邪魔臭い!( ̄□ ̄;)となってしまったわけです。作り直し。

今回はこの反省をふまえ、表示部分は後回しです。そもそもリスト表示とかコマンドの設置だとかで、複雑な要素が増えていったことが、気軽なルールテストをできないことにしてしまっていたのがわかっています。ここはとにかくルール部分だけ作り、表示なんかは適当でもいいでしょう。ルール部分ができなければ、なんぼかっこよく表示ができるようになったとしても、仏作って魂入れず、です。しかもルールが、この三國志製作記でもわかるようにすぐに変わったりします。嗚呼、今にしてはじめてわかった真実(´∇`)

ということでさっそくあっさりと武将や城などのメインオブジェクトを作り、ファクトリーパターンで量産体制を整えます。この辺は定石みたいなもんですが、あまりに久しぶりすぎてパターンがどういう内容なのか忘れてしまいました(^^;本を読み返して思い出しつつ、使い勝手が非常によかったので前回ものと同じ構造にします。なるほど、やっぱりいいパターンは生き残るわけです。

それからはリファクタリングの発想にしたがい、テスト駆動開発ちっくに作ってみます。ルールを表現し、ボタンやらラベルやらの基本表示だけで、ちゃんと動いているかどうか確認しながら作ります。なんとなく昔の理科の実験工作っぽい感じですね〜(^^;A夏休みですし。もしかすると子どもにプログラムをうまく教えると、すぐ熱中して未来のビル=ゲイツになるかもしれません。ホリエモンとかになっちゃうとあれですが(^^;A

それはともかく、自分が子どもみたく熱中して早…年なわけなんですけど、つづきを作っていきます……って、あれ、もう基本構造はできてしまいました。って、シミュレーションゲームの要素って…??たったこんだけ????( ̄□ ̄;)

何をいまさら驚いているのかというと、兵を整え、戦争して、領土を増やす、実はこれだけできたらシミュレーションゲームができてしまうからです。それだけ。細かくはどうするか、ということはありながら、大元はそんだけなんです。たったこれだけで、これだけのバリエーションが生まれるのか、これだけのおもしろいゲームができるのか、ということなんです。基本は同じ、しかし応用はさまざま。当たり前に作れば、どこかで見たようなものができます。ひねればひねるだけ、おもしろくなります。深くひねるんじゃなく、この基本をひねればしまいのようです。が、それが難しい?

ルールのひねりもさることながら、ルールだけしかみてないと、余計にマップも大きな要素を与えているという気がします。下手すればルールの差異よりもマップの差異の方が重要だったりしかねません。同じルールでもマップが変わればまったく別のゲームにできてしまいます。そういう意味では、ランダムマップというのは非常に長く遊べる重要な要素なのかもしれませんね。やっぱり、シミュレーションゲームはルールで遊ぶんじゃなく、マップで遊ぶんです。あの山に旗を立てるのが楽しいわけです。

が、これが三國志という特定された要素だと難しい(~_~;)戦場戦闘専門のゲームということになればマップはどんどか作れますが、何かが違う、と。戦略級ゲームとしての三國志の一番のおもしろさは、やっぱりどう領土を広げていくか、です。誰と戦い、どう領土を広げるか。ところがわりと限定されてしまうんですよね。特に城と道を中心とした拠点型は、光栄の初代三國志のような領域型と違って、進む方向が限定されてしまうので、余計に限定されてしまいます。実はそれほど差はないんですけど、見た目の印象が非常に強いのかもしれません。

見た目の印象というと、以前もお話しましたが、領土が孤城の集まりになっているのか、州などひとまとまりになった城の集まりになっているのかでは、これはまたずいぶん違います。地理的要素も当然あるでしょうけども、であるからこそ、ある程度地理的要素でわけられた州という単位も重要な気がします。曹操も劉備も、州刺史になってようやく一人前の感じであって、複数の郡を支配しているという以上に、州を支配していることの方が重要な感じがします。劉表や劉焉があれでそれなりに強力とみなされたのは、州刺史だったからでしょう。

それが拠点型と領域型とどうかかわるのかというと、ボードゲームは特にですが、領域型だと、そういう、州という領域を郡や城とは別に明示することができるということなんです。それが拠点型だとしづらいかしていないことが多い、と。しないから、州を特別に扱わないのか、しにくいから州を特別に扱えないのかはわかりませんが、そのため拠点型は特に領域型以上に孤城という印象が強くなります。州内の統一より、近くの隣の州の城を攻めた方がいい、という感じになるわけですね。

もちろん無理やり州にこだわる必要もなく、自由な戦略を追求できるようにすべきなんでしょうけど、その割には、物語では、戦略にかなり州が強い影響を与えているように見えます。だからこそ、拠点型ゲームでの無秩序な領土拡大がきちゃならしく、いかにもゲーム的な雰囲気を与えてしまっているような気がするんです。もっとも、州を統一したからといって、なんのメリットもなければそれは当然ではあるんですが、そうであるならば、州を統一することにメリットをもたせる、また、拠点型ゲームであっても、州域をわかるようにする、ということができれば、この欠点は克服されるという気がします。うむ、なんだか使えそうな感じです(^O^)

index

〔TopPage〕

このページへのリンクはフリーです。
このページについてのご意見、ご質問などは、kr_ryo_green@yahoo.co.jpまでお願いします。
Copyright 2006© kr_ryo All rights reserved.
訪問件数