C/C++ゲーム製作総合スレッド Part7 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2015/01/11(日) 10:19:31.85ID:RDQlUyF+
ゲーム製作における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/
2015/01/26(月) 21:13:32.54ID:nJhOAZkT
>>114
すでに >>107 が答えてくれてる。
std::thread, mutex, shared_mutex(=RWLock), condition_variable, async/future
C++11, 14 にて、この手の処理のための部品は揃ったと思われる。
あくまで部品なので、タスクキューなんかは自分で多少は書くことになるとは思うが。
2015/01/26(月) 21:19:26.58ID:thceLWWx
#ifndef〜#endifの組み合わせと#pragma onceの違いがよく分からない
前者は明確なインクルードガードだけど、後者は?
2015/01/26(月) 21:45:22.75ID:OIbLNO60
前者はガード以外にも使える
後者はガード専門
2015/01/26(月) 21:45:26.06ID:eI0emMfH
>>116
一回だけincludeしてねとコンパイラに言う
2015/01/26(月) 21:57:36.77ID:MFO6WL+3
ついでに言うと#pragma onceは非標準

だけど主要コンパイラで実装してないものがないほぼデファクトスタンダード状態
2015/01/26(月) 22:06:02.39ID:J7eP3rC5
>>115
ありがとう!
C++的にはちょうど良い落としどころっぽいね。
使い易くてハイパフォーマンスなスレッド記述をマスターしてやるぜ!
2015/01/26(月) 23:14:24.34ID:thceLWWx
なるほど、むしろ#pragma onceがインクルードガード専用なんだな

>>119
マジで!?
VSで最初から書き込まれているプリプロセッサが非標準なのかよ
2015/01/27(火) 02:06:38.39ID:m3LjzbYT
そもそも#pragma自体が、コンパイラ独自実装な機能で使うタグみたいなのじゃなかったっけ
まあ今となっては大抵のコンパイラで使えるみたいよ
http://en.wikipedia.org/wiki/Pragma_once
2015/01/27(火) 05:50:27.53ID:v0Ke9Ofm
#pragma で始まるものは、互換性がない
2015/01/27(火) 09:41:49.82ID:kpJLUqPw
>>123
リンク先見た?
俺もVCだけの互換の無い機能と思っていたが、互換してないのはIBMの一種(世の中のコンパイラを網羅してるわけではないけど)だけだったよ
標準仕様が〜とかよりも便利なモノは取り込まれてくんだと思った
2015/01/27(火) 15:08:16.08ID:m3LjzbYT
まあ#pragma comment(lib, "...")とか、ガチでVC独自の機能もあるし
>>123の考えが自然だと思う
2015/01/27(火) 17:35:37.67ID:OmLGS6W/
C++14の新機能ってラムダ式にautoが使えるくらい?
2015/01/27(火) 22:54:28.14ID:k1Z1zLml
>>125
なぜ comment なのだろう…
2015/01/27(火) 23:27:04.08ID:Ow2H94g+
互換と呼ばれるパクリ・盗用
2015/01/27(火) 23:51:44.84ID:mO8GdU7r
パクりパクられないインタフェースに存在意義は無い
2015/01/28(水) 00:13:05.10ID:5x2afQiV
ただのガラパゴス仕様だからな…
2015/01/28(水) 08:57:20.61ID:DPC05MEk
C++は消える運命
2015/01/28(水) 10:44:43.26ID:SOs+ZJbg
C++は地盤担当だから消えはしない。見えなくなるだけ。
2015/01/28(水) 16:49:43.54ID:/ZB0USJc
土台のしっかりしている家は頑丈だからな
しかし最近、犬小屋程度の建物にビルのような土台を作ってどうすんだ?
と思うようにもなってきた
2015/01/28(水) 17:10:45.12ID:dUb4vLHi
ウサギ小屋と呼ばれる日本の家をバカにするな!
2015/01/28(水) 19:20:53.89ID:nasZb7nZ
最近ホント、この板でこじつけで日本の風習をバカにする奴が増えたな。

レガシで安定したものはラップして使い回すのが鉄板なのに、
横からうまく吹き込んで全部潰して一から作り直そうとさせる。
それだけ、相手の発展を遅らせることができる。
2015/01/28(水) 19:28:52.88ID:tBFCEOiA
古いからといってバグが無いとは限らないけどな。
特に昔のコードは脆弱性対策が練られてない事が多い
2015/01/28(水) 20:15:35.81ID:RgnZVm9M
FirefoxはJavaScriptの速度がChromeを超えたとか言われている割にもっさりしている感が否めない
後発のChromeの方が速い
138名前は開発中のものです。
垢版 |
2015/01/28(水) 20:18:09.19ID:t3hT+Wje
>>137
感覚でなく実測で。
2015/01/28(水) 20:33:36.08ID:RgnZVm9M
ブラウザの使用感はスクリプトの実行速度だけで決まるわけじゃないからな
読み込み時間の短縮も大事
v8の方がバイトコードを通さず直接マシン語を生成するから読み込み速いんじゃないか

全体の速度はTom's Hardwareが調べていたが
スコアを合計したら何かFirefoxが速いという結論になっているのが理解できなかった
どんな計算をしたのやら
http://www.tomshardware.com/reviews/chrome-27-firefox-21-opera-next,3534.html

古い記事だけど
2015/01/28(水) 20:35:32.45ID:GO27aJnJ
関係ないけど体感速度を速く感じさせるって大事な事だね

Chromeはメモリの使い方や優先順位の割り振りが上手いんじゃないかと
2015/01/28(水) 21:30:30.57ID:zOtKlcou
chromeはメモリ馬鹿食いするしな
ブラウザしか起動しないならそれでもいいんだが
2015/01/28(水) 23:41:47.26ID:gWUJCc9x
わずかな妥協さえ許さずチューニングに血道を上げ
DNSの応答時間すら惜しむ
そりゃ比べる相手が悪すぎる
2015/01/29(木) 00:04:26.59ID:iAJNBuYX
0.3を0.1にする前に,10が1になるツールを作ろう
2015/01/29(木) 08:56:31.18ID:KH1X7ZAq
メモリが多めのマシンだとChromeが最速だろうね
逆にChromeでメモリ不足に陥るマシンなら最速はFirefoxセーフモードかと
2015/01/29(木) 09:36:37.60ID:6+mjNHtZ
FirefoxはブックマークとかタブとかRSSあたりが使いやすい
あとはDuckDuckGoに対応してたりとか
まあ好きな方使えばいいんじゃない?
2015/01/29(木) 10:09:11.55ID:c6VwBThb
Chromeの最低動作環境は一応メモリ512MB
タブをいくつ同時に開けるのか分からないが
147名前は開発中のものです。
垢版 |
2015/01/29(木) 11:20:16.55ID:XKuc65oW
JavaScriptとブラウザの速度が一緒くたにしてる。
ChromeはJavaScript不使用であってもメモリ食う。
ChromeにIE,FirefoxのJavaScriptエンジン搭載したらメモリ消費が減ると思えん。
2015/01/29(木) 13:39:58.83ID:c6VwBThb
ブラウザ全体が確保したメモリを使いまわしているのだろう

新しいのページ等はHTML5で書かれているので実質JavaScriptを完全にオフにはできない。

v8もメモリが十分にある環境だとメモリ使用量が200MBを超えたぐらいにならないとGCされない。
2015/01/29(木) 13:45:00.34ID:au4Qd8+o
C++でブラウザゲーム開発?
2015/01/29(木) 15:54:12.53ID:PqqQ3LUQ
ただの荒らしでは?
2015/01/29(木) 19:20:51.28ID:QDO0WN3U
>>149
emscripten?
2015/01/30(金) 17:01:12.20ID:1O7TniCL
「国産フリーゲームの舞台をPCスタンドアロン(主にC++)から
ブラウザゲーム(クラウド、HTML5)やスマートフォンアプリ(非C++多)に移行」
させようという思惑を、最近この板でひしひしと感じる。
2015/01/30(金) 17:49:20.89ID:Uwc5t0gr
エサに飢えたスマホ厨や企業やその信者のステマ工作員だろ ほっとけ
2015/01/30(金) 17:52:07.48ID:9l7Lplvm
スマホはAppmethodというC++環境もあるが?
2015/01/30(金) 18:28:39.45ID:cceEvulu
一般企業 : C++って難しいんでしょ?
奴隷商人 : 新しいxx言語やツールを使えば簡単ですよ
奴隷商人 : C++なんか使う必要ありません
奴隷商人 : 素人でもちょっと勉強すれば使えますよ
奴隷商人 : わが社では優秀なxx言語エンジニアを多く確保しています
奴隷商人 : 非常にリーズナブルな値段で派遣できますよ
一般企業 : じゃあxx言語とツールで開発するからnn人派遣して
奴隷商人 : まいどw

奴隷商人 : さてと在庫減ったし新しいボンクラ雇うかな、安い金でw
奴隷商人 : Appmethod? ボンクラがC++使えるわけねーだろw
奴隷商人 : うちは安さが売りなの

C++プログラマ : 仕事ないすか?
一般企業 : うちはxx言語とツールで開発するからC++いらないよ
一般企業 : C++高くつくし

ユーザ : みためはそれなりだけど、手抜き感ありありのクソゲー増えたな
ユーザ : 今売れてる○○なんか△△をパクッて版権キャラゲーにしただけだし
ユーザ : そのくせバグが多くて元の△△より面白くない
2015/01/30(金) 18:54:29.18ID:8M4ey3DN
まいどw
2015/01/30(金) 19:11:37.72ID:WJ9MDokc
>>155
C++でも買い叩かれる
2015/01/30(金) 20:07:26.54ID:eOqAWtJ/
(給与だけなら)Python最強、C++は微妙

プログラミング言語別求人給与額の第2位はRuby、第1位は? | 開発・SE | マイナビニュース
http://s.news.mynavi.jp/news/2014/11/04/084/
2015/01/30(金) 20:33:11.20ID:8M4ey3DN
>>158
件数の軸だけ見ると、Javaが断トツなんだな。
ま、自分はC++しかしないけど。
2015/01/30(金) 21:50:27.80ID:xDmuU9zY
民度が高過ぎる(笑)。

自分は案件減や開発コスト軽減からC#やPHPに日和ってしまってるけど
やっぱりちゃんとC++で「アセンブラレベルで何が起こってるか」意識した
プログラムしないとダメになっちゃうかもね。
2015/01/30(金) 23:02:06.31ID:8M4ey3DN
>>160
C++は遣り甲斐があるぞ〜、と誘惑してみるw
2015/01/30(金) 23:29:11.58ID:lEERAgAH
正直C++もC#も言語使用は簡単でしょ?
問題はオブジェクト指向とかアルゴリズムじゃないの?
163名前は開発中のものです。
垢版 |
2015/01/30(金) 23:48:33.71ID:mPLLQnOv
ラインパーティクルみたいな細長くて透明な部分があるテクスチャが
交差するときって
どうすればいいですか?
というか、Zソートってテクスチャが貼られた面の重心を使ってやるんですか?
2015/01/31(土) 00:04:49.27ID:XljQIOh1
メモリを意識して書かないといけないのはC/C++くらいでないの
メモリアドレス扱う言語って他になんかある?
2015/01/31(土) 00:15:01.69ID:vx9WzsVv
>>162
C++は根底にCとしての組み込み系やら、ドライバとかの知識が有るかどうかでかなり変わると思う
まーもうニッチな世界になってしまってるけど、ゲームに絞るとコンシューマとかで何かを極めようとしたときに需要は有るかと
2015/01/31(土) 00:23:27.83ID:08SnV/iE
ZソートってZバッファのかわりに遠い方から描くって意味?
厳密にやるなら、ポリゴンを無限平面とした場合に交差する他のポリゴンを
交差する線で分割する処理をすべてのポリゴンにして
って文章で書いてもわかりにくいな。
分割のあとは2分木のクイックソートで、あるポリゴンの面から見て
別の比較するポリゴンが手前側か向こう側でソート判定する。

多分それなりに有名な方法と思うから検索すれば見つかると思うけど
手法の名前は知らない。
あと、赤黒木でもできるのかしらない。
2015/01/31(土) 01:24:39.63ID:vx9WzsVv
プレステやらサターンの時のZソートなら、重心か頂点の順番忘れたが二頂点のZ値を加算したものでソートしてたよ
でも組み込み方としては実際にソートではなく、リスト構造で管理してたと思う
だから解像度が低いとバキバキになってた
wソートってのも出たけど、流行る前にZバッファでパフォーマンス出るようになって無くなったと思う
2015/01/31(土) 01:26:13.53ID:H+AZbHjO
>>167
wソートってのがあったのかw
興味深いw
2015/01/31(土) 02:31:32.35ID:MYAY0/XK
>>161
じつはC#でXNAやってたんよ。

C++に戻るということは、ここ数年で作った自分ライブラリと
そこから呼び出しているXNAライブラリをDirectXに移植することを意味する。
けっこう大変だったり。

あとMonoGameが実用に足りるようになったらC#のままの方が楽というのも
正直、ある。C++でクロスプラットフォームの3Dライブラリがあれば
別なんだけど…。
170166
垢版 |
2015/01/31(土) 02:34:23.55ID:08SnV/iE
> 手法の名前は知らない。
多分、BSPツリー法だと思う。wikipediaにバイナリ空間分割でのってる。

wソートってどんなのかちょっと興味あるけど、説明されても難いと読まないだろうなw
2015/01/31(土) 05:16:44.71ID:dLJDPFMl
>>170
wバッファなら下にあったけど。たぶん今はwバッファとは呼ばない。
http://webcache.googleusercontent.com/search?q=cache:iuYaNXjit0oJ:www.daionet.gr.jp/~masa/column/98-06-25.html
wソートははじめて聞いた。
2015/01/31(土) 08:12:54.84ID:e0isyZ8t
C#ってある意味理想的な言語だよね

・オブジェクトはすべて参照渡し
・値は参照渡しは出来るが参照で持つことはできない
・共有したい変数はクラス(構造体)にする
2015/01/31(土) 08:17:29.88ID:XljQIOh1
VBもそんな感じじゃなかったっけ
2015/01/31(土) 12:13:09.01ID:H+AZbHjO
>>171
おお、川瀬さんのページか。
清水さんと交流あったんだな。

>>172
>・共有したい変数はクラス(構造体)にする
C#がやたらクラスだらけなのはそういうことだったのか・・・
2015/01/31(土) 12:39:15.50ID:jayN4xwq
C#って、構造体の参照渡しで「メソッド側で書き換え不可能」指定ができないのが難。

ref:入出力を兼ねる参照渡し
out:出力のみの参照渡し(意外と便利)

C++のconst 型 *やconst 型 &がないと言えばいいか。
2015/01/31(土) 12:44:18.35ID:dP8uz4HA
Wソートってもしかしてローカルな話だったのか?
Zソートはリストだって話を書いたけど、そのリストを更にソートすることで込み合ってる部分を細かく前後入れ換える事で若干バリバリを押さえる感じだった
当時は描画よりも演算の方が圧倒的に早かったのとダブルバッファやトリプルバッファでの空き時間を有効にって感じだったよ
でも自分では研究以外では使ってない
理由は当時は整数演算だったから、ほとんど効果が感じられなかったから
2015/01/31(土) 12:46:07.85ID:ehZNZ4NM
書き換えなきゃ良いだけだろ
なんでそんな事を言語仕様に入れなきゃならないんだ
2015/01/31(土) 12:51:54.53ID:vx9WzsVv
>>177
書き換えちゃダメって言っても書き換える人が居るから言ってるんだと思うよ
全員自分なら楽な話だけどさ
2015/01/31(土) 12:55:33.58ID:jayN4xwq
あ、連投ごめん。

上のリンク先とMSの解説で、ZバッファとWバッファの意味が逆になってる気がする。
https://msdn.microsoft.com/ja-jp/library/cc324546.aspx

リンク先は「割るほうがWバッファ、割らないほうがZバッファ」、
MSだと「割るほうがZバッファ、割らないほうがWバッファ」に読める。
用語の混乱があるのか、自分が何か勘違いしてるのか。


で、Wソートって何?
昔のPSみたくバッファリングしないでポリゴン単位でソートするけど、Wでやるってことかね。
2015/01/31(土) 13:05:31.10ID:+0dbs7Ey
const必要になるのはライブラリ作成とかチーム開発とかだろうし
ひとりでシコシコ作ってる分には別に不便もないよな
コーディングルールは自分ルールだし
2015/01/31(土) 13:12:28.57ID:H+AZbHjO
自分も、自分用プログラムばっかり作ってて、const利用はハードコーディングな定数以外は0。
自分以外を考慮に入れると、たしかにconst修飾子は重要になると思うけど、
ある程度小規模なチームなら、ルールで十分賄えると思う。
2015/01/31(土) 14:06:11.93ID:9fyUH/Hj
struct, classのコピーを避けるために参照・ポインタを多用してると確実にミス出るし
constは値を中身を書き換えない保障でもあるから、内部処理を忘れたときとかに役立つ
2015/01/31(土) 14:13:16.03ID:ehZNZ4NM
オブジェクトの参照を渡した時に中身を書き換えてくれるなよ、という要求はある
それをC++のようにconstで表現するのがいいかどうか
C#ではイラネってなったし要らないと思う
2015/01/31(土) 14:18:46.16ID:4UKOkNc6
ところで、const 同士の operater== は operater==(const) const; でいいのか?
最後の const で数時間悩んだんだが。ゲーム以外のところで…
2015/01/31(土) 14:47:44.78ID:g0EkdIoS
friend operator == (const&, const&)
2015/01/31(土) 15:27:49.35ID:PEZyYsg9
http://jbbs.shitaraba.net/sports/42269/
2015/01/31(土) 16:27:45.39ID:4UKOkNc6
あー、ここで friend 使うのかサンクス。スレチすまん
2015/01/31(土) 19:40:50.51ID:LvLYpCGK
単に規約の問題だけじゃなくて。
constというかC#のreadonlyは構造体にも指定できるんだけど、
それを先述のref指定でメソッドに渡せないんだよ。

既存のライブラリでref指定(参照渡し)になっているものが
少なからずある。まあ別の変数に代入してから値渡しできるんだけど、
微妙にパフォーマンス落ちるでしょう。
2015/01/31(土) 22:35:54.52ID:g0XZBTK4
const無しをデフォルトにしてしまうと,引数先で書き換えるのかどうか,引数からわからなくなるから
基本はconst参照だよね
2015/01/31(土) 23:12:04.08ID:IlaPMJGi
constなしの参照だとrvalue取れないし。
全部コピー渡しですかそうですか
2015/01/31(土) 23:45:24.01ID:+0dbs7Ey
const付けたらコンパイル時に置き換えられるの?
2015/02/01(日) 02:38:02.64ID:HEaS08Xq
#defineした変数をconstするとどうなるのっと
2015/02/01(日) 09:04:46.33ID:4SXpmV3a
>>188
たまにそういうシチュエーションがあるけど、それを解決するために言語使用に手を入れるのは言語道断
2015/02/01(日) 16:13:17.17ID:7SDWQ5Km
>>191
intとかならそうなんじゃないかな。
でもconstで定義されるのがクラスインスタンスの場合、
実行時に生成されるのでは(恐らくクラスに最初にアクセスした時)。

>>192
>#defineした変数
#defineはプリプロセッサで置換されるマクロに過ぎないよ。
2015/02/01(日) 16:38:17.15ID:5cTwIokB
>>192
お前のconstでコードがやばい
2015/02/01(日) 16:38:49.06ID:gTwIs5aq
template初めて使ったんだけど引数側に同じtemplate型があれば、
返り値をわざわざ指定しなくてもいいの?

↓こんなん
template<typename T>
T zeroCheckException(T t){
if(t == 0)throw;
return t;
}
2015/02/01(日) 16:44:02.52ID:wN5YVAib
>>196
2つあるTはどちらも同じ型なんだから、むしろ指定できたらダメだろ
引数と同じ型を返す関数、という意味になっている

引数から推測できない型を返したいなら、typename を2回書けばいい
template < typename R, typename T > R convertTo(T t) { return ... }
string r = convertTo<string>(123);
2015/02/01(日) 16:59:29.96ID:7TQeJfVA
>>196
>>返り値をわざわざ指定しなくてもいいの?
多分質問の意味からだと、返り値を引数と同じ型(T)で返したいなら返り値(の型)の宣言は必要
その部分はtemplateとは関係のない関数宣言の話で、template内はTと言う型が使えるようになっているだけだと思って関数を宣言すればOK
だから、その関数が返り値を返す必要がないならvoid、intを返したいならintになる
2015/02/01(日) 17:45:05.57ID:bGERJtUD
typenameとclassってどっちがモダンなん?
あるいは使い分けが必要?
2015/02/01(日) 19:03:59.15ID:gTwIs5aq
http://ideone.com/bM0sAR
http://i.gyazo.com/a30bf7d11715dd37855cf8fc8a9be676.png

一度変数にしないと、とんでもない数値になるんだけどさっぱりわからない
計算してるわけじゃないから桁あふれで無いと思うんだけど
2015/02/01(日) 19:05:18.65ID:gTwIs5aq
>>197,198
なるほど、ありがとう
2015/02/01(日) 19:24:29.40ID:aP8gwvz+
>>199
常にclassを使用していて困ったことがない
2015/02/01(日) 19:33:48.11ID:2nnmtHZB
class使ってる人を見たことがない
2015/02/01(日) 19:36:58.64ID:mV3TuxIT
>>200
ideoneに張る意味ねえな。
最低限実行出来るようにしてから張れ。
その過程でここで質問するまでもなく解決することもある。
2015/02/01(日) 19:53:30.95ID:I530QHNw
>>200
11行目のgetPositionをnextPosにしても駄目?
評価順は正しいとは思うけど最適化とかキャッシュとかで狂ってるのかな?と思いました
しかし、難読化してるようなソースだな…
2015/02/01(日) 20:01:18.83ID:mV3TuxIT
>>200
ヒント

unitListが標準コンテナだとするとsize()の返す型はsize_t
多くの処理系でsize_tは符号無し
1-2uの結果は?
2015/02/01(日) 20:12:12.40ID:2nnmtHZB
そんな問題じゃねーよw
2015/02/01(日) 20:29:03.32ID:mV3TuxIT
>>207
(゚Д゚)
2015/02/01(日) 20:46:24.29ID:eIbULHuy
>>199
これは俺ルールだが、
typenameはbool, int, doubleとかも使いたいとき
classはクラスだけでいいとき
210199
垢版 |
2015/02/01(日) 22:08:02.18ID:0xVgzIN+
>>202>>203>>209
見事にバラバラだなー
2015/02/01(日) 22:50:33.72ID:/xEMpT1p
classしか使わない派だが,template自体あまり使わないことにしてる
2015/02/01(日) 22:52:09.95ID:UZAipjiA
自分はtypename派だな。
classに限定しない使い方が多いからというのがあるけどね。
ま、組み込み型も一種のクラスと見做せないことはないし、文字数少ない分、classのほうがいいかもしんないけど。
2015/02/02(月) 00:06:09.93ID:WStqUBYk
もはやゲーム関係ない気がするのはミンナニ ナイショダヨ
2015/02/02(月) 01:35:39.62ID:g0RkpJRz
て、テンプレ使えれば前以上に楽ができるかもしんないし!
なお移植性が壊滅的に下がる模様
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況