ドラゴンクエストクローンを作ろう (746レス)
上下前次1-新
427(2): 2006/07/14(金)19:08 ID:p+qm4mCS(1/2) AAS
 >>425 
 作れます。 
 家庭用ゲーム機と同じ60FPSのゲームの場合は最低でもDirectXを 
 使う必要があると思いますが、逆にDirectXを使える環境であれば 
 DXライブラリだろうとLUNAだろうとDirectXを直に使う場合だろうと 
 問題ないと思います。 
 C言語以外でも作れるかどうかは、C言語しか知らないので分かりません。 
 DQ1程度のデータ規模を楽に扱える言語仕様(C言語で言う構造体があれば 
 とりあえず大丈夫だと思う)と60FPSでゲームを動かすことが出来る 
 くらいの速度で動作して、且つその言語でDirectXを使えるような 
 仕組みがあれば問題無いと思いますが。
428(1): 2006/07/14(金)21:05 ID:2BtiSCsl(1/2) AAS
 DIBで行け。 
429: 2006/07/14(金)21:17 ID:p+qm4mCS(2/2) AAS
 DIBで640x480で60FPSって可能ですか? 
 可能であればDirectXの使用環境は必須ではなくなりますが・・・
430(1): 2006/07/14(金)22:05 ID:2BtiSCsl(2/2) AAS
 可能すぎる。 
  
 ただし、グラボの恩恵を最大限には受けることが出来ない。 
431(1): 2006/07/15(土)00:21 ID:J160mIqM(1/10) AAS
 試してみました。 
 640x480一回の転送で約5ms、60FPSで1フレ約17msですから余裕ですね。 
 何か勘違いしていました。申し訳ありません。 
  
 この際環境依存が激しいDirectXを捨ててDIBに乗り換えようかと 
 思ったのですが、私が知る限りではDIBは垂直同期を取る方法が 
 なかったような気がします。 
 スクロールするゲームではなるべくテアリングは避けたいのですが、 
 DIBで垂直同期を取る方法はあるのでしょうか?
432: 2006/07/15(土)00:39 ID:81t16XAC(1/4) AAS
 同期方法と言うか、それは自分で作るところでは無いんですか? 
433: 2006/07/15(土)01:16 ID:J160mIqM(2/10) AAS
 垂直同期はゲームの進行処理の同期のこととは違います。 
 ハードの信号なのでソフトだけでは解決出来ません。 
  
 詳しくはこちらをどうぞ。 
 本文を「ティアリング」で検索して下さい、丁度その説明があります。 
 外部リンク[html]:ascii24.com 
 (古い記事ですがティアリング、垂直同期辺りは昔話ではありません)
434: 2006/07/15(土)01:53 ID:W+y22RQ0(1) AAS
 1はへたれ  市ねww ぶはははw 
435(1): 2006/07/15(土)03:05 ID:81t16XAC(2/4) AAS
 俺が言葉足らずだったのは申し訳ないが、 
 垂直同期をとるところは作るもんではないんですか? 
  
 dxみたいに同期を待ってくれるものがあれば、それを使えばいいですけれども。 
  
 実験して5msとあるのであれば、16.6待つまでに時間あるから 
 あんまり気にしないでも大丈夫だと思います。 
436: 2006/07/15(土)07:56 ID:J160mIqM(3/10) AAS
 >>435 
 ですから、垂直同期をとるには専用のAPIが必要なんです。 
 垂直同期信号を検地する為のAPIが無ければ何時垂直同期信号が 
 来ているのか知る術はありません。 
 そのAPIが私の知る限りではDirectX以外に無いのです。 
  
 標準のWin32APIにDirectDrawのWaitForVerticalBlankやGetScanLineに 
 相当する機能を持つAPIがあれば良いのですが、ご存知ですか?
437(1): 2006/07/15(土)09:08 ID:gt1duSp0(1) AAS
 んなもん使わねーよ 
438: 2006/07/15(土)09:26 ID:J160mIqM(4/10) AAS
 >>437 
 実際はFlipやPresentの中で自動的に垂直同期を待ってからフリップ 
 されるのでWaitForVerticalBlankやGetScanLineを使う機会は無い 
 かもしれませんが、要はDIBに垂直同期を待ってからスクリーンに 
 画像を転送すき仕組みがあるかどうかです。 
 無い場合はテアリングが発生してしまうのでスクロール処理がある 
 2Dのゲームには向いていないということになります。
439(1): 2006/07/15(土)09:27 ID:9Xtt4+04(1) AAS
 ウィンドウで動くアプリで垂直同期は全く関係ないとおもったけど? 
  
 てーかフルスクリーンで動くDirectXだからこそ関係ある話。 
440(1): 2006/07/15(土)10:24 ID:J160mIqM(5/10) AAS
 >>439 
 デスクトップが希望のリフレッシュレートになっていないと 
 見苦しいことになりますが、一応ウインドウで動くアプリでも 
 垂直同期は関係あります。 
 試しに同期を取るアプリと取らないアプリをうpしましたので 
 お時間があれば試してみて下さい。 
 (画面のリフレッシュレートが60Hzだと違いが特に分かります) 
  
 外部リンク[zip]:gamdev.org 
  
 リフレッシュレートがゲームのFPSと合っていない場合は垂直同期 
 を取っても取らなくても見苦しくなりますが、最近はリフレッシュ 
 レートの設定項目数が少ない液晶モニタが普及しているので 
 ウインドウで動作させる場合も割と意味があると思います。
441: 2006/07/15(土)10:31 ID:J160mIqM(6/10) AAS
 >>425 
 論点を >>431 で少しずらしてしまいましたが、テアリングを気に 
 しないのであれば >>430 の指摘通り >>427 の条件からDirectXは外れます。 
 誤ったレスをしてしまって申し訳ありません。
442(1): 2006/07/15(土)12:10 ID:81t16XAC(3/4) AAS
 >>440 
 上げてくれた同期取りをしない奴に、 
 自分で作った垂直同期とりの関数かなんかをいれると 
  
 上げてくれた同期取りをしている方のような動作に出来ます。 
  
 って俺はそうしてるんだが・・・。 
443: 2006/07/15(土)12:29 ID:J160mIqM(7/10) AAS
 >>442 
 >自分で作った垂直同期とりの関数かなんかをいれると 
  
 それはDirectXを使わない方法ですか? 
 もしDirectXを使わないで垂直同期をとっているのでしたら 
 是非その方法を教えていただけないでしょうか。 
 私もDIBで済むのならDIBにしたいので・・・
444(1): 2006/07/15(土)16:41 ID:WwdAlzc2(1) AAS
 内部の描画はDIBでやって 
 表示だけdirectdrawにすりゃええやん。 
445(1): 2006/07/15(土)17:06 ID:J160mIqM(8/10) AAS
 >>444 
 >>425-428 
 この話題は 
  
 (質問)DQ1みたいなのDXライブラリ使わなくても作れるの? 
 ↓ 
 (私)DXライブラリ関係なくDirectXが使えてその他条件が揃う言語ならどれでも作れる 
 ↓ 
 (指摘)速度はDIBで十分、DirectX無くても大丈夫 
  
 という流れから始まったものなので、DirectDrawを使うと 
 なるとDirectXが必要となり、意味がありません。
446(1): 2006/07/15(土)17:34 ID:MDeESeX3(1) AAS
 >>445 
 所詮WINAPIはゲームには向かないって事。 
 いくら処理が早くても、ゲームを作るための物ではないですよ。 
  
 それを分かってるから、えらい人たちがDirectXとか作ったんでしょうし。 
  
 そうじゃなかったらDirectXなんてない。 
 問題は処理速度ではないって事ではないんでしょうか? 
447: 2006/07/15(土)17:45 ID:J160mIqM(9/10) AAS
 >>446 
 はい、速度についてはDQ1程度ならDIBでも問題ないという結論が出たので、 
 今はDIBで垂直同期信号(VSYNC)を待った画面出力が可能かどうかという話に 
 なっています。(違うかもしれませんが今の私の関心事はそれです) 
  
 私が知る限りではDirectX以外で垂直同期信号を待ったり、帰線消去期間中か 
 どうかを調べたりする方法は無かったと思うのですが、442の方が432,435 
 辺りでDirectXが無くても垂直同期を検知する手段がある、というような発言を 
 されているので、それについての詳細を私が求めて今ご返答を待っている状態です。
448(1): 2006/07/15(土)20:55 ID:81t16XAC(4/4) AAS
 垂直同期を検知できるんでなくて、 
 同期取りをしているかのような動作が出来ると言うことですな。 
  
 完全になくなるかどうかは俺にも分かりませんが、 
 上のサンプルのように毎回がたつきは出なくなります。 
449(2): 2006/07/15(土)21:18 ID:J160mIqM(10/10) AAS
 >>448 
 がたつきがあるのは私の組んだプログラムのタイマー精度が原因です。orz 
 がたつきも非常に問題ですが、テアリング=がたつきではありません。 
  
 タイマーの精度を上げて、がたつかないようにしましたので、申し訳ありませんが 
 お時間のあるときにもう一度試してみて下さい。今度は Non_VSync.exe ではっきり 
 テアリング(前のフレームと今のフレームの画像が混ざってしまう現象)が 
 確認できると思います。(タイミングが合い、運良く確認できない場合もあります 
 ので、確認できない場合は2・3回再実行してみてください) 
  
 外部リンク[zip]:gamdev.org
450: 2006/07/16(日)00:49 ID:ovtqapnP(1/2) AAS
 俺はノートPCで液晶だからVSYNCとか言われてもわからねぇ 
451: 2006/07/16(日)00:56 ID:DFiXRGJs(1/3) AAS
 液晶でもVSYNCはありますしテアリングも発生します。
452: 2006/07/16(日)01:00 ID:DFiXRGJs(2/3) AAS
 正確にはCRTと同じ信号を処理している関係上の擬似的なもの 
 だと思いますが、少なくともソフト側から見れば液晶とCRTの 
 区別はありません。(し、CRTと同じ様にテアリングも発生します)
453(1): 2006/07/16(日)01:04 ID:ovtqapnP(2/2) AAS
 試してみたいんだけど、さっきアップしてくれたやつ 
 何も起こらず終了しちゃうんだよね。 
 Zバッファの作成に失敗しましたとかいうログが出てる。 
 3Dものなのだろうか? 
454(3): 2006/07/16(日)01:22 ID:DFiXRGJs(3/3) AAS
 >>453 
 ソフトは2DですがDXライブラリがZバッファを作成しようとするようです。 
 Zバッファを作らない物をうpしました。 
  
 外部リンク[zip]:gamdev.org 
  
 場合によってはNon_VSync.exeでも最初全くテアリングが発生しないことが 
 ありますが、30秒〜1分ほど放っておくとその内テアリングが発生し始めます。 
 (画像が横にずれるような現象です)
455(1): 2006/07/16(日)16:09 ID:eLVapp7P(1/3) AAS
 >>449>>454 
  
 442らへんの人です。 
  
 そういうことだったんですな。 
 ならば仰るとおりテアリングがじわじわ発生します。 
  
 てっきりドラクエを作るんだとおもい、DIBすすめてみたんですが、 
 この程度でもテアリングが気になるようならば、dx使うと良いでしょう。 
  
 なんか変な流れになってしまったようで申し訳御座いません。 
  
 俺もDIBでテアリング観察ソフツ作ってみました。 
  
 外部リンク[zip]:gamdev.org 
456: 2006/07/16(日)21:32 ID:HonGYrh5(1) AAS
 うぜえ 
上下前次1-新書関写板覧索設栞歴
あと 290 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.015s