ゲームプログラミング相談室【Part7】

このエントリーをはてなブックマークに追加
536名前は開発中のものです。
初歩的な質問ですみません。
C++でWindowsのシューティングゲームを作っているのですが、
弾を発射する処理時の数値管理をうまくやる方法が思いつきません。

1つや2つの弾ならいいのですが、多数の弾を画面上に表示させるときに
弾の座標や速度などはどのように管理し、計算するのがいいんですか?
537名前は開発中のものです。:2006/06/07(水) 21:30:36 ID:W1VWj1ZD
構造体かクラスに詰め込むんだ!
538名前は開発中のものです。:2006/06/07(水) 22:02:39 ID:3J9AToW9
>>536
・弾の座標や速度を持ったクラスを作る
・そのクラスをリストに追加していく
539536:2006/06/07(水) 22:09:46 ID:Oar08TuE
>>537-538
レスありがとうございます。
構造体はやってみたんですが、どうも上手くいかなくて・・・。
自分が指定した弾数を表示するのは可能なんですが、
弾を敵から次から次へと発射させていき、そして画面外の弾は消してってのが難しいです。
クラスを使ってみてもう少し悩んでみます。
540名前は開発中のものです。:2006/06/07(水) 22:20:56 ID:jkEYkh3+
敵の弾をvectorにpush

vectorを走査して処理

いらない弾をpop

戻る
541名前は開発中のものです。:2006/06/08(木) 00:22:25 ID:OmC/o+Nq
vectorだと最後尾以外のpopにオーバーヘッドが発生するんでlistのがいいとおも。
542名前は開発中のものです。:2006/06/08(木) 18:06:24 ID:Y9ymCOxB
敵の弾が順番に出て、消えてくならvectorでよいんだけどね
543名前は開発中のものです。:2006/06/08(木) 18:53:57 ID:LyPqDceo
大昔(フラグメントとか馬鹿にならなかった頃)のくせで、listは一瞬、躊躇ってしまう俺
544536:2006/06/08(木) 20:15:50 ID:3urdKICX
無事作ることができました。
感動です!ありがとうございました。
545名前は開発中のものです。:2006/06/08(木) 20:37:05 ID:xpPGnnh8
>>543
> 大昔(フラグメントとか馬鹿にならなかった頃)
 
それどういう条件下での話だ?
 
大昔も小昔も現在も何も、メモリプールなアロケータを使った
弾リストがメモリ断片化で問題になるなんて聞いたことねー。
546名前は開発中のものです。:2006/06/08(木) 21:25:52 ID:LyPqDceo
>>545
> メモリプールなアロケータ

そんな前提が加わったら何も言えんw
547名前は開発中のものです。:2006/06/08(木) 21:44:32 ID:+GCC8Z3n
フラグメント気にする前に当然考慮すべき解決法じゃないのか。。。

ただ、俺だったら最初に配列で確保する。リスト不要。
弾が消えたら、配列の末尾の弾データで上書きする。
でその上書きしたところから弾(が消えるかかどうか)の処理。
弾程度のデータ量なら上書きなんて大した負荷じゃないし、
配列上のどの位置にあったも問題無い。

全部机上で考えた。実際上手く動かなくても反省しない。
548名前は開発中のものです。:2006/06/08(木) 21:56:17 ID:1mhJ/8vO
>>543は古参っぽく振舞ってみたかったんだよ、きっと。
549名前は開発中のものです。:2006/06/08(木) 22:11:19 ID:L7aEqaHC
俺なんか内部が動的配列のリストを自作して使ってる。

ArrayListですかそうですか
550名前は開発中のものです。:2006/06/08(木) 22:45:43 ID:xpPGnnh8
そういや、Win9x系を使ってた頃に
弾1個に1mallocな富豪的プログラミング実験したら
ばっちり不具合起こした憶えがあるんだが
NT系主流の現在はどうなのかは知らん。
551名前は開発中のものです。:2006/06/08(木) 23:39:40 ID:L7aEqaHC
>>550
そりゃ、お前のバグだろw
newじゃなくて、mallocってるところが怪しいw
552名前は開発中のものです。:2006/06/08(木) 23:49:33 ID:/IMPTbWN
>551
Cの何が悪い。
いや俺自身はC++にどっぷり浸かってもう戻る気無いですけど。
あと「お前のバグだろ」には同意。
553543:2006/06/09(金) 00:30:27 ID:1NV1OMlG
>>547-548
まてまて、そうじゃなくて、どうみてもSTLのlistの話だったよな?
STLならまず、そんな実装はしないっしょ

で、俺が「STLのlist」を使うのを一瞬、躊躇う話(でも今時そりゃないよな!)だったのに、
なぜか「メモリ管理した自作list」なんてのが出てきたじゃない。なんだそりゃと思うわ。
554名前は開発中のものです。:2006/06/09(金) 00:37:08 ID:Vph+Dr0v
WindowsMeでnew/delete使って毎フレーム6万発を生成したり
破棄したりするプログラムを作ったことあるが、これ実行して放置しておくと
そのうち動きがカクカクになったよ。
同じ条件で自前配列からメモリを割り当てると何も問題なかった。
555名前は開発中のものです。:2006/06/09(金) 00:39:33 ID:Vph+Dr0v
>>553
まてまて。
STL使うときに自前のアロケータを用意するのは
珍しくも何とも無いと思うんですけど。
556名前は開発中のものです。:2006/06/09(金) 00:44:58 ID:1NV1OMlG
>>555
だから流れ見てくれ。一般的なvectorとlistの違いの話をしてたんじゃないのか
自前で用意するなら、vectorでもlistでも良いわな。オーバーヘッドも似たようなもんだ。
557名前は開発中のものです。:2006/06/09(金) 00:47:15 ID:v1RPuFtO
>>543必死だなw
558名前は開発中のものです。:2006/06/09(金) 00:52:35 ID:Xy8w0flM
必死で何が悪い
559名前は開発中のものです。:2006/06/09(金) 01:07:08 ID:Sd/Boj7f
>>558
頭が悪い
性格が悪い
状況が悪い
言葉が悪い
考え方が悪い
環境に悪い
560名前は開発中のものです。:2006/06/09(金) 01:08:40 ID:STSDKTZD
DirectXとかにVRAMへの配置任せてると
長時間ゲームを起動した時にVRAMが断片化したりしないすかね
561名前は開発中のものです。:2006/06/09(金) 01:09:26 ID:Vph+Dr0v
>>556
あのー、自前でアロケータ用意したって、例えばvectorの
insertやeraseを使えば相変わらずO(n)なんですがー。
listとvector、それぞれの得意不得意は変わらないですよ。
562名前は開発中のものです。:2006/06/09(金) 01:14:10 ID:1NV1OMlG
>>561
逆逆、listで自前アロケータ用意して、vectorより有利になれるか答えてみせてくれ
563名前は開発中のものです。:2006/06/09(金) 01:15:00 ID:1AcDkcsM
>>560
しない。

理由は自分で考えてみろ。
564名前は開発中のものです。:2006/06/09(金) 01:17:01 ID:xJVGDVBV
>>554
本当かよ。
Win95のころからゲーム作ってるが、毎フレーム生成、破棄で何の問題もなかったが
ま、昔話はどうでもいいが。
565名前は開発中のものです。:2006/06/09(金) 01:17:53 ID:xJVGDVBV
>>563
> 理由は自分で考えてみろ。
知らないんなら黙ってろ
566名前は開発中のものです。:2006/06/09(金) 01:18:34 ID:1AcDkcsM
>>565
お前が黙ってろボケ
567名前は開発中のものです。:2006/06/09(金) 01:22:16 ID:yKtaGmxc
ここは俺様のメモ帳だ。おまえ等のチャットじゃない。
だから俺様のような第三者にもわかるように、
ちゃんと判りやすく説明しろ。
それが駄目なら配列についてのみ語れ。
568名前は開発中のものです。:2006/06/09(金) 01:26:03 ID:Xy8w0flM
コッペパンとかどうかな
569名前は開発中のものです。:2006/06/09(金) 01:27:16 ID:Xy8w0flM
GBKごめん
570名前は開発中のものです。:2006/06/09(金) 01:31:43 ID:Vph+Dr0v
>>562
あのー、末尾以外の要素をinsert/eraseするとき
vectorはO(N)、listはO(1)なのですが。
アロケータを用意するとこの差が埋まると?
すんげー都市伝説だね。
571名前は開発中のものです。:2006/06/09(金) 01:32:55 ID:1AcDkcsM
うぜぇ

>DirectXとかにVRAMへの配置任せてると
>長時間ゲームを起動した時にVRAMが断片化したりしないすかね

DirectXとかにVRAMの配置を「任せているからこそ」断片化しない。

Q.じゃあ、C/C++のmallocやnewはなんで断片化するんですか?任せてるのに。
A.C/C++はポインタの所為で確保された領域を移動させることが出来ないから。
 C#なんかではコンパクションもしてくれる。

Q.VRAMを勝手に移動させて大丈夫なんですか?
A.直接テクスチャ等にアクセスするとき、ワザワザ浮動させないようにlockしているでしょう。
572名前は開発中のものです。:2006/06/09(金) 01:38:30 ID:1NV1OMlG
>>570
…おまいだけはまともだと思っていたのだが

おまいの主張だと、listで「断片化が起きないように」、自前アロケータを用意するんだろ?
その時のオーバーヘッドは、vectorより有利になるのかよ。どう実装してるんだ。
573名前は開発中のものです。:2006/06/09(金) 01:42:34 ID:v1RPuFtO
・メモリの断片化
・要素の検索
574名前は開発中のものです。:2006/06/09(金) 01:44:40 ID:Vph+Dr0v
> listで「断片化が起きないように」
 
んなこと言ってねー!
自前アロケータを用意したってメモリプール内で断片化するじゃねーか。
575名前は開発中のものです。:2006/06/09(金) 01:47:32 ID:gBtFM5Is
自前でも大きく確保して固定長で切り出すなら断片化起きないよ。
それはともかく、IDが変わったんで誰がどういう主張してるかわからないんですけどw
576名前は開発中のものです。:2006/06/09(金) 01:52:24 ID:1NV1OMlG
>>574
…いや、ありえないだろ。なんでそこが抜ける。>>555のレスはなんだったんだ。
実は少し期待してたんだが、マジで寝ておけばよかった

つかなんだ、メモリプール内でも断片化って言うのか。プール内ならしたっていいよ。全然いいよ。
で、どうだろ、まだ行ける?
577名前は開発中のものです。:2006/06/09(金) 01:53:33 ID:1NV1OMlG
まてまて、一応言っておくが、STLの範囲で頼む
自前listなんてなんでもありだからな
578名前は開発中のものです。:2006/06/09(金) 01:55:08 ID:Vph+Dr0v
>メモリプール内でも断片化って言うのか。
 
言わんと思う。
アロケータ内部では廃棄ノードのリストと使用中のノードのリストがある状態。
579名前は開発中のものです。:2006/06/09(金) 01:55:58 ID:Vph+Dr0v
廃棄ノードのリストだけ。
580541:2006/06/09(金) 02:01:35 ID:gBtFM5Is
どうも、メモリの管理と弾の管理が混乱してるみたいだけど
そもそもが弾をlistで管理するか、vectorで管理するかと言う話だよね?

vectorはpopのオーバーヘッドで最後尾じゃなかったらメモリを詰める
動作が入るはずだから、listがいいと思うと言ったわけで・・・
581名前は開発中のものです。:2006/06/09(金) 02:05:15 ID:v1RPuFtO
>>580
そそ

>>561の書き込みに、>>562のレスがそもそも痛い
582名前は開発中のものです。:2006/06/09(金) 02:06:36 ID:1NV1OMlG
>>578
俺は最初から煽る気は全くないからな
で、いやそれは…今度はその廃棄ノードのリストの断片化は…っつう話に
決め打ちとなるとやっぱり、オーバーヘッド変わらないしなぁ

それなら、どこかのタスク説明サイトで、上手い実装があったな
583名前は開発中のものです。:2006/06/09(金) 02:11:14 ID:Vph+Dr0v
std::vectorで弾管理ってことは
弾が画面外に出たらそれをeraseするみたいな使い方でしょ?
末尾以外のeraseは内部で一個後ろから末尾をコピーするでしょ。
 
これはアロケータを自作しようが標準のアロケータを使おうが
変わらないんだけど。
584名前は開発中のものです。:2006/06/09(金) 02:12:18 ID:Vph+Dr0v
×一個後ろから末尾をコピーするでしょ。
○一個後ろから末尾までの要素をコピーするでしょ。
585名前は開発中のものです。:2006/06/09(金) 02:17:02 ID:Vph+Dr0v
ちなみに俺は弾管理には>>547と同じ方法使ってる。
消去する要素に末尾の要素をコピーする。
586名前は開発中のものです。:2006/06/09(金) 02:22:08 ID:1NV1OMlG
断片化考えてた頃を思うと、STLのlist使うのって一瞬、躊躇うのよね。でも今時断片化なんて気にしないよな
 ↓
断片化させないlist使えば、断片化なんて問題になるわけないじゃんw
 ↓
いやSTLのlistの話だから。一般的なSTLの話してたんだぜ?
 ↓
STLのlistでも、自前でアロケータ使えば断片化無しにできるじゃん
 ↓
マジで?アロケータだけで、断片化が無くなるような実装できるの?
結局オーバーヘッドがvectorと同じ様な処理になるか、一般的なSTLの範囲超えね?

なんで話逸れていくんだろうな。寝るわ。
587名前は開発中のものです。:2006/06/09(金) 02:23:29 ID:gBtFM5Is
>>570
勘違いして、ここ書き間違えてる。
vectorはO(1)、listはO(N)だよね。

>>582
>>583のとうり、vectorはアクセスはO(1)だけど、コピー動作が入るので
実質listよりオーバーヘッドが出る。


なるほどねぇ。>>547のような方法があったのか。
たしかにポインタ繋ぎ変えと比べてもそれほどでもないね。
いつか使ってみよう。
588名前は開発中のものです。:2006/06/09(金) 02:24:02 ID:Vph+Dr0v
俺も寝る。
589名前は開発中のものです。:2006/06/09(金) 02:26:58 ID:1NV1OMlG
>>588
>>586で流れ分かったと思うし、本当に出来るなら明日でも良いから書いてくれよ
何度も言うが最初から煽る気はない

ついでにLyPqDceo = 1NV1OMlGvな
590名前は開発中のものです。:2006/06/09(金) 02:30:59 ID:q6evu2B+
>586
>マジで?アロケータだけで、断片化が無くなるような実装できるの?
できる。

>587
>vectorはO(1)、listはO(N)だよね。
違う。
vectorはそれ以後の要素(平均してN/2個)を移動しなければならないからO(N)。
listは前後のポインタの繋ぎ換えだけなのでO(1)。
591名前は開発中のものです。:2006/06/09(金) 02:34:42 ID:gBtFM5Is
>>590
ああ、そうか、移動はそうだね。スマソ
アクセスと勘違いしてた。
592名前は開発中のものです。:2006/06/09(金) 02:57:13 ID:1NV1OMlG
だめだ>>582のサイト見つからないわ

>>590
いや誓っても良いが、たぶんどこかで断片化は起こるって。それなら何故普通に使わないんだと。
違うならさわりだけでも書いてくれ。何故皆、出来る出来るばかりで、内容を書かないんだ。
593名前は開発中のものです。:2006/06/09(金) 03:11:41 ID:V9JZb3A8
「断片化」の意味が確定してないんじゃね?

1.メモリ上に隙間ができる。(メモリ参照の局所性が低下してパフォーマンスに影響)
2.連続空き領域が小さくなってしまう。(大きなメモリ要求がエラーになる)

list のアロケータを差し替えることで2は回避できるが、1は回避できない。
1を回避するのは >>547 のような方法だが、これは list ではできない。
594名前は開発中のものです。:2006/06/09(金) 03:23:33 ID:gBtFM5Is
それなら、listのアロケータも変更したとしたら
1.も解決済みと思うけど。固定長なら。
595名前は開発中のものです。:2006/06/09(金) 03:38:15 ID:V9JZb3A8
>>594
list 内の三個の要素 A, B, C がメモリ上で ABC と連続しているとき、
B が破棄されたら A_C となって隙間ができるよね?
これもアロケータで解決できるの?
596名前は開発中のものです。:2006/06/09(金) 03:51:46 ID:gBtFM5Is
そこまで考えると確かに無理だけど、問題はOSが管理するメモリでしょ?
>>574
>>576

断片化じゃなくてパフォーマンスの問題になるね。
597名前は開発中のものです。:2006/06/09(金) 04:02:53 ID:gBtFM5Is
ただ、パフォーマンスもポインタを参照する程度だから
ぜんぜんおっけーだと思う。
598名前は開発中のものです。:2006/06/09(金) 08:45:38 ID:1gS45rI0
なんでSTLコンテナの比較の話に
断片化の話を混ぜてるやつがいるんだ?
599名前は開発中のものです。:2006/06/09(金) 18:10:44 ID:zyCokZ0k
>>595
Bはまたすぐに使われるだろ
「固定長なら」という条件ならな
600名前は開発中のものです。:2006/06/09(金) 19:14:32 ID:q6evu2B+
>593
確かに1でメモリプール全体がキャッシュに入りきらない場合、リストを先頭からなめるだけでも、
あっちこっちにアクセスしてキャッシュミス連発する可能性があるから、地味に効いてくるかもしれない。

ID:1NV1OMlGの断片化の定義待ち
601名前は開発中のものです。:2006/06/09(金) 20:21:03 ID:gzV0iAeB
そんなに、わからないならSTL使わなきゃいいじゃん
602名前は開発中のものです。:2006/06/09(金) 22:31:52 ID:1NV1OMlG
飲み過ぎて頭が痛いぜ。いや待ってくれ、
俺は元々「STLのlist使うなら、普通は断片化なんか気にしないだろうよ」っつう立場なわけよ。

俺がコーディングしてた頃は、断片化を考えたときに、STLのlistを改良して使うっつう考えは無かったしな
(そもそもそんな選択すら出来なかったが)。キャラ数なんざ決め打ち頭打ちだ。

なので、俺が勝手に定義しても良いが、それより>>545に聞いた方がいいんじゃね
603名前は開発中のものです。:2006/06/09(金) 22:40:34 ID:37awecH3
ここまでのまとめ:配列で済ますのが超COOL
604545:2006/06/09(金) 23:37:27 ID:Vph+Dr0v
>>551 : 「そりゃ、お前のバグだろw 」
>>552 : 「お前のバグだろ」には同意。」

     r ⌒ヽ
     (´ ⌒`) ポッポー !
         l l
 カタカタ ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (・∀・#)<  くっそーもうあったまきた!
   _| ̄ ̄||_)_\___________
 /旦|――||// /|
 | ̄ ̄ ̄ ̄ ̄| ̄| . |
 |_____|三|/
605名前は開発中のものです。:2006/06/09(金) 23:47:50 ID:1NV1OMlG
おまえだったのかよw
なんだこのカイザー・ソゼ以来の意外性
606名前は開発中のものです。:2006/06/09(金) 23:49:27 ID:gBtFM5Is
ちょwwww
607545:2006/06/09(金) 23:56:12 ID:Vph+Dr0v
一晩寝て頭を冷やして学校行って頭シャッキリして帰ってきた。
スレ読み直したんだが、やっぱりまた頭に来た!くっそー!!
 
昨晩色々書いたけど
 
> 大昔(フラグメントとか馬鹿にならなかった頃)
 
これ。ここ。これがどういう条件下の話なのかやっぱり理解できん。
608名前は開発中のものです。:2006/06/10(土) 00:01:00 ID:WJoYJdwq
ちなみに、俺が知ってる大昔てのはWindowsMe以降の世界。
あと、GBSDKは触ったことあるのでそういう環境下の苦労は
ほんの少し理解してるつもり。

609名前は開発中のものです。:2006/06/10(土) 00:02:37 ID:Vph+Dr0v
s/GBSDK/GBDK/
610名前は開発中のものです。:2006/06/10(土) 00:05:17 ID:gBtFM5Is
まてまてまてw
>>551に怒ってるのは解ったけど、>>543>>551じゃないぞ?
611名前は開発中のものです。:2006/06/10(土) 00:07:52 ID:WJoYJdwq
「くっそー、こうなったらみんな敵だ!」という厨房の発作です。
612545:2006/06/10(土) 00:09:06 ID:WJoYJdwq
私です。
613541:2006/06/10(土) 00:11:03 ID:VvPaAfBS
>>611
ことの発端はあんたのvectorでしょうーがっ!www
614名前は開発中のものです。:2006/06/10(土) 00:18:40 ID:VvPaAfBS
って、>>545なら言いだしっぺ違うわな。
ID変更は鬼門だ・・・
615名前は開発中のものです。:2006/06/10(土) 00:35:01 ID:71643E8t
うん、551は俺じゃないね

>>607
学生さんか、てっきり同世代かと。いや昔のコンシューマ機の話よ。Meとかですら無かったりで。
STLどころかC++が笑い話で、恐ろしく少ないメモリをやりくりしてたような。もう守秘義務もないかね。

しかし煽る気はなかったんだが、随分気分を害したらしいな。
ここはひとつ、上手いlistのアロケータを書いて締めるってのはどうよ。俺が知りたいだけだが
616名前は開発中のものです。:2006/06/10(土) 00:50:38 ID:WJoYJdwq
で、俺は>>585で書いたとおり、やり方に落ち着いちゃってるんだけど
それ以前は弾を双方向リストで管理してたんだ。

そんときの自前アロケータは内部に2048発分の配列。
それと破棄リスト(要素番号256単位でバケツ分け)。
 
弾を破棄するときはその要素番号が帰るべきバケツにポイ。
弾を発行するときは、バケツを若い順に調べる。
(バケツは自分に弾が何個入ってるかの情報を持ってる)
中身の入ってるバケツを発見したらこいつから弾を取り出して使う。
 
このやり方でメモリプール内の使用状況を可視化したら
弾発行数の増減が激しいと
後部に虫食い(フラグメンテーション?)が発生するけど
配列全体に虫食いが発生することは防げた。
 
で、次にこれがオナニー実装かどうかを知りたくなった。
配列全体にわざと虫食いを起こすアロケータを作って比較した。
パフォーマンスはほとんど変わらなかった。
617名前は開発中のものです。:2006/06/10(土) 01:03:04 ID:WJoYJdwq
この過程で、弾ごときに双方向リスト使ってガンバっても
くだんねーな。必死なのって流行じゃないよね。もてないじゃん。
リストノード用に余分なメンバ変数増えるのももったいねーし。
もう配列でいいや。という心境になり、>>547の言ってるような実装に
発見的に行き着いた。
 
これを思いついたときは
「すんげー俺って天才?ギャハーカッケーwwwww」
と思って我が世の春を謳歌しようかなと考えた。
でもWEB上でこんなの↓発見して
 
http://www.aya.or.jp/~sanami/peace/#CODE44
 
あーやっぱ既知のテクなんだ。と知った。
618名前は開発中のものです。:2006/06/10(土) 01:17:22 ID:losLwqMA
素人がメモリアロケータ作っても無駄。それどころか、状況が悪化するだけ。
619名前は開発中のものです。:2006/06/10(土) 01:19:33 ID:q7EqxxmA
ゴキブリを殺すのにショットガンは要らない。
620名前は開発中のものです。:2006/06/10(土) 01:26:08 ID:VvPaAfBS
>>618-619
無駄、状況が悪化する例は?
それだけじゃ、煽りにしか聞こえない。
621名前は開発中のものです。:2006/06/10(土) 01:35:08 ID:8oIWlSPs
・メモリの断片化は、自前アロケータである程度防げる。
・listとvectorの検索のオーバーヘッドはどうやっても防げない。
622名前は開発中のものです。:2006/06/10(土) 01:42:55 ID:uD81qzo8
>615
STLのアロケータとしての要件を満たしてないけど、boostのpoolなんかはどう?
もっと単純なのがありそうだけど探すのがめんどくさい。
623名前は開発中のものです。:2006/06/10(土) 02:06:50 ID:WJoYJdwq
>>615
俺の気分は気にしなくていいです。
守秘義務を盾にはぐらかされるのはちょっと納得いかないけどね!
(相当する公知のハードウェア環境で説明できるはずだしね)
624名前は開発中のものです。:2006/06/10(土) 02:12:49 ID:losLwqMA
>>620
例だと?

お前がもしメモリアロケータを作っていたら、それが例だ。
625名前は開発中のものです。:2006/06/10(土) 02:19:56 ID:WJoYJdwq
あのさー、固定長のメモリプールなら超単純実装だから
誰が組んでも大した差はでねーよ。
626名前は開発中のものです。:2006/06/10(土) 02:21:47 ID:losLwqMA
じゃあアップしてみろ。

どれだけ悪い例か指摘してやるよ。
627名前は開発中のものです。:2006/06/10(土) 02:24:40 ID:QFMfd0HB
アップされないのは目に見えてるときしか強気になれないなんてぷぷぷー
628名前は開発中のものです。:2006/06/10(土) 02:25:56 ID:losLwqMA
はぁ?

>超単純実装だから

とか言ってる奴がアップもできないなんてアホ話があるか。
629名前は開発中のものです。:2006/06/10(土) 02:30:48 ID:QFMfd0HB
すまん
630名前は開発中のものです。:2006/06/10(土) 02:41:43 ID:FScBklNP
WJoYJdwqの明日のレスを大胆予想。

>>626 : どれだけ悪い例か指摘してやるよ。
>>629 : すまん

     r ⌒ヽ
     (´ ⌒`) ポッポー !
         l l
 カタカタ ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (・∀・#)<  くっそーもうあったまきた!
   _| ̄ ̄||_)_\___________
 /旦|――||// /|
 | ̄ ̄ ̄ ̄ ̄| ̄| . |
 |_____|三|/
631名前は開発中のものです。:2006/06/10(土) 02:44:12 ID:VvPaAfBS
>>624
なるほどな。わかった。俺の実装が悪いわけだな。

で、おまえはどうしてるんだ?
まず、自前のアロケータを使っているのか、いないのか明確に答えて貰おう。
話はそれからだな。
632名前は開発中のものです。:2006/06/10(土) 02:46:46 ID:losLwqMA
今の時代にアロケータを自作するのはただのバカ。
633名前は開発中のものです。:2006/06/10(土) 02:49:56 ID:VvPaAfBS
そうか。バカ、と言える理由は?理由が無いなら話にならん。
634名前は開発中のものです。:2006/06/10(土) 02:51:08 ID:losLwqMA
だから、お前のメモリアロケータが理由だって。本当に頭悪ー。
635名前は開発中のものです。:2006/06/10(土) 02:51:19 ID:WJoYJdwq
>>632
うそー。弾1個に1new?カッケー
636名前は開発中のものです。:2006/06/10(土) 02:51:20 ID:QFMfd0HB
VvPaAfBSが馬鹿なんやない
VvPaAfBSを見るlosLwqMAの心が馬鹿なんや
637名前は開発中のものです。:2006/06/10(土) 02:53:04 ID:losLwqMA
>>635
アホ解釈来たな。まぁ1弾に一回newしても問題ないが。

それよりお前はさっさとアップしろよ。
638名前は開発中のものです。:2006/06/10(土) 03:06:56 ID:VvPaAfBS
>>634
それは理由になってない。

メモリリークが発生しやすくなるとか、速度が遅いとか
そういう理由じゃないと納得できない。

>>637
ところで、newを使わないなら、STL使ってないわけだな?
弾の管理はやっぱ順序なしリストなわけ?
639名前は開発中のものです。:2006/06/10(土) 03:21:23 ID:WJoYJdwq
今、即席で弾1個に1newタイプの実験プログラム作って
自作メモリプールと比較した。俺のメモリプール勝った。寝る。
640名前は開発中のものです。:2006/06/10(土) 04:04:33 ID:FScBklNP
今、即席で日本代表チームを作って
ワールドカップに出場した。日本が優勝した。寝る。
641名前は開発中のものです。:2006/06/10(土) 04:16:57 ID:7jB92iol
うpしたところで「車輪の再発明はするな」パターンだなw
こんな池沼は構わないほうがいい。
642名前は開発中のものです。:2006/06/10(土) 06:08:38 ID:Hc9SQ0CR
メモリープールなんて言葉を勝手に作るな。世の中には、
ガーベージコレクションという概念が既に存在している。
メモリー管理を考えるなら、誰もが一度は通る道だ。あと、
メモリーの断片化に関しては、フラグメンテーションで調べてみ?
643名前は開発中のものです。:2006/06/10(土) 06:20:13 ID:Hc9SQ0CR
Windowsの場合は、GlobalAlloc()でGMEM_MOVEABLEを使えば済む問題やね
644名前は開発中のものです。:2006/06/10(土) 08:14:05 ID:losLwqMA
>>638
>ところで、newを使わないなら、STL使ってないわけだな?
はぁ?バカかコイツ。newを使わないとかダレが言ってんだ死ねよ。

>>639
はいはい、作ったけどアップは出来ないと。
ドアホ。やってもねーのにやったふりすんなボケ!
645名前は開発中のものです。:2006/06/10(土) 08:25:12 ID:losLwqMA
>>642
>メモリープールなんて言葉を勝手に作るな。世の中には、
>ガーベージコレクションという概念が既に存在している。
メモリプールという言葉も世の中に既に存在しているけど。
お前の世界は一体なんなんだ?

>メモリー管理を考えるなら、誰もが一度は通る道だ。あと、
前の文章とまったく繋がっていない。なんの道も提示されていないし。

>メモリーの断片化に関しては、フラグメンテーションで調べてみ?
なんだコレ。過去最高のアホ発言を見てしまった。
フラグメンテーションに関しては、メモリーの断片化で調べてみたら宜しいかね?

>Windowsの場合は、GlobalAlloc()でGMEM_MOVEABLEを使えば済む問題やね
弾一個にそんな糞重いの使ってられるか。死ね。
646名前は開発中のものです。:2006/06/10(土) 10:26:52 ID:UjDEW7bc
クールにいこうぜ
647名前は開発中のものです。:2006/06/10(土) 10:43:36 ID:31oBp3L7
ここまでのまとめ:配列で済ますのが超COOOOOOOOOL!!




苦労していろいろ知識を獲得したんだろうし、
それに対するこだわりがあるのは認めるが、
あんま最適解でもない手法でgdgdするのはどうかと。
648名前は開発中のものです。:2006/06/10(土) 11:00:13 ID:RwIirlZ0
可能な限りシンプルな方法を取るべきだ
649名前は開発中のものです。:2006/06/10(土) 11:36:08 ID:VvPaAfBS
>>644
>アホ解釈来たな。まぁ1弾に一回newしても問題ないが。
ということは、お前の場合は弾にnewを使わないと暗に言ってるだろ。

>はぁ?バカかコイツ。newを使わないとかダレが言ってんだ死ねよ。
結局どっちなんだよwww

おまえがどの方法を取っているか解らないから
弾の管理をどうしているか聞いているんだよ。

>>647
俺も配列がいいと思うが、もしかしたらID:losLwqMAが画期的な方法を使っているかもしれないだろう?
650名前は開発中のものです。:2006/06/10(土) 11:52:20 ID:31oBp3L7
ID:WJoYJdwq
ID:losLwqMA
ID:VvPaAfBS
この中でさっさと寝た(振りしてる)ID:WJoYJdwqが一番マトモに見えるメルヘン。


お前等煽るのに夢中になって議論に向いてないからROMマジおすすめ。
651名前は開発中のものです。:2006/06/10(土) 12:07:12 ID:cC9yvQP6
なんかもうム板でやってもいいような内容になってる気がする。

一体どの辺が発端か、ざっと戻ってみたけど >>536->>542 あたりか?
「(とりあえず最初は)配列とforループで何とかすればおk」って回答すれば十分なレベルの質問に見えるけど・・・
652名前は開発中のものです。:2006/06/10(土) 13:01:12 ID:4myaDmrL
"末尾で穴埋め式vector" vs "list" については、
vectorの、末尾の値を移動することで処理順序が変化する問題と
listの、各ノード情報(prevとかnextとか)を持つ手間を秤にかけるとして、
他のノードとの相関のない、ただの弾なら前者でいいんじゃないの?
断片化うんぬんはどうにでもなりそうね。
653名前は開発中のものです。:2006/06/10(土) 13:09:15 ID:71643E8t
一夜明けたら部外者に

>>623
いやいや、はぐらかす気は無いんだけど、こっちの話になると折角の流れが変になるぜ。
締めといった以上、616への突っ込みは避ける。乙。

で、615に書いた通りなのよ。メモリが恐ろしく少なかったから。難しい話じゃない。
適当にやってると、すぐメモリ取れなくなって止まるのよ。Win機の話じゃないぜ。
たぶん今のコンシューマ機でも、全くメモリ断片化は気にしない!なんて所はまず無いんじゃないかね。
654名前は開発中のものです。:2006/06/10(土) 13:18:04 ID:0+3APnZd
コンソールプログラムをC++言語でやっているのですが…
C++言語でどうやったらゲームを作れるんでしょうか?
ライブラリを利用するしかないんでしょうか?
655名前は開発中のものです。:2006/06/10(土) 13:29:06 ID:3jQpWC6x
ライブラリ利用してそれで絵が出るならおk
656名前は開発中のものです。:2006/06/10(土) 13:37:31 ID:Di4dWC8R
S  サッと
T  Throughして
L  楽になろう
657名前は開発中のものです。:2006/06/10(土) 13:42:52 ID:VvPaAfBS
>>652
流れを補足しておくね。

"vector" vs "list"
ここではvectorの最後尾以外のpop&pushが問題点となる

"vector" vs "自前アロケータ list"
ここではlistのノード作成時の断片化が問題点となる

"末尾で穴埋め式vector" vs "自前アロケータ list"
おそらく一番COOLと思われる。キャッシュ部分でもlistより有利。

流れぶった切って>>618 >>632
ID:losLwqMAは弾の処理以外の話も含めて言っているらしい?

いまここ。
メモリ管理に関して割と有益な話が聞けそうなんで、自分としてはスルーしたくないw