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/
0204名前は開発中のものです。
2009/05/10(日) 03:57:46ID:LkvOOs8Z184じゃないけど良いなコレ
まあスレ違いだからここではやめとくが
0205名前は開発中のものです。
2009/05/10(日) 09:08:13ID:rPuqylL4それはDXライブラリと関係ない、C言語の領域だからぐぐって探せばみつかるでしょう。
まぁひとつ言っておくなら、読み込むだけなら
テキストファイルだろうとバイナリファイルだろうと関係ねーって事でしょうか。
それがテキストファイルかバイナリファイルかを区別するのは人間の仕事。
コンピュータにとってはどっちも数字の羅列です。
0206名前は開発中のものです。
2009/05/10(日) 09:16:50ID:rPuqylL4おお、簡単そうでいいな。
と思ったが商用だとライセンス必要なのか。
0207名前は開発中のものです。
2009/05/10(日) 09:27:04ID:SuvqbuIWメーカーのひと?
0208名前は開発中のものです。
2009/05/10(日) 10:31:11ID:fyec3Pfk0209名前は開発中のものです。
2009/05/10(日) 15:37:12ID:3Fci4lbQ動かすのに必要な環境とかあるのかな
0210名前は開発中のものです。
2009/05/10(日) 15:49:58ID:pxkMQo3W0211名前は開発中のものです。
2009/05/10(日) 15:54:27ID:QdEuQjX4>>205
せっかくだから DxLib でやろうぜ。
以前、なんかダサイ感じのやつを作った記憶あったのでうp
int MapInit()
{
int FileHandle = FileRead_open("StageData.txt");// ファイルのオープン
int FileSize = FileRead_size("StageData.txt");// ファイルサイズを取得して
char* FileImage = new char[FileSize];// その大きさだけ領域確保
FileRead_read( FileImage,FileSize,FileHandle);// 一気読み
FileRead_close(FileHandle);// ファイルを閉じて終了
const char* d = FileImage;
while(*d != '\0'){ // NULL文字(終端)ではない間
switch( *d ){
:
:
0212名前は開発中のものです。
2009/05/10(日) 16:04:32ID:pxkMQo3W0213名前は開発中のものです。
2009/05/10(日) 16:27:43ID:hIOF9W71曲がはじめに戻る時に一瞬無音部分が挿入されてしまうのは仕方の無い事なんですかね?
0214名前は開発中のものです。
2009/05/10(日) 16:53:15ID:jnxHmucW0215名前は開発中のものです。
2009/05/10(日) 18:54:17ID:rCuDH3cs俺使ってるから間違いない。
0216名前は開発中のものです。
2009/05/10(日) 19:18:26ID:hIOF9W710217名前は開発中のものです。
2009/05/10(日) 20:22:30ID:rCuDH3csてか空白が頭なのか終わりなのか区別つくのか?
俺はoggでやってるけどそんな現象は出ていない。
oggでなくてmp3だから空白が出てるってのも考えにくいし……。
たとえば、
// 音声をループ再生する
PlaySoundMem( SoundHandle, DX_PLAYTYPE_LOOP ) ;
// キーの入力待ち
WaitKey() ;
こんな感じで音楽鳴らしてWaitKeyで待たせてるだけの状態でも空白は出る?
0218名前は開発中のものです。
2009/05/10(日) 21:46:31ID:a1w4zsI+0219名前は開発中のものです。
2009/05/10(日) 21:59:26ID:CorOGe62それでまず音楽データ自体に空白が入ってないか確認するのが先かな。
(俺は古いけどspwaveっての使ってる)
0220名前は開発中のものです。
2009/05/10(日) 23:33:01ID:UtduPSoDいまいちヘッダーファイルに何書けば良いのか分からん。
ヘッダーファイルに書くのって基本的に
構造体、グローバル変数、クラス
で良いんだよな?
でもグローバル変数はそのまま書くより、メインの実行処理を書いたソースでグローバル宣言して、externしたのをヘッダーに書いた方が良いのか?
中々難しい
0221名前は開発中のものです。
2009/05/11(月) 00:02:53ID:MkdOym7I必要性を感じたらやればいいなと。
0222名前は開発中のものです。
2009/05/11(月) 00:25:28ID:HAsszTiW他のプロジェクトで同じヘッダーを使いたいって時があるはず
stdlib.hやwindows.hなどは、頻繁に共有して使う定義をまとめてあるわけだな
ゲーム開発では、バージョンアップや拡張版を作る時に意識する
そういうのが前提になくて、ただ使い捨てのマイナープログラムを作りたいだけなら
ヘッダーに書こうがソースに書こうが大した違いにはならん
集団開発ではこういう実動的な概念を知ってないと、プロジェクトに致命的な遅れを引き起こす原因になる
読めないソース、意味のわからない変数名、再利用性の全くないヘッダー
そういうのを書く奴はとても多い
同僚から「早くクビになれ」と睨まれてるのに、大抵は自覚がない
0223名前は開発中のものです。
2009/05/11(月) 00:37:43ID:h5MMChCx無音部分のないoggを作れば大丈夫だと思う
0224名前は開発中のものです。
2009/05/11(月) 01:25:34ID:SJM28vd6これでmp3にした場合だけループに空白が出来る。
でも編集ソフトでmp3ファイルを見てみても無音が入っていないので
ファイル自体じゃなくてループ再生時に無音が入っちゃってると予想してる。
>>223のような情報もあるのでwavからoggでやってみようと思います。
むしろmp3でちゃんとループしてる人がいるなら是非そのファイルをくれませんか?
0225名前は開発中のものです。
2009/05/11(月) 01:55:23ID:vfkeltZY0226名前は開発中のものです。
2009/05/11(月) 10:32:30ID:Y/ATwNUTグローバル変数を何の工夫もなくヘッダに書くのはありえない。
でも、1つのソースファイルからしかincludeしないなら
ヘッダの意味もないが、トラブルも出ないし好きにしたらいい。
0227名前は開発中のものです。
2009/05/11(月) 23:27:48ID:+oDxJ+XL例のセガの人の本によれば
ヘッダファイルは、そのモジュールの顔のようなものなので、
自分からしか参照しないものはヘッダに書くな、だそうな。
0228名前は開発中のものです。
2009/05/12(火) 20:59:39ID:TP6i3fOM0229名前は開発中のものです。
2009/05/13(水) 00:34:03ID:S36sOxw7リファレンス嫁
0230名前は開発中のものです。
2009/05/13(水) 00:45:59ID:Vux89+qG0231名前は開発中のものです。
2009/05/13(水) 02:31:33ID:SfL0C2tMディーエックス?デラックス?
0232名前は開発中のものです。
2009/05/13(水) 02:39:25ID:SMqynftrてかそもそもデラックスなんて意味込められてたっけか?
0233名前は開発中のものです。
2009/05/13(水) 04:37:24ID:+PRxmC7L今度、自分用のライブラリを作る時は超合金ライブラリという名前にしよう。
0234名前は開発中のものです。
2009/05/13(水) 04:45:57ID:S6Vidvv60235名前は開発中のものです。
2009/05/13(水) 05:27:57ID:WYplVFDZ0236名前は開発中のものです。
2009/05/13(水) 11:01:09ID:+PRxmC7L0237名前は開発中のものです。
2009/05/14(木) 23:52:26ID:JXz6JeNmhttp://www.vector.co.jp/soft/dl/win95/art/se202196.html
アドウェア臭いのついてるから本体以外キャンセル(Jwordとかプレーヤーとか)
http://www.vorbis.com/files/1.0/tobias/OggDS0995.exe
これインスコすればOGGをメディアプレーヤーで直再生できる
0238名前は開発中のものです。
2009/05/16(土) 18:21:08ID:RrtE4NOXこのことによって何か出来なくなる(制限される)ことってありますか? ウインドウズプログラム的に。
0239名前は開発中のものです。
2009/05/20(水) 18:05:19ID:XKq5DK9VDrawRectGraphでその都度座標を指定して描画するのと
LoadDivGraphやDerivationGraphで新しくグラを作成するのってどっちがいいとかありますか?
面倒なのですがDrawRectGraphの方が軽そうな感じがして…
0240名前は開発中のものです。
2009/05/20(水) 19:14:49ID:cd8SaRtc実際に試してみるのが一番いいと思うけど
0241名前は開発中のものです。
2009/05/20(水) 22:50:34ID:XKq5DK9V0242名前は開発中のものです。
2009/05/21(木) 01:24:36ID:nDXZOisY0243名前は開発中のものです。
2009/05/21(木) 14:53:13ID:f26CXGR7メモリに読み込んでハンドル返す方法は高速に描ける
速度を必要とする場面かどうか検討するといい
使い捨ての場面ならメモリに確保しない方が開発の負担が小さいし
何度も使うのならメモリに読み込んだ方が処理の負担が小さい
一般的には後者に統一することが多い
似たような話で、画像にjpgやpngを使ったり、mp3を使うのはCPUに負荷を掛けるので
通常素材にはbmp、効果音にはwavを使うのを勧める
(企業開発で形式を隠蔽したいわけでもないし)
0244名前は開発中のものです。
2009/05/21(木) 17:07:42ID:nDXZOisY0245名前は開発中のものです。
2009/05/21(木) 17:31:35ID:d1JBtW4A0246名前は開発中のものです。
2009/05/21(木) 19:45:39ID:uQ1uMZZL0247名前は開発中のものです。
2009/05/21(木) 20:03:43ID:PVitCZoM0248名前は開発中のものです。
2009/05/21(木) 23:37:28ID:SY9MChf5bmpを使うとゲーム容量が馬鹿デカクなる気がする
実際にどれほど処理・容量の違いがあるのかが知りたいNe!
0249名前は開発中のものです。
2009/05/21(木) 23:43:38ID:Lde+nmZH3Dゲームとかノベルゲームとかならまだしも。
むしろ容量食うのは音楽。
0250名前は開発中のものです。
2009/05/22(金) 00:30:16ID:opiwTOF8けっこう容量も気になってくるのだそうな。
0251名前は開発中のものです。
2009/05/22(金) 00:49:48ID:rdJ4/1mO0252名前は開発中のものです。
2009/05/22(金) 13:26:24ID:Ttltxn7S(bmpやjpgだとチャネル用の別画像を用意しないといけない)
ちなみに読み込みだけにCPU負荷がかかるだけで、
テクスチャになってしまえば転送速度は同じ。
bmpの場合はファイルサイズも大きくなり、読み込みに時間が逆に掛かることもあるので、適材適所が良いと思います
0253名前は開発中のものです。
2009/05/22(金) 21:09:50ID:opiwTOF832x32の画像があって、これを2倍に拡大して表示するのと、
64x64の画像があって、これを等倍で表示するのとでは、どっちが高速?
拡大する手間がある分だけ遅くなると見るべきか、元々の画像が小さいから有利と見るべきか。
実測してみたけど、いまいちよく分からん。
0254名前は開発中のものです。
2009/05/22(金) 21:24:41ID:xxFjO+BK0255名前は開発中のものです。
2009/05/23(土) 00:55:35ID:1QCRwyZH前者の方が早いでしょう
拡大表示処理はハードウェア(Direct3D)で行うので、とても高速ですよ
0256239
2009/05/23(土) 12:29:43ID:A4cQi3hhDrawRectGraphとDerivationGraphの違いを検証してみましたが、
メモリ、ビデオメモリ、処理速度に目立った違いは見受けられませんでした。
なので扱いやすいDerivationGraphを使って行こうと思います。
0257名前は開発中のものです。
2009/05/23(土) 13:25:24ID:ORU4uz0n俺のPCは「VGN-AW71JB」っていう型なんだが…。PC版のスプリンターセルはヌルヌル動き続けるし、スペックの問題ではないと思うんだが…。64bitのvistaってのがなにか影響してるのかな?
0258名前は開発中のものです。
2009/05/23(土) 17:37:42ID:XAnqJ6HC自分や友人がDxLibを使って作ったゲームを俺のPCで起動させると、始めはいいんだが、しばらくしてから必ず30フレームになってしまうのはなぜかわかる人いるか?
俺のPCは「VGN-AW71JB」っていう型なんだが…。PC版のスプリンターセルはヌルヌル動き続けるし、スペックの問題ではないと思うんだが…。64bitのvistaってのがなにか影響してるのかな?
0259名前は開発中のものです。
2009/05/23(土) 20:01:55ID:5w7OxnoQ0260名前は開発中のものです。
2009/05/23(土) 20:38:13ID:JcHBq+Qdつまり、途中で自在に色換えはできない。
わかる、君のやりたい事はわかる。
スプライトの色変えみたいに自在にやりたいんだよな。でもできない。
0261名前は開発中のものです。
2009/05/23(土) 22:53:41ID:5w7OxnoQ0262名前は開発中のものです。
2009/05/23(土) 23:00:23ID:KtGbScqt0263名前は開発中のものです。
2009/05/24(日) 00:14:29ID:wnjrF3Q20264名前は開発中のものです。
2009/05/24(日) 00:17:36ID:mQM6vOM4処理速度が低下するような時は、メモリーリークの可能性がある、
簡単に書くと、メモリを解放せずループで使いっぱなしにすると
メモリーがどんどん不足してゆき処理速度低下として症状が現れる。
0265名前は開発中のものです。
2009/05/24(日) 00:42:23ID:3op8nAnx一色ごとに画像を抽出してそれを全部白くして、表示時に色をいじってだね・・・
コストはかかるが、あくまで自由自在に色をいじりたい奴だけそうしてみるとか
0266名前は開発中のものです。
2009/05/24(日) 04:14:52ID:7GmmmL9xVC2008は豪華だけど重い
0267名前は開発中のものです。
2009/05/24(日) 17:40:43ID:seD1hHi/同じソースでも、友人のPCだったら落ちないという…
落ちないようにするにはどうしたらいいかな?
※と、書いてる途中でタスクマネージャーを見たら、CPU使用率が90%以上に張り付いてた。
他何も起動してないし、アプリケーションを停止したら0%に戻る。意味不明。
0268名前は開発中のものです。
2009/05/24(日) 19:21:41ID:e3aiszR00269名前は開発中のものです。
2009/05/24(日) 20:01:22ID:PboGdTn+文字描画するのに、毎回文字の大きさ変えて描画してるとか
0270名前は開発中のものです。
2009/05/24(日) 23:50:08ID:seD1hHi/CPU:Core 2 Duo 2.66GHz
RAM:4.00GB
友人
CPU:Core 2 Duo 2.40GHz
RAM:2.00GB
ソースとして挙げるなら、DxLibのホームページの、ゲーム作成講座のソース。
四角君が自分に向けて弾を撃って来るあのソースですらなりました。
0271名前は開発中のものです。
2009/05/25(月) 00:30:41ID:41gxgfIl0272名前は開発中のものです。
2009/05/25(月) 01:34:29ID:eHx6nkcb何が悪いのか……
0273名前は開発中のものです。
2009/05/25(月) 01:53:57ID:UZHs9GNu質問だったら「エスパーじゃないんだから、そんな事知らん」
0274名前は開発中のものです。
2009/05/25(月) 02:16:31ID:/EmhtAKe0275名前は開発中のものです。
2009/05/25(月) 07:48:45ID:qL901e+j0276名前は開発中のものです。
2009/05/25(月) 10:55:40ID:yXpMtdiRグラボと設定によっては同期待ちのタイミングでCPU処理に加算されとても重く「感じる」ことがある。
0277名前は開発中のものです。
2009/05/25(月) 15:09:43ID:bb62p5Sdでカオスになるぜ!
0278名前は開発中のものです。
2009/05/26(火) 17:43:21ID:WrI50zFN誰もが一度は通る道www
0279名前は開発中のものです。
2009/05/27(水) 04:36:49ID:cQqUnwcL0280名前は開発中のものです。
2009/05/27(水) 04:47:29ID:klPEh/z60281名前は開発中のものです。
2009/05/29(金) 00:03:12ID:vY9ARI7KDxライブラリをうまく名前空間に突っ込めないかなー、と思ったが
自前で改造しなきゃならない量を考えると挫折しそうだって愚痴。
>279
3Dで作った背景を2D画像に落として、
無理やりパターンアニメで表示させてるって作品があったような気がする。
0282名前は開発中のものです。
2009/05/29(金) 01:20:12ID:4j6tq9JR実際にいじってないのでなんとも言えないが
ここに映像つきのサンプルあるよ。
http://dixq.net/rp/
0283279
2009/05/29(金) 06:57:39ID:Vqjs1m4Eふむ…努力次第でどうにでもなるという解釈でおkかな。時間はかかりそうだがやってみないことにはわからないな
>>281
横シューのなら見たことあるwwものすごい労力の割に拡張性が無さそうでなぁ…
>>282
おお、こんな感じで動かせられるなら…
とりあえずテクスチャを簡単にくりくり動かせるような関数でもつくってみることにする
0284名前は開発中のものです。
2009/05/29(金) 21:51:58ID:izoQPgWw関数かいてカーソル合わせると宣言が表示されるから便利なんだけどなあ
0285名前は開発中のものです。
2009/05/29(金) 23:04:59ID:ATWupmEU0286名前は開発中のものです。
2009/05/30(土) 23:32:29ID:3JWvpnu4>無理やりパターンアニメで表示させてるって作品があったような気がする。
いいねこれメガテンの3Dダンジョンみたいなのに使えるな
0287名前は開発中のものです。
2009/05/31(日) 03:54:51ID:/tj3gvKSswith(state){
case 0:
if(CheckHitKey(KEY_INPUT_RETURN)){
文字表示
state++;
}
case 1:
if(CheckHitKey(KEY_INPUT_RETURN)){
文字表示
state++;
}
case 2:
if(CheckHitKey(KEY_INPUT_RETURN)){
文字表示
}
}
という風にすると、全部一気にキー判定されて、同時にすべての文字が表示されます。
WaitKeyとかWaitTimerを使う以外で、エンターを押すごとに順番に表示させるにはどうすればいいでしょう?
0288名前は開発中のものです。
2009/05/31(日) 04:07:26ID:WdCW0LKPenterが押しっぱなしの時は、flagを0にシナイので、
enterが離されて、再度flagが0になってからswitch文の実行が行われる。ように改造すれば
望みの結果が得られると思う。
int state = 0;
int flag =0;
if(flag == 0){
switch(state){
case 0:
if(CheckHitKey(KEY_INPUT_RETURN)){
flag =100;
文字表示
state++;
}
case 1:
if(CheckHitKey(KEY_INPUT_RETURN)){
flag =100;
文字表示
state++;
}
case 2:
if(CheckHitKey(KEY_INPUT_RETURN)){
flag =100;
文字表示
}
}
}else if(flag != 0)
{f( !CheckHitKey(KEY_INPUT_RETURN) ){
flag =0;
}
0289名前は開発中のものです。
2009/05/31(日) 04:49:59ID:j4yiAyL2キーバッファを設けることによって、押された瞬間を判定することができる*/
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) {return -1;}
SetDrawScreen(DX_SCREEN_BACK);
char key_buffer[2][256]; // キーバッファ
int state = 0;
while (ProcessMessage() != -1) {
ClearDrawScreen();
// 前のフレームの入力状態を保持
for (int i = 0; i < 256; i++) {
key_buffer[1][i] = key_buffer[0][i];
}
// 現在のフレームの入力状態を取得
GetHitKeyStateAll(key_buffer[0]);
// 「現在のフレームで押されている」かつ「前のフレームで押されていない」ならば
if (key_buffer[0][KEY_INPUT_RETURN] && !key_buffer[1][KEY_INPUT_RETURN]) {
state++; // 次の状態へ
}
// state の値によって分岐するなり何なり
DrawString(0, 0, "Press enter key!", GetColor(255, 255, 255));
DrawFormatString(0, 20, GetColor(255, 255, 255), "状態%d", state);
// 適当なところで終了
if (state == 10) {break;}
ScreenFlip();
WaitTimer(10);
}
DxLib_End();
return 0;
}
0290名前は開発中のものです。
2009/05/31(日) 05:11:01ID:YoqdwaI90291名前は開発中のものです。
2009/05/31(日) 08:31:50ID:JGIiJgnTLeftFlag=999;
文字表示}else LeftFlag=0;
押したときだけ処理するようにすればいけそう?
0292名前は開発中のものです。
2009/05/31(日) 08:46:00ID:P4ttxSKSbreak
0293名前は開発中のものです。
2009/05/31(日) 15:21:06ID:jTyG44wWif(enter_cnt<100){enter_cnt++;}
}else{
enter_cnt=0;
}
if(enter_cnt)//押している間
if(enter_cnt==1)//押された瞬間
0294名前は開発中のものです。
2009/05/31(日) 15:22:27ID:jTyG44wWif(enter_cnt<100){enter_cnt++;}
}else{
enter_cnt=0;
}
半角消えるのか
0295名前は開発中のものです。
2009/05/31(日) 20:06:14ID:kvaGbtb9DOGA最盛期にうんざりするほどあったよそういうの
0296名前は開発中のものです。
2009/06/01(月) 03:53:44ID:ojIQArFl0297名前は開発中のものです。
2009/06/01(月) 03:59:15ID:YGv3z7sbif文とインクリメント
0298名前は開発中のものです。
2009/06/01(月) 04:02:48ID:7hVJjQOF今話題の押された瞬間を数えて適当な変数に保存しときゃいいんでね?
0299名前は開発中のものです。
2009/06/01(月) 04:12:11ID:ojIQArFl下のままだと、ABCDっていっきに表示されます。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;
int col1 = GetColor(255, 255, 255);
char input[4];
int i = 0;
0300名前は開発中のものです。
2009/06/01(月) 04:13:52ID:ojIQArFlwhile(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
if(CheckHitKey(KEY_INPUT_RETURN)){
switch(i){
case 0:
input[i] = 'A';
break;
case 1:
input[i] = 'B';
break;
case 2:
input[i] = 'C';
break;
case 3:
input[i] = 'D';
break;
}
i++;
}
if(CheckHitKey(KEY_INPUT_SPACE)){
ClearDrawScreen();
DrawString(0, 0, input, col1);
}
ScreenFlip();
}
DxLib_End();
return 0;
}
0301名前は開発中のものです。
2009/06/01(月) 08:41:57ID:7hVJjQOFあるごりずむ体操
(ループはじめ)
↓
<前回キーが押されていたか?> YES→ (ループおわり)
↓ NO
<キーが押されているか?> NO → (ループおわり)
↓ YES
[キーが押された時の処理]
↓
(ループおわり)
0302名前は開発中のものです。
2009/06/01(月) 08:43:59ID:OkPmCHq70303名前は開発中のものです。
2009/06/01(月) 09:36:50ID:hCSvJ7Y8while( ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0 && CheckHitKey(KEY_INPUT_RETURN) == 1 ){
Sleep(16) ;
}
■ このスレッドは過去ログ倉庫に格納されています