トップページ > 記事閲覧
皆さんに質問です(ロード
名前:にこよん 日時: 2017/04/30 17:18

最近、自作ゲームを現役XPとVistaの友達にやってもらったところ、 ロードが長い、ロードが終わらない、と言われてしまいました。 ただ、市販のゲーム(グリザイアの果実)などは普通に動くそうです。 それでいくつか試したもらったところ、 BGM(2分程度)が3曲以上あるとメモリへの読み込みに限界が来るみたいです。 BGMの他に画像は80枚程度、6秒程度のSEが12個ほど読み込んでいます。 それで皆様に3つほど質問なんですが 1. DXライブラリでゲームを作る時などに、BGMは読み込んでから流すのと 読み込まずに流すのはどちらが一般的ですか? 2. 画像が最初からexeファイルに入っているゲームもよく見かけますが、 DXライブラリでも似たようなことはできるのでしょうか? また、exeファイルにあらかじめ書き込んでおけば動作が軽くなったり、 ロード時間が無くなったりするのでしょうか? 3. これら以外でゲーム自体を軽くしたり読み込み時間を短くしたりできる 方法はありますか?(プログラムの問題を除く) 普段どうしているかとかだけでもいいので教えてくださるとすごく助かります。
メンテ

Page: 1 |

Re: 皆さんに質問です(ロード ( No.1 )
名前:ノロ 日時:2017/04/30 19:48

1. 私はBGMも画像も、起動時にすべて読み込んでいます 最近の潤沢なメモリのPCならそれでも十分実用的ですし、途中でロードするのは(特にNow Loading画面などを作ると)、処理が数段煩雑になってしまうからです 2. 画像をexeファイルに同梱すると、むしろ使用するメモリは増えてしまいます なぜなら、まず画像の情報を含んだexeがメモリ上に展開されたのち、それをもとにDXライブラリが描画のための画像データをメモリ上に作成するからです 下手をするともう一段階メモリのコピーを伴うため、使用するメモリの量は2〜3倍になってしまいます。 一方、別のファイルなら、exeのサイズが小さくなった分だけメモリは節約できます。 なので、メモリを減らしたいというのであればexeにファイルを入れるのはお勧めできません 3. あなたの作っているゲームの画像の大きさが分からないですが、 市販の、立ち絵などのグラフィックに力を入れているゲームより大規模だとは思えません それに、BGMの読み込みも、市販のゲームが動くのにあなたのゲームだけ動かないというのは考えづらいです DXライブラリもそこまで動作に影響を及ぼすものではありません 失礼に思われるかもしれませんが、私はあなたのプログラムの書き方に問題があると推測します 話を聞く感じだと、非同期読み込み関数を使ってローディング画面を作っているのでしょうか? その最、に毎フレーム同じBGMを読み込んだりしていませんか? きちんと、読み込み関数が一回だけ呼ばれるようになっていますでしょうか
メンテ
Re: 皆さんに質問です(ロード ( No.2 )
名前:管理人 日時:2017/04/30 21:23

ノロさんもご返信されていますが私も > 1. DXライブラリでゲームを作る時などに、BGMは読み込んでから流すのと > 読み込まずに流すのはどちらが一般的ですか? 『読み込まずに流す』とはどのような方法でしょうか? ( PlaySoundFile で再生するということでしょうか? ) BGMの数が多い場合は必要になった段階でその都度読み込み、BGMの数が少ない場合は 起動時にすべて読み込んでしまうのが良いと思います 3曲くらいでしたら起動時にすべて LoadSoundMem で読み込んでしまって問題は無いと思います あと、BGM を読み込む LoadSoundMem を実行する前に、以下のように // ファイルから少しづつ読み込んで再生するサウンドハンドルを作成する設定に変更 SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; // サウンドファイルの読み込み SoundHandle = LoadSoundMem( "Sound.wav" ) ; // 設定を元に戻す SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMNOPRESS ) ; 事前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; を実行しておくことで LoadSoundMem で指定したサウンドファイルのすべてのデータをメモリに読み込まずに PlaySoundMem で再生された際に少しづつファイルから読み込んで再生する設定の サウンドハンドルとなりますので、読み込み時間が短縮できます よろしければお試しください ( 尚、CPU負荷はデフォルトの設定( DX_SOUNDDATATYPE_MEMNOPRESS )より高くなりますので SE などの沢山再生するサウンドファイルの読み込みでは SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; は 使用しないようにしてください ) > 2. 画像が最初からexeファイルに入っているゲームもよく見かけますが、 > DXライブラリでも似たようなことはできるのでしょうか? > また、exeファイルにあらかじめ書き込んでおけば動作が軽くなったり、 > ロード時間が無くなったりするのでしょうか? 似たことはできますがノロさんが仰られている通り読み込み時間が短縮されたり 動作が軽くなるといった効果はありません > 3. これら以外でゲーム自体を軽くしたり読み込み時間を短くしたりできる > 方法はありますか?(プログラムの問題を除く) 読み込み時間を短縮するには、読み込み処理を減らすことが一番なので、 起動時にすべてのファイルを読み込まずに必要になった段階で読み込むというのが 読み込み時間の短縮に一番効果があります ( その分プログラムは煩雑になってバグも多くなりますが… ) 個人的には 80枚の画像というのが気になります こちらの各画像のファイル形式とサイズ( 解像度 )を教えていただけないでしょうか? DXライブラリは読み込む画像が jpeg や png 等の圧縮形式の場合は内部で Bitmap のような 無圧縮形式に変換するのですが、この変換処理が結構時間が掛かったりします…
メンテ
Re: ノロ様 ( No.3 )
名前:にこよん 日時:2017/04/30 23:46

>私はBGMも画像も、起動時にすべて読み込んでいます >最近の潤沢なメモリのPCならそれでも十分実用的ですし、途中でロードするのは(特にNow Loading画面などを作ると)、処理が数段煩雑になってしまうからです 参考になります。ありがとうございます。 私の環境はメモリ8Gの窓10でロードは2、3秒で終わっていたので、 確かに最近のPC向けなら問題ないと思います。(ただ友達がXPなので//(-_-;) >画像をexeファイルに同梱すると、むしろ使用するメモリは増えてしまいます 詳しい説明までしていただいて、ありがとうございます。 メモリに展開することの原理をよく理解してないので、 exe本体が自分の持っている画像を描画することができるのだと思っていました。 画像は今までと同じように読み込もうと思います。 >話を聞く感じだと、非同期読み込み関数を使ってローディング画面を作っているのでしょうか? >その最、に毎フレーム同じBGMを読み込んだりしていませんか? >きちんと、読み込み関数が一回だけ呼ばれるようになっていますでしょうか 同じものを読み込むような失敗はしていないと思います。 後で下に関数を乗せると思うので問題があれば指摘していただけないでしょうか? (分かりにくい書き方ですみません)
メンテ
Re: 管理人様 ( No.4 )
名前:にこよん 日時:2017/05/01 00:45

>『読み込まずに流す』とはどのような方法でしょうか? >( PlaySoundFile で再生するということでしょうか? ) そうです。説明が足らず申し訳ないです。 >BGMの数が多い場合は必要になった段階でその都度読み込み、BGMの数が少ない場合は >起動時にすべて読み込んでしまうのが良いと思います >3曲くらいでしたら起動時にすべて LoadSoundMem で読み込んでしまって問題は無いと思います 本来読み込むはずの曲数を書くのを忘れていました。 実際に読み込みたいのは5曲です。3つで限界だったということです。 >事前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; を実行しておくことで >LoadSoundMem で指定したサウンドファイルのすべてのデータをメモリに読み込まずに >PlaySoundMem で再生された際に少しづつファイルから読み込んで再生する設定の >サウンドハンドルとなりますので、読み込み時間が短縮できます 試してみたいと思います。 ただ、友達も結構忙しいのでなかなか時間が合う日が少なく、いつ試せるかはちょっとわからないです。 配布しているファイルにこの関数を使用した物も入れておこうと思います。 >似たことはできますがノロさんが仰られている通り読み込み時間が短縮されたり >動作が軽くなるといった効果はありません ありがとうございます。画像は今まで通り別ファイルに置いておきます。 >読み込み時間を短縮するには、読み込み処理を減らすことが一番なので、 >起動時にすべてのファイルを読み込まずに必要になった段階で読み込むというのが >読み込み時間の短縮に一番効果があります >( その分プログラムは煩雑になってバグも多くなりますが… ) このスレッドで教えていただいたことを修正しても読み込みが終わらなかったり、 もっとBGMやゲーム画面が増えたらそうしたいと思います。(次回作とか?) >個人的には 80枚の画像というのが気になります >こちらの各画像のファイル形式とサイズ( 解像度 )を教えていただけないでしょうか? 下の返信に大雑把に書きたいと思います。 ファイル形式は LoadGraph 関数に書いているものですべてです。(pngとjpg この関数以外で音楽や画像を読み込むことはありません。 >DXライブラリは読み込む画像が jpeg や png 等の圧縮形式の場合は内部で Bitmap のような >無圧縮形式に変換するのですが、この変換処理が結構時間が掛かったりします… 画像形式はは無圧縮の物にあらかじめ変換しておいたほうが早く読み込めるということでしょうか? 大きな画像などは無圧縮にしておいたほうがいいですか?
メンテ
load関数 ( No.5 )
名前:にこよん 日時:2017/05/01 00:23

ローディング関数です。 プログラム全体は多すぎるのでload関数だけですが、 起動してDXライブラリや自作ライブラリを初期化したのち、 下の様なロード関数をよんでいます。 この関数が呼ばれることは1度しかありません。 実験では3つで限界と書きましたが、実際は5つ読み込むゲームです。時間はそれぞれ 2:00 4:00 1:30 1:30 1:30 ぐらいです。(3つ目は7:30と長すぎたためゲームで使うことを断念したもの 画像は80枚ぐらいと上に書きましたが、正確には65枚でした。 seも22個でした。 画像のサイズは大体ですが 500x400程度の画像(enemyなど)が35枚程度 1280x720〜1920x1280程度の背景が4枚程度 100x100未満の小さな画像が6枚程度 分割読み込みが20枚ほどです。 画像だけの合計サイズは32.9 MB (34,578,432 バイト)です、 void load() { //素材ファイルを読み込む image0 = LoadGraph("data\\image\\logo.png"); image1 = LoadGraph("data\\image\\load.png"); se1 = LoadSoundMem("data\\se\\load.mp3"); ChangeVolumeSoundMem(200, se1); SetUseASyncLoadFlag(TRUE); //非同期読み込み設定に変更 image2 = LoadGraph("data\\image\\image1.jpg"); image3 = LoadGraph("data\\image\\image2.jpg"); image4 = LoadGraph("data\\image\\kaya.jpg"); image5 = LoadGraph("data\\image\\shop.jpg"); image6 = LoadGraph("data\\image\\menu.jpg"); image7 = LoadGraph("data\\image\\image3.jpg"); image8 = LoadGraph("data\\image\\image4.jpg");10 image9 = LoadGraph("data\\image\\kaya_.jpg"); image10 = LoadGraph("data\\image\\box.png"); image11 = LoadGraph("data\\image\\loaddata.png"); image12 = LoadGraph("data\\image\\wood.jpg"); image13 = LoadGraph("data\\image\\boss1.jpg"); image14 = LoadGraph("data\\image\\config.png"); image15 = LoadGraph("data\\image\\black1.png"); image16 = LoadGraph("data\\image\\black2.png"); image17 = LoadGraph("data\\image\\black3.png"); image18 = LoadGraph("data\\image\\black4.png");20 image19 = LoadGraph("data\\image\\bossback1.png"); image20 = LoadGraph("data\\image\\bossback2.png"); image21 = LoadGraph("data\\image\\bossback3.png"); image22 = LoadGraph("data\\image\\boss2.jpg"); image23 = LoadGraph("data\\image\\enemy\\boss1.jpg"); image24 = LoadGraph("data\\image\\enemy\\boss2.png"); enemy[0] = LoadGraph("data\\image\\enemy\\enemy01.png"); enemy[1] = LoadGraph("data\\image\\enemy\\enemy02.png"); enemy[2] = LoadGraph("data\\image\\enemy\\enemy03.png"); enemy[3] = LoadGraph("data\\image\\enemy\\enemy04.png");30 enemy[4] = LoadGraph("data\\image\\enemy\\enemy05.png"); enemy[5] = LoadGraph("data\\image\\enemy\\enemy06.png"); enemy[6] = LoadGraph("data\\image\\enemy\\enemy07.png"); enemy[7] = LoadGraph("data\\image\\enemy\\enemy08.png"); enemy[8] = LoadGraph("data\\image\\enemy\\enemy09.png"); enemy[9] = LoadGraph("data\\image\\enemy\\enemy10.png"); enemy[10] = LoadGraph("data\\image\\enemy\\enemy11.png"); enemy[11] = LoadGraph("data\\image\\enemy\\enemy12.png"); enemy[12] = LoadGraph("data\\image\\enemy\\enemy13.png"); enemy[13] = LoadGraph("data\\image\\enemy\\enemy14.png"); enemy[14] = LoadGraph("data\\image\\enemy\\enemy15.png");40 enemy[15] = LoadGraph("data\\image\\enemy\\enemy16.png"); enemy[16] = LoadGraph("data\\image\\enemy\\enemy17.png"); enemy[17] = LoadGraph("data\\image\\enemy\\enemy18.png"); enemy[18] = LoadGraph("data\\image\\enemy\\enemy19.png"); enemy[19] = LoadGraph("data\\image\\enemy\\enemy20.png"); LoadDivGraph("data\\image\\wing.png", 30, 5, 6, 640, 640, effect1);//合計、横、縦、分けた後のサイズ LoadDivGraph("data\\image\\warp.png", 26, 2, 13, 640, 480, effect2); LoadDivGraph("data\\image\\flame.png", 9, 3, 3, 1200, 1200, effect3); LoadDivGraph("data\\image\\mark.png", 540, 30, 18, 32, 32, effect4); LoadDivGraph("data\\image\\mahou.png", 135, 15, 9, 200, 200, effect5);50 LoadDivGraph("data\\image\\book1.png", 96, 12, 8, 32, 48, effect6); LoadDivGraph("data\\image\\book2.png", 96, 12, 8, 32, 48, effect7); LoadDivGraph("data\\image\\book3.png", 96, 12, 8, 32, 48, effect8); LoadDivGraph("data\\image\\icon.png", 336, 16, 21, 32, 32, effect9); LoadDivGraph("data\\image\\coin.png", 30, 5, 6, 240, 240, effect10); LoadDivGraph("data\\image\\attack1.png", 9, 9, 1, 240, 240, effect11); LoadDivGraph("data\\image\\attack2.png", 5, 5, 1, 240, 240, effect12); LoadDivGraph("data\\image\\cure1.png", 27, 5, 6, 126, 126, effect13); LoadDivGraph("data\\image\\cure2.png", 27, 5, 6, 126, 126, effect14); LoadDivGraph("data\\image\\fier.png", 8, 8, 1, 240, 240, effect15);60 LoadDivGraph("data\\image\\ice.png", 8, 8, 1, 240, 240, effect16); LoadDivGraph("data\\image\\explosion.png", 7, 7, 1, 240, 240, effect17); LoadDivGraph("data\\image\\thunder.png", 8, 8, 1, 240, 240, effect18); LoadDivGraph("data\\image\\fire.png", 42, 6, 7, 128, 128, effect19); LoadDivGraph("data\\image\\fierbird.png", 20, 2, 10, 640, 480, effect20);65 bgm1 = LoadSoundMem("data\\bgm\\battle.mp3"); bgm2 = LoadSoundMem("data\\bgm\\boss1.mp3"); //bgm3 = LoadSoundMem("data\\bgm\\boss2.mp3"); bgm4 = LoadSoundMem("data\\bgm\\menu.mp3"); bgm5 = LoadSoundMem("data\\bgm\\dead.mp3"); bgm6 = LoadSoundMem("data\\bgm\\wind.mp3"); se2 = LoadSoundMem("data\\se\\enter.mp3"); se3 = LoadSoundMem("data\\se\\cancel.mp3"); se4 = LoadSoundMem("data\\se\\select.mp3"); se5 = LoadSoundMem("data\\se\\warp.mp3"); se6 = LoadSoundMem("data\\se\\seed.mp3"); se7 = LoadSoundMem("data\\se\\noseed.mp3"); se8 = LoadSoundMem("data\\se\\book.mp3"); se9 = LoadSoundMem("data\\se\\attack1.mp3"); se10 = LoadSoundMem("data\\se\\attack2.mp3"); se11 = LoadSoundMem("data\\se\\damage.mp3"); se12 = LoadSoundMem("data\\se\\miss.mp3"); se13 = LoadSoundMem("data\\se\\fier.mp3"); se14 = LoadSoundMem("data\\se\\cure.mp3"); se15 = LoadSoundMem("data\\se\\ice.mp3"); se16 = LoadSoundMem("data\\se\\explosion.mp3"); se17 = LoadSoundMem("data\\se\\thunder.mp3"); se18 = LoadSoundMem("data\\se\\down.wav"); se19 = LoadSoundMem("data\\se\\message.mp3"); se20 = LoadSoundMem("data\\se\\vanish.mp3"); se21 = LoadSoundMem("data\\se\\fier.wav"); se22 = LoadSoundMem("data\\se\\bird.mp3"); int meter = 640, loadfiles, maxloadfiles, loadtime = 0; maxloadfiles = GetASyncLoadNum(); PlaySoundMem(se1, DX_PLAYTYPE_BACK); // 効果音を再生する while (ScreenFlip() == 0 && ClearDrawScreen() == 0) { if (ProcessMessage() == -1) dxend(); loadtime++; loadfiles = GetASyncLoadNum(); DrawExtendGraph(0, 0, 1280, 720, image1, TRUE); DrawExtendGraph(560, 300, 720, 371, image0, TRUE); DrawFormatString(1110, 670, col.green, "loading...%d/%d", loadfiles, maxloadfiles); // 文字を描画する DrawBox(1110, 695, 1270, 710, col.green, FALSE);//メーターの枠を描画 DrawBox(1110, 695, 1120 + meter, 710, col.green, TRUE);//メーターの中身を描画 meter = (150 / maxloadfiles)*(maxloadfiles - loadfiles) + 150 % maxloadfiles; if (meter >= 790) meter = 790; if (loadtime >= 250 && GetASyncLoadNum() == 0) break; } SetUseASyncLoadFlag(FALSE); // 同期読み込み設定に変更 musicvolume(1, bgmvolume); //サウンドボリューム設定 musicvolume(2, sevolume); //サウンドボリューム設定 WaitTimer(333); ClearDrawScreen(); // 画面を消す ScreenFlip(); //裏画面を表画面に反映 return; }
メンテ
Re: 皆さんに質問です(ロード ( No.6 )
名前:yumetodo 日時:2017/05/01 00:50

>SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; ああああ、それか。まえに内部実装読んだ時になんでGlobal Flag見に行っているんだ・・・?と思っていたけど原因は。 DxLib解剖学LoadSoundMemとLoadBGM - DxLibEx Research Notes ttp://nagarei.github.io/DxLibEx/research_note/DxLib%E8%A7%A3%E5%89%96%E5%AD%A6LoadSoundMem%E3%81%A8LoadBGM.html SetCreateSoundDataTypeでDX_SOUNDDATATYPE_FILEにしちゃうと圧縮ファイルの場合無駄にDiskIOしてしまうように思うのですが (圧縮済みデータをメモリーに乗っけるだけなら大したことないはず) そういうわけで、むしろLoadBGM関数を使うべきじゃないかと思うんですが・・・?
メンテ
Re: 皆さんに質問です(ロード ( No.7 )
名前:管理人 日時:2017/05/02 21:49

> 私の環境はメモリ8Gの窓10でロードは2、3秒で終わっていたので、 > 確かに最近のPC向けなら問題ないと思います。(ただ友達がXPなので//(-_-;) すみません、ご友人がXP・Vistaをお使いということを見落としていました XPやVistaということは、最近のPCと比べてかなり性能が低い可能性がありますので、 BGMが3曲で限界だったというのはメモリが足りなくなってしまっていたのかもしれません その場合ですと、SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ;でメモリの使用量が 削減できるのでロードが終わらないということは無くなるかも知れませんが、 読み込み時間の長さを抑えるには載せていただいた > 500x400程度の画像(enemyなど)が35枚程度 >  > 1280x720〜1920x1280程度の背景が4枚程度 >  > 100x100未満の小さな画像が6枚程度 こちらの画像ファイルを『必要になったときに読み込む』方式に切り替える必要があるかもしれません あと、SetUseASyncLoadFlag(TRUE);を使用して非同期で読み込まれていますが、非同期読み込みは 読み込み中も他の処理が行える利点がある一方、読み込み時間は通常の読み込み(同期読み込み)よりも 遅くなりますので、読み込み時間短縮を最優先とされる場合は SetUseASyncLoadFlag(TRUE); は 使用しないほうが良いです その場合読み込み経過を表示しようとすると ClearDrawScreen(); DrawFormatString(0, 0, GetColor(255,255,255), "loading...0/8"); ScreenFlip(); image2 = LoadGraph("data\\image\\image1.jpg"); 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 image24 = LoadGraph("data\\image\\enemy\\boss2.png"); ClearDrawScreen(); DrawFormatString(0, 0, GetColor(255,255,255), "loading...1/8"); ScreenFlip(); enemy[0] = LoadGraph("data\\image\\enemy\\enemy01.png"); 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 enemy[19] = LoadGraph("data\\image\\enemy\\enemy20.png"); ClearDrawScreen(); DrawFormatString(0, 0, GetColor(255,255,255), "loading...2/8"); ScreenFlip(); LoadDivGraph("data\\image\\wing.png", 30, 5, 6, 640, 640, effect1); 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 LoadDivGraph("data\\image\\fierbird.png", 20, 2, 10, 640, 480, effect20); のような、『読み込み処理の合間に経過を描画してScreenFlipして次の読み込み開始』という 処理に変更する必要がありますが… > 画像形式はは無圧縮の物にあらかじめ変換しておいたほうが早く読み込めるということでしょうか? > 大きな画像などは無圧縮にしておいたほうがいいですか? 難しいところで、PCはキャッシュが効く関係で 『1回目の読み込みは圧縮形式のファイルと同じか、圧縮形式のファイルの方が速い』 『2回目以降は無圧縮形式のファイルの方が速い』 ということになります( 1回目、2回目というのは『PCを起動してから』なので、ソフト起動中に 何回も読み込まなくても、キャッシュの効果があります ) DXライブラリのパッケージの中の Tool フォルダの中にある『DXArchive』を使用して データフォルダを『DXアーカイブファイル』に変換すると、無圧縮のファイルは簡易的な圧縮が 施されます( 容量は jpeg や png ほど小さくはなりませんが )ので、もしかしたら画像を 無圧縮形式のファイルにした上で、データフォルダをDXアーカイブファイル化した状態で読み込むのが 一番高速かもしれません( DXアーカイブの圧縮は jpeg や png に比べて単純なので無圧縮状態に 変換するのも高速なので ) > yumetodoさん > SetCreateSoundDataTypeでDX_SOUNDDATATYPE_FILEにしちゃうと圧縮ファイルの場合無駄にDiskIOしてしまうように思うのですが Windowsは普通にファイルアクセスした場合はキャッシュを介したアクセスとなるので ファイル読み込みAPIの使用回数 > 実際にディスクへ読み込み処理を行う回数 となるので無駄なDiskIOが発生することは無いようです
メンテ
Re: 皆さんに質問です(ロード ( No.8 )
名前:yumetodo 日時:2017/05/03 02:33

>となるので無駄なDiskIOが発生することは無いようです あれ、DX_SOUNDDATATYPE_FILE指定の場合、てっきり内部でCreateFileにFILE_FLAG_NO_BUFFERINGを指定しているんだと思ってた(実装が辿れていない・・・)
メンテ
Re: 管理人様 ( No.9 )
名前:にこよん 日時:2017/05/03 15:21

いろんな方法があるんですね! >非同期読み込みは >読み込み中も他の処理が行える利点がある一方、読み込み時間は通常の読み込み(同期読み込み)よりも >遅くなります なるほどです。他の方法でも読み込めなかったら最終的に試してみます。 それとスレッドを立ち上げといて申し訳ないんですが、もうすぐテスト2週間前に突入してしまい、 あまりパソコンを触れなくなってしまいます。 友達も同級生なので「試して!」なんてことも言えません。 このスレッドには来るので返信はできますが、 自分のパソコンでは試しようがないので 3 週間ぐらいは読み込めたかどうか試せません。(-_-;) ほんと申し訳ないですがまた落ち着いたら必ず試します。
メンテ
Re: 皆さんに質問です(ロード ( No.10 )
名前:にこよん (解決) 日時:2017/06/11 00:00

かなり遅くなってしまってすみません。 無事ロードできるようになりました。 ありがとうございました。 以下試したこと >のような、『読み込み処理の合間に経過を描画してScreenFlipして次の読み込み開始』という >処理に変更する必要がありますが… 大体こんな感じに書き換えてみたら若干早くなりました。 >// ファイルから少しづつ読み込んで再生するサウンドハンドルを作成する設定に変更 >SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; 読み込み時間が短くなり、3曲とも読み込むことができました。 >そういうわけで、むしろLoadBGM関数を使うべきじゃないかと思うんですが・・・? 若干早くなった気もしますが、「SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ;」 のほうが早い気がするので&問題ないようなのでDX_SOUNDDATATYPE_FILEを使うことにします。 >しかしたら画像を >無圧縮形式のファイルにした上で、データフォルダをDXアーカイブファイル化した状態で読み込むのが >一番高速かもしれません これを試す前に読み込みに成功したので(あとめんどくさそう) これは試してないです。 >読み込み時間を短縮するには、読み込み処理を減らすことが一番なので、 >起動時にすべてのファイルを読み込まずに必要になった段階で読み込むというのが >読み込み時間の短縮に一番効果があります 最初に読み込むのと一部の画面の前に読み込むのと2つに分けてみました。(これで限界)
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存