トップページ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/
0234名前は開発中のものです。2014/03/02(日) 20:21:15.86ID:Oac8ta12
誰か使ってないですかねぇ
http://oxygine.org/
0235名前は開発中のものです。2014/03/02(日) 20:51:20.45ID:uIAHAPdg
>>233
画面のチラツキを抑えるほうが出てきて、出てきても申し訳程度の説明しかない・・・
http://www.cs.tsukuba.ac.jp/~yas/cs/csys-2007/2007-12-14/
>◆ダブルバッファリング
> 整数を1つバッファに書き込むだけでロック/アンロックを行なっていると、 実際の並列処理では重たい。
> ロックの回数を減らすために、ダブルバッファリ ングと呼ばれる技術がよく使われる。読み手と書き手で別々にバッファをもうけ、1つのバッファの処理をしている間は、ロックを行なわない。

リストで1つのオブジェクトを更新してる間は「描画スレッドが使っちゃだめですよフラグ」でもたてるのか?
それを参照する時点でスレッドセーフじゃなさそうだけど

それともリスト内の全部のインスタンスのコピーを毎フレーム作るのか?
0236名前は開発中のものです。2014/03/02(日) 20:59:31.72ID:uIAHAPdg
あいや、これは循環バッファ?というやつでダブルバッファとは違うのか
0237名前は開発中のものです。2014/03/02(日) 22:59:32.88ID:bJnQrcsZ
計算したデータを参照渡しせずに、値渡しすればいいだけの話
0238名前は開発中のものです。2014/03/02(日) 23:13:50.02ID:0kUNTeet
マルチスレッドを効果的に使う場面は、
BGM,効果音など
背景の処理、草や木が風でゆらゆらする
シェダー関係もそう
0239名前は開発中のものです。2014/03/02(日) 23:15:24.40ID:YZ+wwGoZ
インスタンスのセットを2つ(AとBとする)作っておいて
・描画スレッドがAの状態を使用して描画している間、更新スレッドは
 Aの状態をもとに更新後の状態をBに作成する。
・両方が完了したらAとBをスワップする
って方法かなぁ

>>232の図で言えば、Subスレッドが描画している間に
Mainスレッドがもう次のフレームの接触判定を処理し始めてる感じ
0240名前は開発中のものです。2014/03/02(日) 23:23:34.37ID:bJnQrcsZ
計算したデータを描画用のバッファに積んで、描画処理に引き渡せばいいだけ。
なんで単純に出来ることを複雑にやろうとするんだ?
0241名前は開発中のものです。2014/03/02(日) 23:31:43.29ID:Oh6AuFJG
>>231
.binはlinuxの.exeって感じでデータっぽくない
0242名前は開発中のものです。2014/03/02(日) 23:37:13.73ID:Oh6AuFJG
>>234
面白そうだけど利用者ほとんどいないようだし、すぐに消えそうだな
cocos2dのほうが良いよ
0243名前は開発中のものです。2014/03/02(日) 23:44:39.24ID:Oh6AuFJG
>>239
それって概念的には全てのインスタンスx2だけど、
描画スレッドは描画に関するデータ(それも画面内に入るもの)だけあれば良いから
実際には必要なメモリ量を削った実装で実現できるな
02442392014/03/03(月) 00:29:47.75ID:+ppeC4rH
>>243
確かにそうだ
そして多分それが>>240が言っている
「計算したデータを描画用のバッファに積んで、描画処理に引き渡」す
ってのに近いのかも

この辺で思ったんだが、もしDirectX11を生で叩いてるなら
DeferredContextとか使うといいのかな
0245名前は開発中のものです。2014/03/03(月) 00:38:44.19ID:/CdxWaD8?BRZ(10000)

>>239
スカラだけならともかく毎フレーム描画に必要な情報全てをnewするのか?

>>239
描画用のバッファを積む時にスレッドぶつかるかもしれないって話では?

class aiueo{
private:
Position* position;
Position* drawPosition;
public:
void func(){
position->setX(position->getX+1);
Position* tmp=position;
position = drawPosition;
drawPosition = tmp;
}
void draw(){
image.draw(drawPosition);
}
};
0246名前は開発中のものです。2014/03/03(月) 07:13:32.62ID:mjyyGJWK
一フレームぶんのバッファに積み終わってから引き渡せばいいだけの話。
引き渡したら描画を描画スレッドにやらせて、計算スレッドは次の計算に入ればいい。
なんで単純で簡単なことを複雑に考えるのか、さっぱり理解できない。

そもそも描画順序などを考えると、座標がすべて確定した後で無ければ、
描画処理なんて出来ないのに、なんで計算直後にチマチマ描画しようという発想になってるんだ?

毎フレームnewとかも、嫌なら最初からある程度の領域を作っておけばいいだけの話で、
そんな簡単に解決できるどうでもいいことをイチイチ聞く意味が分からない。

なにこの思考能力の欠如?
0247名前は開発中のものです。2014/03/03(月) 07:44:19.21ID:+ppeC4rH
別の書き方は出来ないのかあんたは
0248名前は開発中のものです。2014/03/03(月) 08:19:00.54ID:/CdxWaD8?BRZ(10000)

http://gyazo.com/7984315b649ca2378a5b63989ada2874.png
図で確認するとこんな感じ?
ロックの仕方がよくわからんけど、
メインスレッド側のバッファは描画スレッドに必要な情報(頂点とか)いらないからトントンになるのかな
そうすると、毎フレームnewするより保持してたほうが楽そう

描画スレッドはモデルの頂点の展開とかやらずに文字通りZバッファに登録するだけだったりする?
0249名前は開発中のものです。2014/03/03(月) 14:38:46.71ID:7XSFdIT2
>文字通りZバッファに登録するだけだったりする?
意味不明
0250名前は開発中のものです。2014/03/03(月) 20:28:03.25ID:+ppeC4rH
>>248
使ってるライブラリ教えて
0251名前は開発中のものです。2014/03/04(火) 00:42:30.15ID:tv4RC6nv
なんか描画スレッド分けるのがマルチスレッドみたいな流れになってるけど
処理の分割しないと複数コアの性能いかせないよね

>>238以外にも分割出来るところはあるんじゃないの
AIなんかのフレームと分けられる箇所が効果的だとは思うんだが
0252名前は開発中のものです。2014/03/04(火) 00:54:00.93ID:Tkd6LlXd
>>248
君はレベルが低すぎる。基礎的なことすら理解していないようだから
身の丈に合った技術で制作するべきだ
0253名前は開発中のものです。2014/03/04(火) 01:01:46.35ID:Tkd6LlXd
ゲームロジック以外については定番のパターンがあるわけで、
ゲームロジックについてはゲームの性質次第だから汎用的な議論はできん
0254名前は開発中のものです。2014/03/04(火) 01:12:12.33ID:eUCtnBam?BRZ(10000)

>>250
DXライブラリです
0255名前は開発中のものです。2014/03/04(火) 01:22:03.26ID:eUCtnBam
>>252
そんなこと言わないで><
0256名前は開発中のものです。2014/03/04(火) 01:45:49.24ID:MGr4iOMf
身の丈に合った技術で満足してたら俺みたいに全然成長しないままになるしいいんじゃね?
0257名前は開発中のものです。2014/03/04(火) 03:19:20.41ID:NSoGUl2d
自称デキル人の大半はエセ
バグ生産しまくるのは得意みたいだがw

無視するに限るよ(ry
0258名前は開発中のものです。2014/03/04(火) 03:24:44.21ID:6r8+3FgW
>>256
満足するならなw
0259名前は開発中のものです。2014/03/04(火) 09:14:16.41ID:Tkd6LlXd
いまどきDXライブラリの初心者でマルチスレッドの基礎も理解してないのに
無理に背伸びした結果が「文字通りZバッファに登録するだけだったりする?」
格好ばかりつけて内容がなさすぎだろ

上で新技術OpenMPとかドヤってたやつといい、もう少し自惚れを抑えて
真摯な姿勢で学ばんと時間の無駄だよ
0260名前は開発中のものです。2014/03/04(火) 09:15:50.51ID:A1Dcjr5j
そもそもグラボの基礎から学びなおせ。
明らかにZバッファが何か分かってないだろ。
0261名前は開発中のものです。2014/03/04(火) 12:24:51.64ID:VEfOUnzL
>>254
Zソートの機能があるライブラリって訳じゃ無いのね
0262名前は開発中のものです。2014/03/04(火) 21:19:35.34ID:eUCtnBam?BRZ(10000)

>>261
アルファ値がある面だけZソートして、不透明な面の後から描画しています。

マルチスレッドの基礎はわかりませんが、
勉強目的で実装してみようかなと考えて、疑問点があったので質問しました。

質問の内容に戻りたいのですが、
メインスレッドではオブジェクトの座標だけ計算して、
描画スレッドでオブジェクトの座標からモデルの頂点等を展開すると
メインスレッドと描画スレッドが共有する値が少なくなっていいかなと考えたんですが、
実際に使われているスタンダードな方法とかあれば教えていただけると助かります。
0263名前は開発中のものです。2014/03/05(水) 00:56:58.44ID:vvepHaRA
struct Node {
....Image* image; // D3DMesh mesh でもFontSprite fontでもいい
....Rect bounds;
....Rect src;
....double angle;
};

struct Layer {
....int usingLength = 0;
....Chain<Node> chain; // std::list<Node>
/*
Chain<Node2DImage> chain1;
Chain<Node2DFont> chain2;
Chain<Node3DModel> chain3;
*/
....bool isUpdate = false;
};
0264名前は開発中のものです。2014/03/05(水) 00:58:26.26ID:vvepHaRA
Lock g_sync; // winならクリティカルセクション、linuxならセマフォ

Layer g_layers[3]; // instance;
Layer *g_pFront = &g_layers[0];
Layer *g_pSwap = &g_layers[1];
Layer *g_pBack = &g_layers[2];

void threadFront(){ // GUI Thread = main thread
....while(true){
........g_sync.lock();
........if(g_pSwap->isUpdate == true){ // ロジック側がスワップした
............Layer *swap = g_pFront;
............g_pFront = g_pSwap;
............g_pSwap = swap;
............g_pSwap = false;
........}
........g_sync.unlock();
........render(g_pFront);
....}
}
0265名前は開発中のものです。2014/03/05(水) 01:01:42.52ID:vvepHaRA
void threadBack(){ // Logic
....while(true){
........g_sync.lock();
........if(g_pSwap->isUpdate == false){ // 描画側がスワップした
............Layer *swap = g_pBack;
............g_pBack = g_pSwap;
............g_pSwap = swap;
............g_pSwap = true;
........}
........g_sync.unlock();
........update(g_pBack);
....}
}


class Scene {
public:
....virtual void update = null;
....virtual void render() = null;
}
0266名前は開発中のものです。2014/03/05(水) 01:07:10.79ID:vvepHaRA
class Game : public Scene {
....Sprite sprite;
public:
....void update(){
........sprite.x++;
....}

....void render(){
........sprite.render(); // g_pBackにデータを渡す
....}
}

Scene* g_pScene = new Game();

// Logic Thread update()
void update(Layer* layer){
....g_pScene->update();
....g_pScene->render();
}

問題は、GUIスレッドしかテクスチャーとかの生成と破棄ができないのだが、
ロジック側の要請をキューにしてメッセージパッシングするのは
少し複雑な実装になるこった。
0267名前は開発中のものです。2014/03/05(水) 16:23:12.96ID:x8H/gaMj
ideoneとかcodepadとか使えばよかったのに
0268名前は開発中のものです。2014/03/05(水) 20:45:55.74ID:6x2/6ZGn
sleepってなくてもいいもんなの?
0269名前は開発中のものです。2014/03/05(水) 21:47:30.12ID:6x2/6ZGn
マルチスレッドプログラミングの基本について書いてる記事があった
http://www.kumikomi.net/archives/2005/02/02multi.php?page=1

組み込みのサイトだけど基礎だからゲーム製作にも役立つかな
まあこれ見ても具体的な実装なんてさっぱりわからんけど
0270名前は開発中のものです。2014/03/05(水) 22:22:10.31ID:vvepHaRA
マルチスレッドプログラミングしなくてもいいじゃん
0271名前は開発中のものです。2014/03/05(水) 22:28:07.13ID:xpm2EzP6
起動時のスプラッシュ画面を出すときに欲しくなるんじゃない?(適当)
0272名前は開発中のものです。2014/03/06(木) 22:54:49.68ID:wXpbFvTO
マルチスレッドと言えばQtのQMutexLockerはとても便利だった
ミューテックスのロックとアンロックが一行でできる
0273名前は開発中のものです。2014/03/06(木) 23:58:17.76ID:g6URqktg
>>266
書いてくれて嬉しいですが、処理の流れが見えないですね・・・
swapは裏画面と表画面を入れ替えてるというのはわかるんですが
ロジック側も入れ替えるんですか?
layerとかchainとか何を指してるのかイマイチわからないです・・・

g_sync.lockというのはロック出来るまで待機すんるでしょうか?
そうするといい感じに交互に処理できそう?
0274名前は開発中のものです。2014/03/07(金) 16:53:26.89ID:fjndePR8
だから基礎知識のないやつに教えてもこうなるだけだと言ったろう?
時間の無駄だから諦めたほうがいい
0275名前は開発中のものです。2014/03/07(金) 18:45:58.30ID:p/ke0iDn?BRZ(10000)

マルチスレッドで描画しているゲームで、FPSが60以上出るゲームがあるけど
あれって一秒間に60回以上オブジェクトの更新しているってこと?

それとも更新側も全力でループ回して、前フレームからの経過時間を測って処理落ちにも対応する感じ?
0276名前は開発中のものです。2014/03/07(金) 19:37:40.45ID:fjndePR8
シングルスレッドでも余裕で1000FPSでますよ?
すっげー爆速だー()
0277名前は開発中のものです。2014/03/07(金) 19:48:26.65ID:DRlt5uyo
1フレームの処理に16ミリ秒も使えるんだぜ
16,000マイクロ秒だぜ
16,000,000ナノ秒だぜ
0278名前は開発中のものです。2014/03/07(金) 20:16:57.82ID:fjndePR8
XNAは50FPS推奨だったような気がする
俺もなんとなく50FPSで同期とってる
0279名前は開発中のものです。2014/03/07(金) 21:10:47.46ID:p/ke0iDn
1000FPSでたってモニタがせいぜい120FPSまでしか対応してないじゃん(´・ω・`)
0280名前は開発中のものです。2014/03/07(金) 21:28:42.22ID:EnJ3GPFi
>>279
見た目はそうだけど、例えば 当たり判定があるなら、見えない部分でも計算処理がなされる。
0281名前は開発中のものです。2014/03/07(金) 21:44:38.99ID:Gh0ocgNA
だから、それに何か意味があるのか?
フレーム飛ぶだろ。
0282名前は開発中のものです。2014/03/07(金) 21:54:40.27ID:5nTupHrf
裸の王様的当たり判定
0283名前は開発中のものです。2014/03/07(金) 22:08:10.09ID:7HkmM3vq
>>281
あくまで精度を高めるための処理であって、フレーム飛ぶとかは関係なくね?

よくあるネタとして、毎フレーム32ドットで飛んでいく弾丸は、
大きさ30ドットの敵キャラをすり抜けちゃうとか、そういうやつ。
0284名前は開発中のものです。2014/03/07(金) 22:42:09.70ID:fjndePR8
そういうやつで、あんなやつで、いいかんじに、そんなかんじみたいな?
0285名前は開発中のものです。2014/03/07(金) 22:50:16.12ID:fjndePR8
画面は秒間60回、ロジックは秒間100回更新するより時間差分を使うほうが
一般的じゃないかな。アニメーションなんかでは。

ちなみにマウスを使ったお絵描きソフトをつくると60FPSでは
線が途切れてしまうわけだけど、こちらでは更新回数を増やすのではなく
前回の座標と今回の座標の差分から埋め合わせを計算するのが普通。
0286名前は開発中のものです。2014/03/07(金) 22:53:06.64ID:EnJ3GPFi
マルチスレッドが有効利用できる部分と、利用できない部分がある。
効率的にマルチスレッド化出来る事が限られている。

そして、CPUが4コアであっても 決して4倍には成らない。
0287名前は開発中のものです。2014/03/07(金) 22:55:14.98ID:RMnLXnbR
「目に見えなくて意味がない部分を省略する」メリットよりも
「あらゆる状況に対応できる」メリットを優先するってだけの話じゃ。
0288名前は開発中のものです。2014/03/07(金) 22:56:53.08ID:Gh0ocgNA
さっぱり言ってることが分からんわ
単にCPUに余裕があるって話なら分かるけど。
それと1000FPSになんの関係があるんだ?

処理を1000回やるのと1000FPSは意味が違うだろ。
0289名前は開発中のものです。2014/03/07(金) 23:09:10.35ID:fjndePR8
アホの子はマルチスレッドを使うことが目的化しているなw
「マルチスレッドでCPU性能を限界まで引き出す(ドヤ」

これからはマルチスレッド・ボーイと名乗りなさい
0290名前は開発中のものです。2014/03/07(金) 23:21:09.90ID:ZsI9fYzN
マルチスレッドを勉強したいんだろうしそれが目的でいいんじゃねえの
0291名前は開発中のものです。2014/03/07(金) 23:31:09.17ID:7HkmM3vq
>>288
フレームという単位は、確かに元は映像や画像処理の世界の言葉だが、
ゲーム系では映像の出力の他にも、処理の単位(要はループ数)として使われることがある。
どっちの意味で言ってるかは文脈による。
0292名前は開発中のものです。2014/03/07(金) 23:40:19.37ID:Gh0ocgNA
本当にこいつの言う話は意味不明。
マルチスレッド?jは?何言ってるの?
0293名前は開発中のものです。2014/03/08(土) 00:03:16.81ID:C0+dE/Sc
はっはっはっはっは
教えて君の相手をしていても進歩がなさそうだ
0294名前は開発中のものです。2014/03/08(土) 00:06:45.46ID:GqQre2H1
単発で何やってるんだよ。
恥ずかしいやつだな。

こんな過疎スレで自演しても意味ないぞ
0295名前は開発中のものです。2014/03/08(土) 00:11:20.12ID:C0+dE/Sc
一体何が単発で何が自演しているというのだろう?
まず、>>275が振った話題にレスが続いてること理解してる?
0296名前は開発中のものです。2014/03/08(土) 00:14:00.22ID:GqQre2H1
図星だしたか?ID:fjndePR8君
0297名前は開発中のものです。2014/03/08(土) 00:15:32.48ID:C0+dE/Sc
日付が変わればIDは変わる。それはお前も同じことだが知らんのか?
わかったら、敗者は立ち去られよ
0298名前は開発中のものです。2014/03/08(土) 00:16:46.34ID:GqQre2H1
???本当に馬鹿だなお前w
0299名前は開発中のものです。2014/03/08(土) 00:20:10.92ID:9lZ7NGbh
本当に恥ずかしい流れになってきたw
0300名前は開発中のものです。2014/03/08(土) 00:21:58.27ID:C0+dE/Sc
レス番号と根拠を述べない限り、お前は意味不明なことをいってる糖質にしか見えないが?
追い詰められて苦し紛れに「バーカ」とか「アーホ」と一行レスで煽ってるだけじゃんw
0301名前は開発中のものです。2014/03/08(土) 00:24:33.75ID:GqQre2H1
つ鏡
0302名前は開発中のものです。2014/03/08(土) 00:28:32.27ID:C0+dE/Sc
ほら、何も反論できないだろ?突然「単発で自作自演をして、うんぬん」と人を批判するが
「どのレスがそうなんですか?」と聞き返されて「お前馬鹿だろw」「つ鏡」などと
意味不明な返答を繰り返す。

わかったら、敗者は立ち去られよ
0303名前は開発中のものです。2014/03/08(土) 00:31:28.03ID:X9SC3wUQ
皆何と戦っているのん・・・
0304名前は開発中のものです。2014/03/08(土) 01:44:30.85ID:Vx2VozQo
……単発で自演って日付またいだからID変わっただけだろうに……。
0305名前は開発中のものです。2014/03/08(土) 08:06:01.61ID:PSYFRGtR
結局275はどういうことなの
0306名前は開発中のものです。2014/03/08(土) 09:53:27.60ID:tPkg4yd1
★フレームレート(fps)の方法には幾つか種類がある

@固定fpsで、リミッターにより fpsの上限で固定してしまうもの。
AV-SYNCによって固定する、ゲーム機などであり確実に固定する。
B可変fpsにし、fps値が変化しても同じ速度で挙動するもの。

ゲームエンジンが 一般的にゲームループを形成しており、
ループの回転数(fps)を計測する。
PCの処理速度が不安定であり、状況により常に変動している。
ゲーム内では処理の負荷変動に関係なく処理速度を一定にしたい。
@固定fps方法、設定のfpsを越えないように上限値を決める方法、
単純な解決方法です。設定fpsを下回る場合は処理落ちになる。
AV-SYNC方法、これはリミッターと同じですが、
画面の同期にハード的に合わせてリミッター処理します、
ですから、設定fpsが常に安定している。しかし、
画面同期が変更されると困る。ゲーム機などに多い。
B可変fps方法、これはゲームループの回転速度に反比例して
ゲーム内の速度を制御します。よって、fpsが変化しても
ゲームの速度に影響がありません。こうすると
非力PCでもささやかに動き、高級PCでも豪華に動く。
また、以上の組合せの方法もあり、条件によって選択が違ってくる。
0307名前は開発中のものです。2014/03/08(土) 09:55:48.75ID:xv4QLBh4
ティアリングと絡めて
0308名前は開発中のものです。2014/03/08(土) 15:47:21.74ID:C0+dE/Sc
ガッシ、ボッカ、マルチスレッド・ボーイは逃走した(スイーツ)
0309名前は開発中のものです。2014/03/08(土) 16:31:15.28ID:cTFUFLMT
>>307
「ゲームプログラマーになる前に覚えておきたい技術」のページ127から140を読んでもらいたい
図書館にあると思う
0310名前は開発中のものです。2014/03/08(土) 19:20:22.65ID:vzxofO6Y
>275は、>279から推測すると
おそらく画面描画の単位としてのフレームと、処理の単位としてのフレームを混同してる
0311名前は開発中のものです。2014/03/08(土) 20:06:53.16ID:C0+dE/Sc
フハハハハハハハハ
0312名前は開発中のものです。2014/03/08(土) 20:50:35.38ID:YGGwUpNn
>>309
死ね
0313名前は開発中のものです。2014/03/08(土) 23:21:33.13ID:Sq36ONOT
格闘ゲームは60fpsじゃないと古参のファンに叩かれるそうな
0314名前は開発中のものです。2014/03/09(日) 00:09:52.59ID:IyeEnt/7
このスレは熱いな
0315名前は開発中のものです。2014/03/09(日) 00:18:56.78ID:zp5zMRCB
ゲ製にしては良い流れだ
0316名前は開発中のものです。2014/03/09(日) 00:35:14.60ID:UV7RBW8A
なんにせよゲーム内時間の指標となる数値は必要だよね?描画は別としてね

昔に作ったやつは特に深く考えることなく60FPS基準にしてて、
「このエフェクトは1秒間かけたいから設定値は60(フレーム)にしよう」
とかやってたけど、ゲーム内の時間と描画を切り離して考えてなかったから
倍速にしたいときにFPS120にして1フレごとフレームスキップするとか
トンチンカンなことやってたんだよね
(FPS設定値が描画回数と一緒にゲーム内の速度に影響してしまってた)

設定値は素直に、ゲーム時間としては「再生速度 * 秒数(ミリ)」で設定して
描画としてFPS(描画/秒)を使うべきだねぇ
0317名前は開発中のものです。2014/03/09(日) 10:22:07.75ID:zp5zMRCB
それ、具体的には、デルタタイム(前回更新からの時間差分)を使うのが
一般的だと思うぞ。

もっと原始的にやるなら、画面が50FPSだとキリがよくて、ロジック側もループ回数で
単純計算しやすいかなとは思うんだけど、その延長線上の考え方として
マルチスレッドで秒間100回更新するというのは止めたほうがよいね。
0318名前は開発中のものです。2014/03/09(日) 12:52:15.87ID:n5K2fLn8
普通のHDMIとかパネルの駆動が60Hz辺りなんだから
EU圏のゲーム機でもなきゃわざわざ50を選ぶ理由ないけど
ロジックを高速にするならゲームパッドのサンプリング周期も考慮した方がいいかもね
マウスも非常に速いのあるけど画面とは綺麗な整数倍にならないし
0319名前は開発中のものです。2014/03/09(日) 13:48:11.02ID:hgm9uEQE
シングルスレッドのかずき君は去ったようだ
0320名前は開発中のものです。2014/03/09(日) 15:16:30.96ID:a5thyH8B
います!
0321名前は開発中のものです。2014/03/09(日) 15:55:13.60ID:UV7RBW8A
>>317
ネトゲとかアクションじゃない限り、ゲーム内時間は現実のデルタタイムに
影響されないようにした方が混乱しないんじゃね?

Unityのチュートリアルなんかだと、「移動距離 = Δ * speed」みたいなやり方を見るんだが、
俺達みたいに自分でゲームループを制御する場合は、ゲーム内時間とリアル時間を結びつけるために
ループ内でSleep入れて、ゲーム内の「最小単位時間」は常に同一になるように調整した方がわかりやすいと思う
0322名前は開発中のものです。2014/03/09(日) 16:30:12.84ID:zp5zMRCB
ではその場合、画面が60FPSで更新されるとして、
常に17msの倍数でウェイトやアニメーションを行うことになるな。
別にそれはそれで単純でよいが、海外のゲームエンジンとかライブラリだと
デルタタイムでタイムライン処理するのがデファクトな印象ではある。
0323名前は開発中のものです。2014/03/09(日) 17:36:09.54ID:UDo1KJJD
ここ日本
0324名前は開発中のものです。2014/03/09(日) 18:05:51.13ID:zp5zMRCB
UnityとかFlashもタイムラインだし、デファクトに則るのが良いと思うが、
フレームワーク・ライブラリ整備されている前提でないと
むしろ手間かかるというのはあるな

SDLやDXライブラリでそのままでゴリゴリ書いちゃってるような状況なら
原始的な手法がいんじゃまいか
0325名前は開発中のものです。2014/03/09(日) 22:16:48.95ID:ai4yRe81
時間固定で動くゲームって今ほとんどないんじゃない?
3Dのゲームは大概処理落ちするとコマ送りになる気がするけど
0326名前は開発中のものです。2014/03/09(日) 22:24:11.30ID:7BkgnOpl
通信対戦なら時間基準しかない
0327名前は開発中のものです。2014/03/09(日) 22:29:21.55ID:YCVyyaL7
同人ならまだまだ普通にー、って感じじゃない?
0328名前は開発中のものです。2014/03/09(日) 22:49:06.01ID:LHzx02pP
自称プロの方ですか。
プロのくせに2chってキモイんで巣にお帰りください
0329名前は開発中のものです。2014/03/09(日) 23:27:17.89ID:YCVyyaL7
>>328
どこにプロ要素があったのか
0330名前は開発中のものです。2014/03/10(月) 01:04:03.22ID:eMnEQH7w
コミュ障の有段者かな?
0331名前は開発中のものです。2014/03/10(月) 18:57:16.49ID:u260dUyO
円や矩形の当たり判定を使わずに3Dのメッシュとメッシュの当たり判定をする方法ってある?
0332名前は開発中のものです。2014/03/10(月) 19:30:37.53ID:a4AxYrFN
>>331
もう少しくわしく

なぜその方法ではダメなの?
どのような目的の為にその他の方法が必要なの?
0333名前は開発中のものです。2014/03/10(月) 21:01:01.03ID:Y7tUpY4E
着地判定じゃね
■ このスレッドは過去ログ倉庫に格納されています