忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ココ最近、原因不明で突然落ちるという御報告を何件か頂いていました。
しかし私の環境では再現できず、原因がわからずじまいだったのですが
コメント欄にてハリコさんがTSSフォルダを削除すると、落ちるバグは発生しなかったと
御報告いただき、それならば試しに音楽をストリーム再生にしてみようかと思って
音楽の再生方法をOGGファイルによるストリーム再生に変更してみました。

Solid State SURVIVOR Ver3.6(右クリック→対象をファイルに保存で保存して下さい。20M程度あります)
内容はHSPコンテストに出した物と変更はありません。
今まで突然落ちるバグが発生していた方、大変お手数なのですが
このファイルを実行してみて、バグが発生するかどうか試してみて頂けませんでしょうか?
バグチェックさせているようで申し訳ないのですが、私の方では確認のしようがないので
藁にもすがる思いなんです。

で、音楽をストリーム再生しようと思ってまず思いついたのがMP3による再生です。
ですが、あまり詳しくはわからないのですが権利?著作権?か何かの関係でMP3の使用は
あまり好ましくないようで、MP3よりはOGGの方が権利などを気にせずに使用出来るようです。
そこで、HSP3.1に標準で付属しているHSPOGG.DLLを使ってみたのですが
どうやら、まだバグがあるようで上手くなったり鳴らなかったり、ループしたりしなかったりで
イマイチ使い勝手が良くありませんでした。

ここでフト思いました。wavファイルで再生させれば良いんじゃないかと。
で早速wavファイルを作成してみました。
TSSファイルをwavに変換するには、偽TCPを使うのが便利です。
2007_11_61.jpg
テキストをコピペして、ソフトの上で右クリックすると「wavファイルへ書き出し」と言う項目が
あるので、それをクリックすればwavファイルに変換してくれます^^
ですが、ここで生成されるwavファイルは44100Hz 32bitというちょっと変わった?ファイルで
普通のプレイヤーでは聴けない事が多いです。(実際、私も最初は聴けませんでした)

普通は44100Hz 16bitなので32bitから16bitに変換する必要があります。
この変換にはAudacityが便利です。
2007_11_62.jpg
私も今回はじめて知ったのですが、VSTプラグインにも対応しており
かなり使えそうなソフトだな~と思いました。
ちなみに変換は、波形表示の左側をクリックしてはサンプルファーマットを設定で変更出来ます。

で、無事普通に聴けるwavファイルにはなったのですが、全部使う曲を1ループ分録音しただけで
200Mくらい容量があります。
さすがにコレではアップ出来ないので、我慢の出来る限界ぎりぎりまで音質をさげてみました。
22050Hz 8bitにしてみたのですが、それでもまだ35Mくらいあり小さいとは言えません。
まぁ、とりあえず再生させてみようと思って、HSP DirectSound Extensionを使って再生
させてみたのですが、ここで問題が・・・

私の作った曲には殆ど前奏があります。再生の流れとしては前奏~Aメロ~Bメロ~サビ~Aメロに戻る
って感じにしたいのですが、そんな命令は見当たらず、どうすれば???となってしまいました。
ds_loopで検索してみるとリンク先のPlayLoud!!さんの所でds_loopの検証をされていました。
で、結局はds_getpを使用すれば、出来ない事はないが環境によってはループが上手く出来なかったり
ループポイントを指定するのも大変だったりと、イマイチしっくりこない感じ。

じゃぁいっそゲーム中に使う時間分のループを録音して、OGGで鳴らすしかないなぁ~って事になって
OGGに変換してみると、全体で18M程度しかない・・・って1ループのwavより全然小さい!
しかも、こっちの方が音質は良いし、これはOGGで演奏するしかない!ループとか考えなくてよい
ので楽だし(笑)と、良い事づくめに思えてきました。

ちなみにwavファイルの編集には定番のサウンドエンジンフリーがお勧め。
2007_11_63.jpg
とてもフリーとは思えないくらい高性能で、フェードイン、アウトやらエフェクト掛けたりとか
全体の音量変えたりとか、ループを増やしたりとか、やりたいと思った事は多分殆ど出来ます。

で、OGGを再生させようと思ってプラグインを探してみました。
その中で良さそうだったのがK-Kさん作の「Ogg Vorbis 再生プラグイン Ver 0.2  for HSP
なかでも、ds_tell命令(再生位置取得)とds_seek命令(再生位置指定)がよさげやな~と
思ったんですが、この命令は結局上手く動いてくれませんでした。残念。

ですが、OGGファイルの再生はバッチリできますのでご安心を。
でも、このDLLを導入するに当たってちょっと苦労したので、その辺を書いてみます。
まず、スクリプトの先頭に#include "ds_play.as"として導入するのですが、実行してみると
symbol in use in line 6とエラーが出て動きません。
なんでや?と思って調べてみると、どうやらdsoundex.asと競合?してるらしく
HSPフォルダのcommonにあるds_play.asとdsoundex.asを見比べてみると
おなじ関数を#funcしている部分があり、その部分が上手く動かない原因のようでした。
なので、その同じ部分の命令を書き換えると上手く動くようになりましたよ。
具体的にはds_initとds_playとds_stopとds_freeの新規名称を変更すればOK。

で、このDLLでOGGを再生する場合、メモリに読み込んで再生する方法と、演奏する時に
読み込んで再生する方法とがあるのですが、メモリに読み込んで再生させる方法だと
なぜか音飛びが発生してしまう場合があったので、再生時に読み込ませる方法にすれば
私のパソコンの場合はOKでした。
file0="title.ogg"
ds_open 0,file0
 if stat!=0 : dialog "ファイルが開けません",1:end
 ds_play 0,0
みたいにすれば再生されます。
ただ、他のパソコンでもちゃんと再生されるのかは不明なので、ちょっと不安ではあります^^;
(家のパソコンではちゃんと再生されましたが)
ストリーム再生の場合は、ステージ終了時にフェードアウトなんかも出来そうなので
これで、勝手に落ちるバグがなおるんだったら本格的にOGGに変更しようかな?と思っています。

そして、リプレイがずれる原因は、ここ数日悩んでますが未だわからず。
でも、以前公開したVerではずれないので、何が原因があるはずだと思って色々と試してるんですが
直らないんですよね・・・
このままだと先に進めない感じなので、とりあえずこの問題は置いといて、先を作って行こうかと
思っています^^;

PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
無題
うおっ、全く落ちない! 落とそうと思っても落ちませんw
一番の安定バージョンじゃないでしょうか。
リプレイのバグは、OSで違いがでるとなると、かなり厄介な問題ぽいですね
NONAME 2007/11/07(Wed)20:05:17 編集
無題
うちでもtssによる強制終了が起こっていた者です。
その強制終了も起きる確立は稀だったんですが、
今回のバージョンをやってみた限りではまだ落ちていません。

それよりも、ストリーム再生になったことで処理が軽くなったような気がしますよ。

あと、最初のkt softwareのロゴが出る直前に
一瞬タイトルBGMが鳴って毎回ビックりしてしまいます。
ASD 2007/11/07(Wed)22:10:15 編集
無題
NONAMEさん>
確認して頂きありがとうございます。
ちゃんと安定してプレイ出来たようで良かったです^^
リプレイのバグはホント厄介なんですよ・・・
ここ数日はパソコン2台並べて悩みまくってます^^;

ASDさん>
確認して頂きありがとうございます。
こちらも安定してプレイ出来たようで良かったです。
ロゴが出る時に一瞬BGMを鳴らさないと(読みこまないと)何故か音飛びが発生してしまったので、一瞬鳴らしているのですが、ボリューム指定で0にしておくのを忘れていました。
(というか、家ではなにも鳴らないので気づきませんでした)
修正しておきます。御報告ありがとうございましたm(_ _)m

あと関係ないですがSTORM ASSAULTプレイさせてもらいました。
操作感、グラフィック、音楽ともに良く出来ていてカッコイイですね~。
ボスが死ぬ時のエフェクトとか、とても凝ってて好きです。
是非、ボス戦のみならず普通のステージをプレイしてみたいと思ったので、開発がんばって下さい^^
kt. 2007/11/08(Thu)01:57:09 編集
この記事へのトラックバック
この記事にトラックバックする:
Twitter
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]