トップページgamedev
240コメント91KB

PCで描画と内部処理の非同期処理ってどうやんの?

■ このスレッドは過去ログ倉庫に格納されています
0001(;´д⊂ヽ02/04/29 16:14ID:Gsu.P7Dk
PCならではの可変フレームレートで、かつ安定したキー入力とか演算の微分処理とか
実装したいんですが、具体的に、どういう風な構造にすればいいのか全然わかりません助けて

キー入力とかタイミングに厳しい処理を別スレッドで回すとして
描画担当スレッドはどーすればいいんでしょう?
(描画途中で別スレッドにより内部変数が書き換えられるケースが出てきますよね?)
0190名前は開発中のものです。04/12/17 07:34:10ID:rOSemwp/
ん?
たとえば、メインのゲームループは1/60sec決め打ちで回して、
メインのゲーム進行処理、キー入力、リプレイのロギングみたいなのは、
1/60で回ってるゲームループに同期させる。

で、絵とか音の表示やアニメは、イベントとして適当なバッファにキューイングして、
仮想フレームレート相当の時間経過とかVsyncをトリガに、ループ内か別スレッドで、
キューしておいたイベントを見ながら前回描画の経過時間を考慮しつつ
補間しながら絵を描けば、それで済む話じゃないの。

元々、ゲーム専用機のVsync同期は、Vsync割り込みを高速タイマの代用に
していただけだし、なんでそこまでVsyncにゲームの進行速度まで依存させ
たがる人がいるのかワカラソよ。
0191名前は開発中のものです。04/12/17 22:48:03ID:6ejKXcKZ
CPUパワーは資源だから。
でいいんじゃないかな。
0192名前は開発中のものです。05/01/23 20:29:14ID:Air0xk8V
>>190
VSyncの意味がわかってないようで・・・
0193名前は開発中のものです。05/01/23 20:34:37ID:JtLG4rmH
>Vsync割り込みを高速タイマの代用にしていただけ

馬鹿に限って偉そうにダラダラ語りたがる好例。
0194晒しage05/01/23 22:57:22ID:34KIVQ9x
191 :名前は開発中のものです。:04/12/17 22:48:03 ID:6ejKXcKZ
〜〜〜〜〜〜〜〜 36日経過。スレ深度186 〜〜〜〜〜〜〜〜〜
192 :名前は開発中のものです。:05/01/23 20:29:14 ID:Air0xk8V
193 :名前は開発中のものです。:05/01/23 20:34:37 ID:JtLG4rmH
0195名前は開発中のものです。05/01/24 00:09:20ID:Am/KGoi6
>>194 = >>190 だなw
0196名前は開発中のものです。05/01/24 02:05:01ID:QUF1Uv+C
ほんとに馬鹿だな
2chブラウザで更新チェック仕掛けとけばどんなに深くても一瞬なんだが
0197名前は開発中のものです。05/01/24 02:50:03ID:Pb4FhWzL
どれだけVBlank中に苦労したか・・・ヽ(`Д´)ノ
0198名前は開発中のものです。05/01/24 09:00:45ID:MwYTmyiP
>190
モレは2Dシューティング作ってたが、内部で画面の更新をする周期と
ゲームのタイミングは完全に同じじゃないと困る。
完全に同期してないと、移動キャラが一ドット進まなかったり
2ドット進んだりする。自機を移動させると
かくん…かくん…という感じでほんの少しぎこちなくなる…

FF7とか3Dのゲームならもともと30FPSとかでもそれなりに見えるし、
関係ないんだろうけど
0199名前は開発中のものです。05/01/24 21:39:05ID:Am/KGoi6
>>198
それは、画面の更新の2倍速以上の周期でゲームループをまわせば良いんじゃないの
020019405/01/24 21:57:23ID:6rvdu/5R
>>195
私はあなたの主張を全力かつ必死で否定します。
何故なら私は>>190の手法に懐疑的な立場を取る人だからです。
 
>>190は状態遷移の時間ステップは1/60[s]で行うことで良いと言います。
しかし60[Hz]近傍の画面更新周波数を採用する場合に
ゲームによっては許容が困難なアーティファクトを呈します。
 
ひとつは状態遷移と画面更新の共鳴によってもたらされます。
>>190は補間すると言います。これは時間tを媒介変数とする3次
パラメトリック曲線パッチに物体軌道を追従させることと推定されます。
しかしこれはプレイヤーの感じる周期的な違和感を抑制はするものの
完全に除去することが難しいことを>>190は知るべきです。
020119405/01/24 22:01:08ID:6rvdu/5R
s/時間tを媒介変数とする//
s/3次//
0202名前は開発中のものです。05/01/24 23:52:46ID:ZznnHdPs
アーティファクトてw
0203名前は開発中のものです。05/01/25 00:23:51ID:dxQ4cffY
アーティファクト
020419405/01/25 00:44:12ID:rMY0ZJDT
一度言ってみたかったのです。私も必死なのです。
0205名前は開発中のものです。05/02/08 03:07:12ID:TagBEX16
アーティファクトも知らないお漬物がいるな。
CGプログラマ方面ではよく使われる言葉だから、覚えておきなさい。
0206名前は開発中のものです。05/02/08 17:45:03ID:s3qPbjfn
>>205
で、アーティファクトってなんなんだい?
俺CGプログラマじゃないからわからんよ
0207名前は開発中のものです。05/02/08 19:29:36ID:Cn4cPs8N
一応ぐぐればわかる類の単語ではあるな
http://216.239.63.104/search?q=cache:yWVXkJ9vKzwJ:www.radiumsoftware.com/0401.html+%E3%82%A2%E3%83%BC%E3%83%86%E3%82%A3%E3%83%95%E3%82%A1%E3%82%AF%E3%83%88%E3%80%80CG%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&hl=ja&lr=lang_ja
0208名前は開発中のものです。05/02/09 13:34:04ID:kf+/5jfh
artifact
《名-1》アーチファクト,技能(art)によって作り出したもの,人工物,加工品,工芸品,芸術品,所産,
作り事,《名-2》作為,人為的な結果[影響],《名-3》〔技術上の原因による〕不自然な結果,例えば,
不適切な統計処理の結果現れたパターンなど,《名-4》《コ》不可逆圧縮に伴う悪い副作用,動画
のブロックノイズなど,通例,複数形で

モアレとかマッハバンドとかがいい例じゃないかね。
0209名前は開発中のものです。05/02/09 19:30:51ID:SbvEbW11
レスが無いからって自演しなくてもいいだろ・・・
0210名前は開発中のものです。05/02/10 20:28:57ID:Pq8Tvl+c
誰に言ってるんだ
0211名前は開発中のものです。05/02/26 02:15:04ID:uFYBWVD/
PCでもやっぱり内部処理と描画処理は切り分けた方が動作効率良いんですか?
0212名前は開発中のものです。05/02/26 17:30:23ID:eTx5dUeL
http://pc5.2ch.net/test/read.cgi/prog/1108481342/175
http://pc5.2ch.net/test/read.cgi/prog/1108481342/176-177
http://pc5.2ch.net/test/read.cgi/prog/1108481342/253-254

描画と処理順序に関係する話題なのでなんとなく転載。
でもスレ違い気味。というより、家庭用機のハードウェアの話だし、板違いだよなあ…。
0213名前は開発中のものです。05/02/27 13:00:33ID:ouQU2Gh6
そのネタ、シューティングスレともこのスレとも関係ないよ。

一言で言うと、元スレの175は
PSとかDCとかで起きてる、ハードウェアの描画パイプラインによる遅延を、
スプライト機能がないせいだ(フレームバッファのせいだ)と勘違いしている。
昔はこういうオヤジがよくいて更正に困った。

176-177はまったくの的外れ。
0214名前は開発中のものです。05/02/27 13:02:05ID:ouQU2Gh6
せっかくだから
s/オヤジ/スプライトオヤジ/
0215名前は開発中のものです。2005/04/22(金) 22:35:38ID:ARah4tGO
内部fps120描画fps60ってのを試しにやってみて
FPS更新処理をABAさんとこのソースのまんまでやってみたが
描画一回に対する更新フレーム数の分布がこんな感じになった。
1frame=159, 2frame=3351, 3frame=144, 4frame=1, 5frame=4
そりゃ2frameが多いのは当たり前なんですが、
どうもリフレッシュレートと内部フレームが重なりかける瞬間、
見るからに、1frame→3frame→1frame→3frame→…
って感じで振動(?)してしまうらしい。何故こうなるんだろ
0216名前は開発中のものです。2006/08/20(日) 00:49:06ID:R2OS+92F
XNAをまたれよ
0217名前は開発中のものです。2006/10/01(日) 00:17:12ID:iXDGlJTF
待てない
0218名前は開発中のものです。2007/03/05(月) 23:27:52ID:ck7zxrxb
保守
0219名前は開発中のものです。2007/03/06(火) 21:24:03ID:aM0UjHqH
VistaでついにWindowモードで垂直同期待ちできるようになったらしいぞ!
0220名前は開発中のものです。2007/04/03(火) 14:32:01ID:qom87o6H
んあ、前からできたよ。
0221名前は開発中のものです。2007/04/12(木) 12:16:41ID:OQ9CiyjS
>>220
どうやってやるの?
0222名前は開発中のものです。2007/04/12(木) 17:20:28ID:wkJX6b+I
>>219
というか、ほとんどが液晶モニタの現代ではそもそも「垂直同期」なんて発生しようがないわけだがw
0223名前は開発中のものです。2007/04/12(木) 17:34:19ID:sR+tFe8j
>>222
んなわけない。
ビデオカードからモニタに送る信号は走査線の順だし、
同期信号はアナログモニタを考慮したタイミングになっている。
0224名前は開発中のものです。2007/04/12(木) 18:44:08ID:7RCwfy93
>>222
アホ
0225名前は開発中のものです。2007/04/12(木) 18:47:12ID:OHhAQ2El
9条は改憲してはならない。日本の為にならない。
日本人ではない朝鮮総連や民団でさえ、日本を心配して改憲への反対運動を行ってくれている。
私は日本人だが、「改憲すべき」などという者は、日本人として彼らに恥ずかしいと思います。

Q.中国から身を守る為、戦争に対する抑止力が必要では?
A.前提から間違っています。そもそも、中国は日本に派兵しようと思えばいつでもできました。
  なぜなら、日本は9条があるため、空母や長距離ミサイル等「他国を攻撃する手段」がない。
  つまり、日本に戦争を仕掛けても、命令をだした幹部の命や本国の資産は絶対に安全なのです。
  にも関わらず、中国は、今まで攻めずにいてくれたのです。

Q.日米安保も絶対ではないのでは?
A.いえ、絶対です。
  知り合いの韓国人の評論家もそう言っていますし、私も同じ考えです。
  そして日米安保が絶対なら、日本を攻める国はなく、改憲の必要はありません。
  米国と戦争をしたい国はないからです。

Q.9条が本当に平和憲法なら、世界中で(日本以外に)1国も持とうとしないのはなぜか
A.誤解を恐れずに言うなら、日本以外のすべての国が誤っているとも言えます。
  「敵国に反撃できる手段を持つ国は攻められづらい」というのは、誤った負の考え方です。
  (もっとも韓国や中国の軍に関しては、日本の右傾化阻止の為でもあるので例外ですが)
  さらに日本の場合、隣国が韓国・中国・ロシアと、GDP上位の安定した国ばかりです。

【改憲】ゼンガクレン老闘士、国民投票法案廃案訴え 国会前集結 「ゲバ棒が杖になっても」
ttp://news21.2ch.net/test/read.cgi/dqnplus/1174412397/l50
【広島】憲法9条遵守を訴え 武器を持たない妖怪「ねずみ男」に扮した男が全国行脚
ttp://news22.2ch.net/test/read.cgi/newsplus/1175835543/l50
0226名前は開発中のものです。2007/04/13(金) 04:23:56ID:1JHojgjR
>>221
DirectX9以降はPresent時に適切なオプションを与えるだけで
窓モードでもティアリング無しで描画できるわけだが。
0227名前は開発中のものです。2007/04/13(金) 11:42:06ID:FDWvNnME
>>226
知らんかった
0228名前は開発中のものです。2007/05/05(土) 12:05:44ID:/Z3gtcge
ティアリングが無い分、描画は遅れるんだよな
0229名前は開発中のものです。2007/07/29(日) 00:25:32ID:HALNhbN2
536 名前は開発中のものです。 [sage] 2007/07/27(金) 13:37:27 ID:XlcDZqW/
そう言えば同じ氏の本でバーチャファイターみたいな3D格闘本が近所に入荷されてた。
他のサンプル系のように1ヶ月くらいでまた返品されるだろうけどw

いきなり、冒頭で「60フレームが…」って固定fpsの話になってた。
PCなら可変フレームにしようぜって思ったよ。
一通りの内容は書かれてるようだけど、古い考え方が散見されるので注意ねw

3D格闘ゲームプログラミング
ttp://www.amazon.co.jp/dp/4797341807/

539 名前は開発中のものです。 [] 2007/07/28(土) 04:23:00 ID:HcOV0dC3
可変FPSだといろいろと弊害が('A`)

リプレイとか、どうすんだろ
FPSとか可変で、リプレイやってるよね・・・

スレ違いならいいところ教えてほしい

540 名前は開発中のものです。 [sage] 2007/07/28(土) 04:36:40 ID:yAMlpWBw
処理は固定で表示を可変にするんじゃないのか?

541 名前は開発中のものです。 [sage] 2007/07/28(土) 13:27:46 ID:0aIeWbas
実時間でタイムラインきればいいじゃないか。
ゲーム開始後、何msでパンチr入力開始っていう具合に。
0230名前は開発中のものです。2007/07/29(日) 00:26:10ID:HALNhbN2

542 名前は開発中のものです。 [sage] 2007/07/28(土) 14:49:45 ID:KJFTrgS8
グラフィックと内部処理を同期した場合、高スペックPCで記録したリプレイを
低スペックPCで再生すると大変なことに……

単純にスキップすればいい場合(オブジェクトの座標がすべて保存されてるなど)なら
問題にならないし、普通はFPSに上限を設けるのでせいぜい2倍遅い程度で済むけど

で、この「上限を設ける」を突き詰めると60FPS固定派がでてくるわけだ


推薦図書/必読書のためのスレッド in ゲ製作技術 2
http://pc11.2ch.net/test/read.cgi/gamedev/1136546780/
0231名前は開発中のものです。2007/08/03(金) 14:01:52ID:4ObKP0Vq
ほー
0232名前は開発中のものです。2007/08/21(火) 00:20:00ID:daKI0ljl
むしろ固定派のほうが主流だわな。海外のPCゲーでも。
A宗は潜在バグ入りこみまくりんぐ。
0233名前は開発中のものです。2007/08/21(火) 07:20:03ID:yyUqbYNX
宗派って>>173のことか
0234名前は開発中のものです。2007/08/21(火) 19:41:52ID:4M628bN0
1)固定にするしない
2)同期するしない
をわけて語ると、語りやすいのかな

今の話題なら同期については語らないことにすれば、誤解も少なそう、とか
0235名前は開発中のものです。2008/02/05(火) 17:14:37ID:k9ariYLT
スレの大半が、すれ違いでワロタ

メインで3フレーム目(3/60秒)時点でヒットしたのが
リプレイを、A宗で実行してしまったら
処理落ち(5/60秒ぐらい)とんでしまった場合
5/60秒移動した座標でヒットしたことになってしまって
再現出来んのじゃね?

とか思ったり。

やっぱ、細かい固定移動を複数回しかねーな。
ゲームシステムによるけど。

関係ないけど、
http://watch.impress.co.jp/game%2Fdocs/20060326/gdc_ha.htm
ここの動画のやつ動かしてる環境って
どのくらいのスペックなのかしら?

最新マシンでもリアルタイムじゃ無理くさくね?

こんな判定祭りは、固定複数回とかむずかしそうだけど。

スマブラXは、HAVOK使いつつ、
スローモーションとか早送りあるね
すごいね。
0236名前は開発中のものです。2008/04/27(日) 21:17:07ID:jDBpFIG6
>>235
スマブラXでのHavokの利用方法ですが、メインである格闘部分には使用されていません。
0237名前は開発中のものです。2009/03/02(月) 15:34:56ID:7DRdx6AN
弾幕シューティングでフレームスキップしたらダメ?
0238名前は開発中のものです。2009/03/02(月) 17:58:31ID:RWFwhzJi
ゲーセンでフレームスキップした弾幕シューティング(翼神ギガウイングなんちゃら)は、
よくしんとか散々言われ放題だったな

うん、ダメだと思うよ
0239名前は開発中のものです。2009/03/02(月) 18:47:57ID:H2kRluPc
シューティングはスキップさせるよりも、処理落ちさせた方がいいね。
ただ、PCの場合は環境によって処理能力に差があるから、環境によって
難易度が変わってしまうという問題があるが。
0240名前は開発中のものです。2009/03/02(月) 19:25:11ID:RWFwhzJi
そうだね。PCなら、fpsを表示して、処理落ちが発生しているか常にプレイヤーに知らせておくのがよいね
ハイスコアの出たプレイをリプレイデータとして保存するとして、そこに処理落ちの度合いを記録しておくのもよい
■ このスレッドは過去ログ倉庫に格納されています