トップページgamedev
1001コメント329KB

C/C++ゲーム製作総合スレッド Part5

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/01/16(木) 00:00:31.27ID:w6WW3hAo
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
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/
0388名前は開発中のものです。2014/03/18(火) 20:53:36.58ID:CMOj/Jcf
ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4
アドレスはこちらでした。
0389名前は開発中のものです。2014/03/18(火) 22:13:14.48ID:anUGUjWa
うむ、それしかないと思うよ
0390名前は開発中のものです。2014/03/19(水) 01:58:11.08ID:tk/WX1Vm
>>387
リンク先をチラ見した程度じゃ、何をやってるか正しく把握してないし、
>>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
387の質問はサンプルソースをどうするかって話だから
その答えだと根本から作りなおせって事になるんじゃない?
0393名前は開発中のものです。2014/03/19(水) 16:41:44.59ID:pluZ/2gm
まあ答えとしては>389に言われちゃってるしな
0394名前は開発中のものです。2014/03/19(水) 17:00:07.58ID:o8V0VZ6P
そのサンプルだと滑らかに動くスクロール処理をキャラじゃなくてカメラビューの方に入れてるね。
ぶっちゃけサンプルとしてはどうかと思うぞ。
キャラとカメラ両方に入れるか、キャラに入れるか。この二択でしょ。Dxlibの作者もなんでこんな
初心者いじめのようなサンプルを書いたんだろw
0395名前は開発中のものです。2014/03/19(水) 22:07:24.67ID:rw0JuaTm
俺こそが世界の中心!
0396名前は開発中のものです。2014/03/20(木) 17:23:48.20ID:XEsROipC
C++とかで「グローバル宣言なるべく使うな」って言うけど、どうやって変数のデータを保持するの?
0397名前は開発中のものです。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:XEsROipC
>>397,398
C++があやふやなのであれなんですが、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
>>400
このxはすでにグローバル変数ではなくて、ローカル変数だね
関数の中でしか有効ではない変数で、その関数を抜けるとその変数は破棄されるやつ

グローバル変数ってのはTest testってなってるやつのこと
0402名前は開発中のものです。2014/03/20(木) 18:17:11.33ID:7FNS6Iq5
なんか言ってることが良く分からんが
Test 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:QQSkDL4k
シングルトンを使うのがそもそもおかしいって力説するやつに会ったことならある
0407名前は開発中のものです。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
>>408
そういう目的ならnamespaceを分ければよくねって話なら見た覚えがある

ググったら過去スレがひっかかった
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
シングルトンで検索すると面白い
0413名前は開発中のものです。2014/03/24(月) 21:27:07.06ID:rE2XsGEW
最新のdirectx SDKってどこで入手したらいいですか?
ググっても場所がまちまちで
0414名前は開発中のものです。2014/03/24(月) 21:41:34.76ID:AEJao4UL
>>413
Windows8に標準でついてくるそうだ
0415名前は開発中のものです。2014/03/24(月) 21:50:42.35ID:WjXmoSNL
2012以降のVisual Studioに標準で付いてくる、な
0416名前は開発中のものです。2014/03/24(月) 22:39:54.92ID:PqJgwAnT
マジレスすると>>415のやつ
それかWindowsSDKに一緒に入ってる
この程度は自分で調べようぜ
04174132014/03/24(月) 22:44:31.69ID:rE2XsGEW
インストール出来ました
ありがとです
0418名前は開発中のものです。2014/03/25(火) 09:41:15.88ID:KT+bOjyU
http://toro.2ch.net/test/read.cgi/gamedev/1175423459/719
↑  ↑  ↑  ↑  ↑  ↑
0419名前は開発中のものです。2014/03/26(水) 11:37:26.78ID:+vTfvSPy
シューティングゲームを作る時、移動キー押下時に自キャラと他オブジェクトとの衝突判定を行うと思うのですが、
1フレーム移動毎に、敵や敵の弾や壁との衝突判定をしていると
画面上に敵の弾が100個とかあったりするとかなり膨大な数ループ処理が必要な気がします。

一般的なゲームの場合、画面上で動いているオブジェクトは全て1フレーム毎に衝突判定をしているのでしょうか?
0420名前は開発中のものです。2014/03/26(水) 13:20:48.84ID:47820mJU
2Dだけど
http://marupeke296.com/COL_2D_No8_QuadTree.html
0421名前は開発中のものです。2014/03/26(水) 13:22:14.35ID:+vTfvSPy
>>420
レスした後でそこ見つけたんだけど私の頭では理解が・・・(´・ω・`)
皆この概念でシューティングゲーム作ってるんですかね?
0422名前は開発中のものです。2014/03/26(水) 13:23:52.42ID:ghUA5KPp
>>420
今まで普通にやってたけど名前が付いてるの始めて知ったわ
ありがとう
0423名前は開発中のものです。2014/03/26(水) 13:56:03.88ID:xWjmtvj1
俺もその理屈何度も読んだけど理解できないんだよなぁ。
素人に解るレベルに噛み砕いてくれてるとこあればいいのに。

結局座標で判定して分割してたりする。俺。
0424名前は開発中のものです。2014/03/26(水) 14:03:19.61ID:+vTfvSPy
>>423
ttp://flash.polig.daa.jp/?eid=1242167
今さっき見つけたけどここと同じやり方ですかね?
これならなんとなくわかる気がする。
0425名前は開発中のものです。2014/03/26(水) 17:00:06.09ID:VxCnnAtl
>>419
100個くらいなら問題にならないっていう指摘と
なぜ移動キーを押してる間しか当たり判定がないのかというツッコミと
0426名前は開発中のものです。2014/03/26(水) 17:08:48.02ID:47820mJU
質問はそこじゃないから
0427名前は開発中のものです。2014/03/26(水) 18:28:38.14ID:VxCnnAtl
質問に答えたつもりは無いのだが…
0428名前は開発中のものです。2014/03/26(水) 20:24:20.53ID:Hvj0In47
ID:VxCnnAtl
その嫌われ者キャラは素なの?
治した方がいいよ。この先も友達出来ないよ。
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/qzmyK
厨が頑張るスレw
0432名前は開発中のものです。2014/03/27(木) 10:43:42.33ID:LEeCMwpD
「効率の良い判定方法を教えて下さい」
「今どきのPCは高性能だからそんな事考えなくてもOK!」

じゃ会話にならないでしょ。
ていうか自分の環境を基準に考えるのは止めたがいいよ。
0433名前は開発中のものです。2014/03/27(木) 11:05:32.54ID:tJdovPbY
「そこに拘るよりは、他の場所がネックになってる可能性が高い」なら回答としてギリギリありかな
0434名前は開発中のものです。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
>>434
馬鹿じゃないの?ほんと文章を文字通りにしか受け取れないんだね。
誰が100個限定の質問してんだか。どう見ても数多くのオブジェクトがあった場合の衝突判定の質問だろ。
お前以外は皆わかってそういう答え返してるのに、お前だけが100個という質問の中のどうでもいい部分に固執してるわけだがw
ここを10000個とでも書かないと分からんの?アホだろw
0437名前は開発中のものです。2014/03/27(木) 12:56:33.60ID:68m9m0Mu
>>436

まじか。
想定されるオブジェクトの個数というのは重要な情報だと思ってるんだが、他の人はそうじゃないのか。
1個でも42億個でも対応できるようなやり方を毎回してるの?
100個って書いてあったらだいたい100個くらいを想定してるんだと思うのが普通だと思うが、そうでもないんだなぁ。
0438名前は開発中のものです。2014/03/27(木) 12:59:39.14ID:LaHWZeJX
そもそもプログラム組める奴が434みたいな的はずれなこと言い出す訳がないわけで…
つまり、相手するなカス荒れるから
0439名前は開発中のものです。2014/03/27(木) 13:17:49.49ID:462b1dLf
膨大な数のループを使う判定は書けるんだからさらに増えたらどうすんのって質問でしょ
0440名前は開発中のものです。2014/03/27(木) 14:43:18.93ID:0LKTz7/0
>ここを10000個とでも書かないと分からんの?アホだろw

2Dの当たり判定の処理は軽いから、マンコでも同じ事。 やってみ
0441名前は開発中のものです。2014/03/27(木) 15:10:53.94ID:2L1CAOZz
話変わって悪いけど、レースゲームで車が高速移動しすぎて当たり判定が出来ない場合ってどうすればいいの?
0442名前は開発中のものです。2014/03/27(木) 15:51:52.80ID:tJdovPbY
>>441
1ループあたりの移動速度を半分にして、ループ数を2倍回す。
0443名前は開発中のものです。2014/03/27(木) 19:51:32.13ID:D4N08/V9
>>441
現在フレームをnとした場合、n-1フレームの情報を保持しておいて、nフレームとの線分を引く。
あるいは現在の位置と速度から予測されるn+1の未来予測位置とnフレームとの線分を引く。
この線分が障害物と接触していたら接触した際の処理へ移行するように書いておく。
0444名前は開発中のものです。2014/03/27(木) 20:07:57.55ID:LEeCMwpD
>>440

PCスペックを限定してないのにその回答は無意味だってば。
0445名前は開発中のものです。2014/03/27(木) 21:19:31.28ID:tdrncXK1
たとえ、 2MHz Z80であっても、ディスプレイは40x25のキャラクタ画面だから大丈夫だよ
0446名前は開発中のものです。2014/03/27(木) 22:05:12.78ID:LEeCMwpD
40*25のテキストエリアで10000個のキャラクター動かすのかw
0447名前は開発中のものです。2014/03/28(金) 00:17:11.93ID:49hdQnYh
>>442
大丈夫かよ…
0448名前は開発中のものです。2014/03/28(金) 00:45:18.83ID:1M6UES2K
>>447
俺は>>442じゃないけど大丈夫だと思う、むしろよくある手法じゃない?
アクションの通信対戦で処理落ちする時の同期なんかで使われるのも似たようなやり方あるし
0449名前は開発中のものです。2014/03/28(金) 00:52:56.05ID:bd0QOyAi
一時期の同人げーって処理落ちしまくりで
「こいつら良いマシンで開発してるんだな…」って嫉妬してたw

最近はPCの性能頭打ちでそういうのなくなったからいいよねww
0450名前は開発中のものです。2014/03/28(金) 00:56:09.52ID:cOG2DjHy
>>447
スレチかもしれんがUnityの物理演算部分の判定は秒間1000ループが推奨されてるんだからわりと平気なんじゃね?
0451名前は開発中のものです。2014/03/28(金) 12:11:43.53ID:/j8PQ+jU
>>441
Point 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+jU
>>451はお絵描きソフトなんかでよく使うんじゃないかな
60fpsでマウス判定じゃ全然足りなくて線が破線になるし
0453名前は開発中のものです。2014/03/28(金) 13:16:45.63ID:UXW64F/+
お絵かきならスプライン補間とかだろ2次元だとカクカクの直線になるぞ
あとそれバグ持ちだな
0454名前は開発中のものです。2014/03/28(金) 22:13:02.97ID:LlNhW3Yy
Windows APIにDirectXが搭載されたならいい加減にウィンドウ生成とかDirectXの初期化とかどんなジャンルでも必要なゲームエンジンの要素とか短縮しねえかな
コピペとはいえ毎回見るのが嫌になってくるよな
ライブラリとかラッパー使えば済むんだろうけど理解するのは面倒だし
0455名前は開発中のものです。2014/03/28(金) 22:28:44.11ID:cOG2DjHy
>>454
会社では無理だけど自分で作るようなら短縮用のヘッダーと関数とか自作しない
理解すればいろいろと便利だし
0456名前は開発中のものです。2014/03/29(土) 09:51:35.35ID:Pyp/eAfy
ウィンドウ周りは自分で適当にラッパー作ったな
都度調べてコピペするより精神衛生的に良い
0457名前は開発中のものです。2014/03/29(土) 13:22:18.51ID:CYqmosk/
さもありなん。
老害にはコードスニペットの概念がないからなぁ。
0458名前は開発中のものです。2014/03/29(土) 21:21:25.19ID:2TsE/LLz
毎回書くような所だけ書いたプロジェクト作ってテンプレートとして登録しとけばいいんじゃないの
0459名前は開発中のものです。2014/03/29(土) 21:48:25.68ID:fyBJTsa/
そしてそのテンプレートが、ゲームを作るたびに更新されていく
0460名前は開発中のものです。2014/03/30(日) 00:08:10.54ID:mb7Whzhe
win32APIで別のプログラムを呼び出したいです
system関数は使ってみたんですがdos窓も一緒に出てきてしまいます
0461名前は開発中のものです。2014/03/30(日) 00:14:44.76ID:3L4NtrMF
>>460
CreateProcessだとDOS窓出なかった気がする
04624602014/03/30(日) 01:27:38.78ID:mb7Whzhe
ドンピシャでした
ありがとうございます
0463名前は開発中のものです。2014/04/01(火) 17:00:08.51ID:1bXVipah
>459
これありすぎて吹く
0464名前は開発中のものです。2014/04/01(火) 17:13:22.13ID:mqOcie7s
俺もテンプレートってほどいいものじゃないけど
「今回作ったシステム流用すればいくらでもゲーム作れるぜ!:
と毎回思うんだけど、毎回まるまる作り直してるという……。
0465名前は開発中のものです。2014/04/02(水) 10:41:39.05ID:QH7QljdQ
自分で作った3Dゲームにめちゃくちゃ酔うんだけど、比較的酔いにくくする方法ってある?
0466名前は開発中のものです。2014/04/02(水) 11:13:17.38ID:gG8rIG0W
>>465 ちょっと、見せてみ
0467名前は開発中のものです。2014/04/02(水) 12:36:37.68ID:Y76EY8s4
>>465
別にそういう専門知識もってないから経験則になるけど。

酔いやすい人と酔いにくい人がいるけど、酔いやすい人は三次元把握能力の高い人だと思う。これはどうしようもない。
俺は酔いにくい側の人間なんだけど、それでもあるゲームではめちゃくちゃ酔った事がある。
そのゲームはTPSなんだけど「キャラの背後に壁などの障害物があると、それが邪魔にならないよう自動でアングルが変わる」というものだった。
「背後の障害物が透明になる」なら酔わないのに「勝手にアングルが変わる」だと凄まじく酔う事がわかった。
車の運転でも、「運転してる人は酔わない」と言われてる。つ
まり「プレイヤー本人の意思とは関係なくアングルが変わる」と酔う事になる。
他にも、急激にアングルが変わる(目の処理が追いつかない)でも酔うと思われるので、ゆっくり視点を動かす工夫をすればいいのではないだろうか。
あと視点の方向を変えると遠景ほど早く動いて見えるから、遠景はあまり注視できないようにぼかすとか彩度を落とすとかするといいかもしれない。
0468名前は開発中のものです。2014/04/02(水) 16:48:09.93ID:RKxy3xMo
ソニックアドベンチャーDXは何故かすごい酔った
0469名前は開発中のものです。2014/04/02(水) 17:07:31.12ID:05HXNQtD
モニタを「風景の映ってる窓」として捉えると酔いにくい、なんて話も聞いたことがあるね。
0470名前は開発中のものです。2014/04/02(水) 20:57:32.09ID:SSqz5QAv
FOVの設定が悪いとか
0471名前は開発中のものです。2014/04/02(水) 21:38:55.24ID:Y76EY8s4
>>469
上でも言ったが俺は酔いにくい人間で、モニタに映る映像を「一枚の絵」としか認識してないんだよな。
頭のなかで3次元空間を構築しながら見ていない。

ガンブレードNYの動画を見てた時、ぐりんぐりん視界が動くのにまったく酔わなかったんだが、
ふと「一枚の絵としてしか認識してない自分」に気づいて、
頭のなかで方位を意識しながら(3次元空間を意識しながら)見なおしてみると、あっという間に気分が悪くなったw

でもこれは個人の話であってゲームをどうやれば酔いにくくできるかって技術とは別の話だよね。
0472名前は開発中のものです。2014/04/02(水) 22:03:56.84ID:yy3b+VRk
3次元で意識してるけど酔ったことないな
酔うのが不思議でならない
0473名前は開発中のものです。2014/04/02(水) 22:29:30.77ID:sgFJO2N4
3D酔い
カメラの位置と回転中心位置の関係が悪い
カメラ視野角の調整が悪い
カメラ回転の応答速度が遅い
0474名前は開発中のものです。2014/04/02(水) 22:32:07.27ID:6rTn9j+m
>>465
FoVが狭すぎてゲロゲロ
カメラの動きでゲロゲロ

この辺りは既に言われてるようなので、あとはレベルデザインかな。
ぐぐったら自レスが引っかかったのでリンクを貼っとく
http://unkar.org/r/gamedev/1223550808/423-452

> 452 : 名前は開発中のものです。[sage] : 2008/12/27(土) 00:34:33 ID:quq8i6DN
> >>423
> 遅レスで更に>>425>>426と微妙にかぶる内容だが
>
> (1)FOVの問題
> 酔いの原因は様々だが、FOVの調整で改善される場合は多い
> プレイヤーの視野角を考えずに3D画面の投影変換行列を設定すると酔いやすい
>
>  ・プレーヤー視点とディスプレイ間の距離
>  ・ディスプレイの寸法
>
> 以上のパラメータから違和感の少ないFOVを探ることができる
> まぁ、既存FPSのFOV値を参考にするほうが手っ取り早いかもな
>
> (2)レベルデザインの問題
> 閉鎖空間を多用するマップは酔いやすい。これは(1)の問題との組み合わせでより悪化する
> FOVをどんなに調整しても吐く奴は吐く。対策としては開放空間(屋外)を多用する方法がある
> ただし、閉鎖空間の戦いをウリにするゲームではこの対策はとれない
>
> BFシリーズはオーケーだけどDOOM3とかHLシリーズは駄目、みたいな人に対処するのは困難
> 狭くて暗い閉鎖空間のスポーツFPSを作るつもりなら酔いやすいユーザーは切り捨てたほうが楽
0475名前は開発中のものです。2014/04/02(水) 23:05:42.17ID:6rTn9j+m
>>473
>カメラ回転の応答速度が遅い

これ、見落とされがちだけどあるよね

ARMAでマウススムージングがデフォルトでONだったので視線の動きに
遅延が生じて気分悪かった。スムージングを切ったら何ともなかった
0476名前は開発中のものです。2014/04/03(木) 00:12:27.55ID:d8bZaMxb
動き回る飛行船の上でアクションシーンを展開したゲームを作って見たいんだけど
着地判定というか、移動する床みたいなのってどうやってるんだ?

飛行船が上に進んでる時に急制動で下向いたら飛行船に乗ってたキャラクターが跳ねるチンフワ現象を取り入れたいんだけど

素直に物理エンジンに託した方がいい?
0477名前は開発中のものです。2014/04/03(木) 00:41:04.11ID:paQ+FHve
物理エンジンが一番楽

正確じゃなくてもいいなら
飛行船が上に進んでいるときにキャラクターの下と飛行船の着地できる部分が接触してるか判定して
接触してるなら飛行船の上の移動量とキャラクターの上の移動量を比べて飛行船の移動量の方が大きいなら
キャラクターの上の移動量を飛行船の上の移動量に書き換える

こうすれば飛行船がいきなり止まったりしたときにふわって感じで浮くことは可能
ただ、違和感はある落ち方になると思うから物理エンジンをお勧めしとく
0478名前は開発中のものです。2014/04/03(木) 01:07:35.19ID:d8bZaMxb
>>477
わかったありがとう
0479名前は開発中のものです。2014/04/04(金) 02:07:12.66ID:iGGKX1Rj
詳しいね
さすがチンフワ総合スレッド
0480名前は開発中のものです。2014/04/05(土) 17:41:08.13ID:Wu1wSHql
クラス分けって具体的にどんな感じでやっていけばいいの?
関数分けまでは普通に出来るんだけど、メンバ変数がある以上クラス分けしたくても出来ないし・・・
0481名前は開発中のものです。2014/04/05(土) 18:16:26.54ID:cqmzi82f
「// ○○を△△する」ってなコメントが書けそうな関数が複数あったら
○○をメンバ変数に置いて、○○を操作する関数をメンバ関数にしたクラスにする

ツッコミどころ多そうだけど大雑把にこんな原則で大体どうにかなるんじゃないかな
0482名前は開発中のものです。2014/04/05(土) 20:43:25.01ID:nUDfpyEY
例えばC言語みたいな手続き型の言語で攻撃の判定処理を作ったとする
1.判定対象を選択
2.判定対象の座標と大きさ、形を取得する
3.大きさや形に合わせて判定する
4.当たってたらhpをダメージ分引いたりノックバックさせたり双方の属性に合わせていくつかの処理に分岐する
5.繰り返し

クラスを使ってオブジェクト指向的に処理する
1.対象を選択
2.対象に「お前この判定対象と当たってなる?」と確認する
3.繰り返し

ここまで書いて何を言いたかったか忘れたのでこのまま投稿する
0483名前は開発中のものです。2014/04/05(土) 20:58:16.49ID:TIaN2lJ/
関数を実行するのに必要な変数をまとめたのが最小単位かな
変数として持つデータに依存する部分はメンバ関数にしたいけど
std::stringみたいになんでも入れちゃうのと
マイナーな機能は引数を取る静的関数や別クラスに分けるかはまた悩む
0484名前は開発中のものです。2014/04/05(土) 21:40:17.97ID:nUDfpyEY
オブジェクト指向を完全に突き詰めると動詞の関数しかなくなるような気がしないでもない
ゲームなら特に
0485名前は開発中のものです。2014/04/05(土) 22:14:07.33ID:k4ryh3Xy
>>482

ええー、そんな感じなの。想像してたのと違うなぁ。

あ、俺は480じゃないけど似たような問題に詰まってる者です。
0486名前は開発中のものです。2014/04/06(日) 01:53:43.72ID:E+ECXvrW
まあオブジェクト指向の作法については
それだけで厚めの本が出るぐらいだし・・・
0487名前は開発中のものです。2014/04/06(日) 12:16:47.72ID:kDoD0j2F
自分のことは自分でやれってことだよ
■ このスレッドは過去ログ倉庫に格納されています