日記(935)

<前 次>

オートセーブ・オートロードのAutoTextFile

日記のメニューの過去ログとカテゴリの表示を改善しました。
IEではセキュリティエラーが出ませんし、火の狐でもちゃんと動きます(スタイルは崩れますが)。

Bomber丸Worldのほうはというと、HTML表示の最終チェックをして、Wikiにアップしておきました。
それはそうと、これを作るときに副産物でできた、エラーログを監視するためのソフト、AutoTextFileをちょっとアップしてみました。
やっつけで作った手抜きソフトなので更新履歴に入れてませんが、まあ、ログ監視とか、メモ程度なら便利なんじゃないでしょうか。

NeoMuplとかミディビとかもいじってみたいところです。

ところで今日のトップページでのちょっとした冗談、見てくれた人はどのくらいいたのかな。
やっぱり嘘の閉鎖告知は周りへの迷惑が大きいと思うので、その逆をやってみたんですよ。
あのページに書いたとおり、当分閉鎖するつもりはないです。
少なくとも来年の8月までは存続しているはずです。

文字数とバイト数

トップページのカウンターを強化しました。
結局ロック処理は行わず、開いた結果が変だったらしばらく待ってもう一度読み直し、それでも変ならバックアップから読みにいくという方式にしました。
バックアップも壊れていたらもうカウントは諦めます。

ところでBomber丸WorldのHTML表示、どうにも不安定だと思っていたら、配列の大きさ決定のところで、バイト数でカウントすべきところを文字数でカウントしていたため、長いマルチバイト文字の文章だった場合メモリエラーが起こっていました。
昨日の時点で把握できなかったのは、部分文字列のためのバッファに全体のデータを入れていたために、部分文字列のバイト数<全体の文字数となっていたからでした。
あと、タグの後の最初の1文字をうまく自動改行できなかった問題を解消しました。

1175352231.png

良く頑張った自分

Shift_JISのデータがどんな範囲を取りうるかをあまり意識していなかったため嵌りかけました。
読み込んだ1バイトがマルチバイト文字の1バイト目の可能性がある間はスキップするという処理を書いていたのですが、実際には、マルチバイト文字の2バイト目はどんなデータが来てもよいので、「1バイト目にあった場合はマルチバイト文字の1バイト目として機能するデータ」が2バイト目に来る可能性もあったわけで、そういうのまでマルチバイト文字の1バイト目として解釈するとまともな文字列として矛盾が出るわけです。
だから、直前に見たのがマルチバイト文字の1バイト目ならば次は1バイト目じゃないという結果を返す関数を作ってみたのですが、この関数が、理由はよくわかっていないのですがあるタイミングで判断を誤って逆の結果を返してしまい、結果としてそれが原因だとは想像もつかないエラーが出てしまい、根本的な原因を見つけるのに時間がかかってしまいました。
結局のところ、マルチバイト文字の1バイト目が来たら忘れないうちにさっさと2バイト目を読み込んでしまうことでこの問題は解決しました。
そんなわけで、表示に関してはyaneTextDrawよりも充実したものが出来上がりました。
表示結果がイタリック体や打消し線・下線付きでも正確であることや、理屈の上ではyaneTextDrawより数倍画像生成が速く、解像度変化への対応も自動で可能であり、「外字」という特別な枠組みを設けずに素直にimgタグで画像の表示が可能で、テキスト表示の拡張であるがゆえにただの文字列からある程度自由な装飾まで可能であり、自然な形で自動改行もされ(ただしワードラップは未対応のはず)、セリフ表示への利用向けに特定文字数相当の部分のみの表示などなど、RPGのセリフ枠に使うためにかなりyaneTextDrawとは違うものになりました。
まあ、良く頑張った自分。ということで。

イタリック体の問題

なーんかBomber丸WorldのHTML表示、文字列の大きさの計算で手間取ってます。
とりあえずGetTextExtentExPoint使ってみるかーというところで、戻り値のそれぞれの文字までの距離の配列alpDxはマルチバイト文字に対してどうなるかがわからないとか、まあ、そんなところなんです。
あと、HTML解析で一部の重要な実体参照が使えるようになったりもしました。
なんというか、イタリック体の処理が面倒ですね。
あまり使いどころがないのに!

ParserとRenderer

日記PHPに既に書いた日記の編集機能をつけました。
以前に編集フォームだけ作って放置していたのをやっと実装できました。

で、Bomber丸WorldのHTML表示、内容的には別に進展してないんですが、HTML解析の部分と、解析結果から画像を作る部分が、両方ともそれなりに複雑で、そして完全に切り離せそうな処理だったので、HTML表示クラスのアシスト用として別のクラスに切り離しました。

おまえがゆく道

やぁ。メテオスの全惑星のBGM録音し終えましたよ。

・ブラーボ(ジオライト).wma
最初はやっぱりコイツでしょう。
オンラインでは二千円もするため買ってないんですが、どう変わっているのでしょう。

・ファンキ~ホ~ン(ビュウブーム).wma
ジオライトに負けず劣らず陽気なヤツです。
嫌でも常時アクセルになってしまいます。

・自然の楽園(サボン).wma
ゲーム音楽に聞こえない、というかそもそも音楽にすらなっていません。
これ流すと飼ってる鳥たちが大騒ぎします。

・異星人(ギガントガッシュ).wma
逆に誰が聞いてもゲーム音楽と思いそうなものを。
スーパーロケット最高。

・ユーロピアン(レイヤーゼロ).wma
全消しできそうで失敗しやすい惑星でした。
粘りすぎは自滅のもと!

・電磁色(グランネスト).wma
地味だが着実に打ちあげ続けるメカペット。
危ないときは嫌な音が出ます。

・ナンバー5(ヒュージィ).wma
001番のBGMが好きなんですがメテオ数の調整が難しいですね。
ごぉぉ~ん!ぼわぁ~ん!

・体内バブル(アーニマ).wma
初めて聞いたときは生々しいサウンドを気味悪がったものでした。
すーほっ、はーっ。すーほっ、はーっ。すーはーすーはー…

・ファミコミック(メックス).wma
代表的なピストン惑星です。
ファミコンっぽい曲名ですがファミコンには出せない音が大半です。

・メイジャー(メガドーム).wma
メテオスオンラインでピストンができるようになった惑星です。
メガドーム球場へようこそ!

・大地のリズム(ウドー).wma
たった一度のピストンをいかに長く続けるかが鍵となる惑星です。
レアメタルが来て死に掛けました。

・アラーラー(ダウナス).wma
一番ピストンに成功しやすい惑星ですね。
私はこれで500万点出しました。

・メタリア(グラビトール).wma
二次点火以降でないと飛ばない変則的な惑星。
3分以降、二次点火する暇がなくなるんですけどね。

・荒野のカウボーイ(アナサジ).wma
攻撃力に優れた惑星らしいです。
個人的にはオンラインのほうが曲は好きかな。

・キララ(ラスタル).wma
なんというか、細かくて硬いいろんなもの、そんなイメージ。
カタマリ降下と着地の音が好きなんですよ。

・マジカルスピード(ワイヤロン).wma
初遭遇時、あまりに飛ばなかったのでシュートで後押ししたものでした。
カタマリが崩れるバグはここが特にひどかったように思います。

・ブービー(ブビット).wma
たたったたったたぶぁーぶぁー。
燃えカスを溜めすぎないことが大切ですね。

・ふゆのゆきづれ(フリーザム).wma
惑星防衛力ナンバー1、雪と氷の惑星です。
なんというか和風。

・ステッピン(フォルテ).wma
タテだとむちゃくちゃぶっ飛ぶ星です。
感じのいいジャズですね。

・よみがえれ!(コロニオン).wma
ピョンピョン跳ねる系の惑星ですね。
元のコロニオン星はどうだったんでしょうね。

・恐怖の館(ゲルゲル).wma
粘度の高いマグマの惑星です。
なぜかホラー仕立ての寂しげな曲です。

・ロック魂(ファイアム).wma
サラサラ溶岩の炎の惑星です。
いかしたロックです。

・トランスペース(ヒートヘッズ).wma
白熱しすぎて湯気が出そうです。
「臭い」という声が聞こえるとの噂です。

・カフェでボッサ(サードノヴァ).wma
白熱どころか蒸発どころかプラズマ化しちゃってます。
生まれたばかりのこの星にはボサノバです。

・ボンゴ(ジャゴンボ).wma
ジオライトいじめ常連さんの一人でした。
この音楽はケチャというそうです。

・シャイニング(オレアナ).wma
ゆったりとした挙動の水中惑星です。
明るい曲はいいですな。

・ガララン(ケイビオス).wma
安くしてよ少しぐらい。安くしてよ少しぐらい…
もう少し負けて。もう少し負けて。ただでくれ。ただでくれ…

・独音楽隊(フロリアス).wma
ファンファーレらしいファンファーレはいいですね。
花の惑星なのに結構な攻撃派です。

・スクラッチショー!(ルナ=ルナ).wma
落ちる途中のメテオで画面が埋まる変わった惑星です。
塊の落下も遅く傍から見るより難しい惑星でした。

・休日の歌声(スターリア).wma
女神スターリアの住む巫女さんの星。
いや、ほんと真面目ねー。嫁さんにほしいよ。

・時空空間(ヘブンズドア).wma
宇宙最強七賢さんのテーマ。
わけのわからない呪文でメテオを消し飛ばします。

・惑星メテオス(メテオス).wma
宇宙の災厄全ての元凶、つまりラスボス。
一番一般的なゲームに近い音の使い方をしています。

CDIBForResource

HTML表示のうち、imgによる画像表示はauto_resourceを使うことにしたので、auto_resourceの画像用カスタマイズバージョンを作っていました。
で、ついでにサウンド用も作ってやろうと思ったのですが、こちらは終了時にメモリエラーが出てうまくいきませんでした。
どうにもプログラムの最後の最後にメモリ解放しようとすると、もう既になくなっているコンポーネントにアクセスしようとして失敗しているらしく、そのあたりをうまく回避できるように試行錯誤していたのですが、そうすると今度はどうしても別のところで別のエラーを起こしてしまい、結局元のサウンドが使えない状態から進展はありませんでした。
まあ、CDIB32用のができたのでそれはそれで進展だったのですが。
さて、それじゃ大きさ計算のほうも進めておくか!

<前 次>