日記(997)

<前 次>

バグだらけじゃないか

はいはいはい~。ふにゃさんのバグを一覧にしてみたら結構沢山あるじゃないの。
そして自分で直せそうなものと直せないもの、直す気のないものなどに分けて、バージョンごとに記録してみました。
もっとも、今は先日公開した1.00と今作っている1.01しかないのですが。
せっかくなのでこういったバグや機能などのバージョンごとの変遷を表にしたページを作ってみました。
ちょっとこれはメタセコイアのページの影響受けてます。
そして、過去のバージョンの機能が見られるのなら過去のバージョンもダウンロードできるのが自然だろうというわけで、試験的に過去のバージョンもおくことにして見ました。
正直、今作っているバージョン1.01はほとんどバグフィックスのみなので過去のバージョンを導入する利益はほぼ皆無なのですが。

Bomber丸Worldです

しかし簡単なアルゴリズムでできると思っていたけど思ったよりコード量が長くなってしまった。
しかも最初間違えてZeroMemoryしちゃったためにSTLのvectorが使う直前になって中身がなくなってしまって、読み込みそのものは正しいはずなのに必ずメモリエラーが起こるという事態になっていました。
もちろんこう書いているからには既に直しているのですが。
ほかにもいろいろ細かいところで間違いなどがあったのですがとりあえず今のところ困った誤動作はほぼ起こっていません。
ついでに画像リソースがいつの間にか解放されなくなっていたバグを修正。

1137503895.png

アニメーション定義ファイル仕様書

うん、キャラグラフィック、マップキャラだけでなく一般的に広く応用できるんじゃないかと思ったので若干内容を変更して仕様を定めてみました。
開発室に詳しく載せてます。
うん、なんか他のゲームでも使えそうだ。
そもそも今回は珍しく部品から作っているので他のゲームにも使いまわしやすいようにできているんですよね(というより「他のゲーム」が他でもないBomber丸Worldなのですよ)。
極力入力の手間を省く(データ量が手動入力するには多すぎる)ためかなり省略表現に強い作りになっていたりします。
1コマだけのアニメーションとすれば静止画にもなりますしアニメデータそのものは描画を担うわけではなくいつどこの画像を表示するかという情報を管理しているだけなので、描画する側でその情報の解釈を変えてやればマップチップにもマップキャラにも顔グラフィックにも戦闘グラフィックにも特殊エフェクトにも使えるようになります。

キャラ定義ファイル

Bomber丸World、キャラグラフィックにはキャラごとに定義ファイルを用意して、それぞれのポーズ名と、そのポーズごとにどの画像を使うか(正確には画像のどの位置を切り取って使うか)、どのようなアニメーションをするか、どの程度ランダムに揺らぎを与えるか、などをデータとして定めておきます。
これにより、例えばふにゃの場合、「立っているポーズ」でたまに瞬きもしていたりしますし、キャラ一般の場合、「歩いているポーズ」で歩くアニメーションをキャラごとに定めたりできるわけですよ。
基本的にキャラグラフィック定義ファイルの書き方は、
「要素名 値1 値2 ~ "ポーズ名1" "ポーズ名2" ~」
てな感じで、要素名と値をクオーテーションで囲まずに必要数だけ書いた後、クオーテーションで囲んだポーズ名をずらずらと連ねてゆきます。
ポーズはキャラごとに任意に追加することが可能で、必須要素以外はイベントによりポーズを指定することで使います。
必須のポーズは"StopFront" "StopRight" "StopBack" "StopLeft" "WalkFront" "WalkRight" "WalkBack" "WalkLeft"の8つで、つまり、歩いていないときと歩いているとき、ということです。
ちなみに、"Common"というポーズもあって、これはポーズを定義したときに一部の要素が抜けていたりすると"Common"と同じ値だとみなされるようになっています。

ミディビアンケート中間発表

6票 編集画面すら出てこない
2票 ピアノ部分クリックで音がなり、演奏によっても音が出た
2票 ピアノ部分クリックでは音がならず、演奏では音が出た
0票 ピアノ部分クリックで音がなったが、演奏では音が出なかった
0票 どちらでも音は出なかった

「編集画面すら出てこない」ってのは問題外で考慮しないけど一応確認のため、と思って項目に入れてたんですが6割もいちゃ無視できませんね。
どうも最近のパソコンにはJREは標準では入っていないようです。
JREのダウンロードページへのリンクが必須ですね。
そして2位の「ピアノ部分クリックで音がなり、演奏によっても音が出た」というのは理想的ですが、「ピアノ部分クリックでは音がならず、演奏では音が出た」がいる以上無視するわけにはいきません(何より自分もその一人ですし)。
「ピアノ部分クリックでは音がならず、演奏では音が出た」は簡単な方法でピアノからも音が出せるようになります。
「ピアノ部分クリックで音がなったが、演奏では音が出なかった」でも音が出るようにはできますが難しいので正直いなくてよかったと思います。
「どちらでも音は出なかった」は残念ながらどうしようもないです。
いなかったのが幸い。

結論。
編集画面すら出ない人のためにJREダウンロードページ(http://java.com/ja/download/)へのリンクをつける。
そしてピアノロールから音が出ない人でもちゃんと音が鳴るように改善する。

Bomber丸WorldのグラフィックエンジンはほぼyaneDIBだけなのでさらりと実装。
しかしマップの実装に苦戦中!
なんせアニメーションして高低差もあってデータ的に前後関係を作らなくても(例えばRPGツクールやSFCのRPGなどでは「手前」にあるマップチップを「上」に置くことで見た目に正しくしている)自然な形のマップデータを与えればただしい前後関係で表示されるマップを作らなきゃならないんですから!
アニメは余裕ですが高低差と前後関係は結構悩みどころです。
高低差があれば当然高いほうを後から描くのですが、じゃあ前後関係との兼ね合いはどうなる?ってこと。
自然な形のマップデータにより、一つのマップチップの大きさが任意に変えられるようになるため、スクリーン座標でZソートして描画するとデータ的には前にあるのに後ろに描画されてしまったりすることがあるのですよ(ビルボーディングと同じ問題)。
だからマップ座標でZ(奥行き)ソートしたものを更にY(高さ)ソートすれば理想的にはうまいこと表示されるはずなのですが、それにキャラを乗せると、キャラの奥行き方向の幅によりあるZ座標の範囲でまた前後関係の誤認が起こるのですよ(ビルボーディングと似た問題)。
そのため、奥行き方向の幅を補正するために画像データに近い段階でZ方向にオフセットをかけてやり、誤認される範囲を少なくし、更にゲーム的に移動範囲に制限を設け、残った誤認が起こる範囲に入れないようにするのです。
これでおそらく見た目に問題となる範囲では前後関係の誤認は起こりえないでしょう。

それと、ぜひ付けたい映像表現が、ちびロボ!にあった、主人公が物陰に隠れるとそのシルエットが最前面に浮き出て見えるという表現。
これ、ちびロボほどじゃないにしても小さくてすぐ物陰に入って見えなくなってしまう主人公たちには必須なのだと思うのですよ。
実装はどうやればいいかな…。後で考えておこう。

色のない世界

レ、レティス強っ!
どうせ異世界とやらでレティスと対決でしょ?
なんて軽い気持ちで行ったら攻撃力、防御力ともに桁外れの強さ!
例のアポロンたちの最強モンスターチームをけしかけたらたいしたダメージを与えることもできず瀕死になって退却。
普段はどんな相手にでも余裕で150以上のダメージを与えていくアポロンの攻撃で70前後のダメージしか与えられないし、普段はどんなに強い攻撃を受けても60程度のダメージまでしか受けなかったでんすけが一発で180を超えるダメージ!
これで1ターン2回行動でもされた日にゃもう逃げ帰るしかありませんわなこりゃ。
そんな相手にその後モンスターチーム抜きで戦わなきゃならないんですから大変です。
主人公ハーゴンの攻撃がたった18のダメージ。
そんな情けないダメージはゼシカと出会う前にとっくに卒業してたはずなんですが。
そんなものだからククールの攻撃はわずか4のダメージ。
メタルじゃない相手にダメージ一桁ですよ!
涙が出てきます。
そんなことだから主砲ヤンガスの渾身の一撃も80前後のダメージどまり、ゼシカが最近覚えたメラゾーマも40程度のダメージのみ。
そしてHP・守備力共に最強のヤンガスが体力を充分残していたはずなのに1ターンで瞬殺されてしまったときには勝てる相手ではないと覚悟しましたね。
補助呪文も全く効きませんでしたし、まともなダメージを与えようとテンションをため始めたら絶妙のタイミングでいてつく波動!
全滅を確信したワレワレはせめて死ぬ前に少しでもダメージを、と、残る力全てを攻撃に集中して戦いました。
倒れる仲間、MPが残る限りザオリクで呼び戻すククール、こまめにベホマズンを唱えていたのに結局瞬殺されてしまったハーゴン、そして次の瞬間、ヤンガスの攻撃。

「レティスをやっつけた!」

1万を超える経験値。
ぶっ倒れたままのハーゴン。
進むイベント。
まだ倒れたままのハーゴン。
本当はワレワレが戦ったよりはるかに強いレティス。
自動で生き返らないハーゴン。
人質、もとい卵質をとられているレティス。
聞いてないハーゴン。
卵奪還に向かうことになったワレワレ。
イベントに完全に取り残された主人公ハーゴン。
ハーゴン…。

爆ボンのグリーンガーデンのページを少し更新しました。
パワーの取り方について質問があったのでその答えを。

なんとずさんな!

見ての通りふにゃふにゃ、最後の更新です。
シークレットを大放出して終了!
と思って添付のドキュメントを書き換えようと開いたら別の更新内容が1.06の場所に書かれているではありませんか。
なんと、更新していたにもかかわらず公開するのを忘れていたのです!
そして圧縮前の最後の確認で、アーカイブに入れるファイルだけを専用のフォルダに移動して実行。
BGM音程ずれてるし音量もめちゃくちゃ!
改良されたバージョンのBGMじゃなかったんです!
なんと、BGM改良するだけしておいて配布用データに反映するのを忘れていたのです。
まあともかく、忘れてたのをいろいろ追加して更新完了、開発終了です。
あのボスが出てくることのできるバージョンは今後やる気があれば作りましょう。

<前 次>