DXライブラリ 総合スレッド その3
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/03/31(火) 01:14:36ID:IgyJcgapGUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリの詳細ついては
http://homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
過去スレ:DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
0403名前は開発中のものです。
2009/06/08(月) 20:22:53ID:kVsTXpwy0404名前は開発中のものです。
2009/06/08(月) 21:19:56ID:ScR8iayc0405名前は開発中のものです。
2009/06/08(月) 23:13:08ID:4xXNhiJa年齢で知識の量は違っても論理力はたいして変わらないと思う
0406名前は開発中のものです。
2009/06/08(月) 23:22:34ID:gmTgYuK1昔は小中でハンドアセンブルとかふつうだったし
テキストエディタ無かったし
アセンブラやコンパイラ無かったし
それでもゲーム作ってたからね
資料がネット無い時代だけど毎月大量の雑誌があったおかげで
今の10倍は情報量があると思う
14歳からはじめる〜の内容が毎月5冊くらい雑誌としてあったと思いねぇ
0407名前は開発中のものです。
2009/06/08(月) 23:31:36ID:VwdPN9TR0408名前は開発中のものです。
2009/06/08(月) 23:35:38ID:1Ns/D0F7モノがあふれてない方がかえって集中できてよいことの典型的な例ですな
0409名前は開発中のものです。
2009/06/08(月) 23:38:00ID:rJGFypi7情報も今のほうが圧倒的に多いし楽に手に入る。
逆に、情報や手段が多いせいで入りにくくなってる。
0410名前は開発中のものです。
2009/06/08(月) 23:58:56ID:gmTgYuK1方眼用紙もってドット絵かいたりハンドアセンブルばっかりしてた
変換表の半分くらいは暗記してたけど今じゃもう何も覚えて無い
c9がretだっけとかそんな感じ
ミスすれば暴走>リセットだったから実行するにも緊張した
結果机上デバッグにみんな慣れてソースやバイナリ見るだけですぐわかるようになってくる
バイナリ見たときのビッグエンディアンのわかりやすさはあこがれた
なんせ俺の暴走原因の90%は上位と下位のスワップし忘れがほとんどだったから
あと当時はPCの楽しさは俺達しかしらないんだぜ的なものもあったかな
というか全然普及して無いから虐げられてた
マイコン触れる=ネクラの変人で運動も何も出来ないんだろ的な
だからDXライブラリのように敷居を下げるライブラリにはがんばってもらいたい
今のほうが情報が入手しやすいというのはどうだろうね
CPUそのものとかOSとかデザパタとかそういうオカタイ情報は入手しやすいけど
ゲームを作りたい場合の情報の敷居の高さは半端じゃないよね?
徳間のM-FANみたいなのが必要かなと
0411名前は開発中のものです。
2009/06/09(火) 00:57:34ID:S/a6iR+n最初は出来る限りシンプルなゲームから作った方がいい…と、僕は思うんだ。
80年代前半より前の生まれなら、ゲーム&ウォッチが通じるんだが
最近の子(20歳以下)だと、どのへんが分かりやすい例え何だろうか。
0412名前は開発中のものです。
2009/06/09(火) 01:10:43ID:oifuXaCW>>410
俺も方眼紙にドット絵描いたり、
ノートにニーモニックでプログラム書いてから、ニーモニック→マシン語変換表見ながらマシン語に書き換えて、
それをバイナリエディタで入力とかやってたなぁw
ところで当時バイナリエディタって読んでたっけ? なんか別の呼び方だったような気がするが……。
0413名前は開発中のものです。
2009/06/09(火) 01:17:12ID:gC7kpoXP0414名前は開発中のものです。
2009/06/09(火) 01:46:37ID:PMo4RsPh0415名前は開発中のものです。
2009/06/09(火) 02:52:08ID:3VeuGuyA0416名前は開発中のものです。
2009/06/09(火) 03:20:38ID:C8Rc41AVなんであんなに創作意欲があったんだろうと思う
年取るとアイデアうかばない症候群になった
ただの鬱なのかもしれんが
0417名前は開発中のものです。
2009/06/09(火) 04:40:20ID:ur7it59gVCもあることだしファミコンでいいんじゃね?
0418名前は開発中のものです。
2009/06/09(火) 05:12:36ID:6uG82dMD教師に「そんなおもちゃが一体何の役に立つんだ」と
即却下されたのもなつかしい
0419名前は開発中のものです。
2009/06/09(火) 09:36:31ID:S/a6iR+nファミコンだと、スーパーマリオ3やドラクエ3も含まれるんだぜ?
ケータイアプリとかなら行けるのかな? やったことないから分からんのだが。
0420名前は開発中のものです。
2009/06/09(火) 09:50:17ID:ur7it59g0421名前は開発中のものです。
2009/06/09(火) 11:52:23ID:S/a6iR+n0422名前は開発中のものです。
2009/06/09(火) 13:07:47ID:IuPr0Cmy俺もツクールに数百時間費やしたくちだが、今思うと凄いな。
アイデアは今でも思い浮かぶんだが、頭の中だけで終わってそれを表に出そうっていう気にならない。
誰かが作ってくれるならアイデアとかは言うんだけど自分でやるってなるとめんどくさくて。
ちなみにその数百時間かけたのはセーブデータぶっ飛んで電子の藻屑に\(^o^)/
数百時間かけてすら、まだ1/5程度な完成度だったけど・・・
0423名前は開発中のものです。
2009/06/09(火) 14:14:05ID:+TNFSrzk0424名前は開発中のものです。
2009/06/09(火) 14:29:51ID:/uwI++Tj0425名前は開発中のものです。
2009/06/09(火) 14:45:39ID:/EtnpSFu0426名前は開発中のものです。
2009/06/09(火) 23:50:55ID:ggNV6tYDプログラムとしては、選択肢を選んだ順番に配列に格納して、正しい解答と比較することで正誤判定をしています。
一応、選択肢を選んで決定するところまではできたのですが、正誤判定の部分?がうまくいかないんです。
正しい順に選択肢を選んでも、間違っているということになっているみたいです。
なぜでしょうか?
あと4回目に選択肢を選ぶと、変な文字が表示されるのはなぜでしょうか?
自分の作ったプログラムです。
ヘッダファイルとメイン部分、会話(選択肢並び替え)部分に分かれています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9402.cpp
C言語をはじめて1年、DXライブラリをはじめて2か月くらいなので、やさしく教えてください。
お願いします。
0427名前は開発中のものです。
2009/06/10(水) 01:02:39ID:EOc9oIq+char input[5][1];
をグローバルにすればとりあえず動くと思う
ところで、要素数1だったら配列の意味なくね?
アドバイスとして、
↓の関数あたりを使えばもう少しスマートに書けると思う
sprintf、strcmp (C言語)
DrawFormatString (DXライブラリ)
0428名前は開発中のものです。
2009/06/10(水) 15:37:12ID:UXlA/6A3inputをグローバル変数にしたら、うまくいきました。
アドバイスしていただいたことも参考にして、もう少しスマートなプログラムが書けるように努力します。
本当にありがとうございました。
0429名前は開発中のものです。
2009/06/10(水) 22:45:00ID:kJPqJciVかえって乱暴に扱われるってばっちゃが言ってた
0430名前は開発中のものです。
2009/06/10(水) 23:47:48ID:yn44iXp90431名前は開発中のものです。
2009/06/11(木) 23:55:55ID:GA3GCHk+if(keiken==0)printf("童貞乙");
0432名前は開発中のものです。
2009/06/12(金) 00:00:02ID:ADvlYAyg初期化しとけ
0433名前は開発中のものです。
2009/06/12(金) 00:04:48ID:M4d3vxIHこうですか?分かりません><
#define KEIKEN 0
if(KEIKEN==0)printf("童貞乙");
0434名前は開発中のものです。
2009/06/12(金) 04:04:32ID:Yy7W6LDGint keiken=0;
if(keiken==0)printf("童貞乙");
0435名前は開発中のものです。
2009/06/12(金) 07:22:27ID:9cqRM4P7if(keiken==0)printf("童貞乙");
0436名前は開発中のものです。
2009/06/12(金) 08:37:17ID:yeEoVlcI0437名前は開発中のものです。
2009/06/12(金) 11:39:23ID:jHstWptskeiken ++ ;
keiken ++ ;
keiken ++ ;
keiken ++ ;
if ( 1 ) printf ( "童貞乙" ) ;
これで。
0438名前は開発中のものです。
2009/06/12(金) 12:18:42ID:xPu8mGZk0439名前は開発中のものです。
2009/06/12(金) 12:22:38ID:Upl7Se9Gインクリメントってスペースがあってもいいの?
0440名前は開発中のものです。
2009/06/12(金) 12:33:12ID:5rESS90A0441名前は開発中のものです。
2009/06/12(金) 12:48:39ID:l4TbPUJWとか
if(!keiken)
ってみんなあんま使わない?
視認性重視で「==1」「==0」なのかな?
某神録のサイトでも今見たらそんな表記だった。
0442名前は開発中のものです。
2009/06/12(金) 13:02:13ID:jHstWptsよく使うと思うが、今回は単に>431に合わせただけじゃない?
あとは掲示板で見やすい書き方というのはあるかもしれんね。
0443名前は開発中のものです。
2009/06/12(金) 13:08:28ID:AJoYy9jzあえて==0使ったんでしょ。
実際のコードでもそういうことはやる。
0444名前は開発中のものです。
2009/06/12(金) 13:48:30ID:6cWATceQ0であることを強調するため。
あと文化圏の違いもある。
0が偽じゃない言語も多数存在するから、そういう言語出身の人は
if(keiken)というコードは気持ち悪く感じる。
逆に生粋のC/C++の人はif(keiken==0)というのは冗長に感じる。
俺は簡潔性よりもわかりやすさを重要と考えてるから、==で比較する。
使う言語がC++だけじゃないってのもあるけど。
0445名前は開発中のものです。
2009/06/12(金) 13:57:03ID:+pEtBUBPこういうのDXライブラリで作ってるのかな
0446名前は開発中のものです。
2009/06/12(金) 13:58:09ID:+pEtBUBPwhile(!CheckHitKey(KEY_INPUT_ESCAPE)){
}
おおこういう表記もできるのか
0447名前は開発中のものです。
2009/06/12(金) 14:39:12ID:Nk+ds+Ow関数の戻り値なら>>446みたいな感じで書くかな。
0448名前は開発中のものです。
2009/06/12(金) 15:36:56ID:CIdl30UY3値以上なら(不)等号あるいはswitchを使うかな
if (!strcmp(str, "hoge")) // 一致したら
とかは気持ち悪い
0449名前は開発中のものです。
2009/06/12(金) 16:05:58ID:wLR5hiQv0450名前は開発中のものです。
2009/06/12(金) 18:56:18ID:g9ISpJC5やっぱこれは見づらいのかな
0452名前は開発中のものです。
2009/06/13(土) 10:14:12ID:yreqn12m世の中には条件式を省略しようとする輩がいるから
0453名前は開発中のものです。
2009/06/13(土) 10:24:26ID:yreqn12mif(hoge()){
…
}
じゃ返値をひとつだけ判定することができないじゃないの
あとでhoge()の返値を増やしたら予期せぬ動作をする可能性が高い
hoge()の返値を絶対に増やさない!なんて自信満々に言える奴は少ないでしょ
==で結べば必ず1つの返値で動作するから安全
0454名前は開発中のものです。
2009/06/13(土) 13:01:19ID:khmiiTOMC++は多値返せないよ
戻り値のとり得る値が増減する、とエスパーすると、
関数の戻り値っていうのは、関数本来の意味を参照すると、
関数の作用そのもの、すなわち関数が実装する機能そのもの。
(わからないならSchemeやHaskellとか関数型プログラミング言語を一度触ってくれ)
これが変更されるということは、すなわち関数の機能が変わったか、設計の錬度が全く足りてない
(どんな機能を実装するかすらあやふやだった)かどちらか。
どちらにせよその変更は、その関数を使用するコード全体に波及する。
だから
>あとでhoge()の返値を増やしたら予期せぬ動作をする可能性が高い
この指摘はずれてる。
繰り返しになるけど、戻り値の変更はそれを使用するコード全体に波及するから、
予期せぬ動作をする可能性が高い、じゃなくて、予期せぬ動作をしないようにコード
を変更しないといけない。
0455名前は開発中のものです。
2009/06/13(土) 15:58:30ID:MRDz7JnU実装の修正は何度もやるとして
インターフェースや振る舞いはなかなか変えないもんだ
というか、戻り値の意味が2通りを超える時は
関数名も変えざるを得ない気がするが
0456名前は開発中のものです。
2009/06/15(月) 23:58:33ID:FuxW1Dfe透明色指定しても透明にならない
bmp2pngが必要
0457名前は開発中のものです。
2009/06/16(火) 01:46:16ID:H4jkoMGr何かいい方法あるかな?
x座標を調整するの面倒だ
0458名前は開発中のものです。
2009/06/16(火) 02:10:16ID:1CAlzcIC自分は使ったことないんで分からないけど、
GetDrawStringWidth
GetDrawFormatStringWidth
というのはどう?
で、長さを調べてxを調整して、文字列を出力するところまでを1つの関数にしちゃうの。
0459名前は開発中のものです。
2009/06/16(火) 02:19:38ID:qN6akUYZcountを0と1でオンオフしてSleep(300)とかで歩行と同じように調整はできたんだけど、
歩き出しが時々ぎこちないので悩んでます。sleepじゃなくていい方法が思いつかない
0460名前は開発中のものです。
2009/06/16(火) 02:28:14ID:H4jkoMGrフォントを変えないならいける
CreateFontToHandleで作ったフォントデータだと駄目っぽい
>>459
countを範囲でオンオフ切り替えてみては
if(count%40<20)//ドロー
else //ドロー2
count++;
0461名前は開発中のものです。
2009/06/16(火) 02:34:01ID:wxVXqeT5GetDrawStringWidthToHandleがあるじゃん
0462名前は開発中のものです。
2009/06/16(火) 02:36:09ID:H4jkoMGrうわ・・・恥ずかしい・・ごめんなさい
ありがとねん
0463名前は開発中のものです。
2009/06/16(火) 03:45:39ID:1CAlzcICそもそもSleep使ったら何も出来なくなるんじゃ?
0464名前は開発中のものです。
2009/06/16(火) 08:51:37ID:mvp6g5dM0465名前は開発中のものです。
2009/06/16(火) 09:09:09ID:q6YxOHAdClearDrawScreen();
if(count<20) 右足が前に出てるキャラ表示
if(count>=20&&count<40)左足が前に出てるキャラ表示
ScreenFlip();
WaitTimer(10);
count++;
if(count==40)count=0;
}
うーんよくわからん
0466名前は開発中のものです。
2009/06/16(火) 09:54:16ID:1CAlzcIC基本的な考え方はそれでいいと思うよ。
あとせっかく答えてくれた>460の答えも読んどいた方がいいんじゃね?
0467名前は開発中のものです。
2009/06/16(火) 10:06:16ID:yTy6SiIo基準FPS値決めて、フレーム数と秒が変換できるようにしてみるといい
あとWaitTimer(10)とかいうのはジョークだよね?w
0468466
2009/06/16(火) 10:16:47ID:1CAlzcIC>>467
おや、見逃してたw
もしかして>463(俺)の発言を勘違いしちゃったのかな……? だとしたらちょっと責任感が。
0469名前は開発中のものです。
2009/06/16(火) 12:57:31ID:zt3TsheyたぶんWaitTimer等の関数を使わないと高速足踏みに見えると感じて、
こういう手段で自然に見えるようにしたんじゃないかな。
一秒でひとつの動作をループさせる必要はないからこれはあまり良くないと思うけど。
0470名前は開発中のものです。
2009/06/16(火) 13:19:46ID:1CAlzcICcount値20ごとに表示を変えてるみたいだし、それは大丈夫なんじゃないかしら?
0471名前は開発中のものです。
2009/06/16(火) 14:04:12ID:KbLsp5Ay0472名前は開発中のものです。
2009/06/16(火) 14:17:30ID:MjcTUWQv0473名前は開発中のものです。
2009/06/16(火) 16:03:45ID:rewLOGjyと上級者ぶってみるわ
0474459
2009/06/16(火) 18:26:00ID:qN6akUYZWaitやSleepは使わずにFPSとかFrameやらを使って試行錯誤してみます。
countを0と1でオンオフにしてたけど>>465のようにフレームカウントにしてやってみます。
0475名前は開発中のものです。
2009/06/16(火) 18:35:39ID:1CAlzcIC0476名前は開発中のものです。
2009/06/16(火) 23:35:34ID:8GILQKQTレートは60ヘルツかも100ヘルツかもしれないし
65とか75とか微妙な数値になることもある
DXライブラリの教本にあるように書かないと、動作環境が変わった時に同じように動く保証がない
俺が以前に見た酷い例
FPSが60切ると点数がどんどん減る意味不明なゲーム
しかもどんなアルゴリズムか知らんが、FPS60でも点数が減りっぱなし
ああいう「自分の環境しか見ない」人間は駄目だな
0477名前は開発中のものです。
2009/06/16(火) 23:40:46ID:fYBFrBfu0478名前は開発中のものです。
2009/06/16(火) 23:56:34ID:1CAlzcICと言っても、個人レベルの開発でどこまで他の環境を考えられるやら。
定番のアルゴリズムとかは書けるかもしれないけど、それだけじゃ意味ないし。
結局のところ「知らね」って言いきるしかできない。
0479名前は開発中のものです。
2009/06/16(火) 23:59:57ID:+nd9Tj3kティアリングが気になるんだよなぁ。
他人が作ったゲームは60FPS超えるやつとかあるけど
ティアリングあまり気にならないんだよな。どうやってんだろ。
0480名前は開発中のものです。
2009/06/17(水) 00:27:22ID:gsrBiXQcWaitTimer(10); 入れるとCPU使用率が下がる ただそれだけw
0481名前は開発中のものです。
2009/06/17(水) 00:32:32ID:s0zhQi6M君みたいな人が駄目らしいよ
自分の環境しか見ない人間は駄目なんだってさ
ていうかさ、FPSが60切ると点数がどんどん下がるゲームかどうか
ソースもアルゴリズムも考えずにどうやって判別したのかねwプッw
偉いなぁこの人wプレイしただけでバグの原因分かっちゃうって>>476は神だねwプッw
0482名前は開発中のものです。
2009/06/17(水) 03:56:59ID:moXGEW/H1,Sleepを使ってFPSを30ほどに落としてやる。
2,時間と同期をとる。
くらいしか思いつかない。
0483名前は開発中のものです。
2009/06/17(水) 07:52:50ID:zFwmddUq0484名前は開発中のものです。
2009/06/17(水) 08:55:08ID:Sg+3JQO30485名前は開発中のものです。
2009/06/17(水) 15:01:39ID:v4ECr6VG作りやすいのは固定フレーム、性能を活かしやすいのは可変フレーム。
自分は面倒なので、60固定前提でやってるんだが
(1)タイマ(ミリ秒)を取得して1フレームの規定時間(16msec)が過ぎるまで待つ
(2)モニタのVSYNCを待つ
(3)モニタのリフレッシュレートを変更する
の3パターン用意して、あとはユーザに適当に選んでもらおうかなと。
まずいかな?
0486名前は開発中のものです。
2009/06/17(水) 18:17:49ID:V4BAg+VP0487名前は開発中のものです。
2009/06/17(水) 18:47:03ID:A2Hqv0+b・環境(グラボの設定)によっては垂直同期信号待ちがOFFになってる場合があるのでFPSは保たれない。
・垂直同期信号待ちがONだとして、FPS保てる状態でも、
モニタのリフレッシュレートを60にしてたり70にしてたりってのはユーザーの好き好きなので、
作り手の望んだとおりのFPSになってくれるとは限らない。
0488名前は開発中のものです。
2009/06/17(水) 20:28:42ID:00woQzQy0489名前は開発中のものです。
2009/06/17(水) 20:53:25ID:00woQzQyhttp://www.pqrs.org/tekezo/gba/index.html.ja
http://omoshiro-joho.com/tech-center/cgi-bin/wiki/index.php?Linux%A4%C7GBA%A5%B2%A1%BC%A5%E0%B3%AB%C8%AF
http://nocash.emubase.de/gbatek.htm
http://belogic.com/gba/directsound.shtml
0490名前は開発中のものです。
2009/06/18(木) 01:52:47ID:lg5GVuaj0491名前は開発中のものです。
2009/06/18(木) 04:16:26ID:eqFlz8O10492名前は開発中のものです。
2009/06/18(木) 04:54:12ID:U/ILN7Qk一応あるっしょ。
0493名前は開発中のものです。
2009/06/18(木) 05:03:47ID:4gTcdCic0494名前は開発中のものです。
2009/06/18(木) 05:07:59ID:U/ILN7Qkアクションゲームのゲーム速度2割アップとか結構きついですぜ
0495名前は開発中のものです。
2009/06/18(木) 07:25:22ID:8Inai5Jq開発中止?
0496名前は開発中のものです。
2009/06/18(木) 09:48:52ID:obCaTvEe0497名前は開発中のものです。
2009/06/18(木) 16:23:14ID:FAWLSPyh気づくのはいつもしばらくプレイしてからだった
0498名前は開発中のものです。
2009/06/18(木) 16:53:46ID:U/ILN7Qk気付かぬうちに難易度が上がってたり、タイミングが変わってミスを誘発させたりするって
ちょっと怖いよな。
0499名前は開発中のものです。
2009/06/18(木) 17:10:57ID:4gTcdCicってことは2次元アクションでいえば1フレーム毎の移動量が固定なのか。
自分自身も楽だからそういう作り方をしているけど…
例えばあるゲームで
60FPSだと重いのでコンフィグで30FPSに変更って場合は
ゲーム速度そのものは変わらないものだと思っていた。
0500名前は開発中のものです。
2009/06/18(木) 17:35:08ID:u8KJWVMz時間で処理、描画だけFPSで更新なら変わらないよ。
全体をFPS60処理だと60より上に上がらないようにしてるのが一般的かなぁ。
ツールで簡単に上げれたり、処理間に合わないとFPS下がって全体の速度も低下する。
0501名前は開発中のものです。
2009/06/18(木) 17:56:28ID:U/ILN7Qkフレームではなく時間単位で処理してるなら
ゲーム速度云々の話題にすらならんと思うよ。
0502名前は開発中のものです。
2009/06/18(木) 21:48:15ID:3XyNBKLr■ このスレッドは過去ログ倉庫に格納されています