Re: 同一キャラのサウンド再生について ( No.1 ) |
- 名前:いっち 日時:2010/05/31 21:00
> ロードを1回させ、それを使いまわす事は出来ませんか?
現状では無理だと思います。
取り得る対策として私が思いつくものは以下の通りです。
・LoadSoundMem の 2番目の引数に 1 を指定する。
ex. LoadSoundMem( "test.wav", 1 );
2番目の引数は重複再生を行う最大数を指定します(たぶん)。大きいほどメモリの使用量が大きくなるはずです。
・サウンドハンドルの複製に DuplicateSoundMem を使用する。
ex. DuplicateSoundMem( handle, 1 );
(DuplicateSoundMem を使用することにどの程度のアドバンテージがあるかは不明です)
仮に再生や停止を行うハンドル内のバッファを指定できるように機能を追加して頂いた場合も、
結局、プログラム内でどのバッファを使用するかという情報を管理する必要があると思うので、
敵一体一体にハンドルを割り当てる方法と大差ないような気がしますが、
メモリの使用効率だとか、実行速度の差などは私ではちょっとわかりかねます。
|
Re: 同一キャラのサウンド再生について ( No.2 ) |
- 名前:なら 日時:2010/06/01 01:34
管理人さんからもご回答が頂けると思いますが…。
いっちさんが示された
DuplicateSoundMem( handle, 1 );
の利用が正解だと思います。
関数名は忘れましたが、DirectSoundに、これと同じものがあったはずです(3年ぐらい前の知識)。
関数名が示すとおり、同じメモリのデータを使うので、メモリを効率的に使えます。
ゲーム製作ではかなり重要な関数だと思いますが、
リファレンスには載ってませんね…。
|
Re: 同一キャラのサウンド再生について ( No.3 ) |
- 名前:ゆったり 日時:2010/06/01 02:04
>いっちさん,ならさん
DuplicateSoundMem…
そんな関数があったんですね。調べて使ってみます。
管理者さんからご回答が頂ければ回答の方法も
使って自分に合うようにしたいと思います。
制作を中断するのはモチベーション維持出来なくなりますのでお早い回答で助かりました。
有難うございます。
|
Re: 同一キャラのサウンド再生について ( No.4 ) |
- 名前:管理人 日時:2010/06/06 02:51
いっちさん、ならさんも仰られていますが、DuplicateSoundMem を使用してキャラクタ一体に付き一通りの
サウンドハンドルを設ける方法がベストだと思います
ならさんの仰られてます通り基本的にサウンドデータは共有しますので、派生させた場合に必要に
なるメモリサイズはサウンドハンドルの制御に伴う数十バイトなので効率的です
ただ、サウンドハンドルは現状のバージョンでは同時に 4096個までしか保持できないので
1キャラクターに10個のサウンドハンドルを割り当てているとハンドルリソースが枯渇するかもしれません
一応サウンドハンドルの限界数を32768個に増やしたものをアップしましたので、もしご必要でしたら
こちらをお使い下さい m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
> ならさん
ご指摘ありがとうございます
今まで「鳴らしっぱなし」で済むタイプのゲームしか作成していなかったので DuplicateSoundMem の重要性を
理解していませんでした、リファレンスに追加することにします m(_ _)m
|
Re: 同一キャラのサウンド再生について ( No.5 ) |
- 名前:ゆったり 日時:2010/06/09 15:02
返信が遅れて申し訳御座いません。
限界数の増やした物まで…ありがとう御座います。
無事に目的通りの動作が出来ました。
様々なゲームスタイルに対応させるのは難しいと思いますが、これからも応援しております。
|