2005年9月23日の日記

<2005/09/24 2005/09/22>

オブジェクト指向とグループ分け

オブジェクト指向といったら何をオブジェクトにするかが大事なんです。
例えば、名簿クラスのメンバの各個人の名前はstring型を使うかCNameを作るかという問題など。
どの程度までクラスとしてまとめるか、分けるか、というので結構痛い目にあってるから使う必然性がない限りはあまりオブジェクト指向でやりたくないんですよね。
ええ、痛い目にあいました。ふにゃさんで。
分け方を誤った…。もっと細かく分けるべきでした。
派生クラスを作るときに余計なクラスをはさむべきじゃなかったんです。
実は、他のゲームでならこれでもよかったのですが、今回は違いました。
主人公にとって敵とアイテムの間に本質的な違いはないし、敵にとって他の敵と主人公の区別は無いんです。
仕事を語るのに白人も黒人も無いようなものですね。
今の仕様では主人公・敵・アイテム、という3人種がいて、それぞれで主人公は主人公で一まとめ、敵は敵で一まとめ、アイテムはアイテムで一まとめにしていたのですけれども、例えばですね。ウナギカズラというキャラ、主人公のふにゃと敵のミスターフレームは乗せるけど、敵のとげとげとギヤバネは食べてしまいます。
ギヤバネは他のギヤバネとぶつかって吹っ飛にますし、アイテムのバナナは主人公グループと、敵グループのミスターフレームに食われます。
だけど、ミスターフレームはめったに登場しません。つまり、敵の中からミスターフレームを探す作業は果てしなく無駄が多いのです。
これを、とげとげならとげとげだけのグループ、ウナギカズラならウナギカズラだけのグループを作れば、効率はかなり上がるはずです。
例えば、とげとげはウナギカズラを無視するからとげとげがウナギカズラを見る時間をそっくりカットできるというわけです。これで沢山敵が出たときの処理落ちが軽減されます。
バナナとかは主人公とミスターフレームしか見てないからバナナが多くて関係ない敵が多いとめちゃくちゃ無駄な時間が使われていたわけです。
しかし、こうして分けても、場合によっては全部を統一的に扱わねばならないときもあるので、結局は混在することになりそうですが、今の問題は、マップキャラと、例えばギヤバネの間に、敵キャラという分類を設けたことによる中途半端さによるものなので、いっそのこと全部か各個かのどちらかにしてしまえば問題はなくなるのです。
そもそも、敵キャラと味方キャラとアイテムの区別すら曖昧だったんですよね…。そもそも似たもの同士でグループ分けできるものじゃなかったんです。
しかし…変更は地道な作業になりそうです…。

<2005/09/24 2005/09/22>