Skip to content.

Sections
Personal tools
You are here: Home » コミュニティ » masarl memorial » homepage3.nifty.com » masarl » article » nifty-logs » Niftyの過去ログ集 - ゲームとオブジェクト指向

Niftyの過去ログ集 - ゲームとオブジェクト指向

Document Actions

ゲームとオブジェクト指向

ゲーム会社の人が発言していたので,ゲーム会社に勤めたことがある僕もうれしくなってちょっと割り込ませてもらいました.今じゃファイナル・ファンタジーはそんなに好きじゃありませんけどね・・.それよりドラクエの方に期待しているというか^^;.

01465/01465 BYI20012  まさーる        ゲームとOO
(10)   97/03/17 22:16  01459へのコメント

Abupon さん、はじめまして。

>少し前に、「OOについて議論する」会議室のほうでゲームの話題が出てましたが、
>僕の見る限りでは、周りの人たちはOOどころか、アセンブラに戻りたがってい
>ます。g++が使えないことも、逆に喜んでいるようです(^^;。

僕も以前ゲーム会社に勤めてましたが、そんなもんだと思います(でも例外もあ
ると思いますよ)。

話変わりますが、某四角い会社のゲーム自体はOOしているようなところがあって
割と好きです。

例えば、RPGでユーザが選ぶパーティによって各メンバのしゃべるセリフがそれ
ぞれの場面でポリモルフィックに変わったりしますし、最近でたものでは、本来
メンバのキャラクタ属性にいれるべきものをオブジェクトにしてしまったことで
オブジェクトの組合わせによる再利用が可能になってます(笑)。

ま、継承はでてこないけど後の方のやつはホワイトボックス再利用からブラック
ボックス再利用へのOO的進化みたいに見えますね(9番#933参照)。

                                     97/03/17(月) まさーる(BYI20012)

後半かなり説明不足&難しい発言をしてしまったので,あとで補足説明しておきました.

01474/01474 BYI20012  まさーる        RE^2:ゲームとOO
(10)   97/03/18 23:03  01468へのコメント

Abupon さん、こんにちは。

>>僕も以前ゲーム会社に勤めてましたが、
>
>まさーる さんも、元ゲームプログラマでしたか(^^;。
>なんだか、勇気が湧いてきました(^o^)。

あ、ゲームプログラマじゃなくてゲーム会社に勤めてるただのプログラマでし
た(ゲーム開発ツール作ってました)。ゲームプログラマの道もあったんだけ
ど、当時何千、何万行もあるアセンブラを管理できる才能がなかったのです。

>「某四角い会社」ですか? 四角いと言われてまず思い付くのは、「某鉄道経営
>シミュレーション」で有名な会社ですが、あそこのRPGって、あまりOOしてるよ
>うには見えないですよね?(MFCは使ってるかもしれないですが)

あれ? 四角い会社といえばス○ウェアじゃないっすか。

>>最近でたものでは、本来
>>メンバのキャラクタ属性にいれるべきものをオブジェクトにしてしまったことで
>>オブジェクトの組合わせによる再利用が可能になってます(笑)。
>
>「本来メンバのキャラクタ属性にいれるべきもの」って、例えば何のことで
>すか? 今、作っているRPGにも取り入れようかなぁ、と思っているので、
>是非、知りたいです(^o^)。

敵からアイテムをぬすむという「ぬすむ」という能力とか、敵の弱点を知る「み
やぶる」という能力などのキャラクタ属性です。普通、OO初期段階では

 class キャラクタ {};
 class 盗賊 : public キャラクタ { void ぬすむ(); };
 class 学者 : public キャラクタ { void みやぶる(); };

としますが(これが継承を使うホワイトボックス再利用)、次の段階では「ぬ
すむ」ことができて「みやぶる」こともできるキャラクタがほしいなー、ってい
うんで次のようにします。

 class ぬすめる { void ぬすむ(); };
 class みやぶれる { void みやぶる(); };
 class 手癖が悪い学者 : public キャラクタ, 
                        public ぬすめる, 
                        public みやぶれる {};

こういう「ぬすめる」クラス、「みやぶれる」クラスをミキシンクラスといいま
すが、これも継承を使う再利用なんでホワイトボックス再利用ですね。

でもこれだと手癖が悪い学者はずーっと最後まで手癖が悪いままやんか、ってい
うんでいっそのことこういう能力を抽象化して「マテリア」っていうクラスにし
てしまいましょう。

 class マテリア {};
 class ぬすむのマテリア : public マテリア {};
 class みやぶるのマテリア : public マテリア {};
 class キャラクタ { void マテリア装着(マテリア*);};

こうすると、キャラクタにマテリアを付け替えるだけでいろんな能力を持ったキ
ャラクタができます。これがオブジェクトを組合わせて再利用するというブラッ
クボックス再利用です。

>>ま、継承はでてこないけど後の方のやつはホワイトボックス再利用からブラック
>>ボックス再利用へのOO的進化みたいに見えますね(9番#933参照)。
>
>以前に読んだときは、力不足で全く理解できなかったんですが(^^;、もう一度
>読み返してみようと思います。
>
>先に「デザインパターン」を読まないと分からないでしょうか?(まだ、OO始
>めて半年ほどなので、分からないことばかりですみません。m(_)m)

うーん、やっぱりパターンが出てくる以上読んでもらったほうがいいような...
で、デザパタ本ですが、個人的には、訳本より原書の方をお勧めします(ってい
うか、日本語だとかなり難しそうにみえるんですよね)。

>そのRPG一度やってみたいので、もし良ければ、メールででもコッソリ教えて頂ける
>とありがたいのですが(^^;

ここまで読んだら、もうお分かりですね(^^)。でも、こういう風に解説したから
といって変に期待しないでくださいよ。普通のRPGですから(まだ8時間しかや
ってないけど)。

                                     97/03/18(火) まさーる(BYI20012)

マテリアと聞いてわかる人が何人いるのかわかりませんが,知らない人にはあんまりな補足説明かもしれません^^;.そういう人は無視してください(笑).ブラックボックス再利用とホワイトボックス再利用は,Ralph Johnson の論文にありますが,あまり使われている用語ではありませんね.