「ふにゃさん」に関する日記(7)

<前 次>

穴を突くステージ

というわけで、ふにゃさんアップしました。
今回から、ヘルプに記載するバージョンごとの違いの部分を、同じ項目が続く場合はまとめて表示するようにしました。
一応広いステージも出来上がったので同梱しようかと考えていたのですが、もうちょっとステージを増やしたいと思ったので、今回は同梱を見送りました。
同じステージファイル中に含まれるそれぞれのマップは基本的に仕様の穴を突く内容になっているので、「穴」も含めてきっちり確実に動くものであることを確かめなければならないのですよ。

投稿者コメント

ふにゃさんでステージタイトルなどを表示する際、長すぎると右や両端が切れてしまうことがあったので、長すぎるタイトルは縮小表示するようにしました。
そして、ついでに長すぎるステージタイトルを必要に応じてカットするようにしました。
明日にでもアップするつもりです。

最近爆ボン動画をアップしていて、ニコニコ動画のユーザーの反応でレインボーパレスに行ったことがないというコメントが多かったので、急遽Youtubeの動画を寄せ集めて攻略動画を作ってみました。
動画自体は単なるプレイ動画の寄せ集めなんですが、それにコメントで解説をつけられるというのはニコニコならではだな、と思います。

コマ送り

ふにゃさんのFPS変更機能、ちょっとやそっとの変更ではあまり効果がないような気がしたので、コマ送りからCPUの限界まで幅広く対応できるようにしました。
あと、リプレイデータから録音用のDirectMusicセグメントを生成する方法なんかも考えたり。

UTF-8

というわけで、新ステージはいろんなものが降ってくるようになりました。
通常重力のほかでは、無重力でも一応クリア可能にはなっています。
通常だと全自動なのに、無重力だと必死で避けないといけません。
その代わり避け終われば自由に動けるんですけどね。
…ある程度は。

そうそう、掲示板をちょっとだけリニューアルしました。
いや、文字エンコードをShift_JISからUTF-8に変更しただけなんですけどね。
ただ、もともとうちの掲示板はShift_JISという文字コードに依存したデータが含まれていたので、部分的に微妙なところで実はShift_JISが残ってたりします。

とげとげだらけ

どうやら個体識別用IDを全部のキャラについて付けたらうまく動いたようです。
で、動けないステージは約20秒でクリアできるようになり、今は見た目の調整をしているところです。

不完全な再現性

とりあえず順番が問題となるのは同種同士での当たり判定を行うウナギカズラとギヤバネだけのはずなので、その部分から改良に取り掛かってみました。
でも・・・なんだかどうにも以前と変わらず動作が不定になってしまう様子・・・。
う~ん、もしかするとどこか別のところに原因があるのでは・・・?

処理順

う~ん、今まで細かいことと思っていい加減に作ってきた部分が今頃になって効いてきたようです。
ステージ開始時にキャラをマップ上に配置する際、キャラを割り当てるときのメモリアドレスによって処理順が前後してしまうため、同じプレイをしても微妙に異なる結果となってしまうことがあり、リプレイが正しく再生されないことがある問題が出てきてしまったのです。
これを機にゲームプレイにかかわる部分での処理順にプレイごとの差が出ないように、順番を意識した構造にしようと思います。

むしろ動けない

ふにゃさんの新しいステージを作っています。
広いステージがあまりにも難しくて長すぎたので、今度は何もしなくてもクリアできるくらい簡単なステージにしようと思っています。
ちなみに今回アップした画像はステージの一部しか表示してないのでこのままエディタに移してもちゃんと動きません。

1199977097.png

動くな!

ふにゃさんの追加ステージの調整をしていて、旧バージョンでも動くかどうか確かめようとしたら、バージョン1.07がフォルダ選択の画面が出たまま起動しないというバグが見つかりました。
原因はファイルの存在チェックが開発環境でしか動かないものであったことでした。
すぐに直してアップしましたが、2週間も動かないゲームを掲載してしまった申し訳ないです。
で、今は広いステージの調整も終えて、新しいステージを作っているところです。

1199890586.png

ピタゴラふにゃさん

で、キャラマップを視覚化してみたところ、1マスに複数のキャラがいるときに先に登録されたキャラがマスから外れたらそのマスにいた全部のキャラが登録抹消されてしまうという問題があったことが分かりました。
それと、ミスター・フレームが、ややこしいシステムで動いているためにキャラマップのシステムについていけず、キャラマップ上の障害物を無視してしまう、いわゆる無敵状態となってしまっていたので、そのあたりも修正しました。
で、今は広いステージの難易度調整をやっているところです。
難しく、しかし手詰まりにならず自然に進めるように作ろうとするとなかなか奇っ怪なパズルになってきます。

フィルタが消えた

うぅ・・・オミトロン終了前に手動でセーブしておかないと消えるのか・・・。

それはそうと、ふにゃさんのキャラマップがなんかおかしい件については、とりあえずまた安定しているバージョンに戻してから、描画部分を改造してキャラマップを視覚化して考えようと思っています。
キャラマップ自体がおかしいのか、キャラマップを正しく読み取れないかを判断するのです。

オミトロン

ニコニコ動画の広告があまりにも動画視聴に邪魔だったので、耐えかねてProxomitron入れてしまいました。
このソフトはブラウザとサーバーの通信の間に入って通信内容を書き換えたりできるローカルプロキシらしいです。
で、これ、がんばれば相当書き換えることもできるようで、ページのレイアウトや内容を大きく変えてしまうことすらできるようです。

ふにゃさん高速化プロジェクトは、ウナギカズラを高速化しようとしたところでおかしな動きになってしまいました。
確かに比較する順番の違いなどで異なる動作になりうることは想定していたのですが、どうにもそれ以上の、本来の使用とは全く異なる動作になっているようです。
傾向としては同じマスに複数のキャラが密集していたときに誤動作を起こしているようなのですが、そもそもそうならないためのキャラマップだったのでちょっと不思議です。

スピード0-停止-

えーっと。
フリーズしました。
エラーが起こるわけではなく応答なしになったので、どこかで無限ループに陥ったものと思われます。
ここをきっちりしておかないと高速化どころじゃないので、原因を追究しつつ試行錯誤しています。

大きすぎた変更点

当たり判定アルゴリズム変更のためキャラマップを作ろうとして、手始めにキャラクターの移動処理を根本から見直してみたら、完全に収拾が付かなくなってしまったので、いったんソースを1.07のものに戻して、もうちょっと改変が少なくなるような方法を試みることにしました。
で、キャラマップは中層マップとそっくり同じ広さになってしまい、下手な実装をすると簡単にメモリ使用量が膨れ上がってしまうので、キャラオブジェクト自体に連結リスト機能を持たせて、キャラマップが持つものはキャラオブジェクト自体への参照だけということにして、素直すぎる実装をした場合の半分以下のメモリ使用量になるようにしました。
あと、広いステージに、順路を示す矢印も置いてみようかなんてことも考えてます。

画商

ふにゃさんの当たり判定効率化のため、キャラマップを作っていました。
キャラの相互作用(ぶつかったりやっつけたりやられたり)は、ほとんどの場合、隣やすぐ近くのマスの相手にしかないので、どのマスにどのキャラがいるかというのをマップに記録しておけば、いちいち全部のキャラの中から相互作用が起こる相手を探さなくてすむので、キャラ数が増えてもそう極端には重くならないというわけです。
その代わりキャラ数が少ないときにはあまり効率的ではなくなりますが、そのあたりは本来重い処理ではないので深くは考えないことにします。
あと、広いステージの難易度を微妙に調節中です。
このステージは上るのは難しく下りるのは簡単という難易度バランスにしたいので、簡単に上れてしまう部分は難しく、下りるとミスしやすい部分は簡単にしていっています。

今日終了したメテオンもどきについてですが、見るメテオンもどきの画像生成中、ずっと白い画面なのが気になったので、画像生成中のメッセージを表示するようにしました。
もしかしたら今後も何か更新することがあるかもしれませんが、それはまたプレイできるような更新ではないでしょう。

メテオンもどき最終日

メテオンもどき終了処理作り終わりました。
時が来れば自動的にページが置き換わります。
もちろんクライアント側にロードしてしまった分についてはどうもしないので、プレイ中にいきなり画面が切り替わって終了ということはないため、最後の1プレイぐらいは何とかなると思います。
まぁ、だからといってずっとページ表示しっぱなしにして遊ぶほどの再現度じゃないんですけどね。
そんなことするぐらいならDSのを買うことをお勧めします。

ふにゃさんの重い原因については、開発当初に少し危惧していた、オブジェクト数が増えたときに当たり判定の処理時間が加速度的に増大することが問題だったようです。
これに関しては、一応解決策はあるのですが、結構大きく改造する必要がありそうで、まだ手を付けられないでいます。

重くなったふにゃさん

Vistaにしてからふにゃさんが重くなった気がしたので、無駄がありそうなところを探していました。
とりあえず実質的に空ループとなっている部分を取り除きましたが、これといって効果は上がっていないようです。

あと、HP作成論とリンク集と自己紹介のリニューアルが終わりました。

なんてひどいステージ!!

限定公開中のあの広いステージ、1時間以上掛けてがんばってたんですが、最後の一手で手順を間違え、痛恨の手詰まり!!
…泣けてきます。

なんて広いステージ!

ふにゃさんアップしました。
結局昨日の分から追加機能は付けませんでした。
で、その代わりに昔作っていまだにクリアできていない最高難易度のステージを期間限定で公開してみました。
コンパクトなステージをいくつもクリアするというコンセプトのこのゲームでは珍しい、何十分も、ことによっては何時間もかかるステージですからね。
集中力が持ちませんよ。

HTMLヘルプが作れない!!

ぬわー。BMP(を含むAVI)がボトムアップ方式でCDIB32がトップダウン方式だってことすっかり失念してましたよ!
AVIに記録してみたら上下反転してました!
で、それを直すために記録前にミラー転送したら今度は左右も反転!!
…もちろんちゃんと直しましたけどね。
で、うまく動いたのでアップしようと思ったのですが、ヘルプを最新に更新しようと思ってもHTML Hwlp Workshopをインストールしてなかったのですよ。
もちろんインストールを試みたわけですが、HHWは割と古いソフトなので、まともに日本語環境に対応してないわけです。
自動で日本語を含むフォルダにインストーラを配置して、それでエラー出してくるわけですよ。
…うん。手動でインストールしましたけどね、結局時間がなくなったわけですよ。
せっかくなので明日にもうちょっと機能を足してアップしようかなと思ってます。

<前 次>