ゲーム製作における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+
2015/01/14(水) 18:32:13.33ID:b3+ap1tg
2015/01/14(水) 20:11:23.18ID:oy3qeLAO
>>23
同じオブジェクトで行けるってことは、似て非なる別物じゃないと思うが
同じオブジェクトで行けるってことは、似て非なる別物じゃないと思うが
2015/01/14(水) 20:25:50.33ID:mV/UlqnK
好きなようにすりゃええがな
あんさんの方法を否定してる奴なんて誰もおらん
あんさんは他人を否定したくて仕方ないかも知れないがな!
あんさんの方法を否定してる奴なんて誰もおらん
あんさんは他人を否定したくて仕方ないかも知れないがな!
2015/01/14(水) 21:38:06.89ID:0XojYraf
例えどんな方法でも実現可能だったとしても
複数の手法の中からベストな物を追求するのは良いことである
複数の手法の中からベストな物を追求するのは良いことである
2015/01/14(水) 22:19:18.87ID:oy3qeLAO
2015/01/14(水) 23:02:57.92ID:iwR4jgL6
当たり判定の範囲をなしを含む特有の定義にして、
一番最初に横たわるキャラクターオブジェクト それがマップ
他のキャラクターとは一部の要素が大きく違う分管理に差が出るし
無駄を承知で分けた方が分かりやすくはなる…かも
一番最初に横たわるキャラクターオブジェクト それがマップ
他のキャラクターとは一部の要素が大きく違う分管理に差が出るし
無駄を承知で分けた方が分かりやすくはなる…かも
2015/01/15(木) 21:04:25.90ID:v7OuMrqm
マップと言えば、マップチップタイプみたいな並びを記憶しておく必要があるマップは、
当然二次元配列を使うとして
たとえば現在の装備一覧のような、
同じ要素を指す数値の並びをしている物の塊も二次元配列にすべきなんだろうか
当然二次元配列を使うとして
たとえば現在の装備一覧のような、
同じ要素を指す数値の並びをしている物の塊も二次元配列にすべきなんだろうか
2015/01/15(木) 23:17:08.52ID:Q5DMCUO8
>当然二次元配列を使うとして
?
?
2015/01/16(金) 08:47:44.30ID:ZjU+PjG/
2015/01/16(金) 12:23:34.85ID:KH2Og/LD
二次元のビットマップ画像も普通一次元配列で確保するよな。
2015/01/16(金) 23:19:42.96ID:aIsA+egi
>>29
>たとえば現在の装備一覧のような(…中略…)二次元配列にすべきなんだろうか
一覧表示にも色々あるけど
要求(される操作)に応じて適切なデータ構造(コンテナ)選ぶものなので
二次元配列でおk(な要求)ならそれで作るのが一番いいんじゃねーの
要素数がたかが知れてる場合、配列(std::vector)使ってるからって
何か問題が生じるような事はまずないわけだし
>たとえば現在の装備一覧のような(…中略…)二次元配列にすべきなんだろうか
一覧表示にも色々あるけど
要求(される操作)に応じて適切なデータ構造(コンテナ)選ぶものなので
二次元配列でおk(な要求)ならそれで作るのが一番いいんじゃねーの
要素数がたかが知れてる場合、配列(std::vector)使ってるからって
何か問題が生じるような事はまずないわけだし
2015/01/17(土) 08:27:09.12ID:XHyVYcVD
2次元配列でOKなものは1次元配列でOK
わざわざ2次元配列を使うメリットは何も無い
わざわざ2次元配列を使うメリットは何も無い
2015/01/17(土) 11:40:55.67ID:vMwgaTo6
シンタックスシュガーでしかないもんねぇ
初心者に教えるなら積極的に使うけど
初心者に教えるなら積極的に使うけど
2015/01/17(土) 11:55:03.58ID:YJD7hT+O
一次元配列で確保した上で行(or列)先頭にアクセスするための
インデックス(LUT)を用意するような内部実装でも二次元配列
なんであってだな(>>32)
ターゲットも実装も不明ならメリットねぇとは断言できんよ
インデックス(LUT)を用意するような内部実装でも二次元配列
なんであってだな(>>32)
ターゲットも実装も不明ならメリットねぇとは断言できんよ
2015/01/17(土) 11:57:15.65ID:YJD7hT+O
>>35被ったスマン
2015/01/17(土) 17:31:33.18ID:KBPYDccT
たとえば縦スクロールSTGのマップとかで、
メモリ節約のためにマップを行ごとに細切れにして
表示範囲の上に一行足して下から一行引くような処理をしていたりする場合、
一行ずつ読み込んでるんだという事を示すためにわざとやるとか
試作段階で仕様が固まらなかった時の苦肉の策がそのままになっちゃったとか?
二次配列ってなんかあんまり使い道が浮かばない
メモリ節約のためにマップを行ごとに細切れにして
表示範囲の上に一行足して下から一行引くような処理をしていたりする場合、
一行ずつ読み込んでるんだという事を示すためにわざとやるとか
試作段階で仕様が固まらなかった時の苦肉の策がそのままになっちゃったとか?
二次配列ってなんかあんまり使い道が浮かばない
39名前は開発中のものです。
2015/01/17(土) 18:57:09.16ID:O8Io0R5L 3Dでキャラクターが技によって自由に地面の凹凸を操作できるようにしたいんですが
予め頂点を作っておかないとダメでしょうか?
キャラクターがここじゃーって指してる座標に一番近い面の上に
頂点をいい感じに窪ませるように配置して、
もともとあった面と入れ替わるような感じにしたいのですが、
当たり判定やハードウェアレンダリングしたいならやっぱり面倒ですか?
まぁハードウェアレンダリングなんてどうやればいいのかわからないですが
予め頂点を作っておかないとダメでしょうか?
キャラクターがここじゃーって指してる座標に一番近い面の上に
頂点をいい感じに窪ませるように配置して、
もともとあった面と入れ替わるような感じにしたいのですが、
当たり判定やハードウェアレンダリングしたいならやっぱり面倒ですか?
まぁハードウェアレンダリングなんてどうやればいいのかわからないですが
2015/01/17(土) 20:24:50.48ID:dqiO68fF
確かにあんまり、というか殆ど多次元配列使わないな
配列へのアクセス部分は、隠蔽する傾向にあるから、アクセス用インデックスが多次元でも、アクセスの内部仕様は1次元配列でやってることが多いな
また配列の次元数を増やすと、後から解読するのが難しくなって、可読性が下がる
だから次元が増える場合は、次元別にクラス定義して、一次元配列のメンバに下位次元を持たせるようにしてるな
そういやD3DMATRIXに2次元配列のメンバあるけど、自分で定義したものじゃないし、そもそもそのメンバって殆どアクセスしないなぁ
配列へのアクセス部分は、隠蔽する傾向にあるから、アクセス用インデックスが多次元でも、アクセスの内部仕様は1次元配列でやってることが多いな
また配列の次元数を増やすと、後から解読するのが難しくなって、可読性が下がる
だから次元が増える場合は、次元別にクラス定義して、一次元配列のメンバに下位次元を持たせるようにしてるな
そういやD3DMATRIXに2次元配列のメンバあるけど、自分で定義したものじゃないし、そもそもそのメンバって殆どアクセスしないなぁ
2015/01/17(土) 20:40:58.36ID:eRR0fEDj
std::vector<std::vector<int>>とかやるじゃん?
2015/01/17(土) 20:55:17.63ID:XHyVYcVD
Dictionary<Point, Tile> Mapしか使わん
2015/01/17(土) 21:10:19.92ID:dqiO68fF
2015/01/17(土) 21:23:58.77ID:j+s0LTMz
ベジェとか普通に書いたら多次元配列になるんじゃ…
2015/01/17(土) 21:56:16.62ID:ceElOD9E
2015/01/17(土) 22:50:59.20ID:Gl1ppQ6p
2015/01/17(土) 22:59:23.12ID:aI7crSKW
>>39
テッセレータを使ったらいいのでは?
凹ませたい領域を4頂点の単純なタイルで表現し、それをフィールドに敷き詰めておく。
凹ませるときは、該当するタイルに対しテッセレーション(最大64分割)して、
高さマップを与えてディスプレースメントさせる。
テッセレータを使ったらいいのでは?
凹ませたい領域を4頂点の単純なタイルで表現し、それをフィールドに敷き詰めておく。
凹ませるときは、該当するタイルに対しテッセレーション(最大64分割)して、
高さマップを与えてディスプレースメントさせる。
2015/01/18(日) 00:08:51.85ID:DJykD+cW
2015/01/18(日) 07:49:00.66ID:sJaCX/+8
長さ不定のに多重vectorはしないかな
2015/01/18(日) 12:34:52.67ID:W1O9uyd7
vector<vector<T>>は便利なときもあるけど、
コピーやトラバースのパフォーマンスがvector<T>に比べて著しく遅いんで、
そちらが重要なときは多少冗長でもvector<T>で扱うようにしてる。
コピーやトラバースのパフォーマンスがvector<T>に比べて著しく遅いんで、
そちらが重要なときは多少冗長でもvector<T>で扱うようにしてる。
51名前は開発中のものです。
2015/01/18(日) 12:40:46.60ID:beKeRz4L vector<vector<T>*>
2015/01/18(日) 12:44:37.58ID:sJaCX/+8
生ポインタ使うならdequeで良いだろ
とは言えないパフォーマンス差があるんだよな…
とは言えないパフォーマンス差があるんだよな…
2015/01/18(日) 13:35:03.38ID:yNPMG51i
vector<unique_ptr<T>>
2015/01/18(日) 14:23:19.06ID:J6J53lAj
null_ptr
2015/01/18(日) 15:20:17.44ID:W1O9uyd7
nullptrでは・・・
2015/01/18(日) 15:53:55.88ID:dWFx6RaG
相当昔にC++触って、今と環境がかなり違いそうなのですが、
タスクシステムを実装する時、昔は固定長のメモリを予め確保したうえで、そのメモリを
newすることによって使っていたのですが、今のゲームもこのやり方が主流ですか?
それともスマートポインタ+std::listでも速度出るのでしょうか?
スマートポインタとやらは、これはやってる事はガベージコレクションですよね?
速度に問題無しということですが、ヒープ領域から自由にnewdeleteして大丈夫なのかと不安になるのですが・・・
タスクシステムを実装する時、昔は固定長のメモリを予め確保したうえで、そのメモリを
newすることによって使っていたのですが、今のゲームもこのやり方が主流ですか?
それともスマートポインタ+std::listでも速度出るのでしょうか?
スマートポインタとやらは、これはやってる事はガベージコレクションですよね?
速度に問題無しということですが、ヒープ領域から自由にnewdeleteして大丈夫なのかと不安になるのですが・・・
2015/01/18(日) 16:23:04.34ID:6LkKK9Db
誰も使ってない
2015/01/18(日) 17:19:29.87ID:W1O9uyd7
>>56
スマートポインタはリソース管理の安全性を高めるだけで、
new、deleteのパフォーマンスを高めるわけではない。
むしろクラス被せる分、オーバーヘッドが嵩む。
現代のハードウェア環境においては、多くの場合そのオーバーヘッドは問題にならないというだけ。
スマートポインタはリソース管理の安全性を高めるだけで、
new、deleteのパフォーマンスを高めるわけではない。
むしろクラス被せる分、オーバーヘッドが嵩む。
現代のハードウェア環境においては、多くの場合そのオーバーヘッドは問題にならないというだけ。
2015/01/18(日) 18:04:36.15ID:WcZ4waH9
手動解放は、車で例えると
タイム短縮のためにわずかなエンジンパワーのロスも許されないプロレーサーや、
オートマはエンジンパワーが完全には伝わらないのでクソ
俺は完璧なギアチェンジ操作ができる(自称含む)のでマニュアルで通すんだって人向け
解放忘れてメモリリーク他の面倒な問題を起こしても泣かないなら全部手動で
それが嫌なら我々が作った処理班にぜひおまかせ下さい!
スマートポインタってそういうもの
shared_ptrやweak_ptr自体の書き忘れや循環参照などは防げないけど
>>54
ga
タイム短縮のためにわずかなエンジンパワーのロスも許されないプロレーサーや、
オートマはエンジンパワーが完全には伝わらないのでクソ
俺は完璧なギアチェンジ操作ができる(自称含む)のでマニュアルで通すんだって人向け
解放忘れてメモリリーク他の面倒な問題を起こしても泣かないなら全部手動で
それが嫌なら我々が作った処理班にぜひおまかせ下さい!
スマートポインタってそういうもの
shared_ptrやweak_ptr自体の書き忘れや循環参照などは防げないけど
>>54
ga
2015/01/18(日) 19:56:46.03ID:1ZXKy9PG
>>56
ここではWindowsならメモリ確保の負荷はそんなに問題にならないとしている
http://marupeke296.com/ALG_No2_TLSFMemoryAllocator.html
スマートポインタはGCってそれどういう意味だよ。
スマートポインタに使っている参照カウントはGCの方式の一つとは言えるが。
http://ja.wikipedia.org/wiki/参照カウント
ここではWindowsならメモリ確保の負荷はそんなに問題にならないとしている
http://marupeke296.com/ALG_No2_TLSFMemoryAllocator.html
スマートポインタはGCってそれどういう意味だよ。
スマートポインタに使っている参照カウントはGCの方式の一つとは言えるが。
http://ja.wikipedia.org/wiki/参照カウント
2015/01/18(日) 20:33:19.91ID:E2jV+3+x
おじさんは2万円前後の安もんの8インチタブ(CPU:Z3735G,RAM:1GB)を
即売会場でデモ機として使う都合で、バッテリー駆動でできるだけ長時間
ヌルヌル動かすために貧乏根性丸出しな組み方しちゃったけど、そういう
変な目的が無ければ自分の好きなようにやればいいと思うんだがな
○○のやり方が大丈夫なのか不安とか意味わかんねぇな。周りキョロって
ねぇで自分で決めた基準動作環境で自分でテストすればいいじゃんと
即売会場でデモ機として使う都合で、バッテリー駆動でできるだけ長時間
ヌルヌル動かすために貧乏根性丸出しな組み方しちゃったけど、そういう
変な目的が無ければ自分の好きなようにやればいいと思うんだがな
○○のやり方が大丈夫なのか不安とか意味わかんねぇな。周りキョロって
ねぇで自分で決めた基準動作環境で自分でテストすればいいじゃんと
2015/01/19(月) 05:04:21.05ID:xLKHfZFD
最近は底の方でも1GB
これなら多少雑に使ってもリークさえさせなければ問題ないな
なお512MB以下は爆死する模様
そんな化石がまだあるのかどうかは知らないが
これなら多少雑に使ってもリークさえさせなければ問題ないな
なお512MB以下は爆死する模様
そんな化石がまだあるのかどうかは知らないが
2015/01/19(月) 08:44:27.43ID:XDjCkDzP
全部起動時に読み込みとかやめて!
2015/01/19(月) 19:59:00.97ID:21R5SuXr
ふははは、貴様のセルを使うかどうかもわからない画像や音楽データで埋めてくれる!
読み込み時間といい、占有領域といい、ロースペにはある種のテロだな…
読み込み時間といい、占有領域といい、ロースペにはある種のテロだな…
2015/01/19(月) 23:27:21.97ID:U55o2asL
音楽やムービーのストリーム再生以外で、オンメモリでないゲームが作れるって凄いな。
そこまでリソースが用意できないよ。
そこまでリソースが用意できないよ。
2015/01/20(火) 00:33:47.17ID:KjcEBQWF
メモリ次第ではあるけど
常駐とブラウザ合わせたら警告食らうくらいのゲームならあるんじゃないの
常駐とブラウザ合わせたら警告食らうくらいのゲームならあるんじゃないの
2015/01/20(火) 01:29:50.61ID:VPdLWQW0
>>65
数年前、(旧)Android Marketに個人でゲーム出した時は機種依存の
バッドノウハウの量に本気で吐き気がしたけど、あれに比べたら
PCゲーは作りやすい思たよ。メモリフットプリント小さくするだけで
おkなら大したこたないと思える程にAndroidスマホはカオス
(だった。今はどうなってるのか知りません)
数年前、(旧)Android Marketに個人でゲーム出した時は機種依存の
バッドノウハウの量に本気で吐き気がしたけど、あれに比べたら
PCゲーは作りやすい思たよ。メモリフットプリント小さくするだけで
おkなら大したこたないと思える程にAndroidスマホはカオス
(だった。今はどうなってるのか知りません)
2015/01/20(火) 10:35:24.77ID:B8GspOPa
1080pの画像を一度に100枚読み込めばロード地獄間違いなし
1920*1080*4 /1024/1024 *100 = 791MBぐらい
スマホだとアプリが強制終了するかも
グラフィックの豪華なアプリのModern Combat 5でもメモリは512MBぐらいまでしか使わない
1920*1080*4 /1024/1024 *100 = 791MBぐらい
スマホだとアプリが強制終了するかも
グラフィックの豪華なアプリのModern Combat 5でもメモリは512MBぐらいまでしか使わない
2015/01/20(火) 22:05:53.74ID:GnwjxLXH
圧縮テクスチャ使えば1/5くらいにはなるんじゃね?
70名前は開発中のものです。
2015/01/21(水) 16:36:27.53ID:OnV6g/fE そういや、Appmethodってどうよ?ちょっと気になってるんだが使ってる奴居る?
2015/01/21(水) 22:17:40.75ID:1wPj2se9
タスクシステムで組む時、
・タスクリスト2つ用意して移動と描画分ける
・タスクリスト1つに移動も描画も入れる
どっちがいいのでしょうか?個人的には前者にしたいけど・・・
・タスクリスト2つ用意して移動と描画分ける
・タスクリスト1つに移動も描画も入れる
どっちがいいのでしょうか?個人的には前者にしたいけど・・・
2015/01/21(水) 22:19:47.80ID:CqaY5thk
前者にしたいのにできない要因を考えるのがよい
「みんながどうやってるか気になる」ってだけなら気にする必要はない
「みんながどうやってるか気になる」ってだけなら気にする必要はない
2015/01/22(木) 00:52:45.85ID:fqCV4qez
タスクシステムはバグった時に大変そうな印象
そりゃあ、バグれば大抵それなりに大変な目に遭うんだけどさ
そりゃあ、バグれば大抵それなりに大変な目に遭うんだけどさ
2015/01/22(木) 02:20:52.62ID:PxEmvatE
>>68
一般的なアプリは、数MB
一般的なアプリは、数MB
2015/01/22(木) 07:47:04.58ID:niGIPEW3
昔タスクシステムスレあったけど相手の主張への罵詈雑言だらけでいつの間にか消えたなw
2015/01/22(木) 16:27:46.03ID:pRLOyuNi
移動と描画両方持ってたほうがスマートだべ
2015/01/22(木) 16:50:32.20ID:MBqyL5iH
2015/01/22(木) 17:35:35.81ID:niGIPEW3
まあ個人でゲーム作る分にはどう作ろうが60FPS出てちゃんと動けば勝ちだからなw
会社とかで厳密にタスク管理されてるなら覚えなきゃならんのだろうけど。
会社とかで厳密にタスク管理されてるなら覚えなきゃならんのだろうけど。
2015/01/22(木) 18:57:21.14ID:gduwMt/g
タスクシステムw
馬鹿しか使わん
馬鹿しか使わん
2015/01/22(木) 21:08:37.90ID:9AIymZEw
>>79
なんで?
なんで?
2015/01/22(木) 21:13:16.12ID:ZmYkrSmS
2015/01/22(木) 22:06:24.79ID:MBqyL5iH
ほーら始まったw
スレ立ててそっちでやれw
スレ立ててそっちでやれw
2015/01/22(木) 23:18:22.87ID:MosgWt8b
たすくしすてむってなあに?
おいしいの?
おいしいの?
2015/01/22(木) 23:53:50.36ID:hRTvuKPH
ごめんなさい
反射してしもた
反射してしもた
2015/01/22(木) 23:56:43.23ID:U49zokjS
だーかーらー、ただのリストに大げさな名前付けんなや
2015/01/23(金) 00:49:17.98ID:jY3sOyRC
2015/01/23(金) 01:07:05.72ID:JihQada2
はじめからほとんど完成しているシステムに、
そのシステムの中枢部に触れないように要素を追加できるような実装を目指すなら有効
つまり、OSやエンジン作るならこれがいいかもしれない
が、そうでなければバグが修正困難だったり無駄な手続きが多いクソ
なんだ実行順って 必要になった時にやらせろオラァァ
そのシステムの中枢部に触れないように要素を追加できるような実装を目指すなら有効
つまり、OSやエンジン作るならこれがいいかもしれない
が、そうでなければバグが修正困難だったり無駄な手続きが多いクソ
なんだ実行順って 必要になった時にやらせろオラァァ
2015/01/23(金) 10:32:52.67ID:ZhBY7M7O
最近はどんな言語でもクロージャやジェネレータ (yield) をサポートするようになってきた。
タスクシステムとは呼ばれないけど、同じ目的には使えるんじゃないの?
描画に関しては、オブジェクトが自前で描画命令を発行するのか、
オブジェクトとは別にスプライトのような構造を用意して、描画はそちらに任せるかの差が大きい気がする。
巷のゲーム向けのフレームワークを見るに、後者のほうが可搬性は優れているんじゃないか?
タスクシステムとは呼ばれないけど、同じ目的には使えるんじゃないの?
描画に関しては、オブジェクトが自前で描画命令を発行するのか、
オブジェクトとは別にスプライトのような構造を用意して、描画はそちらに任せるかの差が大きい気がする。
巷のゲーム向けのフレームワークを見るに、後者のほうが可搬性は優れているんじゃないか?
2015/01/23(金) 10:52:38.49ID:ZpK8PG+c
オブジェクトが自前で描画って構造はゲームではあり得なくない?
ポーズ作るだけで一苦労じゃん
ポーズ作るだけで一苦労じゃん
2015/01/23(金) 16:09:48.65ID:gTjNx7m+
ネットに転がってるC++のゲームソースしっかりしたのはほとんどタスクシステムっぽいのばっかだから
そういうソースじゃないと読む気がしなくなったっていう(´・ω・`)
そういうソースじゃないと読む気がしなくなったっていう(´・ω・`)
2015/01/23(金) 16:29:50.12ID:Qg1gWf/N
単一のタスクだけで動かすと実によく機能するのに、
タスク同士を連動させようとすると途端にギクシャクする辺りが
実にぼっちらしくてよいが、
プログラムにそんなのやらせてどうするんだ
タスク同士を連動させようとすると途端にギクシャクする辺りが
実にぼっちらしくてよいが、
プログラムにそんなのやらせてどうするんだ
92名前は開発中のものです。
2015/01/24(土) 11:10:33.23ID:vN0iK6Pw >>89
cocos2dとかそんな感じじゃね
cocos2dとかそんな感じじゃね
2015/01/24(土) 13:26:12.19ID:AuIVSu3m
C++11のstd::asyncってのが便利そうだから使ってみた。
確かに簡単に別スレッドに非同期に仕事をさせられる。
だが、どうも処理結果を受け取ってスレッドを終了するのに膨大なコスト(500msくらい)がかかるようだ。
代わりに、std::threadで常時スレッドを走らせておいて、std::mutexで同期を取りながら
データのやり取りをするようにしたらとてもスムーズに動くようになった。
しかし、std::asyncを使った場合と比べて、煩雑な記述が避けられない。
スレッド終了のコスト高杉。
確かに簡単に別スレッドに非同期に仕事をさせられる。
だが、どうも処理結果を受け取ってスレッドを終了するのに膨大なコスト(500msくらい)がかかるようだ。
代わりに、std::threadで常時スレッドを走らせておいて、std::mutexで同期を取りながら
データのやり取りをするようにしたらとてもスムーズに動くようになった。
しかし、std::asyncを使った場合と比べて、煩雑な記述が避けられない。
スレッド終了のコスト高杉。
2015/01/24(土) 13:34:42.36ID:0N2Bqsd3
TBBやPPL使っとけ
2015/01/24(土) 16:36:58.01ID:l++ObWZB
>>93
Windowsの話だよな?
Windowsの話だよな?
96名前は開発中のものです。
2015/01/24(土) 20:09:43.23ID:Js5qaCaY C11使っとけ
2015/01/24(土) 22:06:18.60ID:SL/s5qpu
1タスクごとにスレッドそのものを開始終了するとコストが高いので
想定するCPUのコア数だけワーカースレッドを用意して
それらにタスクを投げるのが定石じゃないかな。
・キューにタスクがない時はスレッド待機。
・タスクをキューに投げたら全ての待機スレッドを励起。
・いずれかのスレッドがキュー上のタスクを取得して実行、他は再び待機。
・タスクが完了してもスレッド完了せず、次のタスクを確認する。
デザインパターンにあったはず。
想定するCPUのコア数だけワーカースレッドを用意して
それらにタスクを投げるのが定石じゃないかな。
・キューにタスクがない時はスレッド待機。
・タスクをキューに投げたら全ての待機スレッドを励起。
・いずれかのスレッドがキュー上のタスクを取得して実行、他は再び待機。
・タスクが完了してもスレッド完了せず、次のタスクを確認する。
デザインパターンにあったはず。
2015/01/24(土) 22:12:29.49ID:VTrvOh2Q
>>70
居ないのか……ま、いいや
居ないのか……ま、いいや
100名前は開発中のものです。
2015/01/24(土) 22:16:34.35ID:VTrvOh2Q スレッドの使い分けは適切に使わないと工数が意味もなく増殖するからな……
101名前は開発中のものです。
2015/01/24(土) 22:31:57.37ID:AuIVSu3m102名前は開発中のものです。
2015/01/25(日) 21:12:51.89ID:vXlhEd/U タスクシステムよりシーン管理の方がよっぽど複雑だと思うの
103名前は開発中のものです。
2015/01/25(日) 21:27:30.87ID:16a+UuyX シーンって「タイトル画面とキャラ選択画面とゲームのメインループその他」の意?
それとも「メインループ中の各シーン」のことかな。
>>101
標準テンプレートとか使える程度に技術のある人なら余裕で実装できるよ。
それとも「メインループ中の各シーン」のことかな。
>>101
標準テンプレートとか使える程度に技術のある人なら余裕で実装できるよ。
104名前は開発中のものです。
2015/01/25(日) 23:16:44.80ID:ZTrWlyYJ シーンったら状態遷移のことでは つまり両方
105名前は開発中のものです。
2015/01/25(日) 23:53:06.16ID:5N9PH1z0 >>98
ワーカースレッドが、キューに何もないことを確認して、
眠ろうとしているところに、
キューにタスクが入って、ワーカーに起きるよう指示を出す。
ワーカースレッドはその後寝てしまう。悪いことに全ワーカーが同じ状態。
次のキュー挿入で起きるけど。
なんかこんなこと考えると、こんがらがってきます。
ワーカースレッドが、キューに何もないことを確認して、
眠ろうとしているところに、
キューにタスクが入って、ワーカーに起きるよう指示を出す。
ワーカースレッドはその後寝てしまう。悪いことに全ワーカーが同じ状態。
次のキュー挿入で起きるけど。
なんかこんなこと考えると、こんがらがってきます。
106名前は開発中のものです。
2015/01/26(月) 15:41:45.19ID:VjIajR+F >>105
キュー操作そのものにミューテックスで排他かけるから
「寝る」一連の動作と「起こす」一連の動作は複数のスレッドで並行に起こらない。
「寝て大丈夫かキューを確認したらタスクがあるから寝ずに実行」か
「完全に寝る→即座に次のタスクがキューにある状況で起こされる」のどちらか。
.NETだとWait()とPulseAll()、Javaならwait()とnotifyAll()で
簡単に実装できるけど、Win32APIだと少し面倒だった。
まずは上記2つのどちらかを調べて流れを掴んで、
それをC/C++用のAPIで書き表すことを考えてはどうかな。
キュー操作そのものにミューテックスで排他かけるから
「寝る」一連の動作と「起こす」一連の動作は複数のスレッドで並行に起こらない。
「寝て大丈夫かキューを確認したらタスクがあるから寝ずに実行」か
「完全に寝る→即座に次のタスクがキューにある状況で起こされる」のどちらか。
.NETだとWait()とPulseAll()、Javaならwait()とnotifyAll()で
簡単に実装できるけど、Win32APIだと少し面倒だった。
まずは上記2つのどちらかを調べて流れを掴んで、
それをC/C++用のAPIで書き表すことを考えてはどうかな。
107名前は開発中のものです。
2015/01/26(月) 16:22:24.05ID:MFO6WL+3 >>106
condition_variable
condition_variable
108名前は開発中のものです。
2015/01/26(月) 17:05:42.55ID:u+eqsmYT *0.5の乗算と/2の除算
表す物はまったく同じだけど、前者の方が早いんだろうか?
表す物はまったく同じだけど、前者の方が早いんだろうか?
109名前は開発中のものです。
2015/01/26(月) 17:06:44.50ID:plLWVR07 /2の除算
110名前は開発中のものです。
2015/01/26(月) 17:08:38.36ID:U+7vhN1O シフト演算
111名前は開発中のものです。
2015/01/26(月) 17:36:32.42ID:nJhOAZkT 整数ならそもそも結果が違うな
浮動小数ならコンパイラが最適化してくれるだろ
浮動小数ならコンパイラが最適化してくれるだろ
112名前は開発中のものです。
2015/01/26(月) 17:48:01.99ID:u+eqsmYT 2のn乗倍しかできないじゃないですかー!やだー!
書き方が悪かったのは認める
書き方が悪かったのは認める
113名前は開発中のものです。
2015/01/26(月) 18:30:30.51ID:pS9kEcva >>112
浮動少数なら変わらないんじゃ?
浮動少数なら変わらないんじゃ?
114名前は開発中のものです。
2015/01/26(月) 21:04:49.69ID:J7eP3rC5115名前は開発中のものです。
2015/01/26(月) 21:13:32.54ID:nJhOAZkT116名前は開発中のものです。
2015/01/26(月) 21:19:26.58ID:thceLWWx #ifndef〜#endifの組み合わせと#pragma onceの違いがよく分からない
前者は明確なインクルードガードだけど、後者は?
前者は明確なインクルードガードだけど、後者は?
117名前は開発中のものです。
2015/01/26(月) 21:45:22.75ID:OIbLNO60 前者はガード以外にも使える
後者はガード専門
後者はガード専門
118名前は開発中のものです。
2015/01/26(月) 21:45:26.06ID:eI0emMfH >>116
一回だけincludeしてねとコンパイラに言う
一回だけincludeしてねとコンパイラに言う
119名前は開発中のものです。
2015/01/26(月) 21:57:36.77ID:MFO6WL+3 ついでに言うと#pragma onceは非標準
だけど主要コンパイラで実装してないものがないほぼデファクトスタンダード状態
だけど主要コンパイラで実装してないものがないほぼデファクトスタンダード状態
120名前は開発中のものです。
2015/01/26(月) 22:06:02.39ID:J7eP3rC5121名前は開発中のものです。
2015/01/26(月) 23:14:24.34ID:thceLWWx122名前は開発中のものです。
2015/01/27(火) 02:06:38.39ID:m3LjzbYT そもそも#pragma自体が、コンパイラ独自実装な機能で使うタグみたいなのじゃなかったっけ
まあ今となっては大抵のコンパイラで使えるみたいよ
http://en.wikipedia.org/wiki/Pragma_once
まあ今となっては大抵のコンパイラで使えるみたいよ
http://en.wikipedia.org/wiki/Pragma_once
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★2 [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に [ぐれ★]
- 米中電話会談、トランプ氏は「米国側は中国にとっての台湾問題の重要性を理解する」 [1ゲットロボ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★3 [ぐれ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 【国際】トランプ氏、来年4月に中国を訪問する招待を受け入れる 習氏も国賓で訪米へ 電話会談 [ぐれ★]
- 専門家「社会不安や不満が高まると、人々は原因を単純化し外集団を脅威として捉えやすくなります」政権批判か?😡 [399259198]
- ーーーーー力が欲しいんかーーーーー?
- 社会人1年目ワイ、貯金100万円を突破www
- 【画像】なんか模型屋さんにいかにもお前らが好んでそうなアキバ系のアニメ?のキャラいたけどこれなに?
- 【高市悲報】来年、習近平主席がアメリカに「国賓」として訪米。どうするんだよ高市・・・アメリカも敵に回すのか? [483862913]
- フィフィ「外国人だろうが日本人だろうが反日は要らんのよ、この国に…自分にとって住みやすい国に行け。」 [856698234]
