[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2ch.scのread.cgiへ]
Update time : 12/28 20:22 / Filesize : 177 KB / Number-of Response : 736
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++ゲーム製作総合スレッド Part7



1 名前:名前は開発中のものです。 mailto:sage [2015/01/11(日) 10:19:31.85 ID:RDQlUyF+.net]
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その18
peace.2ch.net/test/read.cgi/gamedev/1399459468/

前スレ
C/C++ゲーム製作総合スレッド Part1
toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
toro.2ch.net/test/read.cgi/gamedev/1376262450/
C/C++ゲーム製作総合スレッド Part5
peace.2ch.net/test/read.cgi/gamedev/1389798031/
C/C++ゲーム製作総合スレッド Part6
peace.2ch.net/test/read.cgi/gamedev/1404815419/

242 名前:名前は開発中のものです。 mailto:sage [2015/02/02(月) 21:20:46.80 ID:lvNA0Ulc.net]
>>234
intで表現出来ない値をintへcastしたら桁あふれで未定義動作

243 名前:名前は開発中のものです。 mailto:sage [2015/02/02(月) 21:33:08.99 ID:MkYgWBqp.net]
>>235
未定義になる可能性のある演算は暗黙のキャストしてくれないって事?

244 名前:名前は開発中のものです。 mailto:sage [2015/02/02(月) 21:39:18.84 ID:lvNA0Ulc.net]
>>236
違う
intとunsigned intの演算結果はunsigned int
もちろんunsigned intはマイナスを表現出来ない、なので0-1uはUINT_MAXになる。(符号無し整数は桁あふれしても未定義動作ではない)
でも符号あり整数の桁あふれは未定義動作なのでUINT_MAXをintへキャストするのは未定義動作
まぁ大抵の処理系では動くだろうけど。

245 名前:名前は開発中のものです。 mailto:sage [2015/02/02(月) 21:57:25.95 ID:MkYgWBqp.net]
符合ありなしで演算すると符合なしになるのか
なるほどねー

246 名前:名前は開発中のものです。 mailto:sage [2015/02/02(月) 22:39:56.06 ID:4aJa1XJJ.net]
混ぜるな危険

247 名前:名前は開発中のものです。 mailto:sage [2015/02/02(月) 22:40:47.51 ID:AAW+YNQa.net]
>>239
いいねw

248 名前:名前は開発中のものです。 mailto:sage [2015/02/03(火) 00:10:07.19 ID:0Nhy8xyl.net]
これそもそも size_t が unsinged int なのが悪いんだよな、頭悪すぎ

249 名前:名前は開発中のものです。 mailto:sage [2015/02/03(火) 02:08:59.87 ID:YnXnr0TR.net]
size_tはsizeofで測ったデータの長さを受け取る物だからよ
データの長さに0未満はあり得ないから定義できないようにしてるんだろう

250 名前:名前は開発中のものです。 mailto:sage [2015/02/03(火) 04:00:41.53 ID:WscpFvcA.net]
質問です。
抽象クラス(親クラスとする)を継承した派生クラス(子クラスとする)を
親クラスの型のメンバー変数に子クラス型でnew()し、抽象化して保持してます。

このメンバーをdelete してすぐNULLを代入しても、参照が残ってるみたいで
エラーでる場合があります。

抽象化しているオブジェクトの削除の、お作法みたいなものってありますでしょうか。



251 名前:名前は開発中のものです。 mailto:sage [2015/02/03(火) 04:32:33.06 ID:UaiJdd2F.net]
>>243
スレ違いです
こちらへどうぞ
peace.2ch.net/test/read.cgi/tech/1420379468/

252 名前:名前は開発中のものです。 mailto:sage [2015/02/03(火) 04:40:14.90 ID:WscpFvcA.net]
>>244
ありがとうございます。

253 名前:名前は開発中のものです。 mailto:sage [2015/02/03(火) 13:03:57.60 ID:vrraL4+G.net]
スレはあってるけど板が違う的な。
まあ、ゲーム関係かどうかの境目って結構曖昧だけれども。

254 名前:名前は開発中のものです。 mailto:sage [2015/02/03(火) 13:07:01.87 ID:IeF+/7iv.net]
いずれにしろコードもなしに質問されてもエスパーしか回答出来ないですし

255 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 07:36:31.37 ID:gQYa1HB0.net]
開発期間が長すぎて、開発環境が何度も変わるのってどう思いますか?
開発環境を固定する?それともコードを書き直して対応する?

256 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 08:11:52.44 ID:6fCmneha.net]
boost辺りならまだしも、言語自体のバージョンが上がるまでって
一体どんだけ開発期間が長いか間が悪いんだよ…

どうしても使いたい追加要素でもなければ変えない トラブルの素

257 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 09:22:24.85 ID:JByM0e2E.net]
CSのSDKとかじゃないの?
開発序盤なら対応、終わりが見えてたらそのままってのが普通だと思うけど

258 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 10:05:22.41 ID:tVSHsnYT.net]
昔VS2008から2010に上げたけど特に問題は起きなかった

259 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 12:20:47.44 ID:qWgtWrzH.net]
vsの2005から2012に上げたら、Releaseでは動くけどdebugでは動かなくなった
自前で作ってた文字列クラスが弾かれたから、現在、std::wstringに置き換え中

260 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 17:18:01.03 ID:grWdPzSP.net]
>>248
何年にもわたって開発を続けていくようなものなら
あんまり気にせずに変えちゃう



261 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 19:05:51.48 ID:IWRqO40R.net]
iOS向けなら変えざるを得ない

262 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 19:45:56.22 ID:ckteJ+s1.net]
プロの人も来てるのかも知れないけど、同人ならぶっちゃけ
DirectX9辺りの技術基盤があれば十分じゃないの。

新技術に取り組むこと自体が目的化して、ゲームを完成させる方が
疎かになってしまうって、何かありがちな気がする。

263 名前:名前は開発中のものです。 mailto:sage [2015/02/05(木) 22:51:52.09 ID:EoFgZ44U.net]
別に必要ないなら使わなければいいんです、エロい人にはそれが分からんのです

264 名前:名前は開発中のものです。 mailto:sage [2015/02/06(金) 08:51:59.99 ID:J5odCBuG.net]
だまれ朝鮮人

265 名前:名前は開発中のものです。 mailto:sage [2015/02/06(金) 08:53:55.71 ID:u5/2KnVF.net]
idがバグ

266 名前:名前は開発中のものです。 mailto:sage [2015/02/06(金) 09:00:23.95 ID:12AknHRs.net]
>>255
DirectXがそもそも出来ない人が話に混じってるだけだから気にしない方が
DXライブラリ程度でいいんじゃないかな?同人なら
自作ライブラリ作れる人ですら少ないよ

267 名前:名前は開発中のものです。 mailto:sage [2015/02/06(金) 11:05:36.91 ID:vDg1pnk8.net]
面白けりゃ何でもいいんだよ。

268 名前:名前は開発中のものです。 mailto:sage [2015/02/06(金) 14:58:45.96 ID:1vhL8u+G.net]
もとの環境で大体完成していたのに、
無理やり次世代機用に作り直そうとしたがうまくいかず、
そのまま爆死した家庭用機向けソフトのプロジェクトなら知ってる

269 名前:名前は開発中のものです。 mailto:sage [2015/02/06(金) 17:34:24.75 ID:12AknHRs.net]
>>261
RomからCD-ROMへの移植は苦労が多かった
ROMの容量が4Mバイト超えてるとRAMご足りなくなって、動的に入れ換えしようとするとリソースのマネージメントが大変だったから

270 名前:名前は開発中のものです。 mailto:sage [2015/02/06(金) 22:49:06.68 ID:qIQhbqny.net]
しかもそれだけ苦労したにもかかわらず、ロードが遅いと文句言われたに違いない…。



271 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 13:13:21.00 ID:uCqCiOK0.net]
>>261
PS3だな そうに決まってる

272 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 13:42:24.95 ID:buz4BGGO.net]
>>252
置き換えたらさらに別の場所が動かなかったから2013へと移行したりw
いや、ネットでは動くコードと書かれているんだよ、2013からは動くと
うちのPCで2013はマトモに動くかな?今インストール中だが

273 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 14:45:09.34 ID:84N483gz.net]
ヘッダで前方宣言したはずのクラスがCandidates are: struct SimpleAudioEngineとエラーを出され
定義でreference to 'SimpleAudioEngine' is ambiguousとエラーを出されます
ヘッダではポインタしか使ってません
思うところがあるとすればSimpleAudioEngineの名前空間をusing namespaceしてるぐらいです

274 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 14:58:01.00 ID:tCXn ]
[ここ壊れてます]

275 名前:t3yJ.net mailto: >>266
http://melpon.org/wandbox/permlink/8WYv9UpPeF3DROcf
[]
[ここ壊れてます]

276 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 16:04:21.06 ID:ns5GMSPv.net]
異なる名前空間の中で前方宣言すると別物だとみなされて
あとでusing namespaceすると区別できない

277 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 19:26:49.25 ID:buz4BGGO.net]
開発環境をvs2012からvs2013に変更したのは大当たりだった
エラーの位置は分かりやすくなったし、デバッグ機能は大幅に強化されてるし、
文字列クラス(std::wstring)は扱いやすくなったし、全般的に軽くなった

278 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 20:51:50.60 ID:G8afa58Z.net]
std::wstringって何か変更あったっけ?

279 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 23:10:30.01 ID:buz4BGGO.net]
operaterがほとんど対応してなかったんだよ。
+=はあるのに+は無いとか、map<wstring,wstring>で使えないとか。

280 名前:名前は開発中のものです。 [2015/02/07(土) 23:18:38.16 ID:17zrnW4A.net]
ためしてないがそれはないだろ。
あとSTLやC標準ライブラリ、C++標準ライブラリは備え付けのを必ずしも使う必要がない。
実装は多数ある。



281 名前:名前は開発中のものです。 mailto:sage [2015/02/07(土) 23:55:35.77 ID:tCXnt3yJ.net]
たまたまインストールされてるのがVS2012だったから試してみたが普通に使えた

282 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 00:06:03.58 ID:uih1DHvo.net]
あれ?って事は、vs2005を後から入れたせいでおかしくなってるのか??

283 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 00:15:39.03 ID:uih1DHvo.net]
UMLのツールを買ってみて、たまたま家のVSで対応してるのが2005だけだったから、
後からインストールし直したんだよな

そっか、VS2005のコードでC++のコードが上書きされてたか

284 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 00:52:07.50 ID:iVwSBW/g.net]
とんでもない話だなw

285 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 01:13:03.19 ID:sR/2PkWV.net]
VC6でもoperator+位あったような気もするけど
不便な所は連続したメモリ領域の保証が無いから
実装上はともかく厳密にやろうとするとvectorじゃないとダメな所

286 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 09:15:03.02 ID:dvv+ci6w.net]
連続領域かどうかに関しては
- vector C++03/11 → 連続保証
- string C++03 → 実装依存 / C++11 → 連続保証
らしいぞ。 最近のVCなら大丈夫なんじゃないかな。

287 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 13:48:18.26 ID:vuQZMEzS.net]
連続性が保証されるようになっているとはな
外見は変わらなくても内部は少しづつ変わってるんだな

288 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 13:51:09.60 ID:iVwSBW/g.net]
地味ではあるが重要なことだな。

289 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 13:58:02.91 ID:uih1DHvo.net]
mallocのメモリ配置はOSで変わるんじゃなくてコンパイラで変わるみたいやね

290 名前:名前は開発中のものです。 mailto:sage [2015/02/08(日) 15:05:56.00 ID:OpMqb989.net]
依存するのはコンパイラじゃ無い
ランタイム依存



291 名前:名前は開発中のものです。 mailto:sage [2015/02/09(月) 20:39:13.54 ID:q5WWprzE.net]
なんにせよ、ポインタはむやみにいじらない方がよさそうね

292 名前:名前は開発中のものです。 mailto:sage [2015/02/10(火) 22:00:30.08 ID:Lg1oqTmd.net]
ポインタは使い勝手がわかると色々出来るが、無くても問題無くなってきてるからなぁ……

293 名前:名前は開発中のものです。 mailto:sage [2015/02/10(火) 23:49:52.25 ID:2hfNPcff.net]
それなりのもの作ろうとしたらアロケーター自作になるゲーム制作はポインタ必須なんじゃないの

294 名前:名前は開発中のものです。 mailto:sage [2015/02/10(火) 23:59:52.09 ID:m/pIKos0.net]
プラットホームによるとは思うが、いまだにカスタムアロケータなんて使うのか?
OSや言語処理系を書いているわけではないだろうに

295 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 00:01:51.67 ID:7TGiUCxx.net]
車輪の再発明が好きなんだろ

296 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 00:26:12.68 ID:IKslX+U4.net]
流石にOSデフォルトのアロケーターは使わないんじゃないの
ライブラリのメモリプール使うにしてもポインタは使うだろうし

297 名前:名前は開発中のものです。 [2015/02/11(水) 00:38:39.31 ID:5bVnp7SH.net]
アロケーターはC言語かSTLのやつのことだろ?
OS自体のメモリ管理はOS自体のソースからビルドしないと変更むりでは。

298 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 00:41:52.28 ID:IKslX+U4.net]
普通にnew、deleteしたらOSのAPIでメモリ確保

299 名前:するんでないの?
STLはどうかわからんけど
[]
[ここ壊れてます]

300 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 00:51:21.24 ID:rJC6nJDr.net]
>>289
mallocの置き換えぐらいリンクするライブラリー変えるだけだよ
tcmallocでググれ



301 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 00:52:08.05 ID:vZk9YDm5.net]
new deleteの動作なんて実装によるとしか言いようがない
STLのstd::allocator<T>の話なら、単にnewとdeleteを呼び出す実装になってる

302 名前:名前は開発中のものです。 [2015/02/11(水) 00:59:11.50 ID:5bVnp7SH.net]
mallocやnewを置き換えてもOSの命令を使ってたら
OS自体のメモリ管理の制約は受けるわけで。
OSと完全に独立できるものか?
OSが既に管理してるところを横取りしないとならないが。

303 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 01:01:23.93 ID:WPu+kv42.net]
ちょっと前に「ゲームの場合、出現オブジェクトの個数に上限を設けることが多いから
new deleteせず自分でプールを確保する手もある」という話をしなかったっけ。

とりあえずstd::allocator<T>で書いといて、あとでカスタム化してもよいのでは。

304 名前:名前は開発中のものです。 [2015/02/11(水) 01:03:22.28 ID:5bVnp7SH.net]
malloc - Wikipedia

OSのカーネルでもアプリケーションと同様にメモリ確保が必要である。
カーネル内にもmalloc相当の関数はあるが、その実装はCライブラリのものとは大きく異なる。
例えば、DMA用のバッファには特別な制限が課せられることがあるし、割り込み処理でメモリを動的に確保したい場合もある。
このため、カーネルの仮想記憶サブシステムと密に連携した malloc 実装が要求される。

305 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 01:04:29.98 ID:rJC6nJDr.net]
余程特殊な用途でないかぎり既成の物使った方が速いから

306 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 01:06:40.34 ID:IKslX+U4.net]
自作アロケーターは最初に領域確保してその分を切り盛りするでしょ
ていうかそれ以外の作り方を知らない

307 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 01:06:46.81 ID:rJC6nJDr.net]
>>295
スレ違い
お前はゲームをOSから作るんか?

308 名前:288 [2015/02/11(水) 01:16:23.87 ID:5bVnp7SH.net]
>>288に対して、自作アロケータ、マイアロケータってのは
ほとんどのケースで、OSデフォルト、カーネルアロケータに依存してるだろ?って反応なわけで。

309 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 01:32:15.63 ID:rJC6nJDr.net]
そうだな
>>288
が言ってるOSデフォルトってのが悪かった。
アプリケーションが使うメモリアロケーターの殆どの実装はライブラリが行ってる。
OSからシステムコールでブロック単位でメモリを貰いアプリケーション内で分配な。

310 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 01:41:17.25 ID:IKslX+U4.net]
すんませんVC++のメモリ確保がWin32APIの関数呼ぶだけって何かで見たからそういうもんだと思ってました



311 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 01:49:31.11 ID:tga+SBCo.net]
>>297
アプリケーションとしてのゲームはこれで確定だと思ってた
動的と言えば動的だけど都度都度確保はあり得ないって意味でこの手の話はスルーしてたけど、そう言うものでも無いみたいだと知ったわ
取れなかった場合の処理は思い付かないけど

312 名前:名前は開発中のものです。 [2015/02/11(水) 01:55:07.09 ID:5bVnp7SH.net]
ヒープ、動的確保は丸投げに近いが。普通のauto変数とかは最初に確保した領域を使いまわす。



メモリの4 領域
brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/img6.png
brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/node8.html

テキスト領域:機械語に翻訳されたプログラムが格納される. この機械語の命令が 1 行づつ実行されることでプログラムが動く。

静的領域:グローバル変数などの静的変数が置かれる。

ヒープ領域:メモリの動的管理 (C 言語の malloc 関数や C++ の new 演算子でメモリを確保すること) で用いられる。

スタック領域:今回の演習で扱ったように CPU のレジスタを一時的に退避させたり、また C 言語の自動変数 (

313 名前:多くのローカル変数) が置かれる。 []
[ここ壊れてます]

314 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 02:24:49.00 ID:COJ2IR9k.net]
いわゆるメモリープールのようなものは既にランタイムに実装されてる場合もあるし
自分で実装する・しないは実行環境によると思う。
最近はこの辺のことは既に当たり前になってるのかどうか知らないけど、
検索してもあまり引っかからないね。とりあえず引っかかったところ
vcpp-ml.ldblog.jp/archives/1169943.html
ではVCのランタイムのソースみればとなってるので
興味ある人は読んでみては。

315 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 02:41:42.58 ID:0cWu/C1d.net]
俺が昔作ったベンチ引っ張り出してきた
10000個確保して解放を1セットで、10回繰り返す

malloc 0.0104349686516726 100
new 0.0170437163409596 163.332702856062
tlsf 0.0327989992535455 314.318138831095

右側がmallocを100とした場合の倍率。意外とtlsfは遅い。
んで下が自作のメモリアロケータでnewとdeleteをオーバーロードしてて
上で使ったnewするソースをそのまま使ってる。

fixpool 0.01086365697986310 104.108189899754
fixpool-ss 0.00270476282206395 25.9201815774541

アルゴリズムは一回使ったものをリストにつなげておいて、newのとき取り出すだけ。
ssは上限が分かっている場合で、先にメモリ確保するのでmallocを上回れる。

まぁ、はっきり言って速度だけを考えると自作アロケータの必要はないかなレベル・・・と思う。
確か、スマートポインタのベンチもどっかにあったはずなんだが、どこだったか・・・

316 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 02:52:05.14 ID:IKslX+U4.net]
>>304
ゲームエンジン&#8226;アーキテクチャ(ソフトバンククリエイティブ)によれば、デフォルトのnewが遅い理由は管理コストとOSのコンテキストスイッチとあるけど
URL先の内容からすると最初に確保された分越えなければコンテキストスイッチは発生しないって事なんかな
ていうか2000年の時点でそういう仕様だったのか

317 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 02:52:16.60 ID:rJC6nJDr.net]
>>305
その自作アロケーターって複数スレッドから呼んでも大丈夫なように作ってんの?
だったらたいしたもの。

今時モバイルですらマルチスレッドが当たり前だからベンチマークも複数スレッドで実行すべき。
スレッド使うライブラリーをリンクしないとシングルスレッド版のmallocとリンクする環境もあるし

318 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 03:06:07.85 ID:rJC6nJDr.net]
>>306
ライブラリが貧弱な環境だと効果はあったんじゃない?
ライブラリが貧弱で有名だったPS3とか。
ゲームエンジン アーキテクチャって本PS専門デベロッパーだった人の著書みたいだし

319 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 03:24:52.81 ID:tga+SBCo.net]
>>307
データ読み込みや通信で「now loading…」、ムービー再生とか以外でマルチスレッドって何に使うの?
いろんな判定でシングルでないと困らない?
俺はコンシューマ長すぎのせいか、マルチスレッド(タイムスライス型)は、そもそもゲームシステムとして実装が思い付かない
どうしてもタスク()で疑似マルチしか作れないや

320 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 03:29:13.74 ID:0cWu/C1d.net]
>>307
ポインタのつなぎ替えの部分に一応クリティカルセクション使ってる。
が、これのベンチがねぇ・・・
複数スレッドで同時に確保しまくって人為的にコリジョン起こしても、
シングルの場合と違って純粋な値が取れないので。



321 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 03:54:41.50 ID:0cWu/C1d.net]
スマポあった。同じく10000を10回。

new 0.00696283003770957 100
sha

322 名前:red_ptr 0.039324851409757 564.782584046715

生ポインタとboostのshared_ptrね。
下が自作のリンク方式とカリカリにチューンした参照カウント方式のスマートポインタ。

link 0.0273835524999122 393.281932082318
count 0.0157994938635595 226.911956460117

これも、安全をとるなら生より多少遅くてもboostで十分と思う。
自作のスマポは労力の割にはねぇ。
[]
[ここ壊れてます]

323 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 04:10:32.63 ID:0cWu/C1d.net]
書き忘れてた。>>305はゲームに近いように
10000まで{ 4, 10, 20, 100, 208, 501 }のサイズを巡回して確保していってる。

>>311は同じオブジェクトをずーっと生成してる。
こうするとnewがなぜか結構速いんだけど、その状態で対決してみたかったので。

324 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 08:00:15.92 ID:JqfHYvpf.net]
んーなんか車輪の再発明がどんどん無駄になってくのな
必要な機能が既存のコードにあるなら、わざわざ作る必要は無い、みたいな

325 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 08:08:59.24 ID:JqfHYvpf.net]
自分は今は自作コンパクションを使ってるけど、これも誰かの作ったコードを流用した方が早い時代が来るのかな?

326 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 08:40:48.37 ID:45+5SbHz.net]
>>309
MTフレームワークの例
www.4gamer.net/specials/3de/lost_planet/lost_planet_04.shtml

327 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 13:02:10.23 ID:tga+SBCo.net]
>>315
これの詳細を知ってるが、レンダリングはPCだとGPU処理だから、マルチスレッドとは別で非同期でしょ?
それ以外は先程書いた通り
因みにこのフレームワークは自動変数(スタック)以外はメモリは静的に持ってるよ

328 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 13:10:49.29 ID:vZk9YDm5.net]
ガチな将棋AIとか作ることになったらやっぱりCPUスレッド数のスレッド作って読みを分散するんじゃなかろうか

329 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 13:40:34.62 ID:sOoti607.net]
どうせなら複数マシンに分散させるべき

330 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 14:57:37.67 ID:/JcbXeo3.net]
そもそもメモリ管理なんて個人でやるものじゃないよ
せいぜいオブジェクトプールのように局所的なところで使ったほうがいい
自作アロケータを使ってみたい気持ちはわかるんだけどねぇ



331 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 15:06:24.20 ID:rJC6nJDr.net]
>>309
シングルスレッドでパフォーマンス十分なら要らないんじゃない?
その場合アロケーター自作しようとする理由すら解らなくなるけど。

レンダリングスレッドを分けるってのは比較的簡単だからよく使われてる方法だね。
グラフィックスのAPIが全て非同期という訳でもないし、呼ぶ事自体比較的コストが高いものもあるドローコールとか
あとGPUが全てやってくれるわけでもない。
影とかモデルの持ってるマテリアルによってはマルチパスレンダリングが必要になるしね
それら含めて一つの独立したスレッドでレンダリングを行うって事
どこまでやるかはそれぞれのゲームエンジンの実装次第だけど

332 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 20:31:12.70 ID:IKslX+U4.net]
PS3なんかはは汎用コアが貧弱でマルチスレッド使わないとまともに動かないらしいけど
PCはターボブーストなんかもあるし処理分割しなくてもそれなりに動くのかね
ゲームで重い処理って言ったらAIとか物理演算とか?
それらやらなきゃコア使い切る事もなさそう

333 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 22:28:39.42 ID:o3rdwdSA.net]
自分の場合、(作ったのはC#とXNAだったけど)

・更新
非同期・4体のキャラの思考ルーチンをマルチスレッドで(他のキャラの状態は前フレームのものを利用)。
同期・同時に行う必要のある判定類。
非同期・4体のキャラのアニメーション演算(*)

・描画(スキップされることがある)
非同期・キャラの描画コマンド発行(ただし、4体それぞれに(*)を同期)。(**)
同期
非同期・背景などの描画。

・更新
※未了のタスクがあればいったん待機して、最初と同じ。

ということはやっていた。じつはXNAは(**)が異様に重くなるというハンデ持ちで、
(*)はC++だろうと当然重いはずだから、パフォーマンス上がると思うよ。

334 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 22:33:55.73 ID:o3rdwdSA.net]
連投悪い。

というか、マルチコアのCPUなのにシングルで動作させてるって、同人ならともかく
商用ゲームだとハードを全然使いこなせていないんじゃないの。

仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。

335 名前:名前は開発中のものです。 mailto:sage [2015/02/11(水) 23:00:37.92 ID:DLujIAOi.net]
妖精左「マルチスレッド!!」
妖精右「マルチタスク!!」
俺「じっそうできればいいから・・・」
部長「ま だ か は や く し ろ 。」

336 名前:名前は開発中のものです。 mailto:sage [2015/02/12(木) 00:02:20.82 ID:ebWGGwik.net]
>>323
C#なんて全然ハード生かせないだろC++で作れよ

337 名前:名前は開発中のものです。 mailto:sage [2015/02/12(木) 00:29:15.74 ID:DJBGtoR8.net]
C++至上主義の時代はもう終わった

338 名前:名前は開発中のものです。 mailto:sage [2015/02/12(木) 00:32:29.34 ID:UV0J6V6h.net]
まだだ!まだ終わらんよ!

339 名前:名前は開発中のものです。 mailto:sage [2015/02/12(木) 02:23:42.32 ID:U9NT4imE.net]
さっき始まったばかりですよ

340 名前:名前は開発中のものです。 mailto:sage [2015/02/12(木) 02:30:04.64 ID:rNOcVIpi.net]
>>323
たしかにC#だと、ネイティヴDirectX呼び出す時点でカーネル切替が発生し、ボトルネックになる
(ただ一方、GCはちょっと工夫すればシーン切替時以外は抑制できる)。

まあC++が最強という事実は揺るがないし、だからここを覗きに来てるんだけど
今まで作った資産をそっくり移植するのは全部1人開発だと工数的に厳し過ぎるんよ。
自分はあくまでゲームを完成させるのが主眼なもんで。



341 名前:名前は開発中のものです。 mailto:sage [2015/02/12(木) 02:30:45.99 ID:rNOcVIpi.net]
>>325だった。

342 名前:名前は開発中のものです。 mailto:sage [2015/02/12(木) 09:37:50.92 ID:ebWGGwik.net]
>>329
> 仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
> それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
> もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。

こんなこと言う人間が

> 自分はあくまでゲームを完成させるのが主眼なもんで。

なんてよく言えるな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<177KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef