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

DXライブラリ 総合スレッド その16

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2013/06/30(日) 23:57:05.06ID:j62MvD3e
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
http://homepage2.nifty.com/natupaji/DxLib/

【関連スレ】
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
ゲームプログラムなら俺に聞け(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1366526476/

●DXライブラリではなくDirectXの質問ならこっちへ
【C++】DirectX初心者質問スレ【C】(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1370015791/
0551名前は開発中のものです。2013/10/04(金) 08:57:28.28ID:8I+rYF1p
>>550
純粋に表示だけならレンダリング処理のパスが省略されるはず。
ただゲームプログラミングで考えた時、裏で自分でしてる論理処理の方は視界の外の部分は省略したりするよな。
「重さ」のネックは大抵そっちにあるから。
0552名前は開発中のものです。2013/10/05(土) 01:56:11.12ID:swZovpC2
ライセンス取るのが辛い
なんでこんな仕様にしたのか
0553名前は開発中のものです。2013/10/05(土) 02:38:04.19ID:swZovpC2
ごめんね誤爆なの
0554名前は開発中のものです。2013/10/05(土) 07:04:12.45ID:42i+ls1b
3dで、カメラの後ろ側にあるオブジェクトは、画面のドットから飛ばしたレイの衝突判定対象にする?
カメラの真後ろにあるオブジェクトに対してレイを飛ばした時の判定なんてほぼ無駄なわけじゃん
0555名前は開発中のものです。2013/10/05(土) 07:30:15.10ID:zPZwPgbh
>>554
まず対象オブジェクトがカメラの後ろにあるかを判定する必要があるけど、それって結局レイ飛ばすなり「平面-オブジェクト」で判定するわけじゃん。
で、その後レイで衝突判定とるの?
他の処理の都合であらかじめオブジェクトがカメラの後ろにあるかどうか解ってる特殊な事情が絡まない限り、全探索するしかなくね?
0556名前は開発中のものです。2013/10/05(土) 09:23:08.63ID:0JH/7YRj
カメラの位置と方向ベクトルに対して、明らかに表示角の外にいる物は、
より細かい計算するより前に対象外として一律処理スキップとかするけど俺
0557名前は開発中のものです。2013/10/05(土) 09:25:26.82ID:0JH/7YRj
>>554
画面のドットからレイ飛ばすってのがなんか引っ掛かるけど、俺は表示物じゃなくて論理管理レベルでの計算で >>556 する。
0558名前は開発中のものです。2013/10/05(土) 13:42:34.85ID:U+9bHzcQ
俺が初心者で無能なだけかもしれないけど
>>554って環境マップとか使って擬似的な反射でも考えない限り全く無縁の話じゃないの?
光源が後ろにない限りカメラより後ろのオブジェクトが描画結果に影響することはないんじゃない?
乱反射の部分は環境光ってファクターで擬似的に表してるんだし

っていうか>>556の方が効果は大きそうだし
描画時間計測したことあるけど、ライティング関係の処理はDirectXだかDXlibだか分からんが自動で弾いてくれてるっぽいぞ
ビルボードを視野外(近く)に置いたときと、視野内の無限遠に置いた時がほとんど同じで、視野内の近くに置いた時より格段に軽かった

的外れの恥ずかしいレスじゃありませんよーに
0559名前は開発中のものです。2013/10/05(土) 18:25:07.74ID:zPZwPgbh
>>558
それって、レイトレースとかの文脈のレイ?
>>554の言うレイは普通の半直線の事を指してると思うんだけど。
DXライブラリスレでレイトレースとか出る話題じゃないし…。

マウスクリックでオブジェクト選択みたいな処理を実装するために半直線と交差判定取ってるんだけど、
カメラの後ろにあるオブジェクトまで交差判定とるのって無駄じゃね?

って話だと思ってたけどあってるよね?
0560名前は開発中のものです。2013/10/05(土) 18:48:29.96ID:zPZwPgbh
あと>>556のカメラの位置と方向ベクトルでプレ処理って話だけど、
位置ベクトル+方向ベクトル=平面
だよ。
要するにカメラの後ろ=nearクリップ平面の負の領域ってことだし。


if ( !CollidePlaneObject(nearClipPlane, obj) ) return; // プレ処理(カメラの後ろにあるか判定)

if ( !CollideRayObject(ray, obj) ) return; // レイ交差判定(本ちゃん判定)

って感じだと思うんだけど、平面-オブジェクトの判定とレイ-オブジェクトの判定って計算的に殆ど同じだから、
最初のプレ判定あんま意味なくね?計算省いてるようで実は二重に計算してね?
というのが>>555で言いたかったこと。
0561名前は開発中のものです。2013/10/05(土) 18:49:58.53ID:TrZUJRMY
ウィンドウモードで起動時に
ウインドウ枠の「×」をクリックした時に
DxLib_End関数を評価させる方法はないでしょうか?

それとも「×」をクリックして終了した時に
自動的にDxLib_End関数が評価されるように設計されているのでしょうか?
0562名前は開発中のものです。2013/10/05(土) 20:10:30.39ID:0JH/7YRj
>>560
二度判定されるのは事実だけど、無駄じゃない。
複雑な形状を持つオブジェクトの中身に対する細かい判定とは別に、
そのオブジェクトが置かれるグローバル座標を原点とする半径や最大立法体で判定して、先に一回「明らかな範囲外」を落とすんだよ。
実際に運用されてる有名な例で言うと、bulletphysics等がそう。
0563名前は開発中のものです。2013/10/05(土) 20:13:55.33ID:0JH/7YRj
ちなみに >>560 のように「意味無くね」って思う事があるとしたら、初歩的な立体しか扱わず、
視野内での計算と視野外での計算が完全に同じで事足りるケースだけ
0564名前は開発中のものです。2013/10/05(土) 20:38:31.68ID:OUqe1t+L
>>559
ひいいドットから出るレイとか言うからレイトレーシングの方だと思ってた恥ずかしい
このスレって突然DirectXの話題になったりCの話題になったり結構カオスだから勘違いしてましたごめんなさい
0565名前は開発中のものです。2013/10/08(火) 03:59:08.46ID:FyCpCW0B
テクスチャじゃない加工済み3Dアニメーション(例 爆発エフェクトとか)って描画どうしたらいい?
1加工済みアニメを3D空間or画面に2D描画(ペラペラだけど我慢orカメラとの角度固定)
2加工済みアニメを透明なマテリアルにテクスチャアニメーションとして張り付けてx→3D描画
3アニメーションまで読み込んでその場でエフェクトを作る
今まで視点固定なので1で作っていて、次は3D視点のものを作ろうと思ってて、描画方法考えています。
2そもそもテクスチャアニメーションをx化できるのか、あと球の中心とかあると張り付け不可。
3リアルタイムの負荷&処理方法実装の難しさとか、シェーダの延長でなんとかするしかない?
先人様がいらっしゃれば知恵を分けてほしいです。
0566名前は開発中のものです。2013/10/08(火) 08:37:39.25ID:uzXpM02K
3Dゲームでエフェクト(爆発表現)の仕方
1)カメラ固定で2Dゲームのように見える場合に爆発連続2Dアニメを2D画面に描画する。
2)カメラが自由移動するフル3Dゲームにおいて、板ポリゴン上に爆発連続2Dアニメを表示する。
3)3Dゲームで爆発表現を3Dで表現する。

色々あるけどね、
@ビルボードを使うのが良い。スプライトを使って、3D場所の関係で大きさを変えて
2D画面にスプライトとして爆発2Dアニメを表示する。単純で効果的。
A板ポリゴンに爆発2Dアニメを描画するのもありだけど、光の放射反射などの影響が大きい。
Bポリゴンだけで爆発を表現する、これは計算でポリゴンを動かすので
表現方法として有りだろう。地味な表現になるから、シェーダを加えたくなるだろう。
Cシェーダーで表現するのが最新式だが、古いPCだと動かないかもしれない。
派手な演出も出来るし、最終的に2Dの部分での演出もできる。
以上が一般的な手法です。

簡単で効率的なのが、スプライトによるビルボード手法。
色々な方法があるから、試してみると良い。場面によって違うだろうからね。

ここに、エフェクトのデモがある。参考になるだろう
http://www.sbcr.jp/support/8594.html
0567名前は開発中のものです。2013/10/08(火) 11:02:19.63ID:E8v6Sv+Z
PSレベルなら板ポリに画像貼るって分かるけどPS2レベルになるとわけわからんよね
あとシェーダーシェーダー言われるけど意味が全く分からない
シェーダーってどこかで落とすツールか?って感じ
0568名前は開発中のものです。2013/10/08(火) 11:18:41.58ID:jcgEteQj
「シェーダで」って言うのは「プログラムで」って言う意味と作業場所以外変わらんから説明不足感すごいよね
0569名前は開発中のものです。2013/10/08(火) 11:21:39.17ID:Fb0fwir5
PS2も大差ないだろ
基本的に板ポリの量が増えるだけ
0570名前は開発中のものです。2013/10/08(火) 11:49:21.01ID:8bfY/fC5
>>556
詳しく説明&サンプル感謝します
開ける環境に戻ったら勉強します。
しばらくビルボート式を用いて、他のことも含めて余裕がでてきたらシェーダを学ぼうと思います。
何年後のことやら…
0571名前は開発中のものです。2013/10/08(火) 11:50:03.23ID:8bfY/fC5
>>566だミス失礼
0572名前は開発中のものです。2013/10/08(火) 12:19:08.14ID:E8v6Sv+Z
>>568
腕を重点的に鍛えたいけどどうすればいい?って聞いたら筋トレしろって言われるのと同じだよね
ここ以外でもシェーダーは具体的なの見たことないな
0573名前は開発中のものです。2013/10/08(火) 12:53:20.88ID:ttaYSeAJ
>>572
OpenGL関係のスレとか、さもなきゃ書籍でも見たらいいのでは
一応補足しておくと、OpenGLのglslとDirectXのhlslは別物だけど、考え方は同じだよ
0574名前は開発中のものです。2013/10/08(火) 12:55:13.56ID:ttaYSeAJ
あ、スレじゃなくてサイト。素でtypo
何も知らない状態で待ってても見かけないと思う。
例えればプログラミングの基礎編にある物じゃなく、必要な人が利用する応用編の範疇の世界だから
0575名前は開発中のものです。2013/10/08(火) 13:01:23.14ID:t3akdCKp
俺なんて爆発表現は球体ポリゴンに、それっぽいテクスチャ拾ってきて材質設定して貼るだけだぞ
で、エフェクト中は球体を回転させながら透明度だけ弄る
頂点を操作するアニメーションなんてできないし
0576名前は開発中のものです。2013/10/10(木) 18:23:43.43ID:8tsX4vRv
>>512-513
亀だけど、それ当たりで考えるとビリヤードのブレイクショットの配置みたいに
静止しててくっついてる状態でちょっとめんどくさくなると思う
0577名前は開発中のものです。2013/10/11(金) 00:20:35.39ID:6kBrNmzO
接触してる相手の運動ベクトル見て振る舞いを決めればええんや
0578名前は開発中のものです。2013/10/11(金) 00:39:09.42ID:+9JMgRHw
>>575
もう板ポリのテクスチャ変更して3Dドットみたいにしちゃうのか
試してみよう
0579名前は開発中のものです。2013/10/11(金) 08:33:37.25ID:KkfuXsaC
3次元の音響ライブラリってないですか?
音を拾う座標指定して、音量とか減衰率とか反響とか設定できて簡単なやつ
0580名前は開発中のものです。2013/10/11(金) 09:13:37.91ID:RGakvLAz
なんでそれをDXライブラリスレで聞くんだ?

それはともかくとして、そんなライブラリがあるとしたらXAudio2のラッパということになるだろうけど、そんなのは現在ないっぽい

BASS Audio Libraryという3Dサウンドの使える比較的シンプルなライブラリがあるっぽいが、
日本語のドキュメントは殆どと言っていいほどないみたいなので自力で調べられない人には使えないだろう
0581名前は開発中のものです。2013/10/11(金) 09:26:57.30ID:kG8mPrPa
>>579
この本に具体的に解説してあるから、実装しなさい。

DirectX9必携: 鎌田 茂雄: 本
0582名前は開発中のものです。2013/10/16(水) 23:39:32.53ID:Rf7cBVFP
C#+DXライブラリでやってるんだけど
スクリーンに黒色で塗りつぶしたところがDrawGraphで透過Trueにしても透過しない
なぜじゃー
0583名前は開発中のものです。2013/10/16(水) 23:50:58.42ID:AJwC2plj
ブレンドモードは?
0584名前は開発中のものです。2013/10/16(水) 23:55:26.73ID:09GDCNSk
DxLibを利用した開発で、デバッグしようとすると
数度に一回マウス以外完全にフリーズしてしまいます。

VSの一番下部の青い所がF5を押してデバッグ開始するとそこがオレンジになって、
そこに AudioSes.dll シンボルがどうたら 
と表示されて読み込み中?のまま、マウスポインタは動かせるのですがそれ以外の動作ができなくなります。
タスクマネージャーの起動もできずになって直接電源切るしかなくなります。
このままではHDが死んでしまいそうです。
何が原因かわかる方いらっしゃいませんか?

ぐぐっても、似たような症状の方は見つかるのですが
解決策が出てないのしか見つからないです。
VS Express for Desktop利用です。
windows7 64bitが問題なのかともおもうのだけど。
0585名前は開発中のものです。2013/10/17(木) 00:03:15.56ID:rXL4X8+O
俺が遭遇したことあるトラブルはエレコムのUSBパッドくらいだな
0586名前は開発中のものです。2013/10/17(木) 09:25:56.10ID:c674Ibx6
>>583
NoBlend
0587名前は開発中のものです。2013/10/17(木) 10:41:25.53ID:p0PD90TH
なめとんか
0588名前は開発中のものです。2013/10/17(木) 11:06:13.46ID:WfFtC5GU
>>584
DxLib関係ないと思うが
システムごと死ぬのは十中八九デバイスドライバが悪い
64bitなら32bit用のドライバで動いてる奴が悪さしてるとかひょっとしたらあるかも
0589名前は開発中のものです。2013/10/17(木) 15:23:43.00ID:c674Ibx6
Noblendだと透過色って機能せんの?
ドウイウコトナノ・・・
0590名前は開発中のものです。2013/10/17(木) 16:06:04.12ID:G8MUlgiH
透過シナイ画像表示関数ッテ存在価値アルノ?
画像全体に透過処理するんならモード変えろ
0591名前は開発中のものです。2013/10/17(木) 16:14:55.88ID:5lApwyFA
数レス前も読んでなかったすまん…
諦めて最初から透過しとけば?
0592名前は開発中のものです。2013/10/17(木) 16:57:54.53ID:c674Ibx6
いろいろ試してみたけど透過色はBMPとJpg読み込みのときだけ機能して
他のスクリーンやスクリーンをGetDrawScreenGraphでMakeGraphでつくったハンドルに移しても機能せず
アルファ付き画像でアルファ指定してやらんと透過せんのね
微妙すぎぃ
0593名前は開発中のものです。2013/10/17(木) 17:05:56.17ID:2Y9zA1MX
GDIのフォーマット(pixel辺りのビット数)についてちゃんと理解した上で扱ってれば特に問題無い気もする
0594名前は開発中のものです。2013/10/17(木) 17:27:20.11ID:c674Ibx6
面倒だけどマスク画像作って一回ブリーチングしてから描画することにしたわ
サンクス
05955842013/10/18(金) 02:10:22.43ID:Fdn5BT6n
>>588
DxLib使わなければ固まらなかったんでそこばっかり調べてたのですが、
なるほどと、いろんなものアップデートかけたけど状況変わらずでした。

解決ってわけじゃないけどBCCに移行したら
一時間くらい作業してみてるけど再発せず。
VSが悪かったってことなんだろうか?

ただ、すげー使いにくい。
0596名前は開発中のものです。2013/10/18(金) 16:05:43.20ID:wI1cKsI5
最小限のプログラムでも発生するなら、そうかもねー。
設定変えればいけるかもしれんけど
0597名前は開発中のものです。2013/10/18(金) 18:23:23.35ID:N5DQXWku
え、DXライブラリって、
64bitか32bitかで支障あるん?
64bit用なんてありましたっけ?
0598名前は開発中のものです。2013/10/18(金) 21:10:30.89ID:HCxtnSqx
VSのExpress版使ってると64bitビルド出来ないから32bit版しか知らない
05995842013/10/19(土) 00:04:03.03ID:QcOl7SCF
>>595
自己レス。
おそらく本当に解決したので一応ご報告。

BCCでも固まりました。
というか、デバッガで固まったのでそこを重点的にぐぐったら、
同様の症状でDRM関連のCYMON.SYSを消したら直ったというページを発見出来たので、
削除したらおそらく今度こそ本当にたぶん解決。
同様の事案で悩んでる人たちに伝えたい。

>64bit云々は同様の件で困ってる人がほとんど64bitのOSだったので怪しんだだけです。
結果的に関係なかった。
DxLibも関係なかった。
0600名前は開発中のものです。2013/10/19(土) 00:05:41.25ID:cL2pDxD5
乙 結構有益な情報だわ
0601名前は開発中のものです。2013/10/19(土) 01:03:15.68ID:5grMyEOo
サイモンシスって読めばいいの?
0602名前は開発中のものです。2013/10/19(土) 01:16:15.10ID:+1vXIvno
Are you going to Scarborough Fair?
0603名前は開発中のものです。2013/10/21(月) 18:41:36.26ID:w8555t4z
初心者です
よくリファレンスでFPS固定させるコードとかあるけどSetWaitVSyncFlag()で垂直同期するんじゃだめなんですか?
あとFPSによってゲームスピードが変わる云々という記述を見ますが、何故フレームで計算するんです?
私はGetNowCount()で計算しているんですが、何かまずい事でもあるのでしょうか
0604名前は開発中のものです。2013/10/21(月) 18:47:51.14ID:/u23XyM9
>SetWaitVSyncFlag()で垂直同期するんじゃだめなんですか?
ダメ。垂直同期がない環境もある

>何故フレームで計算するんです?
時間に応じて可変フレームに対応するゲームを作るのは大変だから

>私はGetNowCount()で計算しているんですが、何かまずい事でもあるのでしょうか
パーフェクトに組めるなら問題ないけど、初心者には無理だと思う

あとです?で止めずにちゃんとですか?って書けよデコスケ
0605名前は開発中のものです。2013/10/21(月) 18:58:35.56ID:w8555t4z
>>604
>時間に応じて可変フレームに対応するゲームを作るのは大変だから
何故ですか?可変フレームなら尚更フレームで計算より時間で計算した方が良いと思うのですが
あ、この場合の計算って言うのは例えば○秒で画像Aをy軸に+1するみたいな計算です
0606名前は開発中のものです。2013/10/21(月) 19:03:06.05ID:/u23XyM9
>>605
フレーム固定処理ってのは○秒の部分を16.6666...ミリ秒に固定してるだけだぞ
一定時間毎に処理するならフレーム処理と変わらない
0607名前は開発中のものです。2013/10/21(月) 19:06:38.76ID:/tZQoOAW
回せるだけ回したらマシンパワーの無駄食いだから
0608名前は開発中のものです。2013/10/21(月) 19:07:14.69ID:sMEbtuV5
たぶん質問の書き方がおかしくて話が伝わってない

FPS固定よりも可変フレームレートの方が良い
開発が少し面倒くさい程度で、デメリットがない

垂直同期はテアリングが起きないのが最大の利点
ただしフレーム数がモニターに依存するようになるから
結局可変フレームレートに対応するようなプログラムを書く必要があって面倒くさい

だから最も初心者向けサイトは基本的に
作りやすい60FPS固定にしてフレーム基準で計算するようにしてる
しかもデメリットは垂直同期しないために起こるテアリングくらいしかない
0609名前は開発中のものです。2013/10/21(月) 19:15:43.93ID:w8555t4z
そもそもフレームってそんなに重要なもの何ですか?
DXライブラリ使っててフレームレートを意識した事が全くなくて、リファレンスなどを見て何故そこまでしなければいけないのかと困惑している次第で
0610名前は開発中のものです。2013/10/21(月) 19:17:01.12ID:xXi4ljOj
フレーム数を時間代わりにすると環境によってはカクカクになります?
0611名前は開発中のものです。2013/10/21(月) 19:20:20.12ID:/u23XyM9
可変フレームレートって、ネトゲでもなきゃCPUが貧弱だった頃の名残じゃないのか?
処理落ちするとしたらほぼ確実に描画が原因な今の時代だと、固定フレーム+フレームスキップがベターだと思う
0612名前は開発中のものです。2013/10/21(月) 19:29:53.55ID:/u23XyM9
フレームスキップじゃないな
固定フレーム+描画スキップな

世の中のゲームの大半が60フレーム固定なのにはちゃんと理由があるわけで

・60フレーム以上のフレームレートにしても、人間が見るぶんには特に滑らかだと感じない
・CPUが成長したので処理で60フレームでないゲームなんてありえない

作るのが動的なゲームである限り、固定フレームを捨てるメリットはないというのが俺の持論
0613名前は開発中のものです。2013/10/21(月) 19:42:40.65ID:70y1g1SQ
60フレーム出ないゲームなんてありえないって言い方はおかしいが、
とりあえず言いたい事はわかる
0614名前は開発中のものです。2013/10/21(月) 19:48:43.62ID:1CRFZwZl
60フレームを確保しているのは、ゲーム機の格闘ゲームくらいです。
ゲーム機で他のジャンルは ほとんどが30フレーム

パソコンの場合は、強力なPCもあれば、非力なPCもあるので
色々な手段を使って、最低限のフレームレートを確保しようとする。
また、負荷変動が多々にあるので、それに対処する必要も或る。
0615名前は開発中のものです。2013/10/21(月) 19:52:47.30ID:xXi4ljOj
たいして難しくないんだからFPSと垂直同期くらい設定可能にしておけよw
0616名前は開発中のものです。2013/10/21(月) 19:53:04.57ID:sMEbtuV5
>>609
何を質問したいのかがよくわからない
可変フレームレート(時間単位での処理)でできてるならそれで大丈夫だよ

>>612
60フレームと120フレームでは明らかに違うから見た瞬間にわかるよ
120と240は俺自身は比べたことがないけど恐らくそれも感じ取れるだろう
実際に今のテレビのほとんどが240フレーム表示を採用してるからね

2万のネットブックとかで動かすユーザーなんかが絶対にいるから
ゲーム用PCで1000fpsくらい出せるようなゲームでも、20fpsとかになることはざらにある
0617名前は開発中のものです。2013/10/21(月) 19:55:43.22ID:/lNEn8aD
正直60でない化石の配慮なんて無駄
広大な3Dマップを切り替えなしのリアルタイムで読み込むタイプならあって損はないかもね
60より必要あるのはレート120やら144やら使う格ゲーFPSガチ勢くらい
それ以外のジャンルなら頭動かすだけ無駄
やりたければ勝手にどうぞの世界
0618名前は開発中のものです。2013/10/21(月) 20:04:47.68ID:w8555t4z
これでも十分勉強になるのですが
私が言いたかったことは
例えばここの
http://dixq.net/g/03_02.html

while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){

DrawGraph( 0, Count% 50, Handle, TRUE ); // 周期 50カウント でループ表示する
DrawGraph( 100, Count%100, Handle, TRUE ); // 周期 100カウント でループ表示する
DrawGraph( 200, Count%150, Handle, TRUE ); // 周期 150カウント でループ表示する

Count++; // カウンタ加算

}

こんな処理をしたとして「PCスペックによって時間が変わっちゃうからFPS固定しよう」とか言ってるなら最初から時間測れば良いのでは?
と思ったって事です
0619名前は開発中のものです。2013/10/21(月) 20:08:41.83ID:/u23XyM9
初心者はやっぱり明後日の方向で悩んでるから怖いな
そんな単純なもんじゃないから、フレーム固定で作っておけ
0620名前は開発中のものです。2013/10/21(月) 20:11:54.34ID:1CRFZwZl
パソコンの負荷は一定では無く、不規則に変動するのですよ。
それが、個別に全部が違う挙動をする。
0621名前は開発中のものです。2013/10/21(月) 20:14:02.72ID:w8555t4z
すいませんスペックじゃなくてリフレッシュレートです

http://dixq.net/g/03_14.html
0622名前は開発中のものです。2013/10/21(月) 20:19:16.36ID:/u23XyM9
リフレッシュレートは60や120だけじゃなくて50や75や72や85もあるんだぞ
ズレるわ
0623名前は開発中のものです。2013/10/21(月) 20:23:20.98ID:sMEbtuV5
>>618
そのサイトは初心者向けだから可変フレームレートは難しい
また、その章までに書いたプログラムすべてを変更する必要がでるから避けてるんだよ

>>608にも書いたけど時間を計って可変フレームレートにするのは良いことだよ
一応処理落ちについての話題が出たから例として触れておくと、
極端な処理落ちが発生したときに可変フレームレートだと衝突判定のすり抜けが起こることが
予期されるからそれを防止するためのメカニズムを考えないといけなかったりとか
とにかくプログラム書くのがFPS固定に比べて面倒くさい
0624名前は開発中のものです。2013/10/21(月) 20:27:42.27ID:r1lqBEdn
FF3のエンカウント時エフェクトみたいな
1フレーム毎に画面が白黒⇔カラーを繰り返すみたいなエフェクトを実装するとき
可変フレームレートだと白黒のままになったりカラーのままになったりで
おかしな表示になるんじゃないんですか
0625名前は開発中のものです。2013/10/21(月) 20:27:43.27ID:/u23XyM9
面倒くさいどころか逆に負荷が増す場合もあるぞ
カーブとか重力を考慮した移動とか複雑な移動処理をするなら

完全な再現性を実現できない限りは可変フレームレートなんて採用すべきじゃないと思うな
ネトゲやFPSだって、発生した事実関係だけをサーバに送信して無理矢理辻褄合わせてるだけだし
0626名前は開発中のものです。2013/10/21(月) 20:30:11.95ID:w8555t4z
FPS60に固定する

予め1フレーム過ぎる毎にint countを+1しておく

あるアクションから一秒たったら画像を表示させたいから
アクションおこした時にint a = countする

count - a > 60の時に画像を表示

みたいな説明があって
countの代わりにGetNowCount()を使えばfps固定する必要なんてないと思ったと言おうとしました
説明下手でごめんなさい

>>623-625
なるほど
まだそんなレベルに達していなかったので面倒くさいとも思いませんでした
ありがとうございました
0627名前は開発中のものです。2013/10/22(火) 00:35:28.42ID:p3Db7vmq
>>625-626
微分方程式を解ける秀才がこのスレに降臨したかと期待したが、ただの初心者だった
0628名前は開発中のものです。2013/10/22(火) 03:54:29.71ID:o/EMSDRG
>>626
ああ、それは勘違いしそうになるな。説明が不適切とまでは言わないが。

1秒後(あるいは60フレーム後)に画像を表示する、くらいなら正直どっちでもいいと思うけど、
秒速120ドットで移動するとかだと少し面倒になるって感じかねぇ。分母が変わっちゃうから。
0629名前は開発中のものです。2013/10/22(火) 04:28:57.73ID:o/EMSDRG
固定/可変フレームレートの問題というよりも、>626の場合は、
ゲーム内時間をフレーム基準で考えるか、実時間ベースにするかって問題だよね。

フレーム基準というのは、つまりゲーム内時間をプログラマが管理できる状態と言い換えられる。
それに対して、実時間を基準に処理を行うというのは、ゲーム内時間にプログラマがアクセス出来ない状態と言える。

この差は結構重要で、プログラミングをする際に1つの処理を細かく積み上げて考えたい時や、
あるいはテストプレイやデバッグの際に、ゲームスピードをゆっくりにして動作を見極めたいという時に、
実時間ベースだと不便そうだなあというのは、何となく分かってくれるんじゃないかと思う。

もちろん実時間ベースが優れてるところもあるので、決して間違いではないのだけれど。
0630名前は開発中のものです。2013/10/22(火) 06:42:35.27ID:ExrKC0WT
dxライブラリのfps制御そのまま使ってるけどよくない?
1秒を60フレームって前提でゲーム内のタイマー作っちまってるわ
0631名前は開発中のものです。2013/10/22(火) 06:52:51.98ID:o/EMSDRG
オンラインランキングとかしないなら、そんなに困らないと思う
0632名前は開発中のものです。2013/10/22(火) 07:32:13.52ID:h2dd5GhR
可変フレームで気になってたんだけど
環境によってfps変わってたらリプレイの再現できなくない?
0633名前は開発中のものです。2013/10/22(火) 08:42:21.30ID:V7djTReU
処理のループはfpsに制限されないでしょ
動きが荒くなるだけじゃない?
0634名前は開発中のものです。2013/10/22(火) 08:54:17.54ID:BGWyzjBW
マリオカートのゴーストとかどう記録してるんだろ
と思ったけど処理したときついでに時間記録すれば普通にできるか
0635名前は開発中のものです。2013/10/22(火) 09:32:38.97ID:a95zJsvM
やってみそw
0636名前は開発中のものです。2013/10/22(火) 09:45:09.67ID:aNv/ean1
ゴーストとかリプレイを実装しようとして、「なぜずれるんだー」と頭を悩ますのはお約束だよな? な?
0637名前は開発中のものです。2013/10/22(火) 11:17:27.80ID:uNccePou
処理時間≠入力時間に気をつけて処理させれば固定と同じようにやればいいだけ
ずれ誤差怖いから実体の位置を入力時間ごとに別で取っておいてそこから計算させた方がいいかも?
使う処理が1つで済む&信頼度高いけど情報量が膨れそう
とか妄想したけどジャンル的にリアルタイムリプレイなんて一生実装しないだろうな
0638名前は開発中のものです。2013/10/22(火) 12:36:20.41ID:RkpLyTH2
低レベルな話ほど長く続くね
0639名前は開発中のものです。2013/10/22(火) 12:47:39.37ID:R7mUWhnr
そりゃ母数が違うからな
0640名前は開発中のものです。2013/10/22(火) 15:20:36.48ID:o/EMSDRG
確かにゲームプログラム全体の中では低レベル寄りな方だよな。vsyncとか。
0641名前は開発中のものです。2013/10/22(火) 15:31:37.39ID:02IR7DMm
自転車置き場の議論なら誰でも参加できるからな
俺のように高レベルな人間になると議論する相手を探すのも苦労する
0642名前は開発中のものです。2013/10/22(火) 15:55:43.08ID:RkpLyTH2
バカばっか
0643名前は開発中のものです。2013/10/22(火) 16:25:11.43ID:aNv/ean1
>>641

多分ツッコミ待ちなんだろうけど、どこへツッコめばいいのかわからんw
0644名前は開発中のものです。2013/10/22(火) 16:30:05.22ID:IVeWUgqF
冗談にマジレスはあかんでー
0645名前は開発中のものです。2013/10/22(火) 18:58:55.59ID:Fwxh/sRV
自作中のゲームがウィンドウモードと比べて全画面モードの処理速度がどうしても遅いのですが
他のdxlibを使ったゲームはウィンドウの方が不安定だったりするのになぜでしょうか…

2D表示機能のみで、主な設定関数は
SetGraphMode(800,600,16)
SetDrawScreen(裏画面)
SetDrawMode(バイリニア)//ゲーム中変更なし

処理としては、描画に加算・減算切り替えが多め、背景の計算がやや複雑といった感じです

全画面モード中はこの処理が重い、といったことはあるのでしょうか?
0646名前は開発中のものです。2013/10/22(火) 20:35:42.51ID:IVeWUgqF
リリースで測った?
0647名前は開発中のものです。2013/10/22(火) 22:01:05.96ID:o/EMSDRG
特定のビデオカード(や設定)と相性が悪いとか、
解像度を変えるのではなくウィンドウサイズを上げてるとか…… うーん、わからん
0648名前は開発中のものです。2013/10/22(火) 22:30:32.24ID:smR91Eyn
過去の記憶ではリリースビルドでも遅くなっていました(計測はしていなく今リリースビルドしたらデバックビルドでは出ないエラーが出て改善できず、計測できませんでした)
音楽に合わせた演出がゲーム最初にあるのですが確実にずれていました

デバックビルドで計測しましたが、ウィンドウだと13ms、全画面だと17msでした
screenflipで差が出るようです
0649名前は開発中のものです。2013/10/22(火) 22:31:54.83ID:o/EMSDRG
17のほうが正常だそれ
06506492013/10/22(火) 22:34:58.08ID:o/EMSDRG
正常、って言うと語弊があるな。訂正。
たぶん、モニタ&グラボのリフレッシュレートが75Hz(≒13ms)になってるんじゃないか?
で、フルスクリーンにするときに、プログラム側で60Hz(≒17ms)に設定しているんだと思う
■ このスレッドは過去ログ倉庫に格納されています