【龍神録】音楽室(Music_Room)の実装について
【龍神録】音楽室(Music_Room)の実装について
現在、ゲームプログラムで音楽室を仮実装しています。
その時のソースコードでちょっと不安を覚えたので、質問させていただきます。
龍神録48章のソースを参考にしていると、音楽室を実装するにはちょっと面倒な部分が見つかり、
そこをいろいろと変更させていただきました。
そこが、「音楽データを再生直前にロード」し、「不要になったら破棄する」操作です。
以上の部分を、「load.cppで読み込んで、選択に応じて再生」させるようにしているのですが…。
(分かりにくいですね^^; 要望があれば、ソースコードを載せたいと思います。)
ここで質問です。
1:楽曲データ17曲分のoggデータをロードし保存するとなると、やはり相当量のメモリを食うことになりますよね。
これはゲームのパフォーマンスには影響が出る程度の負荷がかかってしまう程度なのでしょうか?
2:もし、負荷がかかるのであれば、音楽室を実装しやすく、且つメモリもそこまで食わないようなソースの書き方として、
参考程度でいいのでアドバイスをいただけたら幸いです。
3:(これは全く関係なく、個人的な要望で、管理人さんへの質問ですが)龍神録には音楽室は実装されないのでしょうか?
すべていい曲ですので、著作権的な問題が発生するのであれば、楽曲名の紹介や提供先など教えて頂ければ幸いです。
その時のソースコードでちょっと不安を覚えたので、質問させていただきます。
龍神録48章のソースを参考にしていると、音楽室を実装するにはちょっと面倒な部分が見つかり、
そこをいろいろと変更させていただきました。
そこが、「音楽データを再生直前にロード」し、「不要になったら破棄する」操作です。
以上の部分を、「load.cppで読み込んで、選択に応じて再生」させるようにしているのですが…。
(分かりにくいですね^^; 要望があれば、ソースコードを載せたいと思います。)
ここで質問です。
1:楽曲データ17曲分のoggデータをロードし保存するとなると、やはり相当量のメモリを食うことになりますよね。
これはゲームのパフォーマンスには影響が出る程度の負荷がかかってしまう程度なのでしょうか?
2:もし、負荷がかかるのであれば、音楽室を実装しやすく、且つメモリもそこまで食わないようなソースの書き方として、
参考程度でいいのでアドバイスをいただけたら幸いです。
3:(これは全く関係なく、個人的な要望で、管理人さんへの質問ですが)龍神録には音楽室は実装されないのでしょうか?
すべていい曲ですので、著作権的な問題が発生するのであれば、楽曲名の紹介や提供先など教えて頂ければ幸いです。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 【龍神録】音楽室(Music_Room)の実装について
PlaySoundFile()だとダメなのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 【龍神録】音楽室(Music_Room)の実装について
その手があったか! と、思いましたが、それは使ったことのないので確認させてください。softya(ソフト屋) さんが書きました:PlaySoundFile()だとダメなのでしょうか?
1:PlaySoundFileでは、ファイルのパス指定はできますか?
2:ループ位置の設定はどうやって行えばいいですか?
3:("../music/%d.ogg",play_knd,…);のような書き方はできますか?
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 【龍神録】音楽室(Music_Room)の実装について
こんな感じです。1.は問題なし。2.は無いですかね。先頭オンリーです。随時ファイルを読み込むので任意の位置は難しいですね。3.に関してはsprintfをを使いください。
「PlaySoundFile」
http://homepage2.nifty.com/natupaji/DxL ... sound.html
リファレンスは、たまに見たほうが良いですよ。
「PlaySoundFile」
http://homepage2.nifty.com/natupaji/DxL ... sound.html
リファレンスは、たまに見たほうが良いですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 【龍神録】音楽室(Music_Room)の実装について
せっかくご提案なさって、こんな返答をするのは恐縮ですが、
ループ位置の設定ができないのであれば、それを使うのはちょっと無理そうです…。
因みに、先頭の質問に関してはどうお考えですか?
【追伸】リファレンスのリンク、ありがとうございました。
ループ位置の設定ができないのであれば、それを使うのはちょっと無理そうです…。
因みに、先頭の質問に関してはどうお考えですか?
【追伸】リファレンスのリンク、ありがとうございました。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 【龍神録】音楽室(Music_Room)の実装について
oggのサイズがわからないので答えようがないですが、パソコンの搭載メモリによるでしょう。
メモリに余裕があるなら、別に気にする必要はないです。
ただし、最初に全部読み込むとなると時間を食うかもしれませんので、起動したくなくなる恐れはあります。
メモリに余裕があるなら、別に気にする必要はないです。
ただし、最初に全部読み込むとなると時間を食うかもしれませんので、起動したくなくなる恐れはあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 【龍神録】音楽室(Music_Room)の実装について
メモリに展開せずに再生する方法がありますよ。
今携帯しか手元にないので詳しくは帰宅してから。
今携帯しか手元にないので詳しくは帰宅してから。
Re: 【龍神録】音楽室(Music_Room)の実装について
そうですか…。回答ありがとうございます。
なるべくファイルサイズを小さくしてみる努力が必要ですかね(汗)
こちらでも、またいろいろとソースを変更してみることにします。
その他意見等がありましたら、よろしくお願いします。
【追記】
一応3番に関しての回答や、その他の意見等もお聞きしたいので、解決とは致しません。
なるべくファイルサイズを小さくしてみる努力が必要ですかね(汗)
こちらでも、またいろいろとソースを変更してみることにします。
その他意見等がありましたら、よろしくお願いします。
【追記】
一応3番に関しての回答や、その他の意見等もお聞きしたいので、解決とは致しません。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: 【龍神録】音楽室(Music_Room)の実装について
なんかいつの間にか返信着てましたね;
いつでも大丈夫です。よろしくお願いします!
そうなんですか!?Dixq (管理人) さんが書きました:メモリに展開せずに再生する方法がありますよ。
今携帯しか手元にないので詳しくは帰宅してから。
いつでも大丈夫です。よろしくお願いします!
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 【龍神録】音楽室(Music_Room)の実装について
この関数の説明をご覧ください。
http://homepage2.nifty.com/natupaji/DxL ... tml#R15N25
① DX_SOUNDDATATYPE_MEMNOPRESS (デフォルト)
説明:音声データを直接再生できる状態にしてメモリ上に保存
読み込み速度:遅い 再生負荷:速い 必要メモリ領域:大きい
② DX_SOUNDDATATYPE_MEMPRESS
説明: 圧縮されている音声データをメモリ上に保存、再生時に
リアルタイムで圧縮データを展開、音声データが圧縮されて
いない場合は DX_SOUNDDATATYPE_MEMNOPRESS よりかえって
必要メモリ容量、再生負荷、読み込み速度全ての面で不利になる
読み込み速度:普通 再生負荷:少し重い 必要メモリ領域:普通
③ DX_SOUNDDATATYPE_FILE
説明: 音声データを再生時にファイルからリアルタイムに
メモリ上に読み込む、音声データが圧縮されている場合は
読み込んだ時に展開する
読み込み速度:速い 再生負荷:重い 必要メモリ領域:軽い
とありますので、③を使うとメモリに展開することなく再生できます。
リアルタイムでコードを行うので負荷はかかりますが、ミュージックルームなら他にかかる負荷も無いと思うので良いと思います。
ミュージックルームの実装はよくリクエストをもらったのですが、それを実装する時間でオマケ弾幕の一つでも追加した方がいいかなと思ってなかなか実装できずにいました。
使っている曲のほとんどは煉獄庭園さんの曲です。
http://www.rengoku-teien.com/
良い曲ばかりなので良ければお聞きください。
http://homepage2.nifty.com/natupaji/DxL ... tml#R15N25
① DX_SOUNDDATATYPE_MEMNOPRESS (デフォルト)
説明:音声データを直接再生できる状態にしてメモリ上に保存
読み込み速度:遅い 再生負荷:速い 必要メモリ領域:大きい
② DX_SOUNDDATATYPE_MEMPRESS
説明: 圧縮されている音声データをメモリ上に保存、再生時に
リアルタイムで圧縮データを展開、音声データが圧縮されて
いない場合は DX_SOUNDDATATYPE_MEMNOPRESS よりかえって
必要メモリ容量、再生負荷、読み込み速度全ての面で不利になる
読み込み速度:普通 再生負荷:少し重い 必要メモリ領域:普通
③ DX_SOUNDDATATYPE_FILE
説明: 音声データを再生時にファイルからリアルタイムに
メモリ上に読み込む、音声データが圧縮されている場合は
読み込んだ時に展開する
読み込み速度:速い 再生負荷:重い 必要メモリ領域:軽い
とありますので、③を使うとメモリに展開することなく再生できます。
リアルタイムでコードを行うので負荷はかかりますが、ミュージックルームなら他にかかる負荷も無いと思うので良いと思います。
龍神録は6年も前に作ったゲームですし、あまり今からバージョンアップするつもりもないです。3:(これは全く関係なく、個人的な要望で、管理人さんへの質問ですが)龍神録には音楽室は実装されないのでしょうか?
すべていい曲ですので、著作権的な問題が発生するのであれば、楽曲名の紹介や提供先など教えて頂ければ幸いです。
ミュージックルームの実装はよくリクエストをもらったのですが、それを実装する時間でオマケ弾幕の一つでも追加した方がいいかなと思ってなかなか実装できずにいました。
使っている曲のほとんどは煉獄庭園さんの曲です。
http://www.rengoku-teien.com/
良い曲ばかりなので良ければお聞きください。
Re: 【龍神録】音楽室(Music_Room)の実装について
回答ありがとうございます。
成程、そのような関数があったのですね!
どの関数を使うかについては、いろいろ試しながら検討していきたいと思っています。
3番の回答に関して…
そうだったのですか…。わざわざご回答いただき、ありがとうございました!
一応このトピックについては解決といたしますが、ご提案は随時受け付けておりますのでよろしくお願いします。
成程、そのような関数があったのですね!
どの関数を使うかについては、いろいろ試しながら検討していきたいと思っています。
3番の回答に関して…
そうだったのですか…。わざわざご回答いただき、ありがとうございました!
一応このトピックについては解決といたしますが、ご提案は随時受け付けておりますのでよろしくお願いします。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: 【龍神録】音楽室(Music_Room)の実装について
こんばんは 何気に思ったことなので プロのコーディングでは絶対にしないと思いますが
たとえば サウンドNOのint型を用意して そのint型に 音楽名 ファイル保管場所をひもつけし
選択時には サウンドNOを変化させ それにたいして音楽名 コメントなどを表示させる
決定ボタンが押されたら そのファイル保管場所からロードし再生する 停止が押されたら メモリ上のファイルをdeleteする
で やればメモリが必要なのは常に1曲分で済むのでは?
と 素人考えをだしてみました
たとえば サウンドNOのint型を用意して そのint型に 音楽名 ファイル保管場所をひもつけし
選択時には サウンドNOを変化させ それにたいして音楽名 コメントなどを表示させる
決定ボタンが押されたら そのファイル保管場所からロードし再生する 停止が押されたら メモリ上のファイルをdeleteする
で やればメモリが必要なのは常に1曲分で済むのでは?
と 素人考えをだしてみました
Re: 【龍神録】音楽室(Music_Room)の実装について
Σ( ゜Д ゜ ;)…!! なん…だと…。rascal さんが書きました:こんばんは 何気に思ったことなので プロのコーディングでは絶対にしないと思いますが
たとえば サウンドNOのint型を用意して そのint型に 音楽名 ファイル保管場所をひもつけし
選択時には サウンドNOを変化させ それにたいして音楽名 コメントなどを表示させる
決定ボタンが押されたら そのファイル保管場所からロードし再生する 停止が押されたら メモリ上のファイルをdeleteする
で やればメモリが必要なのは常に1曲分で済むのでは?
と 素人考えをだしてみました
その考えは、…実はあったのですが(笑)
保管場所のほうを…というのは、目からうろこです!! なんかそっちのほうがよさそうですね^^
って、これで素人考えなのですか…(汗)
私も素人なので、これって実際にありなのか? というのを熟練さんたちにお聞きしたいです。
【追記】返信遅れて申し訳ありません!!
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: 【龍神録】音楽室(Music_Room)の実装について
Dixqさんが示したページにもありますが ボタンを押してから毎回メモリに展開だと
曲のデータのサイズが大きい場合に再生ボタンを押してからのレスポンスが遅くなる可能性は割とあると思います。
ボタンを押しても反応がおそいとユーザーが「あれ?」と思うでしょう。
結局一曲だけメモリに展開するくらいなら DX_SOUNDDATATYPE_FILE でやってしまえばいいと思います。
曲のデータのサイズが大きい場合に再生ボタンを押してからのレスポンスが遅くなる可能性は割とあると思います。
ボタンを押しても反応がおそいとユーザーが「あれ?」と思うでしょう。
結局一曲だけメモリに展開するくらいなら DX_SOUNDDATATYPE_FILE でやってしまえばいいと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 【龍神録】音楽室(Music_Room)の実装について
構造体配列=テーブルの事だと思いますが、プロでも普通に使いますよ。amehirune さんが書きました:Σ( ゜Д ゜ ;)…!! なん…だと…。rascal さんが書きました:こんばんは 何気に思ったことなので プロのコーディングでは絶対にしないと思いますが
たとえば サウンドNOのint型を用意して そのint型に 音楽名 ファイル保管場所をひもつけし
選択時には サウンドNOを変化させ それにたいして音楽名 コメントなどを表示させる
決定ボタンが押されたら そのファイル保管場所からロードし再生する 停止が押されたら メモリ上のファイルをdeleteする
で やればメモリが必要なのは常に1曲分で済むのでは?
と 素人考えをだしてみました
その考えは、…実はあったのですが(笑)
保管場所のほうを…というのは、目からうろこです!! なんかそっちのほうがよさそうですね^^
って、これで素人考えなのですか…(汗)
私も素人なので、これって実際にありなのか? というのを熟練さんたちにお聞きしたいです。
【追記】返信遅れて申し訳ありません!!
rascalさんの書かれた実装方法は、ごくありうる普通の実装だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 【龍神録】音楽室(Music_Room)の実装について
調べてみたところ、DX_SOUNDDATATYPE_FILEはマクロ定義のようですね。hide さんが書きました: 結局一曲だけメモリに展開するくらいなら DX_SOUNDDATATYPE_FILE でやってしまえばいいと思います。
自分には、ちょっと使い方がわかりません^^;(呼び出し方とかはわかるのですが、どのようにすれば軽くできるのか…ということです。)
申し訳ありませんが、教えて頂けませんか?
現在、そのアドバイスを受けて、その方法でプログラムを組んでいますが、エラーが発生して先に進みません。softya(ソフト屋) さんが書きました:構造体配列=テーブルの事だと思いますが、プロでも普通に使いますよ。amehirune さんが書きました:Σ( ゜Д ゜ ;)…!! なん…だと…。rascal さんが書きました:こんばんは 何気に思ったことなので プロのコーディングでは絶対にしないと思いますが
たとえば サウンドNOのint型を用意して そのint型に 音楽名 ファイル保管場所をひもつけし
選択時には サウンドNOを変化させ それにたいして音楽名 コメントなどを表示させる
決定ボタンが押されたら そのファイル保管場所からロードし再生する 停止が押されたら メモリ上のファイルをdeleteする
で やればメモリが必要なのは常に1曲分で済むのでは?
と 素人考えをだしてみました
その考えは、…実はあったのですが(笑)
保管場所のほうを…というのは、目からうろこです!! なんかそっちのほうがよさそうですね^^
って、これで素人考えなのですか…(汗)
私も素人なので、これって実際にありなのか? というのを熟練さんたちにお聞きしたいです。
【追記】返信遅れて申し訳ありません!!
rascalさんの書かれた実装方法は、ごくありうる普通の実装だと思います。
あと3日ほど頑張ってもできなければ、エラーに関してお尋ねいたしますがよろしいでしょうか?
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※