トップページgamedev
935コメント361KB

OOとゲームプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/07 23:55ID:HnYWCQK1
OOをどのように用いれば美しくゲームプログラミングを
行うことが出来るのか語り合うスレです。
0002201/11/07 23:56ID:???
2
0003名無しさん@お腹いっぱい。01/11/07 23:57ID:???
掃除機、OOは素人にはお勧めできない。
0004名無しさん@お腹いっぱい。01/11/07 23:59ID:???
むう、正直、こっちを使って欲しひ。
http://game.2ch.net/test/read.cgi/gamedev/1005040025/
0005名無しさん@お腹いっぱい。01/11/08 00:10ID:???
まずは、データ構造とモジュールについて、しっかり勉強して下さい。
でなければ挫折します。
0006名無しさん@お腹いっぱい。01/11/08 10:17ID:dMTEmYa4
PS2のコンパイラ、クソすぎて複雑なクラス構造理解してくれないYO!
0007名無しさん@お腹いっぱい。01/11/08 11:57ID:kAK1Gifs
YO! とか使う奴多いよね。開発者に。いまだに
0008名無しさん@お腹いっぱい。01/11/08 12:27ID:???
>>6
PS2ってgccでないの?

>>7
そういうのを突っ込むのは板違い
0009名無しさん@お腹いっぱい。01/11/08 13:35ID:hsQUKhnQ
>6
OO的思考はイイんだけど
いざ実装するときにC++とかだと
コンパイラ腐っててできねえ!とかあるわよねえ。
コンパイラ特有の変な制限あったり。
マニュアル見たらテンプレートクラスはファイル1つにブチ込めゴルア!
・・・だそうな。鬱死
0010名無しさん@お腹いっぱい。01/11/08 16:53ID:???
そうだね。テンプレートはOOとはあまり関係ないにしてもだ(コンパイルタイムポリモーフィズムって言われることもあるけど)。
0011アマプログラマ01/11/09 04:02ID:Adk7Pup5
ループを回して、その中でゲームの状態により
switch文とかで分けて処理するとかしたらなーんかいつもながーい
ループが出来上がっちゃうんですが、
みなさんどうされてるんですか?
0012名無しさん@お腹いっぱい。01/11/09 04:08ID:???
>>11
この辺とか
ttp://www.hh.iij4u.or.jp/~peto/Games/games_top.html

タスクシステムって、原始的なOOかも。
0013名無しさん@お腹いっぱい。01/11/09 06:22ID:???
>>11
状態をオブジェクトにする。
そうすると、ゲームのメインループは有限状態マシンとしてモデル化できて
ゲームに依存しないフレームワークを作ることができる。

有限状態マシンのモデル化は、ちょっとしたオブジェクト指向入門書になら
書いてあるでしょう。
0014名無しさん@お腹いっぱい。01/11/09 09:06ID:???
>>13 に加えて、デザインパターンのStateパターンとか
その辺を参考にするといいかもです、はい。
0015名無しさん@お腹いっぱい。01/11/09 19:35ID:???
今までは 12 のサイトに書かれていた処理が多かった。
アマプログラマと名乗っているなら似非タスク処理を作るのが良いと思う。
0016名無しさん@お腹いっぱい。01/11/09 20:52ID:???
OOを使えばタスクは使わなくなるの?
0017アマプログラマ01/11/09 21:51ID:P26OayTW
ふーむ、なるほど。>>12-15ありがとです。
ぜんっぜん思いも寄らなかったけど
>>15読むと時代の流れは先に行ってるようですが、
どないなんでしょう?
0018名無しさん@お腹いっぱい。01/11/09 21:53ID:???
まあ、最初は古典的?っていうか原始的?っていうか
自分なりに力技な方法でやってもいいんじゃないでしょうか。
あまり考えすぎると、理屈倒れのなんとやらになるかもです。
0019名無しさん@お腹いっぱい。01/11/09 22:05ID:f17v7fRl
最近WinSDKプログラミングをはじめたんですが、
WndProcでコールバックされた後やるswich文をMessageHandle用クラスに
持たせて多態化させて、デザパタのStateパターンっぽくやろうと試みてます。
Menu選択とか、ダイアログとかのMessageHandle関係全般につかえるよう
ある程度汎用的に・・・と構想してます。

とりあえずの目標はシンプルである程度汎用的なフレームワークを作って、
DirectXやOpenGLをいじくろうと思っているんですが・・・・

こういうことって、既にみんなやってるモンでしょうか?
0020名無しさん@お腹いっぱい。01/11/10 01:13ID:N+CvjlCZ
>19

やってると思いますよ。
ゲーム作るのなら必須でしょう。
00211901/11/10 02:02ID:???
いま>>12のリンク先のタスクシステムを見てます。
面白いです。確かに原始的なOOPという感じです。
TCBを見てるとクラス化したくなってしまいますが、
長年培われてきた(?)型だけに、下手な設計ではOO化は
逆効果になりそうですね。

デザパタではState,Strategy,Flyweightあたりがまず不可欠
でしょうねー。
00221901/11/10 02:05ID:uyB6mt6S
ところで実際のところゲーム開発の現場ってCとC++の比率はどのくらい
なのでしょうか?
C++でやってるのは余裕のある大手くらいってかんじですか?
0023名無しさん@お腹いっぱい。01/11/10 03:17ID:EV3x96b1
C++は遅くて使い物にならんと思うが
0024_01/11/10 03:21ID:weMvVVDK
>>23
マジ?
XboxはVC++がデフォだって聞いたけど。
0025名無しさん@お腹いっぱい。01/11/10 03:24ID:???
>>23
こういうことを言う奴はシッタカ君
00261901/11/10 03:25ID:???
てことは>>23は C++でゲーム開発してるって話は見たことも聞いたことも無い?
0027名無しさん@お腹いっぱい。01/11/10 03:26ID:EV3x96b1
>>25
そうか?
継承するとパフォーマンスが悲惨なんだが
そんな事はないか?
0028名無しさん@お腹いっぱい。01/11/10 03:29ID:???
VTBLのオーバーヘッドなんかもう無視できるっしょ。
0029アマグラマ01/11/10 03:33ID:???
スターオーシャン2ndストーリーのトライエースのロゴの下に
try-Ace PlayStation Foundation Class Library
とかなんか誇らしげに表示されてるのは見たですが。
0030名無しさん@お腹いっぱい。01/11/10 03:34ID:EV3x96b1
そりゃぁXboxはそうかも知れんが、
我がマシンでは数倍違う
00311901/11/10 03:49ID:???
C++が遅いのではなくて、Classライブラリに問題があるのでは?
私もOOやC++崇拝者なわけではないんだけど。
C++がCと比べてオーバヘッドあるのは事実だと思うけど、Cの手法だって
インライン関数だってインラインアセンブラだって使えるわけだし。
深すぎる継承を使わないとかクリティカルなところでは伝統的な手法を
使ってゆけば、使い物にならん、ってことはないいんじゃないかと。
0032名無しさん@お腹いっぱい。01/11/10 03:59ID:???
>>27
まさにシッタカ君
全然何も分かってないらしいな
プラットフォームとは関係ない

しょうがないから本を一冊薦めといてやる
「C++/C プログラム改善法」
ただしトッパンはもうつぶれてしまった

仕方ないので
「Efficient C++」
で代用
こちらはピアソン・エデュケーションだからまだ
売ってるだろう
0033名無しさん@お腹いっぱい。01/11/10 04:19ID:EV3x96b1
そうかプラットフォームとは関係ないのか。
そうだとすればC++は使い物にならないという事だな。
0034名無しさん@お腹いっぱい。01/11/10 04:27ID:lPeuTMQg
かたくなだな。
0035名無しさん@お腹いっぱい。01/11/10 04:29ID:EV3x96b1
>>31
同じ会社の(クラス)ライブラリが
CとC++でそう違うものなのか?
0036とむ ◆TMwDpCZo 01/11/10 05:10ID:???
なんとなくだけど、C++のようなOOと、ゲームのプログラミングって
相性良くないような気がしています…。
昔はいいと思ったんだけどね…。
0037_01/11/10 05:36ID:/4YFolbK
つうかCオンリーで組むのも相当キツイと思うけど。
延々とグローバル関数作りまくり・・
STL無いし・・
0038名無しさん@お腹いっぱい。01/11/10 06:46ID:???
継承のコストって x86 でいえば
call [v_table+n]
程度じゃない?

どちらかといえば、インスタンスの生成破棄を
無頓着に行うと効率さがるよね。そんなことは
Effecient C++ レベルにでも書いて有るようなことだし。
■ このスレッドは過去ログ倉庫に格納されています