日記(937)

<前 次>

カウンターが吹っ飛んだ

トップページを見ればわかると思いますが、カウンターが吹っ飛びました。
最近はバックアップを取ってないし、そもそも地味で目立ってないし、それ以前に私自身忘れかけてたので、もう戻さなくていいかと思ってます。
でも今後のためにロック処理はきっちりしておかないと。

それはそうと、爆ボンのページのバトルステージ4と7を詳しく書きました。
「よくばりはまれ」と「みずのせせらぎ」です。

それと、ふにゃさんのBGMの睡眠時用アレンジ、あれをMIDIファイルじゃなくてプログラムで制御することにしました。
というのも、Bomber丸Worldでも同じようなことをしようと考えていて、その練習もかねてDirectMusicToolを使ってみようと思い立ったのです。
そうでなくとも今の状態だと眠った次の瞬間に起こすとボリュームがおかしくなるので、そのあたりの不自然さの解消もかねています。

なんてひどいステージ!

でっかいステージ完成しました。
本当に作るのが楽しかったです。
その代わりテストプレイがかなり苦痛だったのですけれども。
20分かけて半分ぐらいまで上ったら操作ミスでチクリとやられてしまいましたよ。
もっともっとショートカットルートを用意したり救済手段を講じていかないと本気で嫌がらせステージになりそうです。

SetStretchBltMode

ふにゃさんの全体像画面、出来上がりました。
画面をはみ出すほど大きいステージだと縮小表示されるのですが、その縮小結果が最初やたらと黒々としたものになっていたので、どうなってるのかと思い、調べてみたら、SetStretchBltModeで縮小方法が変更できて、これの初期値が黒優先となっていたために暗い色ばかりになってしまっていたようでした。
それなりの画質で高速なものとか、高画質で低速なものなどがありましたが、通常チップは最初にマップチップそのものを高画質のStretchBltで縮小し、その結果をBitBltでどんどん使っていくという方式で速度を確保し、キャラチップのほうはその都度それなり画質のStretchBltで表示するようにしました。
なお、全体像では背景色は手抜きのため黒となっておりますのであしからず。
でっかいステージも9割方できてきました。

ところで、この高画質StretchBlt、実はTokioGLと縮小結果がほぼ同じなんですよね。
それでいてこのスピード、素人が練習で作った描画アルゴリズムとは根本的に違うのか、あるいはハードウェアで対応しているんでしょうかね。

NeoMuplは、プレイヤークラスをDirectShow、DirectMusic、普通は使わない無音の3タイプを作って、それらを一箇所で扱えるようにしていました。
DirectMusicは今のところ実装していないんですけどね。
あと、項目のプロパティの画面を作ったりしてました。
一応編集機能が、今実装できるものに関しては全部作り終わって、後はその変更結果を実際のデータに反映するところに来ています。

1173711171.png

複数行入力対応InputBox

ふにゃさんの残り一枠、コインにしようかとも思ったのですが、もともとふにゃさんは集めるゲームであり、集めなければならないものと集めたほうがいいものが混在していた場合、混乱する可能性が高いためやめておいたほうがよさそうです。
単なる1UPという線もあるのですが、ミスするとアイテムや敵の状態なども含めて全部元の状態に戻ってしまうためこのあたりの公平さを考えると実装が難しそうです。
通過するとヒントが表示されるというのもよさそうだと思ったのですが、これはこれで追加データが必要になるため避けたいところです。
冗談で、すぐ眠れるエリアというのも考えてみたのですが、空中にあった場合全然使えないし、そもそもゆっくり待って眠らせる楽しみがなくなってしまいます。
とにかく、実装が簡単で、現状のゲームに大きな影響を与えなくて、あればあったで嬉しいものが望ましいのです。

エディタのほうでは、拡張InputBoxに複数行入力機能をつけて、マップタイトルの複数行入力を可能にしました。
あと、メニューを作るだけ作って実装していなかった全体像(1.05ではメニューを消すのを忘れてました)を作り始めました。
大きすぎるマップなんかは縮小表示しますが、もう色々面倒くさいので、中層マップしか表示しないようにしています。

ソーティングとDirectMusic

こないだの限界突破したLineConstructorとByteEdit、今日アップしました。

NeoMuplのDirectMusicをどのように使うか決めるため調べものしてました。
MIDIの再生にはDirectShowよりもDirectMusicのほうが、読み込みが速かったり演奏が正確だったりして適しているのですよ。
で、DirectMusicですが、DirectX 7 for Visual Basicが、機能面や手軽さからよさそうだったので使うことにしました。
そうそう、自動ソート機能も実装しました。
ファイル名順、タイトル順、再生日時順の3つを、昇順と降順の2種類用意したので、合計で6種類のパターンから選べます。
曲を追加したときに並べ替えられるのはもちろんのこと、再生日時順のときだけ、再生するたびに並べ替えが実行されます。

IIB

うむ、とりあえずインデックスカラー・インデックスカラー・ブレンド比率が並ぶデータだから、拡張子はiibにしようと思います。
ヘッダに必要そうな情報は、まず識別情報に、インデックスカラーに使うビット数、ブレンド比率に使うビット数、画像のサイズに、圧縮方式やパレット内の色の表現方法の識別コードも必要かな。
そして拡張ヘッダ。
ヘッダの次に来るのがパレットデータで、生の色の情報。
あとは決められたビット数で、インデックスカラー・インデックスカラー・ブレンド比率を最後まで続けて、必要ならば圧縮も。
うんうん。決まってきた。

ブレンディング

ふにゃさんのとげとげの拡張をするついでに、最後に一つ余ったキャラ枠をどう使うか考えてました。
順当なところで1アップか、あるいは取らなくてもいいけど取ったバナナの数にカウントされるボーナスアイテムか、それとも他のものにするべきか、そして決まったところで、アイテムの外観はどうするか、そのあたりが決まっていないのです。

それはそうと、画像フォーマットを一つ考えてみました。
インデックスカラーの長所で、パレットを差し替えれば画像全体の色が変えられたり、パレット番号何番は服の色、などと色に論理的な意味がつけられたり、そういうところを活かしつつ、なおかつたくさんの色を無理なく表現できてインデックスカラーの苦手そうなアンチエイリアシングもしやすい形式です。
まず、パレットは意味のある必要最低限の色だけを用意しておいて、画像本体には、どの色とどの色をどんな割合で混ぜ合わせるかのデータを入れるのです。
もしかしたら似たようなのが既にあるかもしれないのでまた調べてみます…。

<前 次>