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/02/20(金) 12:54:54.49ID:81/jlh7Y
>>493
その程度も解らないなら既成のゲームエンジン使っといた方がいいよ
竹槍で航空機へ挑んでる感じ
498名前は開発中のものです。
垢版 |
2015/02/20(金) 13:02:44.72ID:LvDa2DK4
>>494
>>496
ありがとうがんばってみる
499名前は開発中のものです。
垢版 |
2015/02/20(金) 13:12:46.23ID:LvDa2DK4
>>497
一応方法としてはポリゴンごとにオブジェクトと距離測って範囲内にあれば処理するくらいならあったのだよ
でもそれだと処理量がすごいことになっちゃうからね
今からゆっくり理解するよ
ありがとう
2015/02/20(金) 14:14:35.39ID:V4z76ahC
モートン序列というので大量の判定を軽量化出来るってどっかのサイトにあったが
地面との着地判定にはどう使うんだろうか
オープンワールドの地形よろしく分割されてれば出来そうだが、マップ読み込んだ時に自動的に分割されればデザイナーにも優しいかも
501名前は開発中のものです。
垢版 |
2015/02/20(金) 14:17:28.45ID:LvDa2DK4
あれ、今言われたことを踏まえて改めて調べたんだけど
もしかして重力判定で通過したかどうかは一定の範囲のポリゴン全部チェックする必要があるんだ?
二次元データみたいに指定したxy座標にブロックの有無と種類を判別して処理ってことに近い事はポリゴンでは出来ないって事だよね?
これ重くならないか不安だったんだがこういう認識でOKだよね?
本当頭悪くてすまん
2015/02/20(金) 15:28:45.62ID:f/qfY/pq
>>500
キャラクターだろうが地面だろうがひとつのオブジェクトとして扱うのが一番簡単なんじゃね

今モートン序列当たり判定自作してて各ブロックにオブジェクトを挿入するところまで出来たけれど、
肝心の探索でバグってて総当たりよりも遅くなっててわろえない
2015/02/20(金) 16:33:09.05ID:V4z76ahC
同じブロックに入ってても通常より処理が増えるだけだからな
スカイリムみたいなオープンワールドで始めて効果を発揮するんじゃないか?
まぁスカイリムでもマップの反対側で当たり判定動かしてるのかわからないが
2015/02/20(金) 16:50:19.91ID:kfuov5G/
>>501
ポリゴン全部っつーても、衝突判定に描画に使ってる精細なポリゴンをそのまま使う必要はなく
基本的にはそれを簡易化した描画しないローポリや、球、箱などとの判定でok
505名前は開発中のものです。
垢版 |
2015/02/20(金) 17:03:56.05ID:LvDa2DK4
>>504
ありがとう!
みんな優しいね
2015/02/20(金) 18:58:58.25ID:QKhWkDln
DirectInput8のためだけにDirect8で止めておく選択肢はあったかもなw
名称が変るのは回避できない可能性があるが。
2015/02/20(金) 19:33:43.50ID:81/jlh7Y
ポリゴンのあたり判定もそれをやる前にオブジェクト毎にAABB(aligned axis bounding box)を持っといてそれで大まかな判定したあとポリゴンであたり判定するとかね
AABBは描画するときにもつかえる
2015/02/20(金) 19:56:18.41ID:V4z76ahC
オクルージョンカリングってどうやるの?
2015/02/20(金) 21:38:48.57ID:81/jlh7Y
出来るだけ少ないポリゴン数で遮蔽ポリゴンを作っておく(実際のポリゴンをはみ出ないように)

1.遮蔽ポリゴンだけを使ってデプスのみ描画
2.描画判定するオブジェクトのAABBをそのデプスを使って描画されるか判定(デプステストをパスするピクセル数を返すだけのAPIがある)
3. 2で描画されるピクセルがあると判定されたものだけ実際に描画する

いくつか方法あるけどスタンダードなのはこんな感じ
2015/02/20(金) 21:43:31.32ID:mEXo8/Tf
Clipping
Culling
Occlusion

でしょ
2015/02/24(火) 21:32:41.15ID:vaS9aulZ
C++/SFMLライブラリを使った2Dベースのゲームを作っているのですが、
自分で調べた感じですとSFML自体ではz-orderingの機能は持ち合わせていないようです。
こうなるとやはりvectorなどを用いてマニュアルで描画順をうまくやりくりするしかないのでしょうか?
2015/02/24(火) 22:29:05.30ID:xhUImxJo
>>511
http://en.sfml-dev.org/forums/index.php?topic=7535.0
ちょっと古いやり取りだが、z-orderの機能はないし、リクエストも却下されたらしいぞ。
自前で管理するしかないんじゃないか?
2015/02/24(火) 23:50:55.98ID:vaS9aulZ
>>512
早速の返答ありがとうございます。
dxlib関連の記事のようですが下記のようなサイトを見つけました。
こんなかんじで描画順を管理できるように試してみようと思います!
ありがとうございました。

ttp://ktkrmjskmjds.blog119.fc2.com/blog-entry-4.html
514名前は開発中のものです。
垢版 |
2015/02/25(水) 07:37:32.67ID:nWK6BI/o
BtconというWiiリモンコンをPCで使えるようにするツールを作っているのですが、
これはwiiyourself!ベースでwiiリモコンを制御しています。
しかしwiiリモコンプラスと元祖wiiリモコンで違いがあり、wiiリモコンプラスにwiiyourselfが対応していません。
wiiyourselfのほうがwiiリモコンプラス発売より前に作られたもので、開発が止まっているためです。
自分で調べて動いたという情報を元に改造してみたりしているのですが、動かなくて困っています。
詳しい方がおられましたらヒントをいただければ助かります。

http://xbmc.inpane.com/main/rc/wiiremote.php#mc
2015/02/25(水) 09:06:11.55ID:zNwgz5b4
wiiリモコンプラスはMSスタックは繋がらないようで、東芝のスタックであれば繋がりました。
2015/02/27(金) 09:04:14.57ID:l7kW3nDz
DirectX9でミップマップって勝手にテクスチャ入れ替えてくれる?
2015/02/27(金) 14:15:25.84ID:KjiqxG1B
https://msdn.microsoft.com/ja-jp/library/cc373037.aspx
2015/02/27(金) 21:19:14.81ID:Pdgs5cQ7
シェーダ側では、ミップレベルを指定したい時はわざわざtex2Dlod()を呼び出すくらいだから
一般のtex2D()は自動でミップマップされてると考えていい。

ただもちろん、ハード対応してればだし(今動いてるPCはまずしてるだろうけど)、
「ミップレベルを入れ替える」のではなく「周辺の2つのミップレベルを補間する」実装のはず。
2015/02/27(金) 21:26:33.67ID:Pdgs5cQ7
あ、ごめん、サンプラステートのMipFilterのことを忘れてた。
2015/03/03(火) 08:02:03.50ID:O4uDv9F0
UnrealEngineのコードへのアクセスが無料化されたけどこのスレの住民は興味なし?
2015/03/03(火) 08:44:20.60ID:nygqixhE
ゲームエンジンでは実現不能なアイデアばっかりなんで
2015/03/03(火) 08:46:22.16ID:O4uDv9F0
ゲームエンジンを知らない奴が居ることは解った
2015/03/03(火) 10:44:49.65ID:ngz/wjN8
UE4課金してるし無料になるならラッキーって程度。
2015/03/04(水) 00:59:35.68ID:9TbqAfLf
興味ないどころか、この板自体がウニと非現実のステマに占領されてるので
嫌気が指してる。でもこういうのに限って板分けないだろうな運営。
2015/03/04(水) 01:13:58.75ID:dqGNRwqL
っていう時代に取り残された人達が多い所か、ここは。
オクルージョンカリングの質問にもまともに答えれるひと居なかったし
2015/03/04(水) 07:43:32.99ID:tS5hBT8s
オクルージョンカリングで思ったんだけど、
例えばキャラクターが建物やらの後ろにいて隠れるけど、
影は建物から出るって時、影は描画されるのん?
判定用モデルでそのまま影描画しちゃう感じ?
2015/03/04(水) 09:43:02.19ID:GgwaroCI
シャドウマップを作るときはライトからの視点になるから、
また別のオクルージョンカリングを行うとか?
2015/03/04(水) 10:13:15.70ID:yZTKs+IT
オクルージョンカリングね
あれうまいよな
でも俺はポンデリング派だな
2015/03/04(水) 10:49:22.17ID:a+CSwpI9
影はビューカリングだけじゃない?
z-prepassすればそこまで重いものじゃないし影用モデルでかなり最適化できる。
オクルージョンカリングは描画結果のピクセル数を取得して0なら描画しないだけだよ。
2015/03/04(水) 20:12:10.19ID:lWy5bGCc
オクルージョンカリングってgpu内で完結できたらいいのに。
2015/03/04(水) 21:18:31.71ID:GgwaroCI
大きなトレードオフがないならGPUでやってほしいよね
2015/03/04(水) 22:53:21.49ID:GI8MSIuN
>>528
くだらない事言ってるとお前の*に->するぞ
2015/03/05(木) 00:38:58.57ID:f1raWeBS
>>530
>>531
簡素な遮蔽ポリゴンと、事前計算した超軽量なAABBでデプステストをパスするか確認するから軽くなるんだよ。
デプステストをパスしなかったら描画する対象のvertex shaderすら動かす必要が無いからね。

GPU内で完結するようにしたら実際のポリゴンを使うしかない。
そうすると、どうやっても全頂点計算するしかない。
それで隠れるポリゴンがあればfragment shaderは実行しなくて済むけど、それはTBDRっていう方法で既にGPUで実現済み。
ピクセルを書き込む回数を減らせるからメモリ帯域の狭いモバイルGPUでよく使われてる方法で、PowerVRが昔からその方法を使ってて有名。
それも半透明とかアルファテスト使うようなポリゴンがあると使えない。
2015/03/05(木) 02:25:19.75ID:YpPGywcJ
なんか2chの専ブラでハードコーディングしたからAPIキーが割れたって言ってるけどコンパイルしてネイティブコードに変換されて読み取れるもんなの?
2015/03/05(木) 06:12:17.20ID:KVc1+L+F
>>534
とりあえず板名100回復唱。な
2015/03/06(金) 07:01:26.91ID:22aEiDue
オーバーフローと配列範囲外のチェックってどうやんの
2015/03/06(金) 08:11:24.59ID:JOegiwit
if ( hoge.length() - 1<i ) return;
2015/03/09(月) 00:28:48.51ID:iEPwp1GV
入門ゲームプログラミングって本買った
まずロベールのC++本で基礎を身につける
2015/03/09(月) 00:55:44.81ID:KBqbZUvv
>>537
lengthがsize_tを返すのであればemptyの時に死ぬね
2015/03/09(月) 08:43:44.85ID:5/H88Ii0
そんなん配列のnullチェック先にするに決まってんだろ
2015/03/09(月) 11:25:36.92ID:KBqbZUvv
>>540
hogeってのは生配列を返す関数持っててnullチェックしないと使えない糞コンテナなのか?そんなもん窓から投げ捨てろ
2015/03/09(月) 16:56:13.92ID:Tsv4BOfD
>>541
なんか話噛み合ってないと思ったら、javaと勘違いしてたごめん。
あとjavaにしてもlengthの後の括弧いらんかったごめん。
2015/03/14(土) 11:31:02.28ID:Bn3tbHEp
ヘッダでstatic constな配列を初期化することってできない?
2015/03/14(土) 12:27:07.32ID:FGm0AUiX
const_castとかあるけど使ったことないから分からない
2015/03/21(土) 17:31:21.55ID:4J9dPJbb
DXライブラリで一通りゲームを作って次はDirctX9でゲームを作ろうと思って本なり読んでるけど
入力関連とかメインループ文に入ってるように見えないのになんで操作できてんだこれとか色々わけわかんなくてDXライブラリに逃げちゃいそう
2015/03/21(土) 17:41:03.09ID:WO0UmCC8
入力の取得関数の所にブレークポイント張ればいつ呼ばれるか解るだろ
ソースレベルで追えないんじゃそのあとも苦労しそうだが
2015/03/21(土) 22:19:51.97ID:Vu16KnFN
メッセージ系の処理の話かな?
Win32の仕組みを知らないといろいろわからないかもしれない
って言うか無理しないでDXLibでいいと思う
2015/03/22(日) 13:15:06.80ID:RZoxpRxM
>>545
まさかまかりなりにもDxlib使ってゲーム作った経験があるのにコールバック関数を知らない訳じゃないだろうな・・・w
2015/03/23(月) 00:04:40.06ID:6RzGsxDm
最低限の機能を使うだけなら、コールバック要らんぜ?
2015/03/23(月) 02:47:34.49ID:5MPdWZ7w
話をまとめると「コールバック関数でググれ」だな
2015/03/23(月) 08:21:54.36ID:OPwFNkI6
名前聞けば皆知ってそうなFLASHゲームの製作者なんて構造体すら知らなかったぞw
実装力>>>知識よ。
2015/03/23(月) 14:50:59.94ID:ORae6Rkf
コールバックの利点ってなんぞ
軽い機能ならswitchすればいいしでかいならクラスごとするし手間かかるだけじゃないのか
2015/03/23(月) 20:27:25.37ID:jlPJ7kT1
>>552
と、とりあえずググってこい、なっ?
2015/03/23(月) 20:32:37.09ID:6RzGsxDm
「ゲームで」だとそこまでは…
2015/03/23(月) 21:51:33.63ID:2BLAF17B
ライブラリの実装が楽になるぐらいじゃね
2015/03/25(水) 00:11:47.80ID:q/dDA6au
誰にも迷惑がかかるわけでもなし
メリットが無いと思うのならば使わず突っ走ってみるのも一興

スマートポインタ?delete忘れるわけねーだろとツッパっていたら
見事に二重deleteを踏み抜いて以来
スマートポインタ教になった俺みたいに
2015/03/25(水) 07:50:29.42ID:Ni1QV6xd
スマポ(RAII)は誰もが魅了される素晴らしい作法。
2015/03/25(水) 09:05:10.14ID:QSKvYWqw
二重deleteは追えばすぐ分かるだけ良心的
559名前は開発中のものです。
垢版 |
2015/03/29(日) 16:51:57.43ID:0emdsjcu
C++も、デフォルトで、ベクトル演算や行列演算のコンパイルができるようになればいいのに
コンパイラに任せると、機械語でオーバーヘッドが膨らみ過ぎるのかな・・・
2015/03/29(日) 17:28:01.84ID:xcFREV5w
どうせベクトルや行列の型を指定するんだから見た目だけなら演算子オーバーロードでいいだろ
そうじゃない自動ベクトル化ならIntelCでも使えよ、一応VCにもあるけど
2015/03/29(日) 17:28:41.73ID:ZYW27Yds
VC++の自動ベクトル化の空気さは異常
2015/03/29(日) 22:35:03.23ID:0emdsjcu
>ベクトルや行列の型を指定するんだから見た目だけなら演算子オーバーロードでいい
要するに自分でクラス定義して、そのクラスを引数に取る演算子のオーバーロードするって事だよな。
それって面倒じゃん?

たとえば、ベクトルxとスカラーcがあるとして、
例えば、x-cなんかで、cをベクトルに拡張して四則演算してくれるようにコンパイルをしてくれれば便利だ
記述が、すげースッキリするぜ
2015/03/29(日) 22:46:40.82ID:tAb5E4+1
そんな言語あるのか
2015/03/29(日) 23:57:58.80ID:LTE960gn
HLSLとかGLSLはそうとも言えるんじゃね?
C++に含めるのは仕様が膨らみすぎるしどう考えてもありえないけど
2015/03/30(月) 17:38:30.42ID:kGTScyVB
その程度のオーバーロードぐらい自分で書けよ
2015/03/30(月) 17:39:10.89ID:kGTScyVB
それかライブラリ使え
それぐらい既にあるだろ
2015/03/30(月) 18:13:10.35ID:slXQ1bOX
ベクトル化って並列化のことでなくて?
2015/03/30(月) 18:23:29.49ID:kGTScyVB
>>567
スカラーをベクトルに拡張してって話をどうこねくり回しても並列化にたどり着かないんだけど
2015/03/30(月) 20:10:43.25ID:1XyG6Wml
行列の話と、CPUの最適化の話がごっちゃになっとるなwww
Phiとか扱わんだろうからなぁ
2015/03/30(月) 20:48:54.91ID:b0tJqvqw
>>564
C言語でも、静的配列はsizeof()で、要素数が求まるじゃん。
だから静的配列に限っては、それほど無理なコンパイル要件でもないと思うんだ。
2015/03/30(月) 22:48:43.72ID:slXQ1bOX
>>568
いや
>>561
で出てんじゃん
2015/03/31(火) 00:17:17.94ID:DE0yY6pv
>>571
そいつに言ってるわけじゃないし
ID:0emdsjcu
はどう見てもベクトル命令の方は言ってないだろ返信の為に引用した方から見ても
2015/04/04(土) 12:05:56.45ID:QQCOreS+
>562
プリプロセッサとかテンプレート使え
2015/04/04(土) 15:28:53.15ID:yUzuUUN3
unityとかue使わないのにはなんか理由があるの?
2015/04/04(土) 16:35:38.22ID:vaG8wcz0
>>574
オープンソースじゃないと嫌な宗派の人たちとか
反プロプライエタリエンジン派の人たちとか?
2015/04/04(土) 17:34:51.61ID:YDk4o154
ゲームを作るだけが目標じゃなくて
技術習得とか作る行程にもこだわりがあるとか
2015/04/06(月) 02:30:22.94ID:uSGdnOak
>>576
まさにそれ。
ゲーム以外でも応用できる技術を身に着けるのが楽しくてしょうがない。
会社(非ゲーム)でも役に立ちまくってる。
2015/04/06(月) 08:15:15.97ID:sWIkPIlR
日本のIT屋はOSやオフィスソフトなんかを作らなかった
結果世界を相手にできない
日本のハード屋はゼロから作ること(メイドインジャパン)にこだわった
結果世界を相手にできてる
unityとかもいいけどゼロからでも作り上げれる技術は保持しときたい
だからC++は捨てれない
2015/04/07(火) 08:34:53.50ID:q9bGL2Lp
俺もだ

つまり、元々ゲームが作りたいんじゃなくて、プログラミングを楽しんで色んな技術や知見を得たい。その過程の一つとしてゲーム作ってるだけ。
2015/04/07(火) 10:05:55.63ID:6mIxjEc4
>>578
言語は関係ないのでは?
コピペしたいなら別だけど
2015/04/07(火) 19:26:39.87ID:J/eE9D3a
>580
VMでもスクリプトでもなくハードを直接叩けて多くのプラットフォーム向けのコンパイラのあるOOPも関数型もいける高級言語って他にある?
2015/04/07(火) 20:05:14.94ID:pKp3reSH
ハードを直接叩くって時点でC++は…
2015/04/07(火) 21:14:04.62ID:JigxqEUV
c++11以降の発展が素晴らしいから使ってる。
2015/04/07(火) 21:49:14.25ID:6Igr/bFa
ガベージコレクタないらしいじゃん
それだけで使う気になんないわ
2015/04/07(火) 22:15:58.91ID:Js45Pttp
C++11が神すぎて愛してる。

>>584
ガベコレの必要性が分からない。
スマポじゃダメなの??
2015/04/07(火) 23:22:56.51ID:r6+ZyJLJ
たしかガベコレのCライブラリもあったはず
わざわざC++でガベコレの使うぐらいなら
それでこそJavaでよくね?とは思うけど
使いこなせる人はきっといるのだろう

ま、使いやすいと思う言語を使えばいいのさ
2015/04/07(火) 23:52:39.26ID:V/NiCl4y
ジャンルにもよるけどゲームの場合はガベコレはデメリットが大きい
ガベコレ中はどうしても処理負荷がかかってしまう
あとガベコレでも循環参照とかメモリークの危険性はある
2015/04/08(水) 01:18:56.44ID:FP0EIOAz
循環参照を上手いこと扱ってくれるのをガベコレって呼ばないか?
単純な参照カウントは含まないイメージがある
2015/04/09(木) 04:57:40.20ID:V84tE5WO
処理が高速なのが売りの言語にそんな物を突っ込むこと自体が…
しかも、CPUの進化で結構余裕が出るようになってきたとはいえ1フレームを争うゲームで
まあ、処理の速さを活かして動作安定性を高めていると言えないこともないが
2015/04/09(木) 10:55:23.90ID:MHTRE/z5
そのあたりの利便性と実行速度のバランス自体を作り手の技術と裁量次第で自由に出来るのがC++の良さ

例えば、マークアンドスイープをメモリ領域を小分けにしてフレーム単位で分散して実行するとか
同じサイズのオブジェクトが大量に生成破棄されるならそれ用のメモリプール作っておくとか
2015/04/09(木) 11:07:59.75ID:U3R6v3b4
マークアンドスウィープ方式のGCを自分で実装なんて考えたこともないわ
2015/04/09(木) 14:05:15.05ID:eY4Y798Y
boostあたりでgcライブラリを出してくれてもいいんでねえ?
スマポの延長みたいな感じで
2015/04/09(木) 15:30:45.95ID:TQZSg7vZ
どうせ何かしらのスクリプト組み込むんだからGC必要な処理はそっちでやればいい
2015/04/09(木) 15:32:48.11ID:0uLPtayU
プログラミング初心者にはわからないと思うけど、プログラミングそのものが有名ゲームをプレイする以上に楽しかったりするんだよね
むしろお金を払わないでプログラミングができるってだけで結構楽しかったり
2015/04/09(木) 15:51:09.16ID:DMZkI4l5
料理とかプラモデルみたいな感覚って説明してる。
それを楽しいと思えるかどうかは別として。
2015/04/09(木) 20:09:02.62ID:V84tE5WO
問題は覚えるべき要素も多くて取っ付きにくいことと、
言語仕様がとっ散らかってて時々その仕様に悩まされることだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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