1 / 11

プロジェクト演習 Ⅳ ・ Ⅵ インタラクティブゲーム制作

プロジェクト演習 Ⅳ ・ Ⅵ インタラクティブゲーム制作. 第 6 回 サウンド. 今日の内容. サウンド お待ちかね! BGM 、 SE 、 3D サラウンドまで. サウンドを扱う API. DirectSound(3D) Windows 環境ではスタンダード なんだけど、 Vista 以降切り捨ての方向に … SDL_mixer 機種非依存で、マルチメディア全般をサポート ライセンスの関係がめ んど くさい … OpenAL マルチプラットフォームでライセンスフリー DirectSound との互換性も考慮されており、 今後のスタンダードとして有力株.

libba
Download Presentation

プロジェクト演習 Ⅳ ・ Ⅵ インタラクティブゲーム制作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. プロジェクト演習Ⅳ・Ⅵインタラクティブゲーム制作プロジェクト演習Ⅳ・Ⅵインタラクティブゲーム制作 第6回 サウンド

  2. 今日の内容 • サウンド • お待ちかね! • BGM、SE、3Dサラウンドまで

  3. サウンドを扱うAPI • DirectSound(3D) • Windows環境ではスタンダード • なんだけど、Vista以降切り捨ての方向に… • SDL_mixer • 機種非依存で、マルチメディア全般をサポート • ライセンスの関係がめんどくさい… • OpenAL • マルチプラットフォームでライセンスフリー • DirectSoundとの互換性も考慮されており、今後のスタンダードとして有力株

  4. OpenALを使ったプログラミング • FKのライブラリパッケージ内にOpenALもセットにしてあります • プロジェクトを作る時に「OpenALを使用する」と「OggVorbisを使用する」にチェック • 既に作ってあるプロジェクトの設定変更はプロジェクトのプロパティ→リンカ→入力→追加の依存ファイル、に対して以下を追加 • libvorbisfile.lib libvorbis.lib libogg.lib • EFX-Util.lib alut.lib OpenAL32.lib

  5. DLLへの依存が発生します • 「OpenAL32.dll」「alut.dll」「libogg.dll」「libvorbis.dll」「libvorbisfile.dll」が必要 • 「FK_VC08/bin」フォルダ内にある • 実行パスの通ったフォルダに配置する • Visual Studio上から実行する場合 • プロジェクトファイルと同じフォルダ • EXEを直接実行する場合 • EXEファイルと同じフォルダ

  6. 補足:パスについて • ファイルを読み込むプログラムの場合、Visual Studioから実行する場合と、EXEを直接実行する場合とで、相対パスの基準位置がズレます • 両方にデータを置くのは面倒なので… • EXEを実行する時はプロジェクトのフォルダにコピーしてくる • プロジェクトの設定を変更して、VS上から実行する場合の基準位置を揃える

  7. 今回のクラス構成 • BGM用 • fk_AudioStream • Ogg形式専用 • SE用(どちらも関数は共通) • fk_AudioOggBuffer • Ogg形式用 • fk_AudioWavBuffer • Wav形式用

  8. BGMと効果音の再生形式の違い • BGMはファイルサイズが大きい • 少しずつ読み込みながら再生する • ストリーミング再生処理と呼ぶ • 生Waveは大きすぎるのでOggを使うこと • SEはファイルサイズが小さい • 一気にメモリ上に読み込んで再生する • WaveでもOggでも使用可

  9. APIは至極単純 • open • ファイルを読み込む • play • 鳴らす • 鳴らし続けたい間呼び続ける必要がある • pause • 止める • seek • 指定位置へ頭出し • tell • 現在再生位置を取得 • end • 再生を打ち切り、読み込んだ内容を破棄 • setGain • 音量調整(0.0~1.0) • getGain • 音量取得

  10. ちょっと不安定な機能ども • setLoopMode • ループ再生の設定 • setLoopArea • ループ範囲の指定 • 現状ループ開始地点のみ有効 • tellで取得できる再生時間に若干のズレが生じる • それに伴ってループ再生の開始地点も厳密な位置指定は無理 • そのうち直します

  11. 3Dサラウンド • Buffer再生クラスの方は3次元座標を与えることでサラウンド表現が可能 • setPosition()で定点指定 • setModel()で与えたモデルの位置に追従 • setReferenceDist()で音の届く距離を設定 • fk_Audio::setListenerModel()でリスナー(多くの場合はカメラモデル)を設定

More Related