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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名無しさん@お腹いっぱい。01/11/07 23:55ID:HnYWCQK1
OOをどのように用いれば美しくゲームプログラミングを
行うことが出来るのか語り合うスレです。
0871名前は開発中のものです。02/11/04 04:10ID:???
>>861
ソフトウェア工学の薄くて高い本を読むと
構造化技法、モジュール強度やモジュール結合度について
6 ページくらいは書いてあるよ。
0872名前は開発中のものです。02/11/04 13:00ID:???
>>861
CODE COMPLETE と Writing Solid Code をセットでどうぞ。

>>870
PS2 標準のヘッダはまったく問題ない程度の量。ただ C++ で template を
多用し出すと、ちと気になるかな。(いろんな意味で)
0873名前は開発中のものです。02/11/04 23:35ID:Fll59Laa
>>872
 プロジェクト規模しだいでは「ちょっと」の領域は超えちゃうなぁ。
あと、一本上げて解ったんだけど、テンプレートはあんまりメモリに
優しくないので、中規模以上のプロジェクトではあんまり多用しない方が
いいような気がした。皆のトコではどーなんだろ?

どうでもいいけど、あんまりOOと関係ない流れだね。
0874名前は開発中のものです。02/11/04 23:50ID:???
この板だと「終了とゲームプログラミング」って感じだよな〜
0875名前は開発中のものです。02/11/04 23:53ID:???
>>874 どうぞこちらへ
http://game.2ch.net/test/read.cgi/gamedev/1011082291/
0876あぼーんNGNG
あぼーん
0877逝って良しの1 ◆.CzKQna1OU 02/11/05 00:00ID:jHnnn7PQ
test
0878逝って良しの1 ◆MvRbZL6NeQ 02/11/05 00:02ID:jHnnn7PQ
結論:
1)再利用可能モジュール以外は手続き型で書く
2)なるべく共通の部品て作れるように設計する。

純OOは効率落とすだけ
0879名前は開発中のものです。02/11/05 00:15ID:???
ム板にお帰りください。
0880名前は開発中のものです。02/11/05 00:38ID:2UkT6p85
とりあえずOOを理解しているやつがすくないってのはわかるね。
まあ結構苦労すると思うよ。なめてかかると。
概念に関しての勉強ってサボルやつが多いからなー。
生まれてから一度も考えたことありませんでした。ってやついるだろ?
だからわかるやつとわからないやつとで差がでかいんだろうね。
0881あぼーんNGNG
あぼーん
0882名前は開発中のものです。03/01/29 00:07ID:pDS/kJyx
なんとなくage
0883名前は開発中のものです。03/01/29 02:06ID:aSd9akLd
PCH は GCC では3.4からなり。
0884名前は開発中のものです。03/01/29 02:19ID:NJepGLCB
 なー、職業ゲームPGの諸君。おまいらの会社ではテンプレートは活発に
使ってますか?仕事にマイテンプレート集を導入したいのだが、周りは
テンプレートと聞いただけで拒絶反応。「テンプレートは何をやってるか
解からんからイヤ」っておまいら…。
0885名前は開発中のものです。03/01/29 03:43ID:L0pVR/JC
>>884
ピンきりだろうに。STL解析しろて訳じゃないんでしょ?

慣れないとちと読みづらいからね。
後、メモリ使用量が。速度的には良いんだが。
0886名前は開発中のものです。03/01/29 05:08ID:i6h+T8DP
Loki を使いたいと言われたら、それはいかがなものかと思う
0887あぼーんNGNG
あぼーん
0888名前は開発中のものです。03/01/29 07:45ID:Psv7UOXb
STLのないC++なんて、もぅ耐えられないかも。
0889名前は開発中のものです。03/01/30 01:08ID:Cu+ZSbHF
 お、皆さんとこもテンプレートモリモリ系ですか?やっぱ強引に社員教育
して導入するべきですかね。メモリ使用量はアロケータを工夫する事でなん
とかなるんだけど、コード増加量を理由に拒絶されるとどーにもこーにも。

 STLのメモリパフォーマンスについての資料ってどっかにないもんかなぁ。
0890名前は開発中のものです。03/01/30 02:17ID:L8+k5MAr
結果的に同じコードになっても、型が違うっちゅうことで
それぞれ別ルーチンになっちゃうのが痛いね。

VC6はそこそこ最適化してたな。
どういう仕組みかしらんが、中身がまったく同じルーチンは一つに
まとめてくれてたようだ。
0891名前は開発中のものです。03/01/30 11:52ID:/VkjZaaB
コード量のほうはマップファイル見てたらわかったりしない?
ピンチになったら、いらなさそうな(ポインタ絡みが多いな)奴を探して
特殊化で切っていくとかできる。

あぁ、でも、最適化できってくれるのが理想だよな。
同じテンプレートから生成されたコードを
バイナリコンペアで判定して、まったく同じのを消せばいい、と思うんだけど。
0892名前は開発中のものです。03/02/01 13:20ID:qAhwu2Kc
そーなんよねー。テンプレートのコードサイズ最適化に関する情報がどこにも
ないからね。プロジェクト末期にコードサイズが5M超えましたとかじゃ怖くて
使えないよな。

まぁマイクロソフトはともかく、GCCやCWに最適化の過度の期待は禁物だしな。
0893名前は開発中のものです。03/02/01 13:32ID:2fuADtqt
インライン化の程度によっては増えたり減ったりするのがなんとも・・・

昔、ポインタのコンテナクラスは、void* のコンテナクラスを作って
それをラッピングしてたじゃないですか。
そういう手間が省けないかなあ、とか。
0894名前は開発中のものです。03/02/01 20:32ID:D+RPtyeL
ふむ・・・
STLでvoid *のコンテナだけ使うことにして、
それにtemplateで任意の型にキャストして使うとか、どうかなー。
やったことないけど。

template< class T >
class WrappedList
{
protected:
vector< void * > m_vec;
public:
void push_back( T *pItem ) { m_vec.push_back( (void * ) pItem ); }
・・・
};
とか。
イテレータとか使えなくなるのはイタイか。
0895名前は開発中のものです。03/02/01 22:48ID:3xQxr2iu
>>894
template< typename T > class std::vecotr< T* > がほしーなー。
STLportで定義しといてくれたりすると泣いて喜ぶんだが。
そんな話ねーのかなー?
0896名前は開発中のものです。03/02/01 23:33ID:r8hHPPWq
こんな情報はいかが?

http://adult.misty.ne.jp/rank/enter.cgi?id=fdeai
0897名前は開発中のものです。03/02/02 13:11ID:TNSSpbv4
 いや、実際テンプレートで消費するメモリリソースなんかたかが知れて
るんだけどなー。sizeofみたいにコードサイズを取得する演算子がほしいな。
sizeofcode( template<T> );
って感じの。演算子じゃなくてもコンパイラの機能でいいんだけど。
0898名前は開発中のものです。03/02/02 14:23ID:9DYxK8lo
コード量の削減で思いついたんだけどさ、
リンク時に中身が同じなら一緒にするってことできないかな?
サイズとCRCをフラグメント(関数?)ごとに記録しておいて、
それらが一致したらシンボルをまとめちゃうの。

win32ならゲイツパワーでできそうだけど、
unix系では辛いかな・・・
0899名前は開発中のものです。03/02/02 22:50ID:G3FgB81u
質問ですが、
オブジェクトをCreate()で作成して、Release()で開放する
考え方? スタイル? をなんて言うんでしたっけ?
0900名前は開発中のものです。03/02/02 23:55ID:Uu0vPcKD
ところで
virtual inline関数って実体がコードに埋めこまれる?

int g; // グローバル変数
class X{
virtual inline void f(){ g = 1; }
};
class Y : public X{
virtual inline void f(){ g = 2; }
};

void main(){
Y yy;
yy.f();
}
これがインライン展開されて
void main(){
Y yy;
g = 2;
}
みたいになるのかなと?
0901名前は開発中のものです。03/02/03 00:25ID:rEcoP6s1
>>900
それならインスタンスの型が分かっているので展開可能。

main(){}でいいのに、なんでvoidなんて書くんだ?煽られるだけだぞ。
0902名前は開発中のものです。03/02/03 05:08ID:JqqWIodK
>>899
ファクトリーパターンか?
0903あぼーんNGNG
あぼーん
0904名前は開発中のものです。03/02/03 11:36ID:flCV13vo
>>901 可能は可能だけど、
実際にそれをやっているコンパイラがどの程度あるかは
微妙な気がするな。アセンブラコード出して確認するのがいいよ。
090589903/02/03 17:09ID:xLCE72Gt
>>902
ファクトリーパターンって言うんですか。
C++覚えたての時、自分で試行錯誤していてこのパターンを思いついたんですよ。
実際にこういうスタイルがあると知ったのは、最近の事です。
なんという名前だったのか思い出せなかったもので。
0906名前は開発中のものです。03/02/04 00:18ID:hx50gtdt
うそ教えちゃ遺憾
http://www.google.com/search?hl=ja&ie=Shift_JIS&q=%83t%83%40%83N%83g%83%8A%81%5B%83p%83%5E%81%5B%83%93
0907名前は開発中のものです。03/02/04 00:24ID:iI+staQY
あながち間違いでもないと思うが・・・
ファクトリの実装方法の一部、とでも言ったほうがいいのか?
0908名前は開発中のものです。03/02/04 00:28ID:f3Zc1toq
別に create() で作るとだけ言われても、
Factory パターンかもしれないし Prototype パターンかもしれないし他のパターンかもしれない
0909名前は開発中のものです。03/02/04 00:40ID:iI+staQY
他に何が考えられる?
091089903/02/04 01:03ID:27K59mYC
えーと、意味不明かもしれないんですが・・

(図1)
   A
   |
 |--|--|
 B C D

僕が考えたのは、上の(図1)見たいな構造になってます。
Aは B C Dを内部で、配列やリストなどで管理してます。
Aは B C Dのインスタンス作成メソッドを持ちます(CreateB(B*)みたいな感じ)。
Aのデストラクタで B C Dのインスタンスの開放or終了処理が行われます。

こんな感じです。
具体的なパターン名がありますか?
0911名前は開発中のものです。03/02/04 01:27ID:hx50gtdt
GOF本には載ってないのう
こっちで聞いてください
http://pc2.2ch.net/test/read.cgi/tech/994836140/
0912名前は開発中のものです。03/02/04 01:29ID:iI+staQY
B,C,Dが共通のインターフェースを持つ?
0913名前は開発中のものです。03/02/04 01:39ID:27K59mYC
>B,C,Dが共通のインターフェースを持つ?
ちょっと、よく分かりませんが、
すべてのインスタンスを A で管理しているので、
A->Release() ですべて delete 出来て良いかなと思って実装しました。
0914名前は開発中のものです。03/02/04 02:16ID:BGqxd6sP
 >>902 は ネ タ
0915名前は開発中のものです。03/02/04 02:25ID:xtMOPMMZ
 つーかファクトリメソッドパターンだな、それは。微妙に違う気もするが。
ファクトリメソッドパターン+コンポジットパターンって感じか。

class cHogeManager{
friend class cHoge;
public:
cHoge* Create(...);
};

class cHoge{
privet:
cHoge(...);
};

こーやってcHogeのcreate以外でcHoge生成出来なくなくしたりは良くするね。
0916名前は開発中のものです。03/02/04 09:02ID:iI+staQY
friendの場所が違うような・・・

あとこのやり方?はいわゆる「ハンドル」だと思ったが、
何かパターンとして命名されてるの?
0917名前は開発中のものです。03/02/04 11:24ID:BGqxd6sP
ファクトリメソッドパターン
コンポジットパターン
ハンドル
・・・どれも関係ないと思うんだが。
あー全部ネタか?
0918名前は開発中のものです。03/02/04 23:05ID:1eGNQOWM
コンポジションの関係にある、というだけ。
0919名前は開発中のものです。03/02/05 00:32ID:BDykyC1l
なんかいい名前ないの?
そのための「パターン」なんじゃないのかなあ。
0920名前は開発中のものです。03/02/05 01:17ID:4k9yyPJp
そういう単純なものは名前をつけるまでもない。
0921名前は開発中のものです。03/02/05 01:45ID:BDykyC1l
単純かな?誰も一言で説明してないっしょ。
0922名前は開発中のものです。03/02/05 02:34ID:jPrzM36E
一言で説明したけど…
0923名前は開発中のものです。03/02/05 21:29ID:C5KaH66+
終了厨必死だな
0924名前は開発中のものです。03/02/08 07:27ID:EGa9pqBX
>>910
ただの集約じゃないの?
0925名前は開発中のものです。03/05/11 16:50ID:e4w5V65t
アグリゲートとマルゲリート二人はとても仲良し♪(^o^)八(^o^)♪
0926名前は開発中のものです。03/06/19 16:04ID:HRxe0laA
あげとくか
0927名前は開発中のものです。03/06/20 02:15ID:XRWJvaJP
アイドルのコラージュを発見したでつ。
あと、つるつるオマ○コも見れました。いいの?(*´Д`*)ハァハァ
http://plaza16.mbn.or.jp/~satchel/turuturu/
0928名前は開発中のものです。03/06/20 03:27ID:NoymN1Rz
(。_。)
0929_03/06/20 04:49ID:u/8p8Vlx
http://homepage.mac.com/hiroyuki44/
0930名前は開発中のものです。03/06/20 06:27ID:fKckAdYD
☆A級美女が貴方を癒します☆
http://endou.kir.jp/yuminet/link.html
0931名前は開発中のものです。03/07/25 00:24ID:MxA3qw0U
うちの会社OO禁止。
つうかC++禁止。

どうよこれ?
0932名前は開発中のものです。03/07/25 00:57ID:fakPmJ3A
禁止に至った理由を聞きたいな。
こういうのって壮絶なのが多くて面白いから。
0933名前は開発中のものです。03/07/25 06:26ID:kY6mthGv
コンパイラにバグがあるから(DC)
0934名前は開発中のものです。03/07/25 11:23ID:P6XtV6Vm
DCのコンパイラにバグがあるから、
PS2用やGC用やXBOX用やPC用や内部ツール用のコード書くときまで
C++禁止というのを「今でも」やっている、とか?
093593103/07/28 02:50ID:Ee0efPhD
「処理が重くなるから」だって。
一度やってみたら上手くいかなかったんだと。

>>934
>PS2用やGC用やXBOX用やPC用や内部ツール用のコード書くときまで
>C++禁止というのを「今でも」やっている、とか?
YES!
理由は上述のとおりだけど。

自分の会社の技術力やプロジェクト管理力がどんなもんなのか、
ぜひ他社と比較したいよ。
レス数が900を超えています。1000を超えると表示できなくなるよ。