C/C++ゲーム製作総合スレッド Part5
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2014/01/16(木) 00:00:31.27ID:w6WW3hAo元スレ
DXライブラリ 総合スレッド その17
http://toro.2ch.net/test/read.cgi/gamedev/1383795645/
前スレ
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/
0358名前は開発中のものです。
2014/03/13(木) 10:00:03.12ID:pSqzCZ7J0359名前は開発中のものです。
2014/03/13(木) 11:21:45.95ID:pSqzCZ7J一応検証の為に pow(x, 2.0) と x*x の比較したら最適化されないみたいです(VC++2013)
√( x^2 + y^2 + z^2 ) [4.25600] sec
√(x * x + y * y + z * z) [0.61000] sec
これまでのを総合すると、
float dist2 = x * x + y * y + z * z;
float rr = (r1 + r2) * (r1 + r2);
if (dist2 > rr) {
// no collision
}
else {
// touch or collision
float dist = sqrt(dist2); // 衝突位置の計算用
}
みたいな感じかな?
参考になりました、ありがとうございます
0360名前は開発中のものです。
2014/03/13(木) 20:12:09.07ID:U+Ob+Zph0361名前は開発中のものです。
2014/03/13(木) 20:37:28.97ID:gJhIi0KX0362名前は開発中のものです。
2014/03/15(土) 02:04:37.56ID:lh5cPZ7HplayMIDI
TextOut
ReleaseMIDI
など出てきたんですけどこれはygs2kで間違いないですかね?
ygs2kってゲ製では有名なんですか?
0363名前は開発中のものです。
2014/03/15(土) 02:30:50.42ID:3y1QMR7E0364名前は開発中のものです。
2014/03/15(土) 09:20:59.03ID:9NF5k3Jb0365名前は開発中のものです。
2014/03/15(土) 14:07:07.29ID:lh5cPZ7H0366名前は開発中のものです。
2014/03/15(土) 14:14:31.86ID:h6Za+Db1言ってることが支離滅裂。
なぜ、その名前だけでそのライブラリに行きつくのか。
ついでに言えば全然有名じゃないし。なんでゲ製でなの?
0367名前は開発中のものです。
2014/03/15(土) 14:58:29.14ID:FYDjzZLC0368名前は開発中のものです。
2014/03/15(土) 16:20:04.97ID:PgHQYT7S0369名前は開発中のものです。
2014/03/15(土) 17:08:57.60ID:h6Za+Db1ああ、彼のライブラリなのか。
結局、3Dは出来なかったな。能力的にも年齢的にも無理があったのだろうが。
0370名前は開発中のものです。
2014/03/15(土) 17:24:30.81ID:rzf5NJ5V0371名前は開発中のものです。
2014/03/15(土) 19:43:09.80ID:DtHIrGu20372名前は開発中のものです。
2014/03/15(土) 20:00:10.92ID:fItnBM/L0373名前は開発中のものです。
2014/03/15(土) 20:13:58.33ID:dxeJpeDA0374名前は開発中のものです。
2014/03/15(土) 20:44:18.33ID:7h3u1dFN0375名前は開発中のものです。
2014/03/16(日) 02:00:01.53ID:/lXYe85Y0376名前は開発中のものです。
2014/03/16(日) 12:04:58.86ID:45D5Boh60377名前は開発中のものです。
2014/03/16(日) 12:46:48.57ID:9fplCkXk方向は壁の法線方向に対して対称(反射)
※リアルさを求めるなら壁から加わる力から加速度をもとめるべき
0378名前は開発中のものです。
2014/03/16(日) 13:08:18.40ID:DbQzKXx20379名前は開発中のものです。
2014/03/16(日) 14:37:04.76ID:e720CN4Jただ、簡易スマートボール作ろうとしたときに>>377のやり方やってたら
曲面の壁に沿って滑らかに滑ってくれなくてエターなった思い出があるわ
0380名前は開発中のものです。
2014/03/16(日) 15:00:37.43ID:a7Z/sEsx0381名前は開発中のものです。
2014/03/16(日) 18:55:21.70ID:uPQCf7iIガツガツと壁を削りながらアグレッシブに攻めるゲームにしたいのか
スピンしてほぼ停止状態からやり直させるのか
ある程度の傾斜なら斜めに傾いたまま突っ走るロデオか
0382名前は開発中のものです。
2014/03/17(月) 00:57:39.15ID:VY0wetv00383 ◆UxQ8uxJMok
2014/03/17(月) 01:35:41.18ID:kdQ7tXJG>>182 :名前は開発中のものです。:2014/02/04(火) 00:23:08.29 ID:J1FJfMJW
> スレッドの主旨を考えてくれ。どっかのスレみたいに株の話をされても困る
おぃ、>>182ID:J1FJfMJW
手前ェは、一族根絶やし肉だるま処刑http://uni.2ch.net/test/read.cgi/entrance2/1369909044/119リスト入りだ。
0384名前は開発中のものです。
2014/03/17(月) 07:06:23.16ID:Do9zcgcc壁とぶつかりながら進む方
一応ライブラリ使えば球体とコースの当たり判定と交点を求めることは出来るんだけど、アクセルを踏み続けると当たってる時でも加速するし、減速する処理を書くと当たり続けて減速しすぎちゃうし・・・
0385名前は開発中のものです。
2014/03/17(月) 09:41:07.08ID:rpSVpHyCここまでは理解していると思うので、
挙動をどうするか決めておいて
そのようになるようにコードを書いてゆくのでしょう
0386名前は開発中のものです。
2014/03/17(月) 19:26:01.22ID:U3cX2N0O>>377 にあるようなゲームならではの調整が必要になるケースだと思うよ
壁に接触してから〇秒間は加速性能を〇〇%落とすとか、
壁から離れるような方向に謎の力が加わるとか
やってみて理想のゲーム性に近づくようにいろいろ試してみるしかないかと
0387名前は開発中のものです。
2014/03/18(火) 20:52:56.02ID:CMOj/Jcfこのスムーズに動くマップスクロールですが、最初にマップを動かしてからキャラを描画する形で
ソースが書かれています。
これを、画面端で、キャラだけ動いてカメラ画面(マップ)が動かないようにしたい場合、
画面を滑らかに動かすのではなく、キャラを滑らかに動かすような処理に
ソースを変更するしかないでしょうか?
0388名前は開発中のものです。
2014/03/18(火) 20:53:36.58ID:CMOj/Jcfアドレスはこちらでした。
0389名前は開発中のものです。
2014/03/18(火) 22:13:14.48ID:anUGUjWa0390名前は開発中のものです。
2014/03/19(水) 01:58:11.08ID:tk/WX1Vmリンク先をチラ見した程度じゃ、何をやってるか正しく把握してないし、
>>387の言わんとしてることもイマイチ分かりかねてるが、
方法としては、
昔ながらRPGみたく、
キャラの位置が画面端に近づいたら画面全体じゃなくて、キャラのみを移動にする方法や
完全にどこの位置でもキャラを移動させる方法、画面端(移動制限をしっかり)して描画に十分な余白
の3通りぐらいはあると思うよ。
他にも3D系のだと、画面端に近づくと縮尺が変わってとかもあるけど。
0391名前は開発中のものです。
2014/03/19(水) 04:13:25.51ID:GLn+gVinこんな事言って、例のkなんとかさんが激おこしないことを祈る。
>>387
現実世界で言うところの、スポーツ中継におけるTVカメラのようなものを想像して欲しい。
例えばマラソン中継。ランナーは常に走っているけど、カメラも同じ方向に動いている。
あるいは野球中継。ホームランボールをTVカメラが追いかけて、常に画面の中央にあるように撮影する。
被写体の動きに合わせてカメラを動かすことで、視聴者には被写体は停止し、背景が流れていくように見える。
カメラを動かすのをやめれば、逆に背景は停止し、被写体は移動する。やがて画面の外に消えてゆくだろう。
これをまとめると
(1)キャラクターは、画面表示に関わらず常に動かせ。
(2)マップは、画面表示に関わらず座標を動かしてはならない。
(3)カメラの位置は、状況に合わせて移動させろ。
ということになる。
0392名前は開発中のものです。
2014/03/19(水) 16:07:40.13ID:UvHVMI/Mその答えだと根本から作りなおせって事になるんじゃない?
0393名前は開発中のものです。
2014/03/19(水) 16:41:44.59ID:pluZ/2gm0394名前は開発中のものです。
2014/03/19(水) 17:00:07.58ID:o8V0VZ6Pぶっちゃけサンプルとしてはどうかと思うぞ。
キャラとカメラ両方に入れるか、キャラに入れるか。この二択でしょ。Dxlibの作者もなんでこんな
初心者いじめのようなサンプルを書いたんだろw
0395名前は開発中のものです。
2014/03/19(水) 22:07:24.67ID:rw0JuaTm0396名前は開発中のものです。
2014/03/20(木) 17:23:48.20ID:XEsROipC0397名前は開発中のものです。
2014/03/20(木) 17:51:07.52ID:yGIdDx3B「関数」のページに、おそらく「引数(ひきすう)」という項目が書かれてると思う。そこを読むんだ。
0398名前は開発中のものです。
2014/03/20(木) 17:55:02.77ID:XkJNKHnH引数、戻り値
0399名前は開発中のものです。
2014/03/20(木) 18:06:26.35ID:XEsROipCC++があやふやなのであれなんですが、Cで言えば構造体の中でxという宣言をすれば、
void main(){
}
0400名前は開発中のものです。
2014/03/20(木) 18:08:28.64ID:XEsROipC勉強したてであやふやなのであれなんですが、Cで言えば構造体の中でxという宣言をすれば、
Test test;
void main(){
test.x=1;
}
こんな感じにしてしまえば、xはグローバル宣言ではないということでしょうか?
0401名前は開発中のものです。
2014/03/20(木) 18:12:12.69ID:QQSkDL4kこのxはすでにグローバル変数ではなくて、ローカル変数だね
関数の中でしか有効ではない変数で、その関数を抜けるとその変数は破棄されるやつ
グローバル変数ってのはTest testってなってるやつのこと
0402名前は開発中のものです。
2014/03/20(木) 18:17:11.33ID:7FNS6Iq5Test test;
を関数外に書いてるからtestはグローバル変数
だからその中に保持されているxの値も関数抜けても維持されるよーじゃなくてさっさと入門サイト見てこいカス
0403名前は開発中のものです。
2014/03/20(木) 20:27:56.02ID:4y6T8wZlグローバル変数を使うことでバグを引き起こしたりメモリを圧迫する事が悪なのだ
要求機能満たして動くならグローバル使っても気にするこたぁない
0404名前は開発中のものです。
2014/03/20(木) 20:32:50.84ID:mbiTOjB0初心者のうちはグローバル=悪って覚えていた方が安全
0405名前は開発中のものです。
2014/03/20(木) 20:41:55.88ID:F5faASXsメモリ圧迫なんてヒープからnewしたのと同じだしスタックに積まれるよりまし
アクセス範囲や名前の衝突なんてのも関数でも起こるし
アクセッサーとか間違った使い方のシングルトンで
どこからでも参照できるようにしたら同じこと
0406名前は開発中のものです。
2014/03/20(木) 20:58:57.29ID:QQSkDL4k0407名前は開発中のものです。
2014/03/20(木) 21:49:50.24ID:F5faASXsローカルなクラス内のシングルトンもあるので間違えられると混乱の元
ゲームのデータクラスとして使うのは設計次第
0408名前は開発中のものです。
2014/03/20(木) 22:00:31.87ID:mbiTOjB0一人開発だとそんな気にならんけど規模でかくなると影響範囲の広い変数なんて地雷みたいなもんだからな
下手に修正すると全く関係ないところでエラーでたりしてトレース大変だったり
0409名前は開発中のものです。
2014/03/21(金) 18:13:16.93ID:VAKzG1ya呼び出し側は生成関数使うだけで初期化されてるか気にしなくていいとか楽チン仕様にできる
グローバル変数だけだとそうはいかんよね
0410名前は開発中のものです。
2014/03/21(金) 20:31:26.05ID:sV0Efmq2実際に使う前に確認しておきたいけどな
0411名前は開発中のものです。
2014/03/21(金) 22:38:50.59ID:4DgLw9n9初期化するタイミングを図らないといけないもので
それはシングルトンより適したデザインがあるのてはないか
0412名前は開発中のものです。
2014/03/23(日) 14:45:46.78ID:UqjjQ2/2そういう目的ならnamespaceを分ければよくねって話なら見た覚えがある
ググったら過去スレがひっかかった
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
シングルトンで検索すると面白い
0413名前は開発中のものです。
2014/03/24(月) 21:27:07.06ID:rE2XsGEWググっても場所がまちまちで
0414名前は開発中のものです。
2014/03/24(月) 21:41:34.76ID:AEJao4ULWindows8に標準でついてくるそうだ
0415名前は開発中のものです。
2014/03/24(月) 21:50:42.35ID:WjXmoSNL0416名前は開発中のものです。
2014/03/24(月) 22:39:54.92ID:PqJgwAnTそれかWindowsSDKに一緒に入ってる
この程度は自分で調べようぜ
0417413
2014/03/24(月) 22:44:31.69ID:rE2XsGEWありがとです
0418名前は開発中のものです。
2014/03/25(火) 09:41:15.88ID:KT+bOjyU↑ ↑ ↑ ↑ ↑ ↑
0419名前は開発中のものです。
2014/03/26(水) 11:37:26.78ID:+vTfvSPy1フレーム移動毎に、敵や敵の弾や壁との衝突判定をしていると
画面上に敵の弾が100個とかあったりするとかなり膨大な数ループ処理が必要な気がします。
一般的なゲームの場合、画面上で動いているオブジェクトは全て1フレーム毎に衝突判定をしているのでしょうか?
0420名前は開発中のものです。
2014/03/26(水) 13:20:48.84ID:47820mJUhttp://marupeke296.com/COL_2D_No8_QuadTree.html
0421名前は開発中のものです。
2014/03/26(水) 13:22:14.35ID:+vTfvSPyレスした後でそこ見つけたんだけど私の頭では理解が・・・(´・ω・`)
皆この概念でシューティングゲーム作ってるんですかね?
0422名前は開発中のものです。
2014/03/26(水) 13:23:52.42ID:ghUA5KPp今まで普通にやってたけど名前が付いてるの始めて知ったわ
ありがとう
0423名前は開発中のものです。
2014/03/26(水) 13:56:03.88ID:xWjmtvj1素人に解るレベルに噛み砕いてくれてるとこあればいいのに。
結局座標で判定して分割してたりする。俺。
0424名前は開発中のものです。
2014/03/26(水) 14:03:19.61ID:+vTfvSPyttp://flash.polig.daa.jp/?eid=1242167
今さっき見つけたけどここと同じやり方ですかね?
これならなんとなくわかる気がする。
0425名前は開発中のものです。
2014/03/26(水) 17:00:06.09ID:VxCnnAtl100個くらいなら問題にならないっていう指摘と
なぜ移動キーを押してる間しか当たり判定がないのかというツッコミと
0426名前は開発中のものです。
2014/03/26(水) 17:08:48.02ID:47820mJU0427名前は開発中のものです。
2014/03/26(水) 18:28:38.14ID:VxCnnAtl0428名前は開発中のものです。
2014/03/26(水) 20:24:20.53ID:Hvj0In47その嫌われ者キャラは素なの?
治した方がいいよ。この先も友達出来ないよ。
0429名前は開発中のものです。
2014/03/26(水) 20:29:33.08ID:fl0FfJGt時代やハードを問わない"基本"は力技というか、1フレームごとの全判定だと思うっす。
ベテランプログラマがざっくりと組んじゃうところじゃなければ、
とりあえずプロトタイプを作ってみて、そっから必要な機能を満たしつつ、
どんだけ不要な判定対象を省いて回数減らせるか、ってやり方が多い気はする。
負荷やループ数を気にしているのなら、最近の据え置き機や携帯ゲーム機の場合だけど、
C++使ってるなら、数万回のループ判定程度がボトルネックやオーバーヘッドになることは少なくて(余程複雑な判定をしてれば別)、
問題になるのは2D3D問わずグラフィックスコマンドの場合が圧倒的に多いと思う。
なので、研究目的とかじゃなくて今時のハードで遊べるものを作りたいというだけなら、
判定そのものはそこそこ効率化してれば十分だと思うお。
よくあるシューティング形式なら、>>423の考え方でも十分効率上がりまっせ。
0430名前は開発中のものです。
2014/03/27(木) 05:30:55.80ID:y42irIZJ>>423ならスクロールなし画面に入るサイズだから判定もせいぜい3000未満でしょ。
それなら普通にforループ回して十分だし、そこだけマルチスレッドにしても良い。
0431名前は開発中のものです。
2014/03/27(木) 05:42:21.29ID:66/qzmyK0432名前は開発中のものです。
2014/03/27(木) 10:43:42.33ID:LEeCMwpD「今どきのPCは高性能だからそんな事考えなくてもOK!」
じゃ会話にならないでしょ。
ていうか自分の環境を基準に考えるのは止めたがいいよ。
0433名前は開発中のものです。
2014/03/27(木) 11:05:32.54ID:tJdovPbY0434名前は開発中のものです。
2014/03/27(木) 12:17:49.28ID:68m9m0Mu私も>>425と同じ感想を持ったんだけど。
>>419が実際にそういう総当りをしてみて重かったから他のやり方を聞いてるなら>>432のいうとおりだけど、実際やってみたのかね?
そういう感じには読めなかったけど。
0435名前は開発中のものです。
2014/03/27(木) 12:21:35.48ID:3O8ksg+hあとは、シューティングゲームなら
「敵x敵、敵弾x敵弾、敵x敵弾の判定は不要だからしない」とかで
判定回数を減らせることがある
(もちろんその判定がシステム上必要ならやるしかないけど)
あと経験不足な人だと
A→Bの判定とB→Aの判定を別個にやっちゃってて
そのせいで速度が出ないってのもあるかも?
これを修正するだけで判定回数を半分にできる
0436名前は開発中のものです。
2014/03/27(木) 12:35:21.54ID:NuLp7Gqa馬鹿じゃないの?ほんと文章を文字通りにしか受け取れないんだね。
誰が100個限定の質問してんだか。どう見ても数多くのオブジェクトがあった場合の衝突判定の質問だろ。
お前以外は皆わかってそういう答え返してるのに、お前だけが100個という質問の中のどうでもいい部分に固執してるわけだがw
ここを10000個とでも書かないと分からんの?アホだろw
0437名前は開発中のものです。
2014/03/27(木) 12:56:33.60ID:68m9m0Muまじか。
想定されるオブジェクトの個数というのは重要な情報だと思ってるんだが、他の人はそうじゃないのか。
1個でも42億個でも対応できるようなやり方を毎回してるの?
100個って書いてあったらだいたい100個くらいを想定してるんだと思うのが普通だと思うが、そうでもないんだなぁ。
0438名前は開発中のものです。
2014/03/27(木) 12:59:39.14ID:LaHWZeJXつまり、相手するなカス荒れるから
0439名前は開発中のものです。
2014/03/27(木) 13:17:49.49ID:462b1dLf0440名前は開発中のものです。
2014/03/27(木) 14:43:18.93ID:0LKTz7/02Dの当たり判定の処理は軽いから、マンコでも同じ事。 やってみ
0441名前は開発中のものです。
2014/03/27(木) 15:10:53.94ID:2L1CAOZz0442名前は開発中のものです。
2014/03/27(木) 15:51:52.80ID:tJdovPbY1ループあたりの移動速度を半分にして、ループ数を2倍回す。
0443名前は開発中のものです。
2014/03/27(木) 19:51:32.13ID:D4N08/V9現在フレームをnとした場合、n-1フレームの情報を保持しておいて、nフレームとの線分を引く。
あるいは現在の位置と速度から予測されるn+1の未来予測位置とnフレームとの線分を引く。
この線分が障害物と接触していたら接触した際の処理へ移行するように書いておく。
0444名前は開発中のものです。
2014/03/27(木) 20:07:57.55ID:LEeCMwpDPCスペックを限定してないのにその回答は無意味だってば。
0445名前は開発中のものです。
2014/03/27(木) 21:19:31.28ID:tdrncXK10446名前は開発中のものです。
2014/03/27(木) 22:05:12.78ID:LEeCMwpD0447名前は開発中のものです。
2014/03/28(金) 00:17:11.93ID:49hdQnYh大丈夫かよ…
0448名前は開発中のものです。
2014/03/28(金) 00:45:18.83ID:1M6UES2K俺は>>442じゃないけど大丈夫だと思う、むしろよくある手法じゃない?
アクションの通信対戦で処理落ちする時の同期なんかで使われるのも似たようなやり方あるし
0449名前は開発中のものです。
2014/03/28(金) 00:52:56.05ID:bd0QOyAi「こいつら良いマシンで開発してるんだな…」って嫉妬してたw
最近はPCの性能頭打ちでそういうのなくなったからいいよねww
0450名前は開発中のものです。
2014/03/28(金) 00:56:09.52ID:cOG2DjHyスレチかもしれんがUnityの物理演算部分の判定は秒間1000ループが推奨されてるんだからわりと平気なんじゃね?
0451名前は開発中のものです。
2014/03/28(金) 12:11:43.53ID:/j8PQ+jUPoint before, after; // 前回の座標、今回の座標
int count = 8;
int ix = (after.x - before.x) / count;
int iy = (after.y - before.y) / count;
Point pos;
pos.x = before.x;
pos.y = before.y;
for(int i=0; i<=count; i++){
bool is = collision(pos.x, pos.y); // 当たり判定
if(is) break;
pos.x += ix;
pos.y += iy;
}
count, ix, iyの値をもう少しきちんと平方根使って計ったほうがいいけど
0452名前は開発中のものです。
2014/03/28(金) 12:15:19.93ID:/j8PQ+jU60fpsでマウス判定じゃ全然足りなくて線が破線になるし
0453名前は開発中のものです。
2014/03/28(金) 13:16:45.63ID:UXW64F/+あとそれバグ持ちだな
0454名前は開発中のものです。
2014/03/28(金) 22:13:02.97ID:LlNhW3Yyコピペとはいえ毎回見るのが嫌になってくるよな
ライブラリとかラッパー使えば済むんだろうけど理解するのは面倒だし
0455名前は開発中のものです。
2014/03/28(金) 22:28:44.11ID:cOG2DjHy会社では無理だけど自分で作るようなら短縮用のヘッダーと関数とか自作しない
理解すればいろいろと便利だし
0456名前は開発中のものです。
2014/03/29(土) 09:51:35.35ID:Pyp/eAfy都度調べてコピペするより精神衛生的に良い
0457名前は開発中のものです。
2014/03/29(土) 13:22:18.51ID:CYqmosk/老害にはコードスニペットの概念がないからなぁ。
■ このスレッドは過去ログ倉庫に格納されています