ゲーム製作におけるC/C++全般に関するスレです。
元スレ
DXライブラリ 総合スレッド その18
http://peace.2ch.net/test/read.cgi/gamedev/1399459468/
前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
http://toro.2ch.net/test/read.cgi/gamedev/1376262450/
C/C++ゲーム製作総合スレッド Part5
http://peace.2ch.net/test/read.cgi/gamedev/1389798031/
C/C++ゲーム製作総合スレッド Part6
http://peace.2ch.net/test/read.cgi/gamedev/1404815419/
C/C++ゲーム製作総合スレッド Part7 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2015/01/11(日) 10:19:31.85ID:RDQlUyF+
242名前は開発中のものです。
2015/02/03(火) 04:00:41.53ID:WscpFvcA 質問です。
抽象クラス(親クラスとする)を継承した派生クラス(子クラスとする)を
親クラスの型のメンバー変数に子クラス型でnew()し、抽象化して保持してます。
このメンバーをdelete してすぐNULLを代入しても、参照が残ってるみたいで
エラーでる場合があります。
抽象化しているオブジェクトの削除の、お作法みたいなものってありますでしょうか。
抽象クラス(親クラスとする)を継承した派生クラス(子クラスとする)を
親クラスの型のメンバー変数に子クラス型でnew()し、抽象化して保持してます。
このメンバーをdelete してすぐNULLを代入しても、参照が残ってるみたいで
エラーでる場合があります。
抽象化しているオブジェクトの削除の、お作法みたいなものってありますでしょうか。
243名前は開発中のものです。
2015/02/03(火) 04:32:33.06ID:UaiJdd2F244名前は開発中のものです。
2015/02/03(火) 04:40:14.90ID:WscpFvcA >>243
ありがとうございます。
ありがとうございます。
245名前は開発中のものです。
2015/02/03(火) 13:03:57.60ID:vrraL4+G スレはあってるけど板が違う的な。
まあ、ゲーム関係かどうかの境目って結構曖昧だけれども。
まあ、ゲーム関係かどうかの境目って結構曖昧だけれども。
246名前は開発中のものです。
2015/02/03(火) 13:07:01.87ID:IeF+/7iv いずれにしろコードもなしに質問されてもエスパーしか回答出来ないですし
247名前は開発中のものです。
2015/02/05(木) 07:36:31.37ID:gQYa1HB0 開発期間が長すぎて、開発環境が何度も変わるのってどう思いますか?
開発環境を固定する?それともコードを書き直して対応する?
開発環境を固定する?それともコードを書き直して対応する?
248名前は開発中のものです。
2015/02/05(木) 08:11:52.44ID:6fCmneha boost辺りならまだしも、言語自体のバージョンが上がるまでって
一体どんだけ開発期間が長いか間が悪いんだよ…
どうしても使いたい追加要素でもなければ変えない トラブルの素
一体どんだけ開発期間が長いか間が悪いんだよ…
どうしても使いたい追加要素でもなければ変えない トラブルの素
249名前は開発中のものです。
2015/02/05(木) 09:22:24.85ID:JByM0e2E CSのSDKとかじゃないの?
開発序盤なら対応、終わりが見えてたらそのままってのが普通だと思うけど
開発序盤なら対応、終わりが見えてたらそのままってのが普通だと思うけど
250名前は開発中のものです。
2015/02/05(木) 10:05:22.41ID:tVSHsnYT 昔VS2008から2010に上げたけど特に問題は起きなかった
251名前は開発中のものです。
2015/02/05(木) 12:20:47.44ID:qWgtWrzH vsの2005から2012に上げたら、Releaseでは動くけどdebugでは動かなくなった
自前で作ってた文字列クラスが弾かれたから、現在、std::wstringに置き換え中
自前で作ってた文字列クラスが弾かれたから、現在、std::wstringに置き換え中
252名前は開発中のものです。
2015/02/05(木) 17:18:01.03ID:grWdPzSP253名前は開発中のものです。
2015/02/05(木) 19:05:51.48ID:IWRqO40R iOS向けなら変えざるを得ない
254名前は開発中のものです。
2015/02/05(木) 19:45:56.22ID:ckteJ+s1 プロの人も来てるのかも知れないけど、同人ならぶっちゃけ
DirectX9辺りの技術基盤があれば十分じゃないの。
新技術に取り組むこと自体が目的化して、ゲームを完成させる方が
疎かになってしまうって、何かありがちな気がする。
DirectX9辺りの技術基盤があれば十分じゃないの。
新技術に取り組むこと自体が目的化して、ゲームを完成させる方が
疎かになってしまうって、何かありがちな気がする。
255名前は開発中のものです。
2015/02/05(木) 22:51:52.09ID:EoFgZ44U 別に必要ないなら使わなければいいんです、エロい人にはそれが分からんのです
256名前は開発中のものです。
2015/02/06(金) 08:51:59.99ID:J5odCBuG だまれ朝鮮人
257名前は開発中のものです。
2015/02/06(金) 08:53:55.71ID:u5/2KnVF idがバグ
258名前は開発中のものです。
2015/02/06(金) 09:00:23.95ID:12AknHRs259名前は開発中のものです。
2015/02/06(金) 11:05:36.91ID:vDg1pnk8 面白けりゃ何でもいいんだよ。
260名前は開発中のものです。
2015/02/06(金) 14:58:45.96ID:1vhL8u+G もとの環境で大体完成していたのに、
無理やり次世代機用に作り直そうとしたがうまくいかず、
そのまま爆死した家庭用機向けソフトのプロジェクトなら知ってる
無理やり次世代機用に作り直そうとしたがうまくいかず、
そのまま爆死した家庭用機向けソフトのプロジェクトなら知ってる
261名前は開発中のものです。
2015/02/06(金) 17:34:24.75ID:12AknHRs262名前は開発中のものです。
2015/02/06(金) 22:49:06.68ID:qIQhbqny しかもそれだけ苦労したにもかかわらず、ロードが遅いと文句言われたに違いない…。
263名前は開発中のものです。
2015/02/07(土) 13:13:21.00ID:uCqCiOK0 >>260
PS3だな そうに決まってる
PS3だな そうに決まってる
264名前は開発中のものです。
2015/02/07(土) 13:42:24.95ID:buz4BGGO >>251
置き換えたらさらに別の場所が動かなかったから2013へと移行したりw
いや、ネットでは動くコードと書かれているんだよ、2013からは動くと
うちのPCで2013はマトモに動くかな?今インストール中だが
置き換えたらさらに別の場所が動かなかったから2013へと移行したりw
いや、ネットでは動くコードと書かれているんだよ、2013からは動くと
うちのPCで2013はマトモに動くかな?今インストール中だが
265名前は開発中のものです。
2015/02/07(土) 14:45:09.34ID:84N483gz ヘッダで前方宣言したはずのクラスがCandidates are: struct SimpleAudioEngineとエラーを出され
定義でreference to 'SimpleAudioEngine' is ambiguousとエラーを出されます
ヘッダではポインタしか使ってません
思うところがあるとすればSimpleAudioEngineの名前空間をusing namespaceしてるぐらいです
定義でreference to 'SimpleAudioEngine' is ambiguousとエラーを出されます
ヘッダではポインタしか使ってません
思うところがあるとすればSimpleAudioEngineの名前空間をusing namespaceしてるぐらいです
266名前は開発中のものです。
2015/02/07(土) 14:58:01.00ID:tCXnt3yJ267名前は開発中のものです。
2015/02/07(土) 16:04:21.06ID:ns5GMSPv 異なる名前空間の中で前方宣言すると別物だとみなされて
あとでusing namespaceすると区別できない
あとでusing namespaceすると区別できない
268名前は開発中のものです。
2015/02/07(土) 19:26:49.25ID:buz4BGGO 開発環境をvs2012からvs2013に変更したのは大当たりだった
エラーの位置は分かりやすくなったし、デバッグ機能は大幅に強化されてるし、
文字列クラス(std::wstring)は扱いやすくなったし、全般的に軽くなった
エラーの位置は分かりやすくなったし、デバッグ機能は大幅に強化されてるし、
文字列クラス(std::wstring)は扱いやすくなったし、全般的に軽くなった
269名前は開発中のものです。
2015/02/07(土) 20:51:50.60ID:G8afa58Z std::wstringって何か変更あったっけ?
270名前は開発中のものです。
2015/02/07(土) 23:10:30.01ID:buz4BGGO operaterがほとんど対応してなかったんだよ。
+=はあるのに+は無いとか、map<wstring,wstring>で使えないとか。
+=はあるのに+は無いとか、map<wstring,wstring>で使えないとか。
271名前は開発中のものです。
2015/02/07(土) 23:18:38.16ID:17zrnW4A ためしてないがそれはないだろ。
あとSTLやC標準ライブラリ、C++標準ライブラリは備え付けのを必ずしも使う必要がない。
実装は多数ある。
あとSTLやC標準ライブラリ、C++標準ライブラリは備え付けのを必ずしも使う必要がない。
実装は多数ある。
272名前は開発中のものです。
2015/02/07(土) 23:55:35.77ID:tCXnt3yJ たまたまインストールされてるのがVS2012だったから試してみたが普通に使えた
273名前は開発中のものです。
2015/02/08(日) 00:06:03.58ID:uih1DHvo あれ?って事は、vs2005を後から入れたせいでおかしくなってるのか??
274名前は開発中のものです。
2015/02/08(日) 00:15:39.03ID:uih1DHvo UMLのツールを買ってみて、たまたま家のVSで対応してるのが2005だけだったから、
後からインストールし直したんだよな
そっか、VS2005のコードでC++のコードが上書きされてたか
後からインストールし直したんだよな
そっか、VS2005のコードでC++のコードが上書きされてたか
275名前は開発中のものです。
2015/02/08(日) 00:52:07.50ID:iVwSBW/g とんでもない話だなw
276名前は開発中のものです。
2015/02/08(日) 01:13:03.19ID:sR/2PkWV VC6でもoperator+位あったような気もするけど
不便な所は連続したメモリ領域の保証が無いから
実装上はともかく厳密にやろうとするとvectorじゃないとダメな所
不便な所は連続したメモリ領域の保証が無いから
実装上はともかく厳密にやろうとするとvectorじゃないとダメな所
277名前は開発中のものです。
2015/02/08(日) 09:15:03.02ID:dvv+ci6w 連続領域かどうかに関しては
- vector C++03/11 → 連続保証
- string C++03 → 実装依存 / C++11 → 連続保証
らしいぞ。 最近のVCなら大丈夫なんじゃないかな。
- vector C++03/11 → 連続保証
- string C++03 → 実装依存 / C++11 → 連続保証
らしいぞ。 最近のVCなら大丈夫なんじゃないかな。
278名前は開発中のものです。
2015/02/08(日) 13:48:18.26ID:vuQZMEzS 連続性が保証されるようになっているとはな
外見は変わらなくても内部は少しづつ変わってるんだな
外見は変わらなくても内部は少しづつ変わってるんだな
279名前は開発中のものです。
2015/02/08(日) 13:51:09.60ID:iVwSBW/g 地味ではあるが重要なことだな。
280名前は開発中のものです。
2015/02/08(日) 13:58:02.91ID:uih1DHvo mallocのメモリ配置はOSで変わるんじゃなくてコンパイラで変わるみたいやね
281名前は開発中のものです。
2015/02/08(日) 15:05:56.00ID:OpMqb989 依存するのはコンパイラじゃ無い
ランタイム依存
ランタイム依存
282名前は開発中のものです。
2015/02/09(月) 20:39:13.54ID:q5WWprzE なんにせよ、ポインタはむやみにいじらない方がよさそうね
283名前は開発中のものです。
2015/02/10(火) 22:00:30.08ID:Lg1oqTmd ポインタは使い勝手がわかると色々出来るが、無くても問題無くなってきてるからなぁ……
284名前は開発中のものです。
2015/02/10(火) 23:49:52.25ID:2hfNPcff それなりのもの作ろうとしたらアロケーター自作になるゲーム制作はポインタ必須なんじゃないの
285名前は開発中のものです。
2015/02/10(火) 23:59:52.09ID:m/pIKos0 プラットホームによるとは思うが、いまだにカスタムアロケータなんて使うのか?
OSや言語処理系を書いているわけではないだろうに
OSや言語処理系を書いているわけではないだろうに
286名前は開発中のものです。
2015/02/11(水) 00:01:51.67ID:7TGiUCxx 車輪の再発明が好きなんだろ
287名前は開発中のものです。
2015/02/11(水) 00:26:12.68ID:IKslX+U4 流石にOSデフォルトのアロケーターは使わないんじゃないの
ライブラリのメモリプール使うにしてもポインタは使うだろうし
ライブラリのメモリプール使うにしてもポインタは使うだろうし
288名前は開発中のものです。
2015/02/11(水) 00:38:39.31ID:5bVnp7SH アロケーターはC言語かSTLのやつのことだろ?
OS自体のメモリ管理はOS自体のソースからビルドしないと変更むりでは。
OS自体のメモリ管理はOS自体のソースからビルドしないと変更むりでは。
289名前は開発中のものです。
2015/02/11(水) 00:41:52.28ID:IKslX+U4 普通にnew、deleteしたらOSのAPIでメモリ確保するんでないの?
STLはどうかわからんけど
STLはどうかわからんけど
290名前は開発中のものです。
2015/02/11(水) 00:51:21.24ID:rJC6nJDr291名前は開発中のものです。
2015/02/11(水) 00:52:08.05ID:vZk9YDm5 new deleteの動作なんて実装によるとしか言いようがない
STLのstd::allocator<T>の話なら、単にnewとdeleteを呼び出す実装になってる
STLのstd::allocator<T>の話なら、単にnewとdeleteを呼び出す実装になってる
292名前は開発中のものです。
2015/02/11(水) 00:59:11.50ID:5bVnp7SH mallocやnewを置き換えてもOSの命令を使ってたら
OS自体のメモリ管理の制約は受けるわけで。
OSと完全に独立できるものか?
OSが既に管理してるところを横取りしないとならないが。
OS自体のメモリ管理の制約は受けるわけで。
OSと完全に独立できるものか?
OSが既に管理してるところを横取りしないとならないが。
293名前は開発中のものです。
2015/02/11(水) 01:01:23.93ID:WPu+kv42 ちょっと前に「ゲームの場合、出現オブジェクトの個数に上限を設けることが多いから
new deleteせず自分でプールを確保する手もある」という話をしなかったっけ。
とりあえずstd::allocator<T>で書いといて、あとでカスタム化してもよいのでは。
new deleteせず自分でプールを確保する手もある」という話をしなかったっけ。
とりあえずstd::allocator<T>で書いといて、あとでカスタム化してもよいのでは。
294名前は開発中のものです。
2015/02/11(水) 01:03:22.28ID:5bVnp7SH malloc - Wikipedia
OSのカーネルでもアプリケーションと同様にメモリ確保が必要である。
カーネル内にもmalloc相当の関数はあるが、その実装はCライブラリのものとは大きく異なる。
例えば、DMA用のバッファには特別な制限が課せられることがあるし、割り込み処理でメモリを動的に確保したい場合もある。
このため、カーネルの仮想記憶サブシステムと密に連携した malloc 実装が要求される。
OSのカーネルでもアプリケーションと同様にメモリ確保が必要である。
カーネル内にもmalloc相当の関数はあるが、その実装はCライブラリのものとは大きく異なる。
例えば、DMA用のバッファには特別な制限が課せられることがあるし、割り込み処理でメモリを動的に確保したい場合もある。
このため、カーネルの仮想記憶サブシステムと密に連携した malloc 実装が要求される。
295名前は開発中のものです。
2015/02/11(水) 01:04:29.98ID:rJC6nJDr 余程特殊な用途でないかぎり既成の物使った方が速いから
296名前は開発中のものです。
2015/02/11(水) 01:06:40.34ID:IKslX+U4 自作アロケーターは最初に領域確保してその分を切り盛りするでしょ
ていうかそれ以外の作り方を知らない
ていうかそれ以外の作り方を知らない
297名前は開発中のものです。
2015/02/11(水) 01:06:46.81ID:rJC6nJDr298288
2015/02/11(水) 01:16:23.87ID:5bVnp7SH >>287に対して、自作アロケータ、マイアロケータってのは
ほとんどのケースで、OSデフォルト、カーネルアロケータに依存してるだろ?って反応なわけで。
ほとんどのケースで、OSデフォルト、カーネルアロケータに依存してるだろ?って反応なわけで。
299名前は開発中のものです。
2015/02/11(水) 01:32:15.63ID:rJC6nJDr そうだな
>>287
が言ってるOSデフォルトってのが悪かった。
アプリケーションが使うメモリアロケーターの殆どの実装はライブラリが行ってる。
OSからシステムコールでブロック単位でメモリを貰いアプリケーション内で分配な。
>>287
が言ってるOSデフォルトってのが悪かった。
アプリケーションが使うメモリアロケーターの殆どの実装はライブラリが行ってる。
OSからシステムコールでブロック単位でメモリを貰いアプリケーション内で分配な。
300名前は開発中のものです。
2015/02/11(水) 01:41:17.25ID:IKslX+U4 すんませんVC++のメモリ確保がWin32APIの関数呼ぶだけって何かで見たからそういうもんだと思ってました
301名前は開発中のものです。
2015/02/11(水) 01:49:31.11ID:tga+SBCo >>296
アプリケーションとしてのゲームはこれで確定だと思ってた
動的と言えば動的だけど都度都度確保はあり得ないって意味でこの手の話はスルーしてたけど、そう言うものでも無いみたいだと知ったわ
取れなかった場合の処理は思い付かないけど
アプリケーションとしてのゲームはこれで確定だと思ってた
動的と言えば動的だけど都度都度確保はあり得ないって意味でこの手の話はスルーしてたけど、そう言うものでも無いみたいだと知ったわ
取れなかった場合の処理は思い付かないけど
302名前は開発中のものです。
2015/02/11(水) 01:55:07.09ID:5bVnp7SH ヒープ、動的確保は丸投げに近いが。普通のauto変数とかは最初に確保した領域を使いまわす。
メモリの4 領域
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/img6.png
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/node8.html
テキスト領域:機械語に翻訳されたプログラムが格納される. この機械語の命令が 1 行づつ実行されることでプログラムが動く。
静的領域:グローバル変数などの静的変数が置かれる。
ヒープ領域:メモリの動的管理 (C 言語の malloc 関数や C++ の new 演算子でメモリを確保すること) で用いられる。
スタック領域:今回の演習で扱ったように CPU のレジスタを一時的に退避させたり、また C 言語の自動変数 (多くのローカル変数) が置かれる。
メモリの4 領域
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/img6.png
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/MP/final/part06/node8.html
テキスト領域:機械語に翻訳されたプログラムが格納される. この機械語の命令が 1 行づつ実行されることでプログラムが動く。
静的領域:グローバル変数などの静的変数が置かれる。
ヒープ領域:メモリの動的管理 (C 言語の malloc 関数や C++ の new 演算子でメモリを確保すること) で用いられる。
スタック領域:今回の演習で扱ったように CPU のレジスタを一時的に退避させたり、また C 言語の自動変数 (多くのローカル変数) が置かれる。
303名前は開発中のものです。
2015/02/11(水) 02:24:49.00ID:COJ2IR9k いわゆるメモリープールのようなものは既にランタイムに実装されてる場合もあるし
自分で実装する・しないは実行環境によると思う。
最近はこの辺のことは既に当たり前になってるのかどうか知らないけど、
検索してもあまり引っかからないね。とりあえず引っかかったところ
http://vcpp-ml.ldblog.jp/archives/1169943.html
ではVCのランタイムのソースみればとなってるので
興味ある人は読んでみては。
自分で実装する・しないは実行環境によると思う。
最近はこの辺のことは既に当たり前になってるのかどうか知らないけど、
検索してもあまり引っかからないね。とりあえず引っかかったところ
http://vcpp-ml.ldblog.jp/archives/1169943.html
ではVCのランタイムのソースみればとなってるので
興味ある人は読んでみては。
304名前は開発中のものです。
2015/02/11(水) 02:41:42.58ID:0cWu/C1d 俺が昔作ったベンチ引っ張り出してきた
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を上回れる。
まぁ、はっきり言って速度だけを考えると自作アロケータの必要はないかなレベル・・・と思う。
確か、スマートポインタのベンチもどっかにあったはずなんだが、どこだったか・・・
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を上回れる。
まぁ、はっきり言って速度だけを考えると自作アロケータの必要はないかなレベル・・・と思う。
確か、スマートポインタのベンチもどっかにあったはずなんだが、どこだったか・・・
305名前は開発中のものです。
2015/02/11(水) 02:52:05.14ID:IKslX+U4 >>303
ゲームエンジン•アーキテクチャ(ソフトバンククリエイティブ)によれば、デフォルトのnewが遅い理由は管理コストとOSのコンテキストスイッチとあるけど
URL先の内容からすると最初に確保された分越えなければコンテキストスイッチは発生しないって事なんかな
ていうか2000年の時点でそういう仕様だったのか
ゲームエンジン•アーキテクチャ(ソフトバンククリエイティブ)によれば、デフォルトのnewが遅い理由は管理コストとOSのコンテキストスイッチとあるけど
URL先の内容からすると最初に確保された分越えなければコンテキストスイッチは発生しないって事なんかな
ていうか2000年の時点でそういう仕様だったのか
306名前は開発中のものです。
2015/02/11(水) 02:52:16.60ID:rJC6nJDr >>304
その自作アロケーターって複数スレッドから呼んでも大丈夫なように作ってんの?
だったらたいしたもの。
今時モバイルですらマルチスレッドが当たり前だからベンチマークも複数スレッドで実行すべき。
スレッド使うライブラリーをリンクしないとシングルスレッド版のmallocとリンクする環境もあるし
その自作アロケーターって複数スレッドから呼んでも大丈夫なように作ってんの?
だったらたいしたもの。
今時モバイルですらマルチスレッドが当たり前だからベンチマークも複数スレッドで実行すべき。
スレッド使うライブラリーをリンクしないとシングルスレッド版のmallocとリンクする環境もあるし
307名前は開発中のものです。
2015/02/11(水) 03:06:07.85ID:rJC6nJDr308名前は開発中のものです。
2015/02/11(水) 03:24:52.81ID:tga+SBCo >>306
データ読み込みや通信で「now loading…」、ムービー再生とか以外でマルチスレッドって何に使うの?
いろんな判定でシングルでないと困らない?
俺はコンシューマ長すぎのせいか、マルチスレッド(タイムスライス型)は、そもそもゲームシステムとして実装が思い付かない
どうしてもタスク()で疑似マルチしか作れないや
データ読み込みや通信で「now loading…」、ムービー再生とか以外でマルチスレッドって何に使うの?
いろんな判定でシングルでないと困らない?
俺はコンシューマ長すぎのせいか、マルチスレッド(タイムスライス型)は、そもそもゲームシステムとして実装が思い付かない
どうしてもタスク()で疑似マルチしか作れないや
309名前は開発中のものです。
2015/02/11(水) 03:29:13.74ID:0cWu/C1d >>306
ポインタのつなぎ替えの部分に一応クリティカルセクション使ってる。
が、これのベンチがねぇ・・・
複数スレッドで同時に確保しまくって人為的にコリジョン起こしても、
シングルの場合と違って純粋な値が取れないので。
ポインタのつなぎ替えの部分に一応クリティカルセクション使ってる。
が、これのベンチがねぇ・・・
複数スレッドで同時に確保しまくって人為的にコリジョン起こしても、
シングルの場合と違って純粋な値が取れないので。
310名前は開発中のものです。
2015/02/11(水) 03:54:41.50ID:0cWu/C1d スマポあった。同じく10000を10回。
new 0.00696283003770957 100
shared_ptr 0.039324851409757 564.782584046715
生ポインタとboostのshared_ptrね。
下が自作のリンク方式とカリカリにチューンした参照カウント方式のスマートポインタ。
link 0.0273835524999122 393.281932082318
count 0.0157994938635595 226.911956460117
これも、安全をとるなら生より多少遅くてもboostで十分と思う。
自作のスマポは労力の割にはねぇ。
new 0.00696283003770957 100
shared_ptr 0.039324851409757 564.782584046715
生ポインタとboostのshared_ptrね。
下が自作のリンク方式とカリカリにチューンした参照カウント方式のスマートポインタ。
link 0.0273835524999122 393.281932082318
count 0.0157994938635595 226.911956460117
これも、安全をとるなら生より多少遅くてもboostで十分と思う。
自作のスマポは労力の割にはねぇ。
311名前は開発中のものです。
2015/02/11(水) 04:10:32.63ID:0cWu/C1d312名前は開発中のものです。
2015/02/11(水) 08:00:15.92ID:JqfHYvpf んーなんか車輪の再発明がどんどん無駄になってくのな
必要な機能が既存のコードにあるなら、わざわざ作る必要は無い、みたいな
必要な機能が既存のコードにあるなら、わざわざ作る必要は無い、みたいな
313名前は開発中のものです。
2015/02/11(水) 08:08:59.24ID:JqfHYvpf 自分は今は自作コンパクションを使ってるけど、これも誰かの作ったコードを流用した方が早い時代が来るのかな?
314名前は開発中のものです。
2015/02/11(水) 08:40:48.37ID:45+5SbHz315名前は開発中のものです。
2015/02/11(水) 13:02:10.23ID:tga+SBCo >>314
これの詳細を知ってるが、レンダリングはPCだとGPU処理だから、マルチスレッドとは別で非同期でしょ?
それ以外は先程書いた通り
因みにこのフレームワークは自動変数(スタック)以外はメモリは静的に持ってるよ
これの詳細を知ってるが、レンダリングはPCだとGPU処理だから、マルチスレッドとは別で非同期でしょ?
それ以外は先程書いた通り
因みにこのフレームワークは自動変数(スタック)以外はメモリは静的に持ってるよ
316名前は開発中のものです。
2015/02/11(水) 13:10:49.29ID:vZk9YDm5 ガチな将棋AIとか作ることになったらやっぱりCPUスレッド数のスレッド作って読みを分散するんじゃなかろうか
317名前は開発中のものです。
2015/02/11(水) 13:40:34.62ID:sOoti607 どうせなら複数マシンに分散させるべき
318名前は開発中のものです。
2015/02/11(水) 14:57:37.67ID:/JcbXeo3 そもそもメモリ管理なんて個人でやるものじゃないよ
せいぜいオブジェクトプールのように局所的なところで使ったほうがいい
自作アロケータを使ってみたい気持ちはわかるんだけどねぇ
せいぜいオブジェクトプールのように局所的なところで使ったほうがいい
自作アロケータを使ってみたい気持ちはわかるんだけどねぇ
319名前は開発中のものです。
2015/02/11(水) 15:06:24.20ID:rJC6nJDr >>308
シングルスレッドでパフォーマンス十分なら要らないんじゃない?
その場合アロケーター自作しようとする理由すら解らなくなるけど。
レンダリングスレッドを分けるってのは比較的簡単だからよく使われてる方法だね。
グラフィックスのAPIが全て非同期という訳でもないし、呼ぶ事自体比較的コストが高いものもあるドローコールとか
あとGPUが全てやってくれるわけでもない。
影とかモデルの持ってるマテリアルによってはマルチパスレンダリングが必要になるしね
それら含めて一つの独立したスレッドでレンダリングを行うって事
どこまでやるかはそれぞれのゲームエンジンの実装次第だけど
シングルスレッドでパフォーマンス十分なら要らないんじゃない?
その場合アロケーター自作しようとする理由すら解らなくなるけど。
レンダリングスレッドを分けるってのは比較的簡単だからよく使われてる方法だね。
グラフィックスのAPIが全て非同期という訳でもないし、呼ぶ事自体比較的コストが高いものもあるドローコールとか
あとGPUが全てやってくれるわけでもない。
影とかモデルの持ってるマテリアルによってはマルチパスレンダリングが必要になるしね
それら含めて一つの独立したスレッドでレンダリングを行うって事
どこまでやるかはそれぞれのゲームエンジンの実装次第だけど
320名前は開発中のものです。
2015/02/11(水) 20:31:12.70ID:IKslX+U4 PS3なんかはは汎用コアが貧弱でマルチスレッド使わないとまともに動かないらしいけど
PCはターボブーストなんかもあるし処理分割しなくてもそれなりに動くのかね
ゲームで重い処理って言ったらAIとか物理演算とか?
それらやらなきゃコア使い切る事もなさそう
PCはターボブーストなんかもあるし処理分割しなくてもそれなりに動くのかね
ゲームで重い処理って言ったらAIとか物理演算とか?
それらやらなきゃコア使い切る事もなさそう
321名前は開発中のものです。
2015/02/11(水) 22:28:39.42ID:o3rdwdSA 自分の場合、(作ったのはC#とXNAだったけど)
・更新
非同期・4体のキャラの思考ルーチンをマルチスレッドで(他のキャラの状態は前フレームのものを利用)。
同期・同時に行う必要のある判定類。
非同期・4体のキャラのアニメーション演算(*)
↓
・描画(スキップされることがある)
非同期・キャラの描画コマンド発行(ただし、4体それぞれに(*)を同期)。(**)
同期
非同期・背景などの描画。
↓
・更新
※未了のタスクがあればいったん待機して、最初と同じ。
ということはやっていた。じつはXNAは(**)が異様に重くなるというハンデ持ちで、
(*)はC++だろうと当然重いはずだから、パフォーマンス上がると思うよ。
・更新
非同期・4体のキャラの思考ルーチンをマルチスレッドで(他のキャラの状態は前フレームのものを利用)。
同期・同時に行う必要のある判定類。
非同期・4体のキャラのアニメーション演算(*)
↓
・描画(スキップされることがある)
非同期・キャラの描画コマンド発行(ただし、4体それぞれに(*)を同期)。(**)
同期
非同期・背景などの描画。
↓
・更新
※未了のタスクがあればいったん待機して、最初と同じ。
ということはやっていた。じつはXNAは(**)が異様に重くなるというハンデ持ちで、
(*)はC++だろうと当然重いはずだから、パフォーマンス上がると思うよ。
322名前は開発中のものです。
2015/02/11(水) 22:33:55.73ID:o3rdwdSA 連投悪い。
というか、マルチコアのCPUなのにシングルで動作させてるって、同人ならともかく
商用ゲームだとハードを全然使いこなせていないんじゃないの。
仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。
というか、マルチコアのCPUなのにシングルで動作させてるって、同人ならともかく
商用ゲームだとハードを全然使いこなせていないんじゃないの。
仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。
323名前は開発中のものです。
2015/02/11(水) 23:00:37.92ID:DLujIAOi 妖精左「マルチスレッド!!」
妖精右「マルチタスク!!」
俺「じっそうできればいいから・・・」
部長「ま だ か は や く し ろ 。」
妖精右「マルチタスク!!」
俺「じっそうできればいいから・・・」
部長「ま だ か は や く し ろ 。」
324名前は開発中のものです。
2015/02/12(木) 00:02:20.82ID:ebWGGwik >>322
C#なんて全然ハード生かせないだろC++で作れよ
C#なんて全然ハード生かせないだろC++で作れよ
325名前は開発中のものです。
2015/02/12(木) 00:29:15.74ID:DJBGtoR8 C++至上主義の時代はもう終わった
326名前は開発中のものです。
2015/02/12(木) 00:32:29.34ID:UV0J6V6h まだだ!まだ終わらんよ!
327名前は開発中のものです。
2015/02/12(木) 02:23:42.32ID:U9NT4imE さっき始まったばかりですよ
328名前は開発中のものです。
2015/02/12(木) 02:30:04.64ID:rNOcVIpi >>322
たしかにC#だと、ネイティヴDirectX呼び出す時点でカーネル切替が発生し、ボトルネックになる
(ただ一方、GCはちょっと工夫すればシーン切替時以外は抑制できる)。
まあC++が最強という事実は揺るがないし、だからここを覗きに来てるんだけど
今まで作った資産をそっくり移植するのは全部1人開発だと工数的に厳し過ぎるんよ。
自分はあくまでゲームを完成させるのが主眼なもんで。
たしかにC#だと、ネイティヴDirectX呼び出す時点でカーネル切替が発生し、ボトルネックになる
(ただ一方、GCはちょっと工夫すればシーン切替時以外は抑制できる)。
まあC++が最強という事実は揺るがないし、だからここを覗きに来てるんだけど
今まで作った資産をそっくり移植するのは全部1人開発だと工数的に厳し過ぎるんよ。
自分はあくまでゲームを完成させるのが主眼なもんで。
329名前は開発中のものです。
2015/02/12(木) 02:30:45.99ID:rNOcVIpi >>324だった。
330名前は開発中のものです。
2015/02/12(木) 09:37:50.92ID:ebWGGwik >>328
> 仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
> それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
> もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。
こんなこと言う人間が
> 自分はあくまでゲームを完成させるのが主眼なもんで。
なんてよく言えるな
> 仮にPS3相当かそれ以上のハードで、シングルで楽々動くゲームがあるとしたら、
> それは「CPUスゲー!」じゃなくて「CPUを遊ばせている未熟なプログラム」
> もしくは「絵的にボリューム不足」「敢えてシンプル路線のゲームにしただけ」だと思う。
こんなこと言う人間が
> 自分はあくまでゲームを完成させるのが主眼なもんで。
なんてよく言えるな
331名前は開発中のものです。
2015/02/12(木) 09:58:41.94ID:DJBGtoR8 Unityの台頭とC++erの更なる没落
332名前は開発中のものです。
2015/02/12(木) 10:00:56.62ID:K+V6X3Ce 社員さん、ステマ乙
333名前は開発中のものです。
2015/02/12(木) 10:16:24.93ID:xZrWsSkn 世界は使いやすい道具の前にひれ伏す
これが分からない奴は一生地を這う
これが分からない奴は一生地を這う
334名前は開発中のものです。
2015/02/12(木) 10:44:14.01ID:K+V6X3Ce Unityあつかいづらいから自分でライブラリ作ったわwww
335名前は開発中のものです。
2015/02/12(木) 12:11:18.44ID:ZP/aF8VN アホか。
みなが同じ道具を使ったら、それを売って儲ける奴の小作農になるだけ。
これが分からない人こそ
>一生地を這う
みなが同じ道具を使ったら、それを売って儲ける奴の小作農になるだけ。
これが分からない人こそ
>一生地を這う
336名前は開発中のものです。
2015/02/12(木) 12:13:54.04ID:ZP/aF8VN337名前は開発中のものです。
2015/02/12(木) 13:25:06.24ID:0nYHwL7l 実際PS3の初期タイトルは酷いの結構あったな
アイデアファクトリーとか
アイデアファクトリーとか
338名前は開発中のものです。
2015/02/12(木) 15:23:29.14ID:gRG035Lb 作るものに応じて道具を選べない人が一生地を這うのでは
各処理をどんだけ細切れにしても結局全部処理しないと次には進めず、
しかも実は単一の処理は積み重ねても大して時間はかかっておらず、
単なるスレッドの立て損にしかなっていないんならマルチスレッドなんか不要
商業だからだのなんだのと適当な言い訳をしても、
実際は目に付くよさそうに見えるものに振り回されているキョロ充
まずは作りやすい方法で実装してテストして、ダメだったら作り直せばいいじゃん
各処理をどんだけ細切れにしても結局全部処理しないと次には進めず、
しかも実は単一の処理は積み重ねても大して時間はかかっておらず、
単なるスレッドの立て損にしかなっていないんならマルチスレッドなんか不要
商業だからだのなんだのと適当な言い訳をしても、
実際は目に付くよさそうに見えるものに振り回されているキョロ充
まずは作りやすい方法で実装してテストして、ダメだったら作り直せばいいじゃん
339名前は開発中のものです。
2015/02/12(木) 17:28:07.56ID:K+V6X3Ce Unityの社員ってステマのノルマがあるみたい
340名前は開発中のものです。
2015/02/12(木) 17:41:44.09ID:3BvTygsz スレッドのが実装しやすい処理もあると思うの
341名前は開発中のものです。
2015/02/12(木) 19:41:03.02ID:gRG035Lb うにちゃんは次期主力ゲームエンジンの座を狙っているからね、仕方ないね
何が悲しくてわざわざ柔軟な使い方のできる言語投げ捨ててゲームエンジンなんぞに…
PHPやらJAVAやらに行った方がマシ
何が悲しくてわざわざ柔軟な使い方のできる言語投げ捨ててゲームエンジンなんぞに…
PHPやらJAVAやらに行った方がマシ
342名前は開発中のものです。
2015/02/12(木) 20:21:56.36ID:K+V6X3Ce そんなに自信があるのなら、自分たちでゲーム機を出せばいいのに
彼らの夢は、所詮は砂上の楼閣なんかね
彼らの夢は、所詮は砂上の楼閣なんかね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★3 [ニョキニョキ★]
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★4 [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に ★2 [ぐれ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★3 [ぐれ★]
- 防衛費増額「賛成」62・8% 「反対」32・2%を大きく上回る 賛成「18~29歳で8割」世代差あらわ 産経FNN合同世論調査 ★3 [尺アジ★]
- 【テレビ】鈴木福&あのちゃんW主演 テレ東で押見修造氏の漫画『惡の華』実写ドラマ化決定! 累計325万部を突破した伝説的漫画 [冬月記者★]
- 【実況】博衣こよりのえちえち朝こよ🧪★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【悲報】小野田紀美さん、宇宙人みたいな服を着てしまう…また、そのことを突っ込まれブチ切れ中www [856698234]
- 【悲報】セブンイレブンの納豆巻きの値段、限界突破wwwwwwwwwwwwwwwwww [977261419]
- 🏡
- お前らっていつもここにいるよな
