[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/09 19:33 / Filesize : 66 KB / Number-of Response : 235
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:(;´д⊂ヽ [02/04/29 16:14 ID:Gsu.P7Dk]
PCならではの可変フレームレートで、かつ安定したキー入力とか演算の微分処理とか
実装したいんですが、具体的に、どういう風な構造にすればいいのか全然わかりません助けて

キー入力とかタイミングに厳しい処理を別スレッドで回すとして
描画担当スレッドはどーすればいいんでしょう?
(描画途中で別スレッドにより内部変数が書き換えられるケースが出てきますよね?)

101 名前:69 [02/05/07 11:13 ID:H21ddL0Q]
マルチスレッドといえばそうなんですけど、
FPSのスレッドがしていることは、
一定時間Sleepして::PostMessageでユーザー定義メッセージを
ウインドウに送っているだけです。
それ以外、変数を操作したりWindowsのシステムにアクセスしたりとかは
何もしていません。
Window、Direct3D、その他もろもろは同一スレッドなんで
実質シングルスレッドと殆ど変わりません。
キーを押された→WM_KEYDOWNメッセージハンドラで、
FPSスレッド停止しダイアログ呼び出し、こんな感じです。
このFPSスレッド停止をSuspendにするとダメ、DestroyにするとOKなんですよね。
まあダイアログをモードレスして作り直してどうなるか試してみます。

102 名前:名前は開発中のものです。 mailto:sage [02/05/07 21:10 ID:???]
>>101
まぁ内心では気付いてるだろうと思うが、
そういうあいまいな文章による状況説明では他人に問題点を指摘してもらうのは難しい。
(orバグを作った本人の状況分析だけを頼りに問題点を見つけ出すのは難しい)
ソース見せられるなら添削してもらうこともできるだろうが
それが無理なら「頑張ってね」としか言えんよ、実際。

とりあえずDirectXとか余計なものから一つ一つ外してみたらどうか。

103 名前:69 [02/05/08 01:33 ID:LDZ.FZgI]
>>102
その通りですね。
なんだかすいません。

104 名前:処理安定 mailto:sage [02/05/09 02:02 ID:???]
Windowsがリアルタイムゲームに向かない理由、それは突如、原因不明な
ブロッキングに悩むからだと思うんだけど、ちょっとだまされたと思って
以下の設定してみてください。
「マイコンピュータ」->「プロパティ」->「デバイスマネージャ」->「ディスクドライブ」の設定で
オプションに DMA という項目があります。
Windowsの出荷状態では、ここはOFFなのですが、これをONにしてWindowsを
再起動してみてください。謎のブロッキングがかなり解消されますよ!

仮に解消されなくてもファイルアクセスなどがぐんと速くなるので損することは
ないと思います。(ただ一部のハードではこのDMAは無効になってるかもです)

60FPS以上のゲームで「ガクン!」というのがなくなると思いますよ、お勧め。

じゃ、眠いので僕は寝ます。おやすみ〜

105 名前:名前は開発中のものです。 mailto:sage [02/05/09 04:21 ID:???]
>>104
そんなこと自慢されてもなぁ。XPじゃ最初から有効にされてるし。
プロセスとスレッドの優先度を最大まで上げる方が効果あるよ。
絶対に苦情くるけど。

106 名前:名前は開発中のものです。 mailto:age [02/05/09 14:16 ID:???]
>>105
104のどこが自慢っぽく見えるのか、俺には不思議。
性格ゆがんでない?

107 名前:名前は開発中のものです。 mailto:sage [02/05/09 15:54 ID:???]
>>104
普通やん.
別に画期的なネタでもないわ.

108 名前:名前は開発中のものです。 mailto:sage [02/05/09 16:24 ID:???]
>普通やん.
MSの公示では、普通じゃないだろ >>FD,HD-DMA
DMA無効になってるのが普通。

問題は、ドライバの設定を変えた時に再起動させること。
自分のマシンだけリブートすればいい問題ではないので。

有名なネタではあるが。

109 名前:名前は開発中のものです。 mailto:sage [02/05/09 18:44 ID:???]
>>105
いちいちくだらねえことつっこむなよ。
>プロセスとスレッドの優先度を最大まで上げる方が効果あるよ。
これこそわかりきってることを自慢すんなよ。障学生が。



110 名前:名前は開発中のものです。 mailto:sage [02/05/09 19:14 ID:???]
PC房ってやつですか

111 名前:名前は開発中のものです。 mailto:sage [02/05/09 19:51 ID:???]
>>104
それって98/95あたりの話じゃ、、、

112 名前:名前は開発中のものです。 mailto:sage [02/05/09 20:44 ID:???]
をーーーーーーー!見事安定した!マジかよ。
ガタ落ちゼロになった。
ちなみに俺の環境はWin98.
今までの苦労、水の泡。

なんでディフォルトでDMA-ONじゃないのだ?>>MS

というか、配布するソフトでも是非、DMA-ONの状態にしたいのだが、
アプリケーションからそれを操作する方法ってないのか?

113 名前:名前は開発中のものです。 mailto:sage [02/05/09 20:51 ID:???]
昔はDMAをオンにすると不安定になるハードが結構あったからねえ、、、
マザボのチップセットと相まって、かなりヤバイことになってた。
だからデフォルトOFFなんだと思う。
Socket7の頃の話だけどね。

114 名前:名前は開発中のものです。 [02/05/09 21:24 ID:V/9kUMis]
Win2000の場合はデバイスマネージャーの
IDE ATA/ATAPIコントローラーの
プライマリIDEチャネルとセカンダリIDEチャネルで設定出来る。

115 名前:名前は開発中のものです。 mailto:age [02/05/09 21:31 ID:???]
>>112
DMAオフでガタつくゲームってのも、問題アリだと思うが。

116 名前:名前は開発中のものです。 mailto:sage [02/05/09 21:50 ID:???]
>DMAオフでガタつくゲームってのも、問題アリだと思うが。
CPUが高速なHDのデータコピーを汗かきながらI/Oへ書き込むので
全てのアプリで停止するのだよ。特に最近のHDは高速だから、
DMAなしではやってられない。
0.3秒くらいCPUがHDの転送に専念することもしばしば。

117 名前:名前は開発中のものです。 mailto:age [02/05/09 22:01 ID:???]
>>116
ゲーム中はHDへアクセスしないようにするべし。

118 名前:名前は開発中のものです。 mailto:sage [02/05/09 22:08 ID:???]
自アプリがやらなくても他アプリがやったり
ライトバックキャッシュのフラッシュや
ページアウトでアクセスが発生しちまいますな

119 名前:名前は開発中のものです。 mailto:sage [02/05/09 22:28 ID:???]
>>118
そうゆう話じゃないと思われ。
他のゲームはガタつかないのに自分のゲームはガタつく!ってのが問題。



120 名前:名前は開発中のものです。 mailto:sage [02/05/10 04:19 ID:???]
>>119
>他のゲームはガタつかないのに自分のゲームはガタつく

そんなこと誰か書いたっけ?

121 名前:名前は開発中のものです。 mailto:sage [02/05/10 06:45 ID:???]
誰も書いてない

122 名前:名前は開発中のものです。 mailto:age [02/05/10 19:29 ID:???]
人に頼ってちゃダメだよ。
自分から行動を起こさなきゃ。

123 名前:名前は開発中のものです。 mailto:sage [02/05/11 04:24 ID:???]
>ゲーム中はHDへアクセスしないようにするべし。
んー、学生さんかのぉ?
Windowsやlinuxなどのような高度なOSでは、
例えば malloc() などのヒープもアプリケーション実行開始直後は
物理メモリに存在しないことしばしばなのじゃよ。
new を呼んだ瞬間、物理メモリが存在しなかったら、そこでHDアクセス。
スタックがオーバーしたら、HDアクセス。
他のアプリが使用していたメモリをHDへ書き戻す作業であることが
ほとんどなのじゃがな。

ゲームなど連続描画がシビアな環境では
Windows上だとガタガタに見えてしまうのも、そこが原因だったりするんじゃ。

124 名前:名前は開発中のものです。 mailto:sage [02/05/11 15:53 ID:???]
>>123
>Windows上だとガタガタに見えてしまうのも

見えませんが?

125 名前:69 [02/05/11 17:18 ID:HivZaZZA]
>>101解決?しました。
FPSを表示するのにFPSの抽出を60FPSとかにすると
更新が激しくて見づらいので、2FPS等で抽出させる
別のFPS制御クラスを作っていたんだけど、
ダイアログを表示する際にこいつは関係ないと思って
サスペンドしていなかった為に、デッドロックが起こっていたようです。
結果論であり、デッドロックの理由はわかりませんが。

::CreateWaitableTimerという便利そうなAPIを発見したんで
こりゃ使えると思ってFPS制御クラスに組み込んだら、
こいつしっかりCPU時間を消費しやがんの。
使えね〜、精度も低いしサ。

>>123
そういうことをやっているかどうかは知らんけど、
やっていたとしても、それは単に物理メモリが少ない場合の
回避処置でしか無いと思うんだけど。
そりゃメモリが足りなくてスワップしまくりな環境なら
ゲームもカクつくよ。

126 名前:99 [02/05/11 17:22 ID:.Lvp8gPk]

-------風俗の総合商社・MTTどこでも-------

〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
  www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
www.mttdocomo.jp/

127 名前:名前は開発中のものです。 mailto:sage [02/05/12 08:31 ID:???]
>やっていたとしても、それは単に物理メモリが少ない場合の
>回避処置でしか無いと思うんだけど。
WinXPだとか、物理メモリあっても初アクセスまではアプリ用にメモリをcommit
しないというのに、何を逝ってるのかな?
10秒後に初めてアクセスした変数がメモリにまだcommitされてないページだった
らHDアクセス決定じゃん。

128 名前:名前は開発中のものです。 [02/05/12 19:48 ID:IYwn5BLg]
>>127
コミットされていないページ=スワップアウトされてHDに退避させられているページ
じゃないんじゃないの?
単に仮想メモリが物理メモリにマップされてないだけで。
MSDNでVirtualAllocのページ見てみ。
つーかイチイチメモリ確保の度にHDDアクセスする訳ないじゃん。
常識的にアホ仕様だろそれじゃ。

129 名前:名前は開発中のものです。 mailto:sage [02/05/12 20:43 ID:???]
その話題はスレ違いっぽいので他でやってくれんか

たとえば
pc.2ch.net/test/read.cgi/tech/1017072275/



130 名前:名前は開発中のものです。 [02/05/14 21:35 ID:ru/D90z6]
 

131 名前:名前は開発中のものです。 [02/05/19 11:18 ID:ajzZw3lo]
>>128

>コミットされていないページ=スワップアウトされてHDに退避させられているページ じゃないんじゃないの?

コミットされていないページ=まだ存在していないページ

>つーかイチイチメモリ確保の度にHDDアクセスする訳ないじゃん。
Windows はダーティなページを極力メモリに保持し続ける方針で設計されている為、
いざページをコミットしようとすると、すぐに使えるメモリが足りなくて、結果的にページアウトが発生してしまう。
当然未使用メモリがある場合は、 HD へのアクセスは無い。

132 名前:名前は開発中のものです。 mailto:sage [02/05/19 15:25 ID:???]
だからスレ違いだっての。日本語わからないのか?

133 名前:名前は開発中のものです。 mailto:sage [02/05/20 01:16 ID:???]
>>132
まぁ言いたいことは分かるが
あまり騒ぐと自治厨氏ねとか不本意な罵りを浴びるぞ。

134 名前:名前は開発中のものです。 mailto:sage [02/06/01 20:55 ID:???]
別に俺はここでこの話題をしてもいいと思うが…
3、4レスのためだけに別スレに移動なんてしてたら、
話の一貫性がなくなってしまうだろう。

135 名前:名前は開発中のものです。 mailto:sage [02/06/02 11:58 ID:???]
だって知識が乏しい連中ばっかなんだもん

136 名前:名前は開発中のものです。 mailto:sage [02/06/03 11:14 ID:???]
では貴殿の知識を開陳せよ。
他人を蔑むだけのカキコって、技術レベルに関係なくなんかむかつく。

137 名前:名前は開発中のものです。 mailto:sage [02/07/22 05:33 ID:???]
可変フレームレートってどういういうものでしょう。
60FPS出るように作って、処理が遅れたら処理落ちすれば
いいだけなのでは、、、?

3Dのゲームなら30FPSくらいが普通でしょうか。

138 名前:名前は開発中のものです。 mailto:sage [02/07/24 05:29 ID:???]
>137
v' += v * dt みたいな感じかな…。

具体的な実現方法は何パターンかあると思います。
どっかのスレでそんな議論してたと思った。役に立たなくてスマソ

139 名前:オマンコー&rlo;ー゚ホンィテ&lro; mailto:sage [02/10/26 08:35 ID:???]




140 名前:名前は開発中のものです。 mailto:age [02/11/01 08:50 ID:???]
漏れら極楽人道のageブラザーズ!
良スレっぽいものは強制的にageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧   ∧_∧    age
 (・∀・∩)(∩・∀・)    age
 (つ  丿 (   ⊂) age
  ( ヽノ   ヽ/  )   age
  し(_)   (_)J


141 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

142 名前:名前は開発中のものです。 [02/11/28 05:24 ID:EVnGiSza]
     ______
    /_      |
    /. \ ̄ ̄ ̄ ̄|
  /  /  ― ― |
  |  /   (・) (・)|
  ||| (6      > |
 | | |     ┏━┓|   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | |     ┃д┃|  < 正直、ageてすまん
|| | | |  \ ┃  ┃/    \________
| || | |    ̄  ̄|

143 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

144 名前:名前は開発中のものです。 [02/11/28 07:20 ID:Ib7kWWVj]
自分の考えだと時間でDTだして変数にかけるのは駄目。
当たり判定なんかで絶対死ぬ。
面倒臭くて作ってられない。
よしんば自分は制御できても他の人はできないでしょ。
ネトゲはしかたないけど。
別に必要がないならフレーム飛ばしで対応が一番楽。

145 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

146 名前:名前は開発中のものです。 mailto:sage [02/11/29 00:07 ID:MjrDrSuB]
厳密にやろうとしなければOKでしょ。
ピンボールゲームとかビリヤードとかだとそれじゃまずいんだけどさ。

147 名前:名前は開発中のものです。 [03/06/26 13:32 ID:p0CgQeLa]
保守

148 名前:名前は開発中のものです。 [03/06/26 13:49 ID:+zxBVEy/]
GDAlgorithms-listあたりの議論では、内部フレームレートは固定で、
時間軸で補間描画するのが主流っぽく見えた。
ただ、これもコンストレインツとかいろいろ面倒ごとが絡んできそうだけど。

149 名前:名前は開発中のものです。 [03/06/26 19:48 ID:5GfwaFR5]
>>144
物理シュミレーションで
短い期間に衝突が起こりまくるとかかな?
でも固定フレームだとすり抜けが心配になるんだよね。



150 名前:名前は開発中のものです。 mailto:sage [03/06/27 06:02 ID:rPLXqI2z]
うちは、内部処理フレームレート固定、描画処理は追いつかなければ飛ばす方向でやってます。

151 名前:名前は開発中のものです。 mailto:sage [03/06/27 06:04 ID:rPLXqI2z]
>>149
固定フレームレートでのすり抜けの問題は、非固定でも同じかと。
結局、補完して判定したり、繰り返し判定しないといけないのは変わらないのでは

152 名前:名前は開発中のものです。 mailto:sage [03/06/27 08:57 ID:ixQrGkNZ]
うちは、ゲームループや他のワーカースレッドではDirect3Dの命令を一切コールせずに、
独自のプリミティブ命令を描画スレッド(っていうかサーバ)に発行する形。
描画スレッドはプリミティブ命令をバッファリングして適当なタイミングで画面を構成する。

ワーカースレッドは発行したプリミティブ命令が正しく描画されたかは関与しないので、
ゲームループに描画サイクルが間に合わない場合はフレームがスキップされるし、
ゲームループが遅すぎる場合はコマ送りになる。







153 名前:名前は開発中のものです。 [03/06/28 02:00 ID:aSb9r1M8]
Hなサイトを発見したでつよ。ここ、すごい。
plaza16.mbn.or.jp/~satchel/omanko_marumie/
美少女のワレメ…(*´∀`*)ハァハァ
美人お姉さんのオマ○コ…(*´Д`*)ハァハァ

154 名前:名前は開発中のものです。 [03/06/28 09:56 ID:MijJhoN2]
>>152
だから固定フレームレートだろ?

155 名前:名前は開発中のものです。 [03/06/28 10:56 ID:zsEm8tDY]
www.k-514.com/sample/sample.html
拾ったサンプルムービー集めたよ

156 名前:名前は開発中のものです。 [03/11/02 21:05 ID:dOIWbDqO]
固定フレームレートですり抜けが起きるか起きないかは
実装する前に予測できるじゃん

157 名前:名前は開発中のものです。 mailto:sage [03/11/02 22:35 ID:1l/gGn+E]
コリジョンは厳密にやろうとすればするほど奥が深い分野だよ。
とくにリアルタイム性が必要になると(論文ネタになる、というかなったくらいだし)。

まぁ、厳密性が求められないなら、>>156のように割り切って実装するのが吉。

158 名前:名前は開発中のものです。 mailto:sage [03/11/04 09:01 ID:CMviRQzL]
あれ?コリジョンスレどこいった?

159 名前:名前は開発中のものです。 mailto:sage [03/11/04 16:54 ID:1XiY25f5]
>>158
ここ?

【Collision Detection】
pc2.2ch.net/test/read.cgi/gamedev/1015484028/



160 名前:名前は開発中のものです。 mailto:sage [04/12/04 17:37:32 ID:mVDy3Uy+]
ガイジンのいろんな開発者から話聞く限り、あっちもA宗なんか使ってないよ?
状態遷移はB宗、表示は補間でリフレッシュレートに同期とか、
状態遷移の粒度を思いっきり上げるとか、そういうのが主流。
コンシューマやアーケードはやっぱり60fps決め打ち。
PAL圏で速度変わろうがシラネ(゚听) PS2やXboxになろうがファミコン時代と何も変わってないのさ。
とにかく、状態遷移の粒度が変わるとどんなタイミングで何が起こるかわからんので皆嫌がる。
サンプルプログラムレベルならともかく、中規模以上のゲームでA宗って例は知らんね俺は。

だいたい日本人だけが困ってる問題じゃない。
同じ環境でコード書いてる限り、ガイジンだけが特効薬持ってたりするわけないじゃん。

あと最近のDirectXはSetDisplayModeで素直にリフレッシュレート変わったりとか、
ほとんどの液晶ディスプレイは60Hz固定だったりとか、
いろんなリフレッシュレートに対応するメリットがかなり薄れてる。
プライオリティとしては、むしろ先に解像度決め打ちを廃絶するべきだな。

161 名前:名前は開発中のものです。 mailto:sage [04/12/04 17:58:18 ID:kfKbWf9i]
本当にA宗使ってないの?
最近出たPCの3DゲームでA宗じゃないの教えて欲しい。

162 名前:名前は開発中のものです。 mailto:sage [04/12/05 00:42:57 ID:GrFe+qNV]
>>160
なんで解像度なんだよ?
リフレッシュレートの話しておきながらw


163 名前:名前は開発中のものです。 mailto:sage [04/12/05 13:40:24 ID:3zCSSlsK]
>>161
普通にBが良いと思うよ。

Aだとフレームレートで細かい挙動が変わっちゃうでしょ。

その結果

> とにかく、状態遷移の粒度が変わるとどんなタイミングで何が起こるかわからんので皆嫌がる。

となる。

まぁ、問題にならないような状況なら好きにすればいいんじゃね?

164 名前:名前は開発中のものです。 mailto:sage [04/12/05 15:37:20 ID:QEq2K2Fz]
A宗だとリプレイも実装できないし。

165 名前:名前は開発中のものです。 mailto:sage [04/12/06 12:10:39 ID:nOjB+322]
A宗でリプレイ実装できないやつは地沼

しかし解像度依存をなんとかせにゃならんのは同意
低解像度にすると画面中インターフェースで埋め尽くされるのとかアホすぎ
だが拡縮に耐えられるデザインをするのは難しい

166 名前:名前は開発中のものです。 mailto:sage [04/12/08 17:57:08 ID:OfSHCP0i]
> A宗でリプレイ実装できないやつは地沼
詳しく

167 名前:名前は開発中のものです。 [04/12/13 13:45:32 ID:oLS390rH]
PCでB宗だとリフレッシュを変更せねばならずユーザーに嫌われる件について。

168 名前:名前は開発中のものです。 mailto:sage [04/12/13 15:00:58 ID:3e0kR3Ey]
B宗のなかでもリフレッシュレート変更がいらないものにして対処

B宗1派とか
> 状態遷移はB宗、表示は補間でリフレッシュレートに同期
> 状態遷移の粒度を思いっきり上げる
これとか

169 名前:名前は開発中のものです。 mailto:sage [04/12/13 15:14:09 ID:aofj8uyk]
>>164
フレームごとに時間を記録しておけばおk
再生時のフレームスキップの処理は必須



170 名前:名前は開発中のものです。 mailto:sage [04/12/13 15:23:24 ID:KD6ePPwD]
質問です。

◆A宗:「v += a * dt」
v-syncに同期。リフレッシュレートは任意。

◆B宗1派:「v += a」
タイマーに同期。一定間隔で値を更新する。

◆B宗2派:「v += a」
v-syncに同期。何らかの方法でリフレッシュレートを固定する。

「一定間隔で値を更新する。」 と「何らかの方法でリフレッシュレートを固定する。」って
まったく同じ意味じゃないですか?

参考サイト
フレーム制御
ttp://www.c3.club.kyutech.ac.jp/~sukiyaki/flame.html

171 名前:名前は開発中のものです。 mailto:sage [04/12/13 19:57:15 ID:gHIs8Crz]
大丈夫か?

172 名前:名前は開発中のものです。 mailto:sage [04/12/13 20:02:17 ID:OAPFomE2]
なんでそうなる。前者は計算、後者は描画の話だらーが。

173 名前:名前は開発中のものです。 mailto:sage [04/12/13 20:34:15 ID:twbQb5tx]
>>170
読みづらいたとえですまないが
たとえばユーザーCとユーザーDの使ってるリフレッシュレートがそれぞれ70、100のとき…
A宗(C)       秒間70回値を更新する。描画も秒間70回
A宗(D)       秒間100回値を更新する。描画も秒間100回
B宗1派、例い(C、D) 秒間200回値を更新する。(描画は適当に)
B宗1派、例ろ(C、D) 秒間60回値を更新する。〃
B宗2派(C、D)  秒間60回値を更新する。描画も秒間60回。リフレッシュレートは60に無理やり固定

174 名前:名前は開発中のものです。 mailto:sage [04/12/13 20:38:11 ID:twbQb5tx]
>>173のユーザーCとDの例を使ってひきつづき書いてみる。
>>169の方法だと、ユーザーCのリプレイをユーザーDが再生するときには
秒間70回値更新で描画は適当(ユーザーDの環境に合わせたもの)、
ユーザーDのリプレイをユーザーCが再生するときには
秒間100回値更新で描画は適当(ユーザーCの環境に合わせたもの)、
となるのでは。
>>160にならい、状態遷移の粒度がユーザーの環境によって変化するのがA宗、とするならば、
>>169のはA宗のリプレイ再生方法でなく、B宗1派のリプレイ再生方法なのでは。
というわけで>>164-166へループ。

175 名前:174 mailto:sage [04/12/13 21:54:27 ID:ZvpPKfOH]
>>174の最後2行、間違えました。申し訳ない。A宗で合ってますね。
A宗が状態遷移と描画を同じ周期で行わなければならないなんて決まりはないし、フレームスキップしてあたりまえだし。

・状態遷移の粒度がユーザーの環境によって変化するか
 (v += a * dt か、v += a か)
・状態遷移の同期をタイマーでとるかv-syncでとるか
・ディスプレイのリフレッシュレートを、ユーザーの環境と関係ない固有の値で固定するか
・状態遷移と描画を同じ周期で行うか
がごっちゃになって混乱してました。

176 名前:名前は開発中のものです。 mailto:sage [04/12/14 00:23:44 ID:JuD5jtQu]
>A宗が状態遷移と描画を同じ周期で行わなければならないなんて決まりはないし、フレームスキップしてあたりまえだし。
 
あるいは、A宗は過激派と穏健派に分かれるということではないか。
A宗過激派・・・全てリフレッシュレートに同期。画面更新だけでなく数値積分のタイムステップも何もかもリフレッシュレートに同期。
A宗穏健派・・・(ティアリングの無い)滑らかな社会を実現するために画面更新はリフレッシュレートに同期させよう。

177 名前:訂正 mailto:sage [04/12/14 00:26:58 ID:JuD5jtQu]
A宗過激派・・・全てリフレッシュレートに同期。画面更新だけでなく数値積分のタイムステップも何もかもリフレッシュレート基準。
A宗穏健派・・・(ティアリングの無い)滑らかなスクロールを実現するために画面更新はリフレッシュレートに同期させよう。

178 名前:名前は開発中のものです。 mailto:sage [04/12/14 02:01:20 ID:xwWJYjIC]
話をずらしてすまないんだけど

xnew = xold + v;

ってやる場合、新しい位置用のメモリ領域と、旧位置用のメモリ領域が必要になるよな?
これを描画するとき、リフレッシュレートスレの結論から

x = xold + (xnew-xold) * Δt / T (T = 1フレームぶんの時間)

とかやってた。

でもって、スレッド分けの最大の利点は画面更新計算の間でも位置更新の計算が出来るってことだと思うんだ。
すると、描画用のメモリ領域と、位置更新計算用のメモリ領域を分ける必要があるよな?一緒にしちゃうととんでもないよな?

つーとメモリ領域は、新旧 * 描画用、位置更新用 の計4領域?必要になるってことか。すげーな。
位置更新用のメモリ領域は、描画直前に更新が発生してたら描画用のメモリ領域にコピーされる?

コピー中に位置更新が発生しないように同期オブジェクトを一つかませば出来るような気がするんだけどどう??
おれ、はっきり言ってバイトと卒論で趣味プログラムしてる暇ないんだけど、だれか試してみてくんない?

179 名前:名前は開発中のものです。 [04/12/14 23:27:44 ID:uNvp6fIy]
>>176-177
あー。以前STGスレで自分はA宗であると告ったら
その過激派のほうだと思われたらしく
リプレイの件でチクチク突っつかれた。
 
俺は、A宗を名乗る上での必要条件は
・ティアリング排斥
・スムーズスクロール至上主義
だと思っている。
 
>>178
>描画用のメモリ領域と、位置更新計算用のメモリ領域を分ける必要があるよな?
>一緒にしちゃうととんでもないよな?
 
なぜそう思う。
深刻なアーティファクトが出るかどうかは状況による。
作れば一見してわかる話だ。

>コピー中に〜中略〜だれか試してみてくんない?
趣味プログラミングの醍醐味のひとつは
試行の自由を与えられることなのであり
その権利を行使せず無為に悩むは損かと。



180 名前:名前は開発中のものです。 mailto:sage [04/12/14 23:48:04 ID:uNvp6fIy]
つかリプレイとぜんぜん関係ない話してるし。ワリ。

>>172
同意。
ゲームワールドの状態遷移を再現できるかどうかの話と
A宗B宗は無関係。

181 名前:名前は開発中のものです。 mailto:sage [04/12/14 23:52:15 ID:uNvp6fIy]
s/ゲームワールド/各オブジェクト/

182 名前:178 mailto:sage [04/12/15 07:18:24 ID:QtJ8QeQp]
>179

描画用と更新用を一つにしちゃうと、描画の位置計算中に描画の素になるデータを書き換えられちゃわないかな?
と思ったんだけど、どうだろう。

描画が終わるまで待つんだったら、そもそもスレッド分ける意味がないと思うし。

>趣味プログラミングの醍醐味のひとつは試行の自由を与えられることなのでありその権利を行使せず無為に悩むは損かと。

う。2月まで覚えてられるかな・・・自信ねー。○| ̄|_


183 名前:名前は開発中のものです。 mailto:sage [04/12/15 13:43:03 ID:v1gXIgbp]
>>179
当初の定義は、
・数値積分のタイムステップを環境依存させるかで A宗 B宗1派 を分けている
・描画をどうするかでは分けていない
この定義だと、A宗は>>177のいう過激派しか認められないことになる。

>>179がA宗穏健派として状態遷移タイムステップをv-sync非依存にしているとしたら、
描画をリフレッシュレート同期にしていても関係なく、当初の定義だとB宗1派に明確に分類される。

A宗B宗の定義は、もう実用にはならないんじゃないか?
元々の定義は描画にはふれず状態遷移のみにふれているため、
>>179が過激派と思われたように意図を伝えられないことがある。

代案としては…。>>175の4要素16派に分類すれば多少マシだが、あのままでは煩雑だ。
話題になるのは16派のうちせいぜい4つくらいだし、
B宗1派とB宗2派のように一つのゲームに両方採用(設定変更)できるものも。

184 名前:名前は開発中のものです。 mailto:sage [04/12/15 19:01:03 ID:h9T9p7ZJ]
> 当初の定義だとB宗1派に明確に分類される。

リフレッシュレートに関する論争スレでは
B宗2派とは別名、60Hz原理教のような扱いだったと思う。
彼らの経典によれば
リフレッシュレートとは即ち60Hzのことであり
60Hzができない環境は窓から放り投げろ。と。

> A宗B宗の定義は、もう実用にはならないんじゃないか?
 
Yep

185 名前:名前は開発中のものです。 [04/12/16 02:31:19 ID:tK2W+T4c]
そもそもA宗って描画が落ちようがCPU処理が落ちようが、
ゲームの処理速度を安定させるものだと思うんだけど。

B宗のCPU処理固定主義とは根本的に違くない?


186 名前:名前は開発中のものです。 mailto:sage [04/12/16 02:56:42 ID:hmZX33Sk]
>>185
CPU処理落ちたらゲームの処理速度は一定してないんじゃ?
A宗は見掛けの速度をなるべく一定にするやり方でしょ

187 名前:名前は開発中のものです。 [04/12/16 03:35:18 ID:tK2W+T4c]
あー、そうそう。
見掛けの速度を安定させるってことを言いたかった。

んでB宗って描画が落ちた場合はフレームスキップとかできるけど、
CPUが落ちた場合処理落ちするしかないよね?

だから何が起きても見掛けの速度を一定にしたい場合は
A宗しかないんじゃないかなって。


188 名前:名前は開発中のものです。 mailto:sage [04/12/16 09:18:07 ID:DxYxxvNb]
なんか、変な方向にすすんでない?

A宗で書くのはつらい。

でもB宗でも見かけの速度を一定にしたい。
だから A 宗でぐるぐる回して、B宗スレッドにイベントを送信することでA宗でもB宗の記述方式ができるようにしたい。

で、そのさいの同期処理ってどーやるの?って話じゃないの?このスレって。


189 名前:名前は開発中のものです。 mailto:sage [04/12/16 19:27:32 ID:fImvV4sn]
>>188
いろいろあってゲームループ総合スレになってるらしい。



190 名前:名前は開発中のものです。 mailto:sage [04/12/17 07:34:10 ID:rOSemwp/]
ん?
たとえば、メインのゲームループは1/60sec決め打ちで回して、
メインのゲーム進行処理、キー入力、リプレイのロギングみたいなのは、
1/60で回ってるゲームループに同期させる。

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

元々、ゲーム専用機のVsync同期は、Vsync割り込みを高速タイマの代用に
していただけだし、なんでそこまでVsyncにゲームの進行速度まで依存させ
たがる人がいるのかワカラソよ。

191 名前:名前は開発中のものです。 mailto:sage [04/12/17 22:48:03 ID:6ejKXcKZ]
CPUパワーは資源だから。
でいいんじゃないかな。

192 名前:名前は開発中のものです。 mailto:sage [05/01/23 20:29:14 ID:Air0xk8V]
>>190
VSyncの意味がわかってないようで・・・

193 名前:名前は開発中のものです。 mailto:sage [05/01/23 20:34:37 ID:JtLG4rmH]
>Vsync割り込みを高速タイマの代用にしていただけ

馬鹿に限って偉そうにダラダラ語りたがる好例。

194 名前:晒しage mailto:age [05/01/23 22:57:22 ID: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

195 名前:名前は開発中のものです。 mailto:sage [05/01/24 00:09:20 ID:Am/KGoi6]
>>194 = >>190 だなw

196 名前:名前は開発中のものです。 mailto:sage [05/01/24 02:05:01 ID:QUF1Uv+C]
ほんとに馬鹿だな
2chブラウザで更新チェック仕掛けとけばどんなに深くても一瞬なんだが

197 名前:名前は開発中のものです。 [05/01/24 02:50:03 ID:Pb4FhWzL]
どれだけVBlank中に苦労したか・・・ヽ(`Д´)ノ

198 名前:名前は開発中のものです。 mailto:sage [05/01/24 09:00:45 ID:MwYTmyiP]
>190
モレは2Dシューティング作ってたが、内部で画面の更新をする周期と
ゲームのタイミングは完全に同じじゃないと困る。
完全に同期してないと、移動キャラが一ドット進まなかったり
2ドット進んだりする。自機を移動させると
かくん…かくん…という感じでほんの少しぎこちなくなる…

FF7とか3Dのゲームならもともと30FPSとかでもそれなりに見えるし、
関係ないんだろうけど


199 名前:名前は開発中のものです。 mailto:sage [05/01/24 21:39:05 ID:Am/KGoi6]
>>198
それは、画面の更新の2倍速以上の周期でゲームループをまわせば良いんじゃないの



200 名前:194 mailto:sage [05/01/24 21:57:23 ID:6rvdu/5R]
>>195
私はあなたの主張を全力かつ必死で否定します。
何故なら私は>>190の手法に懐疑的な立場を取る人だからです。
 
>>190は状態遷移の時間ステップは1/60[s]で行うことで良いと言います。
しかし60[Hz]近傍の画面更新周波数を採用する場合に
ゲームによっては許容が困難なアーティファクトを呈します。
 
ひとつは状態遷移と画面更新の共鳴によってもたらされます。
>>190は補間すると言います。これは時間tを媒介変数とする3次
パラメトリック曲線パッチに物体軌道を追従させることと推定されます。
しかしこれはプレイヤーの感じる周期的な違和感を抑制はするものの
完全に除去することが難しいことを>>190は知るべきです。

201 名前:194 [05/01/24 22:01:08 ID:6rvdu/5R]
s/時間tを媒介変数とする//
s/3次//







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<66KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef