[表示 : 全て 最新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/

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関数で再生位置の指定ってできないの?



175 名前:名前は開発中のものです。 [2008/11/29(土) 22:48:46 ID:kaHILOZB]
>>101

いますぐ昔の再放送の刑事ドラマやドラマの
事務所シーンを見るんだ!!!


パソコンのディスプレイあるだろアレみるとわかりやすい

176 名前:名前は開発中のものです。 mailto:sage [2008/11/30(日) 02:55:10 ID:Kx1+nHAm]
>>175
あれ今見るとなんでそう見えるか理解出来るな
タイヤが逆回転して見えるのとかも

177 名前:名前は開発中のものです。 [2008/12/01(月) 09:18:57 ID:PQmt2oZj]
3Dでゼルダみたいなゲーム作りたいんだけど
DXライブラリ(3D)で完璧に作ったのと
DirectXで完璧に作ったのだったら動きのサクサクさにどれくらい差が出るのかな?
PCの性能は結構良いのでそれは関係なく
個人的にはマリオ64くらいのクオリティーは出したいと思ってるんだけど
始めての大型ゲームなんで全く想像付かない

178 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 09:51:01 ID:Mqk5OkvC]
3Dのゼルダってまんま64とGCのゼルダじゃね?

179 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 10:23:13 ID:PQmt2oZj]
はい

180 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 16:53:55 ID:B+fc1nCX]
DirectXで作るって言ったってどうせ自分でラッピングするんだから一緒だと思うぞ

181 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 16:57:45 ID:Mqk5OkvC]
>>177
そのプロセッサ専用のライブラリを熟知してれば
サクサク動くゲームになる

例えばPS2ならEEとかのベクトル計算のためのライブラリの仕様とか
windowsマシンにはそんな計算機能はデフォルトじゃついてないから
どうしてもグラボ依存になる

182 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 00:02:20 ID:zbFv8Mtr]
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpc, int nC){
  ChangeWindowMode(TRUE);
    SetDrawScreen(DX_SCREEN_BACK);

while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){
   ClsDrawScreen();
    〜〜
   ScreenFlip();
}
}

↑こう書いたとき、〜〜 の部分の処理が毎回変わるモノだった場合でも、よほど〜〜の処理が長くならない限り、
ScreenFlip()があることによって、画面に出力される周期は〜〜の処理時間によらない、と考えていいんでしょうか?

なんか説明下手ですみません・・・。  たとえば、指数関数的に動く物体を作りたいとして、
〜〜の部分を「毎回n=n+1して、x^nの位置に画像を出力」という内容にしたとした場合、
ループが来るたびにnが増えるからx^nの計算の処理が多少だんだん増えていくと思うのですが、
もしその処理時間も画面出力に影響してしまったら、動きが時間の正確な指数関数にならないと思うのですが、
『ScreenFlip()によって、「処理が終わっても、規定時間δtが来るまでは画面出力しない」という仕組みが加わってるので、
処理時間に影響せず一定時間ごとに画面出力される。 ただし、もちろん 処理時間の方がδtを超えてしまったら、重くなるという別の影響は出てくる。』
というものだと解釈していいのでしょうか?

(すみません。アク禁中の代レスなので、返事できないかもしれません。)

183 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 08:48:55 ID:jLo5RDUc]
どうでもいいがProcessMessage()の場所が俺の好みじゃなかった。
本文は読んでいない。

184 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 08:53:50 ID:l3NK/S0H]
SetWaitVSyncFlagがFALSEで無い限りは



185 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 09:50:01 ID:ptyOGcVX]
リフレッシュレートに依存する。

186 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 21:13:42 ID:xSROB0kK]
x^nの計算なんか描画処理に比べたらほんの一瞬

187 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 22:13:19 ID:g62jpxUX]
そういやCを独学でやってて最初に詰まったのがべき乗計算だったなw

188 名前:名前は開発中のものです。 [2008/12/03(水) 05:14:23 ID:Ts8WjI0J]
>>153
#include <stdio.h>
#include <windows.h>
void main (){
int cell=0,jinzo18=2,jinzo17=2,tensinhan=25,seimeiryoku=1;
int hikinobasi=0;
cell+=jinzo17;
for(hikinobasi=0;hikinobasi<30;hikinobasi++){printf("おお\n"); SleepEx(200,TRUE);}
printf("天津飯「まずい17号を吸収しやがった・・・チャオズ俺は死ぬかも知れない\n");SleepEx(2000,TRUE);
printf("セル「天津飯!!雑魚が何をするつもりだ!」\n");SleepEx(4000,TRUE);
printf("天津飯「新気功砲!!ハー」\n");SleepEx(200,TRUE);
printf("セル「(゚Д゚)ぬお!\n");SleepEx(200,TRUE);
while(tensinhan>0){
printf("セル「<`Д´>おのれー」\n");SleepEx(200,TRUE);
printf("天津飯「(; ゚Д゚)ハァー!」\n");SleepEx(500,TRUE);
tensinhan-=seimeiryoku;}
printf("天津飯「化け物め・・・・うう・・・・」\n");SleepEx(5000,TRUE);
printf("セル「むううう」\n");SleepEx(1000,TRUE);
printf("セル「こんな雑魚に足止め食らうとは」\n");SleepEx(4000,TRUE);
cell=jinzo17+jinzo18;
for(hikinobasi=0;hikinobasi<100;hikinobasi++){printf("おお\n"); SleepEx(50,TRUE);}
printf("完全体セル「すばらしい力だ 諸君!!」\n");
SleepEx(10000,TRUE);
}

189 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 05:38:32 ID:ecRDRm37]
同一内容の文字列を毎フレーム表示する処理があり、

空のサーフェスを作成 → 一旦バックバッファに文字列を描画 → バックバッファから空のサーフェスに文字列の画像を取得

こうして予め文字列を描画しておいたサーフェスから
毎回メイン処理でDrawGraphしているのですが、どうもスッキリしません。
しかもGetDrawScreenGraphの説明にもある通り透過色が使用出来ません。
DXライブラリでは作成したサーフェスに直接描画出来ないのでしょうか?
やりたい事は「同じ文字列を毎フレーム描画する処理を軽くしたい」だけなのですが、
文字グラフィックファイルを用意することは出来れば避けたいので、良い方法があったら教えて下さい1


190 名前:189 mailto:sage [2008/12/03(水) 05:45:19 ID:ecRDRm37]
無駄に長くて分かり難くなってしまいました。
(例えば説明文等の)同一の文字列を毎フレーム描画する処理を軽くしたいが
文字グラフィックファイルを用意する以外で良い方法があったら誰か教えて下さいです。

191 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 09:09:23 ID:Zrkeui/r]
DrawStringで十分軽いと思う
フォントハンドルを毎回読み込んだりしていない?

192 名前:189 mailto:sage [2008/12/03(水) 17:18:45 ID:ecRDRm37]
>>191
お返事遅くなって申し訳ありません。
当方の環境ではDrawStringでやった場合のFPSが30くらいでDrawGraphにすると60になりました。
DirectX自体、文字描画にGDIを使っているのでビデオカードで処理できるBitBltの方が高速だと思っていました。数年前の知識ですが。。
低スペックでも快適に動くように作りたいので、DrawStringは極力使いたくないです。

193 名前:189 mailto:sage [2008/12/03(水) 17:29:14 ID:ecRDRm37]
フォントの変更は行っていないので、フォントハンドルは使用していないです。

194 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 18:07:17 ID:o+fnXJLe]
そんなにたくさんの文字を同時に表示してるのかな?
それともPC環境が悪すぎる?

俺普通にDrawString使ってるけど別に遅くなった事ないよ?
普通に60FPS出てる。古いノートパソコンで。
最高でまぁ10行程度の表示しかしてないけど。



195 名前:名前は開発中のものです。 [2008/12/03(水) 18:30:58 ID:JlppSG1I]
いやそれじゃ全くテストになってないから。
192の知識通り、今も文字列表示は遅いよ。
189の方法が適切だと思うし、他に方法を提示できないのは申し訳ないけど、
少なくとも文字列表示が遅いって前提でレスされると無駄だと思ったので口を出してみた。

196 名前:名前は開発中のものです。 [2008/12/03(水) 18:37:18 ID:JlppSG1I]
×少なくとも文字列表示が遅いって前提でレスされると無駄だと
○少なくとも文字列表示が遅いって前提を否定するレスは無駄だと

197 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 19:17:52 ID:o+fnXJLe]
俺の事?
別にテストしたわけじゃなくて、普通に使ってるだけなんだが。

文字列表示が遅いってのが前提なら、そもそもグラフィック表示だって遅いだろ。

グラフィック表示が遅いから他の方法はありますか? って質問があったとしたら
まず現在どういう環境でどれだけのグラフィックをどういう方法で表示させてるのか教えろってのは普通の流れだろ?

そこをかっとばしてグラフィック表示処理そのものを早くする方法を考えるのは無駄な話だ。

198 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 19:27:15 ID:zxrZF3eH]
確かに
今与えられた情報だけではなんともいえんな

199 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 19:41:02 ID:RJPTfL79]
文字列の長さ、量がまずわからない。

「フォントの変更は行っていない」というのが、フォントの大きさやアンチエイリアス有無の変更は行っているかもしれないとも読める。

200 名前:名前は開発中のものです。 [2008/12/04(木) 00:31:01 ID:jlPFeEOB]
>>197
文字列表示はグラフィック表示より遅いって常識知らないの?
そこは議論の余地なしだから言ったまで。
それと、テストじゃないなら>>194の報告は不適切。
まあ上記の前提を知らなかった故だからしかたないと言えばしかたないが、ややこしくなるのでなかったほうがよかったな。

情報は少ないが、前提を知っているば容易に共感できるし、解決方法を知っている人ならこの情報量でも回答できるかもしれない。

201 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 00:33:46 ID:GF73/yq8]
>>197
>文字列表示が遅いってのが前提なら、そもそもグラフィック表示だって遅いだろ。

(;^ω^)

202 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 02:05:10 ID:z7drhJqc]
何人か偉そうにレスしてるけど、誰もライブラリのソース見てないのか?

DXライブラリは文字を描画する前にテクスチャにキャッシュしてるから
同じ文字なら2回目以降はほぼDrawGraphと同じコストで処理は完了する
キャッシュ用のテクスチャは512x512だから画面一杯に異なった文字を
描画するくらいしない限りは文字列描画特有の遅さは発生しないぞ

まあ、毎フレームキャッシュに無い文字を描画したら一般に言うところの
「文字列表示が遅い」ってのに当てはまるけど

203 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 09:46:46 ID:ggjOtlxc]
良スレage
みなぎってきた、学校でゲーム作ってくる

204 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 10:33:56 ID:763fKCgi]
>>200

何を言ってるんだ君は。
60FPSで動いてるゲームに、一回のDrawString処理を追加しただけで30FPSにまで落ちたりするか?
普通はしないだろ?

じゃあどういう処理にしてるんだ? っつーレベルの話だぞ?

192が出してる情報はその程度って事。



205 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 12:47:01 ID:GF73/yq8]
>>204
>>202

分からない(・∀・)カエレ!!

206 名前:名前は開発中のものです。 mailto:sage [2008/12/05(金) 18:06:46 ID:YY5q+8z/]
ソフトウェア描画モードと言う物があるらしいのですが、
どれのことなのでしょうか?
一部のPCだと動かなかったりする時にこれを使えばいいらしいのですが……。
リファレンスを見た限りそれっぽいのがありませんでした。

207 名前:名前は開発中のものです。 mailto:sage [2008/12/05(金) 18:19:39 ID:MN0oAg79]
この辺をどうぞ。
ttp://www.dkut.flnet.org/dxlibwiki/?3D%B5%A1%C7%BD%A4%F2%BB%C8%A4%A6%A4%AB%A4%C9%A4%A6%A4%AB%A4%F2%A5%E6%A1%BC%A5%B6%A1%BC%A4%CB%C1%AA%C2%F2%A4%B5%A4%BB%A4%EB

208 名前:名前は開発中のものです。 mailto:sage [2008/12/05(金) 20:49:20 ID:YY5q+8z/]
>>207
ありがとうございます。
SetScreenMemToVramFlag( FALSE );
と、
SetUse3DFlag( FALSE );
を使ったらよさそうなのでこの二つを使ってみようと思います。

209 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 03:56:27 ID:5bnbt+Lt]
>>204
垂直同期を使って処理していれば僅かな処理の遅さでFPSは半分になることがある
そしてGDIは遅い

>>189はDrawStringを使用せずに同等の文字描画処理をする方法を模索しているであって
デバッグをしてくれと言っているわけじゃないんだから君がムキになるのは頓珍漢な話
俺を含め解決策が分からない初心者が回答することが間違い

210 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 04:17:22 ID:MshHJhkd]
俺もよくわからないけど、>>189

>DXライブラリでは作成したサーフェスに直接描画出来ないのでしょうか?

と明確に聞いてるぞ。
それを初心者が関係ない知ったか話をしてるとしか見えない。
「俺は平気だよ?」とか言う話もいらないと思うww

>>202もヒントになると思うけど多分新しい文字列を頻繁に表示しようとしてるんじゃないかな。
毎フレーム更新される数値を表示するって事も多いと思うし。

211 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 06:11:31 ID:VA5mVjgv]
ファイナルファンタジーの裏ワザででてくる
数字ゲームとかあれ作ると面白そう

212 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 09:55:12 ID:DCsCuBVu]
ブラックジャックといいたまへ

213 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 11:21:34 ID:gOAp6PdO]
>>189は「同じ文字列」って書いてるじゃないか。
まあ任意のオフスクリーンバッファに描いてそれを転送したい、というのはわかるが
できる機能を追加するかDXライブラリをやめるしかないのでは。

214 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 16:48:54 ID:KujsLoK9]
クリックイベントを使いたいのですがどうすればよいのでしょうか?
公式などにクリックイベントのコードがなかったのでここで質問させてください



215 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 17:16:43 ID:t9JSHoeE]
SetWaitVSyncFlagをFalseにしておいて、16666マイクロミリセカンド待機し描画

↑で描画すると30フレームあたりまで落ちるんですが、SetWaitVSyncFlagをFalseにしてても同期するってあるんでしょうか?

待機を16200にすると60フレームになるので、同期でひっかかってるんだと思うのですが……

216 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 17:19:10 ID:KujsLoK9]
自己解決しました

217 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 20:30:15 ID:JBa6ugiY]
なんだったのよw

218 名前:215 mailto:sage [2008/12/07(日) 18:55:49 ID:OyZdJ9xq]
すいません、こちらも自己解決しました……

219 名前:名前は開発中のものです。 [2008/12/08(月) 00:25:32 ID:2qR4Oo16]
Cの入門書見てる段階なんですが、DXライブラリでのゲーム製作講座を見てみたら、
C言語というより、DXライブラリ言語でのプログラミングという印象を受けました。
DXライブラリを使ってプログラミングする場合は、
Cのほうは入門書を一通り読んだだけの知識でよくて、
あとはDXライブラリの使い方をきちんとやるほうがいいんですよね?

220 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 00:31:03 ID:A0APKyuo]
Cも一通りの知識は要るだろうから
平行して勉強しなはれ。

221 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 00:55:25 ID:FYgRMyd9]
いやいや
もろCで作ってるよ
printfが絵を表示する関数になるだけ

222 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 03:17:20 ID:tsVxmfWH]
>>219
「C言語 = printfやscanf、fopen等の標準関数」だと思ってるんならそれは間違いだ

223 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 03:37:47 ID:ghLgcWkz]
>>219
それでいいと思うよー。
Cの文法なんて覚える事少ないし、入門書片手に取り掛かっちゃえば大丈夫。
今後も、プログラミングで何かを作る時、基本的にDXライブラリのような、外部のライブラリの使い方を覚えるって作業が大半になるよ。
入門書に書いてあるstdio.hのprintfみたいな標準関数を覚えるみたいに。

224 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 11:27:49 ID:tq0zLS+0]
>>210

>>>202もヒントになると思うけど多分新しい文字列を頻繁に表示しようとしてるんじゃないかな。
>毎フレーム更新される数値を表示するって事も多いと思うし。

それこそ仕様を見直せとしか言いようがないようなw
毎フレーム更新する数値や文章ならプレイヤーに全文しっかり読ませるためものじゃないだろうし。



225 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 18:07:49 ID:ofH1nP7I]
ノベルとかアドベンチャーのサンプルがあるサイト教えてください

226 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 18:55:26 ID:dZklSLE8]
公式にあったような気がするが……。

227 名前:名前は開発中のものです。 [2008/12/08(月) 20:50:58 ID:vtoynrkC]
Dxライブラリを使って
60フレーム固定のシューティングを作ろうと思ったんですが

公式をみると「グラフィックがぶれがひどくなる」と書いてあって
ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N13

で、実際にサンプル試してみたら
確かに時々ひっかかる感じが。

これって改善はできないものなんでしょうか?

228 名前:名前は開発中のものです。 mailto:sage [2008/12/08(月) 20:56:58 ID:a6vLxw2w]
内部の更新処理(当たり判定,posX += vXなど)のフレームレートを倍にするとか

229 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 01:42:49 ID:osPjvukM]
>>227
int Time; を
LONGLONG Time; に、

Time = GetNowCount(); を
Time = GetNowHiPerformanceCount(); に

while( GetNowCount() - Time < 17) {} を
while (GetNowHiPerformanceCount() - Time < (1000000 / 60)) {} に

書き換えてみたら?



230 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 13:46:02 ID:uZqK3Qyt]
>>224
RPGやアドベンチャーゲームなら
1文字ずつゲーム内Windowに描画され、ゲーム内Windowごと表示非表示を切り替えられるって仕様は普通に有るでしょう

231 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 15:29:12 ID:hNxQdCPd]
>>226
文字表示ぐらいしかないと思うけど・・・

232 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 15:52:37 ID:R5xGo07t]
サンプルゲームみたいなのでなかったっけ?
前はあったはずなんだが。

233 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 17:32:59 ID:PL50HxGw]
「DXライブラリサンプルゲームのダウンロード」のページにある
「スクリプトプレーヤー」の事じゃないかな。


234 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 18:26:23 ID:hNxQdCPd]
スクリプトプレーヤーはソースの意味が分からない
いきなりスクリプトのソースみろとか言われてもなにがなにやらって感じ



235 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 19:12:36 ID:PIQiSLzg]
サンプル見たいって話を聞くたびに
見てもわかるの?
という疑問が湧く。
同じ動きをするものを自分で書けるくらいの技量がなければ結局読めない気がする。

他人のソース読むのが超苦手で自分で書いた方が早い俺限定の話だが。

236 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 19:35:05 ID:aLvm7Uo6]
>>235
アルゴリズムは同程度の技量がないと読めないけど、設計はそんなことないよ。

スクリプトプレイヤーのソース見たけどちょっと酷いな。
マジックナンバー、関数長すぎる、グローバル変数使いまくりetc...
たしかにこれ読めとか言われても俺も困る。


自作2Dライブラリ作ってたんだが、画像系の実装が終了したところで
面倒になってきたんでDXライブラリを使うことにした。おまいらよろしく。

237 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 20:33:33 ID:PIQiSLzg]
>>236
ああ確かに設計は読みたいかも。
うまい人のクラス構成とかはみてみたい。

238 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 20:44:39 ID:HfON+uiV]
うまい人のコードは,クラスやメソッドの実装にどんどんステップインしていかなくても
表面だけ見れば理解できるよね

239 名前:名前は開発中のものです。 mailto:sage [2008/12/09(火) 20:59:26 ID:MCEWLRF6]
>>228
すいません、内部処理は一定化したかったので・・

>>229
ありがとうございます!
引っかかりが無くなりました。
タイマーの精度の問題だったみたいですね。

240 名前:名前は開発中のものです。 mailto:sage [2008/12/10(水) 15:43:30 ID:LwDc2Tc0]
>>220
>>221
>>222
>>223
printfなどが関数だということを意識していませんでした。
まさに、C言語=標準関数のつもりで勉強していました。
外部ライブラリを使うのだから、それから提供される関数の使い方を勉強するのは当たり前ですね。
プログラミングに対する疑問が少し解けました。どうもありがとうございました。

241 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 09:38:29 ID:oww0q0NN]
画像の、ある部分だけを拡大して描画することは出来ますか?
ループ表示する背景の一部分だけを拡大表示したいです。

242 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 10:38:54 ID:qrB4r20j]
やった事ないけど、指定領域だけで新しいグラフィックハンドルを作るとかできるはずだから、
それをしてから拡大表示させればいいんじゃないかな。

前提条件として矩形範囲のみって事になるけど。

243 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 11:00:28 ID:oww0q0NN]
>>242
なるほど、ありがとうございます。矩形なのでその辺は大丈夫です。
でもアクションゲームみたいに、リアルタイムにバックグラウンドをスクロールさせつつ、
拡大率を変えてバックグラウンド表示するのはその方法ではコストが掛かり過ぎて無理なようですね。
DrawExtendGraphの描画元矩形指定関数があれば一発なのに><

244 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 11:23:00 ID:qrB4r20j]
背景をスクロールさせつつ、拡大部分もスクロールさせるのかな。
それじゃ無理だね。

それならいっそ、

背景を普通の大きさで書く → 画面の描画範囲を設定(SetDrawArea) → 背景を拡大して書く

ってやってみるのはどうだろう。
背景を二回描くから、やり方によってはコストかかるけど……。



245 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 12:23:15 ID:Otp3maXe]
つDrawRectExtendGraph

246 名前:名前は開発中のものです。 mailto:sage [2008/12/11(木) 12:49:25 ID:oww0q0NN]
>>244
そうですそうです、元画像の一部分を拡大表示したいんです。

>>245
おお!ありがとうございます。そんな関数があったんですねw
面倒でも自分でDxLib.hをチェックしないと駄目ですねw

247 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 18:14:48 ID:dqaLLhhf]
今 トルネコやシレンみたいな2Dダンジョン探索ゲームを
800 x 600 ウィンドウモードで作っているんですが
2Dゲームは 640 x 480 が基本だと聞きました。

800x600だと何か不都合でも起こるんでしょうか?

248 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 19:08:10 ID:e0uVhp4S]
32x32とか16x16のブロックがぴったり収まらない、とか。?

249 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 20:15:13 ID:dqaLLhhf]
画面下と右にブロックが半分だけ表示されるのは我慢しようと思います。
800x600だと特定の環境ではちらつきが酷いとかだったら嫌だなぁと思いまして

250 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 20:24:18 ID:yokHYtBf]
>>247
処理速度の問題とユーザの環境の問題
ちなみにカラーモードも256色パレットモードが基本だった
しかしそれは過去の話
今はPCのスペックは十分だし、800*600の画面モードの無いPCの方が少ないと思うから問題ないかと


251 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 21:25:42 ID:aXKygAOw]
ちょっと便乗
CRT使いなんでわからないんだけど
液晶の場合、画面サイズに合わない画面モードの表示ってどうなるの?

1)全画面に拡大されてぼやける
2)表示分だけ使われて余白は黒塗りになる

252 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 21:28:59 ID:8ZHcqCMQ]
>>251
A.液晶の設定しだい

253 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 22:00:48 ID:J3zydYCS]
初心者で悪いんだが質問。

うまく言えないんだけど

player.cpp内でint宣言をして、void player()で増減させる。
そして
「enemy.cpp内」で「player.cppのvoid player()」で増減したint変数を使用して作りたい判定があるんだけど。

こういうのってやっぱり出来ないのかな?


254 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 22:09:20 ID:r3WCUutT]
extern



255 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 22:12:35 ID:dqaLLhhf]
player.cppでグローバル変数としてint宣言して
enemy.cppの冒頭にextern宣言すれば判定にも使えるようになるよ

256 名前:名前は開発中のものです。 mailto:sage [2008/12/12(金) 22:19:36 ID:J3zydYCS]
>>254-255
ああそれ忘れてたww
おもいっくそ素材ファイルの読み込みで使ってたのに

ありがと、助かった






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

前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