[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 04/06 15:12 / Filesize : 249 KB / Number-of Response : 832
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

DXライブラリ 総合スレッド 2008



1 名前:名前は開発中のものです。 mailto:sage [2008/10/25(土) 17:37:53 ID:BCFbbKco]
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。

DXライブラリの詳細ついては
homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。

DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

過去スレ:DXライブラリ 総合スレッド
      pc11.2ch.net/test/read.cgi/gamedev/1197468399/

74 名前:名前は開発中のものです。 [2008/11/11(火) 16:04:15 ID:VHeofJsH]
8時から11階から目薬の企画実行移します。場所は↑のとこで。
参加者は今のとこ私の他は3人です。その後焼き鳥でも食べに行きましょう。

75 名前:名前は開発中のものです。 mailto:sage [2008/11/11(火) 19:37:44 ID:ktqf9Hz0]
最近のグラボは、古いDirectXにマトモに対応しておらず
DXライブラリもその煽りを食らってるって聞いたんだけど、どうなん?

76 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 06:22:06 ID:yL4++M3C]
そうなの?
9600GT,8800GTS,6600GTの3つ使ってるけどどれも不具合出たこと無いよ。

それよりVistaでたまにおかしなことになる・・。
同じコードで動かしてもXPとVistaじゃ違う挙動することが。

一つ一つのサンプル動かしても全然違わないんだけど、
スゲー大きなプログラムを動かしてみると違いが出てくることがある。
どうしてなんだろ・・。
DX管理人さんはそんなことないって言ってるから
自分のプログラムが悪いだけかもしれんが・・。
みんなそういうこと無い?

77 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 08:00:35 ID:10ZLablI]
>>76
VISTAに最初からはいってるのはDirectX10だからね。それも中途半端な。
MSの中途半端な対応のせいでゲーム開発者はみんな迷惑してる。
DirectX9とか新しいDirectX10とかを入れてみると改善すると思う。

78 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 08:10:38 ID:wRCT4Vg2]
>>76
ビデオドライバ類が関係しているとかないかな

79 名前:75 mailto:sage [2008/11/12(水) 18:00:22 ID:IPCAcIHc]
グラボじゃなくてVistaってことかもしれん。
自分は持ってないんで確認できないまま適当に書いた、すまん。

80 名前:76 mailto:sage [2008/11/12(水) 20:17:02 ID:yL4++M3C]
DirectX10の影響はいろいろ聞くね。
今度出るwindows7だっけ?あれはどうなるんだろう・・。

>>75

VistaとXPデュアルブートするといいよ。
作ったゲーム色んな環境で試してみれる

81 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 20:59:00 ID:IPCAcIHc]
>80

2000 orz

82 名前:名前は開発中のものです。 mailto:sage [2008/11/12(水) 22:09:52 ID:10ZLablI]
Windows7でMSコケたらDirectX終わってLinux+OpenGLが盛んになる予感



83 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 01:05:13 ID:mdnPfmFM]
ビスタって結局なんだったんだ・・。
なんかうちの周りだと、PCに詳しくない奴が買ってるOSってイメージがある。
そのまま終わっていくのかビスタ。

84 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 07:38:57 ID:lJxFlB+u]
諸刃の剣素人には(ry ってやつじゃない?

85 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 19:45:16 ID:EnpEGfrm]
>>83
ネットできりゃそれでいいってやつが買ってる印象だな
あとはofficeでも使えりゃ困らないしな

86 名前:名前は開発中のものです。 mailto:sage [2008/11/13(木) 23:48:34 ID:mdnPfmFM]
レンダリング処理やエンコードとかしても、ビスタは遅くてしかたないよ・・。

87 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 00:26:08 ID:5PrZBKJs]
>>80
今時デュアルブートって流行らないんじゃない?
VPCとかさ。

88 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:06:10 ID:71kfvXp8]
今の最新技術は知らんけど、VirtualPC、VMWareは
グラフィックボード使ってなくて、CPU依存

89 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:26:37 ID:ZojnRlhq]
デュアルブートって流行ってるからとかでやるもんじゃないだろ

90 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:28:06 ID:5PrZBKJs]
どこから突っ込めばいいのか…

91 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 01:28:54 ID:BF+CzcYi]
>>90
つ*

92 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 13:57:39 ID:foiTr96E]
800*600のサイズでウインドウモードにしたいんだが、
SetGraphModeとChangeWindowModeを同時に使うと、
かなりの確率でOSごと落ちるorz



93 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 14:22:12 ID:foiTr96E]
DxLib_Initの後にChangeWindowMode置いたらフリーズしなくなった
サーセンwwwフヒヒwwwww

94 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 14:48:29 ID:ZojnRlhq]
>>93
初期化の前にウィンドウモードにした方が処理が早いよ

95 名前:名前は開発中のものです。 mailto:sage [2008/11/14(金) 14:50:12 ID:foiTr96E]
初期化(DxLib_Init)の前にSetGraphModeとChangeWindowMode書くと、
うちの環境ではなぜかフリーズするんです

96 名前:名前は開発中のものです。 [2008/11/15(土) 19:53:04 ID:MzdFlqka]
質問させてください

ゲームの速度をどのPCでも一定になるようにするために、
ScreenFlipを使う前と後の時間差を利用してる方法が本にあったのですが、
そもそもScreenFlip一回の時間はどのように決まっているのでしょうか?

97 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 20:12:06 ID:56rIt8Hu]
リフレッシュレート。

画面のプロパティ→設定→詳細→モニタ で、リフレッシュレートが確認できる。
つってもこれは俺のPC(windows2000)だから他の環境だとちょっと違うかも。

98 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 20:17:30 ID:56rIt8Hu]
補足。

ScreenFlipがリフレッシュレート通りになるのは
デフォルトで垂直同期信号待ちをしてるからであって、

「SetWaitVSyncFlag  ScreenFlip関数実行時にCRTの垂直同期信号待ちをするかのフラグセット 」

で、垂直同期信号待ちを切った場合は関係ない。

また、条件は知らないが特定の環境(うちの場合はサブのノートPC)では
垂直同期信号待ち設定にしていても、ScreenFlipで垂直同期信号待ちしてくれない場合が
ある事を確認済み。

99 名前:名前は開発中のものです。 [2008/11/15(土) 20:27:43 ID:MzdFlqka]
>>97-98
返事ありがとう。

リフレッシュレート自体はわかったんですが
後半よくわからなかったのでちょっと調べてみます・・・。

100 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 20:51:40 ID:56rIt8Hu]
>ScreenFlipを使う前と後の時間差を利用してる方法

ってのがどんなのか判らないけど、
ScreenFlipの垂直同期信号待ちを利用した方法だとすると
前述したようにリフレッシュレートに依存するから
「どのPCでも一定の速度」にはならないよ。

リフレッシュレートを60にしてるPCと70にしてるPCではスピードが違う。

まぁそれを踏まえた上でいちばん簡単で代表的な速度を一定にする方法なんだけどね。
(つまり、リフレッシュレートが60の場合を前提としてゲームを作り、
 60以外にしてる人は60にしてからプレイしてください、となるw)

101 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:13:47 ID:56rIt8Hu]
垂直信号同期待ちについて、おおざっぱに説明してみようか。
俺も聞きかじりの知識だが。

最近はテレビにしろディスプレイにしろ、液晶が主流で「薄型」になってるが
もしブラウン管(分厚い)のテレビなりディスプレイがあるなら、画面の前で手を振ってみるといい。
残像がぶつ切りに、ストップモーションのように見えるはずだ。

これはどういう事かというと、画面が60分の1秒に一回、点滅してるからそう見えるんだ。
(厳密には60分の1秒に画面半分)
つまり、画面が光ってる時に「手の影が見えて」、画面が消えてる時には「見えない」から
手の動きがぶつ切りに見えるわけだ。

そうやって点滅してるのに、ずっと光ってるように見えるのは残像のせい。

もっとも「眼(瞳孔)」の方は反射で動いてるから、画面が光ってる時には瞳孔が小さくなり
画面が消えてる時は瞳孔が大きくなってたりするはず。
だから画面に近づいたり、暗い部屋で画面を見たりすると極端に眼が疲れる。

102 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:24:13 ID:56rIt8Hu]
さて、画面が点滅してる、と言ったが、画面全体がぱっとついたり消えたりしてるわけじゃない。
ブラウン管ってのは、奥から電子ビームを画面に向けて照射して、その部分のみを光らせてるわけだから
実際に光ってるのは1点のみ。(もっとも一度照射されるとしばらくは持続するらしいが)
その電子ビームの照準が、画面の左上から始まって、右端まで動き、
一段さがってまた左端から始まって右まで動き、を繰り返し、画面の右下まで進む。
つまり
┏━━━┓
┃□ぬ□┃
┃□る□┃ みたいな画面が表示されてると、それは実際は
┃□ぽ□┃
┗━━━┛

┏━━━┓
┃□ぬ□┃
┃■■■┃
┃■■■┃
┗━━━┛
┏━━━┓
┃■■■┃
┃□る□┃
┃■■■┃
┗━━━┛
┏━━━┓
┃■■■┃
┃■■■┃
┃□ぽ□┃
┗━━━┛
という感じで高速に書き換えられてるという事。



103 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:30:19 ID:56rIt8Hu]
ここでゲームの話になるわけだが、ゲームのキャラクターは画面上をあちこちに動く事になる。
もしこの「動く」のが前述した「画面を書き換えてるタイミング」だったらどうなる?
┏━━━┓
┃ぬ□□┃
┃る□□┃ この状態から
┃ぽ□□┃
┗━━━┛
┏━━━┓
┃□□ぬ┃
┃□□る┃ この状態からにまで移動しようとすると
┃□□ぽ┃
┗━━━┛
┏━━━┓
┃ぬ□□┃
┃■■■┃
┃■■■┃
┗━━━┛
┏━━━┓
┃■■■┃
┃□る□┃
┃■■■┃
┗━━━┛
┏━━━┓
┃■■■┃
┃■■■┃という感じになり、
┃□□ぽ┃
┗━━━┛
┏━━━┓
┃ぬ□□┃
┃□る□┃ 人間の目にはこう映ってしまう。この現象をティアリングと呼ぶ。
┃□□ぽ┃
┗━━━┛

104 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:38:19 ID:zVe3F0+t]
>>100
「ScreenFlipを使う前と後の時間差を利用してる方法」ってのを普通に解釈したらリフレッシュレートに依存せずに一定になるよ。
ScreenFlipの待ち時間に関係なく、1フレーム(1ループ)の差時間から移動距離を割り出せばok。
ただし、ゲーム画面がアクティブでなくても実際に時間は経過してるので、ゲームに戻るとその分進む(進んだ)ことになる。
これを回避するなら、ゲーム内で独自にインクリメントカウントを設置し、そこから移動距離を割り出せばok。
ゲームプログラミング独特の考え方だね。

105 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:40:57 ID:zVe3F0+t]
>>101
ブラウン管テレビは29.97fpsだよ。

106 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:41:23 ID:56rIt8Hu]
このティアリング(ちらつき)をさせないためにはどうすればいいか?

これが「垂直同期信号待ち」であって、つまりは
ディスプレイが画面全体の書き換えが終わるまで、
次の描画処理をしないで待ってるってわけだ。

これがScreenFlipではデフォルトで行われてる。
だからScreenFlipを使うと速度が一定に保たれる……のだが、

「画面の点滅は60分の1秒」と言ったが前述したが、これが要するにリフレッシュレートの事。
つまりこの速度をPC側で自由に変更できたりする。

リフレッシュレート60の場合はScreenFlipは60分の1秒経つまで待つわけだが、
リフレッシュレート70の場合は70分の1秒しか待ってくれない。
その分ゲーム速度は速くなってしまうわけだ。
(もしプログラム処理自体が重くて、70分の1秒で終わらなかったら
 70分の2秒、つまり35分の1秒かかるわけで、逆に遅くなる)



107 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:47:42 ID:56rIt8Hu]
移動距離を割り出すという方法は知ってるし理屈も解るけど、
当たり判定もそれ相応の処理にしなくてはいけないし、
そうなるとリプレイ記録&再生をどうやればいいのかわからなくなる。
そこらへんはどうやってるのかな。

ってこれはDXライブラリと関係ないか。

108 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 21:57:26 ID:zVe3F0+t]
当たり判定もリプレイ記録も問題ないよ。
でもScreenFlipの待ち時間を基準にするなんて誰もしないと思うから
あたかもScreenFlipを使うとスピードがリフレッシュレート依存になるみたいな解説はやめたほうがいいと思うよ。

109 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 22:29:29 ID:PnDW3j7Q]
画面を書き換えたときに時間を取得し、前回取得した時間と比較して、
1ループが17ミリ秒(60FPS)になるまでウェイトをかけてやればいい
これが一番簡単で確実

110 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 22:34:05 ID:RlpGwAN3]
リフレッシュレートが60のときはScreenFlip依存でいいんじゃね
それ以外はタイマで

111 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 23:12:07 ID:56rIt8Hu]
>でもScreenFlipの待ち時間を基準にするなんて誰もしないと思うから

いや、俺してたし、してるしw

112 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 23:32:40 ID:zVe3F0+t]
>>111
その話をしてるのは君だけど、実際にそれを採用してる人はいないって事だよ。

もしかして君は採用もしてるの?
だとしたら自分が長々と説明したデメリットが解消できてないよね。
それを解消したくて質問したいならそれなりの場所でそれなりの質問方法を取ればいいと思うよ。
もしそうじゃないなら誰も採用しない方法を解説されてもややこしくなるだけだから…。



113 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 23:41:52 ID:56rIt8Hu]
ティアリングが嫌だから切り替え方式にしてるます。
最初はゲーム起動時に測って自動切換えにしてたけど
それもやめて結局手動切り替えに……。

114 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 23:43:35 ID:56rIt8Hu]
切り替えってのはリフレッシュレート依存方法と、タイマでウェイトかける方法の二つね。
移動距離算出方法はやった事ないです。

115 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 00:40:12 ID:H38ODQJJ]
ティアリングとスピードは関係ないでしょう。
とりあえずDXライブラリを使うならScreenFlip()で垂直同期を待てば良いと思うよ。
スピードの話はまた別の話。

>>113
ゲーム起動時に何を測るの?
それと、切り替える必要性が見えないんだけど・・・?

116 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 01:43:29 ID:Hwka3oLK]
>>115
>ゲーム起動時に何を測るの?

ScreenFlipを一秒間繰り返して、その回数で判断。
>>98で書いたけど、垂直同期信号待ちをしてるはずなのに
ScreenFlipで待ってくれない場合があるから、
FPS値が異常に高かったらそうだと判断して
タイマー値によるウェイトかけるようにしてた。

>それと、切り替える必要性が見えないんだけど・・・?

それはどっちを基準にして?

ScreenFlipを基本として考えるなら、リフレッシュレートが変更された場合や
上で書いた垂直同期信号待ちしてくれない環境の時に異状スピードになってしまう。

タイマ値でウェイトかける場合は、やっぱりティアリングが気になるし、
1フレームごとに点滅するエフェクトとかがきちんと点滅しなくなる。

117 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 02:40:28 ID:H38ODQJJ]
>>116
えっと、だからね、ScreenFlipとティアリングは関係あるけど、
それらとウェイトは関係ないって事だよ。

ゲーム起動時にScreenFlipの待ち時間からリフレッシュレートを判断してるようだけど、
それも結局ScreenFlip基準でタイマー取る方式だよね。
てことは例えば60Hzを基準にウェイトをかけるって事だよね。
だとしたらはじめからリフレッシュレートのウェイトなんかに頼らずに、
マルチメディアタイマーででも1/60sを基準にコードを書けばいいでしょ?
だから起動時に測る必要もないし、リフレッシュレートの変更やVsyncを待たない場合は考慮しなくていいの。
繰り返すけど、タイマーでウェイトかけてもScreenFlipを使うならティアリングはないよ。

118 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 03:40:07 ID:Hwka3oLK]
何か齟齬がある気がする。

タイマでウェイトかける場合は、ScreenFlipのVsync待ちはOFFにしてあるんだけど、
それでもティアリングは発生しない?

んじゃ発生してる俺のプログラムは何か間違ってるのか。

理屈上、1/60sを基準にウェイトかけるようにすれば
ゲームスピードは一定になるが、タイミング次第で
ティアリングが発生しない状態か、
あるいはティアリングが発生し続ける状態が
維持されるものだと思っていたのだが。



119 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 04:22:31 ID:H38ODQJJ]
Vsync待ち、かつ、タイマーで制御するんだよ。
これを前提に最初から読み返してみて。

120 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 14:59:43 ID:Yf+kFgNP]
ScreenFlipもやって、1/60secも待って、ってやらないと一定にならないし、ちらつきも解消されないよ。

121 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 17:43:53 ID:fHnaEgZY]
タイマー待ちを使うんならVsync待ち無しのScreenFlipじゃないと
ティアリングは発生しないけど動きが凄いガクつくぞ
ADVみたいに動きの少ないゲームならそれでも良いと思うけど、
STGやACTでは見るに耐えない

122 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 18:33:07 ID:H38ODQJJ]
60Hzに合わせれば60Hzの環境なら結局タイマーでウェイトしないから問題ないよ。
75Hzの環境なら60fpsに制限されるから多少はガクつくけどこれはトレードだね。
ちなみに3Dモノとか海外のゲームはfpsを出来るだけあげて垂直同期しないっていうのが主流みたい。

>>121みたいにfps制限はするわ垂直同期しないわっていうのは愚の骨頂。
ティアリングするわfps制限されてるわでひどいもんですわ。



123 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 21:17:57 ID:gVsDrcFZ]
>>102-103
ガッ

124 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 21:57:20 ID:fHnaEgZY]
>>122
なんでそんなに相手を見下したような態度なの?

>60Hzに合わせれば60Hzの環境なら結局タイマーでウェイトしないから問題ないよ。
それはわかってるよ
だから最初にリフレッシュレート測って垂直同期主体にするかタイマー同期にするか判断するんでしょ?
121はあくまでfpsとリフレッシュレートが一致していない場合の話

>75Hzの環境なら60fpsに制限されるから多少はガクつくけどこれはトレードだね。
ここで122の言うとおり垂直同期とるかとらないかはプレイヤーの好みの問題
オプションで選択できるようにすべきだと思う

>ちなみに3Dモノとか海外のゲームはfpsを出来るだけあげて垂直同期しないっていうのが主流みたい。
そうだね。3Dモノは可変fpsと相性良いよね。

>>121みたいにfps制限はするわ垂直同期しないわっていうのは愚の骨頂。
垂直同期をとらないことで手軽に入力に対するレイテンシを下げることができるし、
リプレイを取る目的でfpsを固定しなければならない場合もあるんだから、
短絡的に愚の骨頂というのはどうだろう

122的には60fps固定+垂直同期してない東方緋想天は愚の骨頂?
俺はそうは思わないけど・・・

125 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 22:50:57 ID:5RilDqvE]
2Dシューティングを過去いくつか作ってきましたが、
リプレイ周りの実装も含めて、やっぱりFPSは60に固定でロジックを組みますよ。
オプションで「Vsync待ちをするかタイマーか」を選択させてます。
124さんもリプレイの話をしているから、そういう前提で言ってるのだと思うのですが。


126 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 23:07:43 ID:xtMr6+ch]
リプレイって別にFPS固定必要ないような
入力があったキーとその時の経過フレーム数があればいいんだし

127 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 23:30:59 ID:0yDeWpwc]
おまいら もちつけよ.

128 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 01:36:47 ID:GetktCW+]
>>124
何そのゲーム。>東方なんたら
最悪だね〜。

>>126
だよねぇ。

129 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 03:32:51 ID:qWlXMT4E]
なんだ釣りか

130 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 18:51:51 ID:TAngTg8T]
なんだこんなすばらしいスレがあったのか>>1

131 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 21:49:06 ID:E1tboJG/]
DXライブラリで作った横スクロールアクションのソースってどこかに転がってない?

132 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:00:58 ID:tSUha7RY]
転がってるって・・・
作者の好意で公開してるソースをそんな言い方するなよ



133 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:04:49 ID:Zhr1hzWJ]
ニコニコで一時話題になった、しかけが外道なスーパーマリオもどきはソース公開してたと思う

134 名前:125 mailto:sage [2008/11/17(月) 22:57:25 ID:pxmPH9a8]
>126
たしかにそうですね。
ただ、自分の場合は、FPSを固定すればあとはキー入力さえきちんと記録できていれば
リフレッシュレートが違えどもリプレイがずれることがないのでそうしていました。



135 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 23:31:08 ID:OriaVhLm]
移動量固定方式か、経過時間による移動量計算方式かで
やり方も違ってくるんじゃないかな。

136 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 13:05:35 ID:FZcPiuDy]
>>133
しょぼんのアクション だっけ?
やっと1−1クリアだと思ったのに愕然とした記憶がある。

137 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 13:43:13 ID:xnzA6xl6]
DirectXのバージョンを9に移行するらしいね

138 名前:名前は開発中のものです。 [2008/11/19(水) 14:54:42 ID:TpPgoKXn]
>>133
あれはやばいです
あれはほんとうに・・やばい・・。
この道10年のベテランですらあれを見ると悶絶して悶え死ぬレベル。
あのソースを読んだあの日、私は自分の人生について考えさせられました。

139 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 15:08:39 ID:lxkh5WN5]
そんなにすばらしいのか

140 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 15:11:10 ID:Lz0a0oQh]
思わず3回DLし直す位のレベル

141 名前:名前は開発中のものです。 [2008/11/19(水) 18:41:54 ID:TpPgoKXn]
あれは伝説のソースですよ

142 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 23:58:11 ID:UIc9LZep]
DLしてみたが・・・凄まじいソースだな



143 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 00:08:16 ID:AZA6fSH/]
俺のソースも似たようなもんだなw

144 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 00:14:35 ID:IPu5qEL0]
汚いコード書ける奴って尊敬するわ
むしろ逆に頭良いと思う

145 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 00:46:35 ID:PFCyKir9]
部屋が汚くても気にしないやつがいるのと同じ

146 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 05:06:26 ID:0gMw7+uw]
fatalita.sakura.ne.jp/Software/cuirpgfordq3.lzh
これもマジキチ

147 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 05:58:28 ID:VvYw+mZM]
>>146
これはアイテム4つで実装力尽きるw
配列すら使ってないとかやべぇ

でもスレチ

148 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 12:55:25 ID:3m8CIP+t]
BASIC覚えたての頃、そんな風にGOTO文メインでテキストアドベンチャーゲームを作ったなあ…。
それにしてもその作者はDXライブラリ3Dの作者なの?
なんか色々考えさせられるな…。

149 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 15:36:28 ID:ELcxKG7H]
でもスレチ

150 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 19:40:33 ID:yD9XL+v+]
自分のスパゲティソースを晒す勇者はおらんのか・・

151 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 21:42:08 ID:FU8hvFU5]
さらしてどうすんのよw

152 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 22:21:51 ID:j0m39ynA]
タイピングゲーム作ってるけど疲れてきたぜ。
ゲーム一本完成させるって難しいな。



153 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 02:26:12 ID:YAgqgFQm]
完全体になる前にリリースすればいいじゃない(マリー

154 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 02:27:42 ID:Ef5lma7p]
プログラム歴3ヶ月おれもタイピングゲーム作ってます
プログラム練習としても面白いジャンルのような気がします
がんばりましょう

155 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 14:21:16 ID:bJorsnCE]
>>153
俺知ってるよ
そういうのをあじゃいるって言うんだよね

156 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 17:55:00 ID:pnQpCtQf]
画面全体をぼかしたいのですが、どうすればいいのでしょうか?

SaveDrawScreen()で画面全体を保存した後に、
その画像を加工して表示するという方法を試しましたが、遅くてとても使えませんでした。
ちなみに手順は
保存→加工→保存→表示です。
加工と二回目の保存の処理の間がとても遅かったです。

直接DXライブラリで描画してる画像をぼかせばもっと早くなると思うのですが、
DXライブラリで直接ぼかす方法がさっぱりわからりません。
どういう方法でぼかせれるのでしょうか?

157 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 20:09:39 ID:YAgqgFQm]
ブレンドモードを上手く使えばどうにかなるんじゃなかろうか。
昔、モーションブラーもどきを自分で作ったが細かいやり方は忘れた。

158 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 00:31:59 ID:xYyBQpV1]
>156
そのまま画像を描画

αブレンドを適当に128くらいに指定してxy数ドットずらして描画×数回…

こんなのでどう?

159 名前:157 mailto:sage [2008/11/25(火) 20:03:29 ID:5UMAw8SP]
>>158
ああ、そうそう。
そんな感じでできると思う。たぶん。
ずらし量やブレンド率でぼけ足上手いこと調整してどうにかする。
関数化できたら楽そうだ。

160 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 22:23:11 ID:VmASE6nW]
>>157-159
いろいろとありがとうございます。
アドバイスのおかげで、それらしいのはできました。
縦には動かしていないのですが、とりあえずそれっぽい動作はします。
ソースは以下の通りです。

private void GraphOff(int dot,int graphHandle)
{
for (int i = 0; i < 640 / dot; i++)
{
DrawGraph(i * dot - 640, 0, graphHandle, 0);
DrawGraph(640 - i * dot, 0, graphHandle, 0);
}
}


これでまた問題が出たのですが、この処理非常に重いです。
FPS30固定にしているのですがこれをするとFPS10〜15になります。
軽くする良い方法は何かないでしょうか?



161 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 22:39:54 ID:MBrRa9Zc]
640 / dot ←この計算をfor文の前にやって適当な変数に代入しておく

162 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 23:02:53 ID:EDWbdjkC]
>>160
i < 640/dot

i < 160/dot
くらいにまで下げてみる


ぼかすのがゲーム上そんなに大事じゃなかったら
このくらいで妥協するのが一番



163 名前:157 mailto:sage [2008/11/26(水) 02:18:18 ID:eTjv2Xnv]
>>160
そんなに回数要る?
dotの値がいくら位で何回位描画しているのかとか、コードの意図とかちょっとわからんので
↓とどっちのコードの方が性能良いのかよくわからんけど…

int times = 4;//描画回数:4〜16推奨
int gap = 2;//ギャップ:1〜4推奨。残像拳のような効果を狙うなら大き目に。
SetDrawBlendMode( DX_BLENDMODE_ALPHA , 32 ) ;//描画回数×ブレンド率=128〜256推奨

for (int i = 0; i < times; i++){
DrawGraph( i*gap - times*gap, 0, GHandle, 0);
DrawGraph( times*gap - i*gap, 0, GHandle, 0);
}

164 名前:名前は開発中のものです。 mailto:sage [2008/11/26(水) 04:53:23 ID:mqCcsZAV]
>>160
本当に速度が必要で、それなりのクオリティーが欲しいなら
LoadSoftImage関数とLoadSoftImageToMem関数を使うといいかもしれない。

自分は近頃、DXライブラリまったく触ってなかったから、どんなもんか
わからんが、説明を読む限りではこっちの関数で処理して
GraphHandleをつけて、表画させる方が高速みたいだし・・・・・

165 名前:名前は開発中のものです。 [2008/11/27(木) 05:33:03 ID:9lHdy+ss]
DXライブラリとは直接関係ないのですが、

DXライブラリとかの関数を変な使い方すると、めっちゃ重くなったりして(コンパイルエラーが出るわけではない)、
上手く扱わないとたとえ数百行のプログラムでさえ上手く動かないのに
市販されてる3Dゲームとかだとそれこそ想像もつかない量のプログラム書いてると思うんですが
それを全く重くならないように作るというのはまさに神の所業としか思えないんですが・・・
やはり職人的なひとはそれほどすごいってことでしょうか?
それとも単にまだ自分が未熟なだけでしょうか?

なんか抽象的な質問ですみません。

166 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 07:22:55 ID:UFJsiMGy]
>>165
普通に使っている分には問題ないと思うけど…
コード量も関係ないし。
メインのループ(秒間30〜60回くらい回しているとこ)の外で1回やれば済む処理を
ループの中で毎回やってたりしてない?
例えばグラフィックハンドルへの画像の読み込みを毎回やっているとか。

167 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 12:05:54 ID:tLRoJzh6]
DXライブラリもよっぽど変な使い方しない限りめっちゃ重くはならんでしょ。
そりゃまぁPCの性能にもよるけど。

市販されてる3Dゲームとかは、俺はヘボプログラマだからそれこそ神の領域にしか思えないけど
同じ市販ゲームでも、すごいグラフィックなのに軽快なのとか、やったらもっさりして重いのとかあるから
そこらへんはプログラマの腕次第でしょ。

凄腕のプログラマは極限まで無駄な処理を省いてるんだと思う。

168 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 17:02:45 ID:HwZNU9zJ]
メモリの1バイトは血の一滴ですね

169 名前:名前は開発中のものです。 [2008/11/27(木) 18:56:41 ID:9lHdy+ss]
>>166-167
なるほどサンクス・・・
確かに無駄に繰り返してるかもしれない・・・。

170 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 20:46:39 ID:GnzSYpCC]
フォントのサイズ変更とかと勝手に予想

171 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 22:41:46 ID:LOD/UyCK]
>>161-164
ありがとうございます。
回数がご指摘の通り多すぎました。
>>157のコードと併用して、思っていたぼかしができました。
コードは私の作成したコードと>>157のコードを関数化しただけなので省略させていただきます。

172 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 22:48:28 ID:tLRoJzh6]
フォントのサイズ変更はしゃれにならんほど遅いからな……。
別フォント用意すりゃいいことだが。



173 名前:名前は開発中のものです。 [2008/11/28(金) 05:15:28 ID:10isJ4oY]
SetWaitVSyncFlag(FALSE);

にしたらドラゴンボールの世界になってワロタ


174 名前:名前は開発中のものです。 mailto:sage [2008/11/29(土) 16:25:44 ID:BtMciNRd]
PlayMusic関数で再生位置の指定ってできないの?






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

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

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