おまけ画像?
ふにゃさんのグラフィックやらなにやらを作っていました。
なんとなく余ったスペースがもったいなく感じたので使わなかった絵を入れてみたりけち臭く他の画像リソースも空きスペースに詰め込んでみたり。
使わない画像を入れるというのは実際のところファイル容量的にはよくないのですが。
そして、ふわふわふにゃ計画とかグラフィック差し替えようの画像も作ってみたり。
ふにゃさんのグラフィックやらなにやらを作っていました。
なんとなく余ったスペースがもったいなく感じたので使わなかった絵を入れてみたりけち臭く他の画像リソースも空きスペースに詰め込んでみたり。
使わない画像を入れるというのは実際のところファイル容量的にはよくないのですが。
そして、ふわふわふにゃ計画とかグラフィック差し替えようの画像も作ってみたり。
昨日言っていたauto_resourceですが、書き換えられるところを全部書き換えたところで、実は一番威力を発揮するはずだった場所でauto_resourceが全く役に立たず、そこで使わなかったせいでauto_resourceがその最大の特徴を活かすことができなくなり、せっかく全部書き換えたのですがまた全部書き直すことになってしまいました。
まあ、せっかくまた全部書き直すことになったので、今までともまた違う方法でリソースの効率のよい管理を考えてみました。
元々ふにゃさんのリソースは必要になったときに初めて読み込まれ、その後は必要なくなってもプログラム終了までは解放せず、ずっと使いまわすようにしていました。
そこで、必要がなくなったら解放できるように、しかし使いまわしは効率よくできるように、という2つを両立させるためにauto_resourceの利用を考えたわけです。
ところがauto_resourceの仕組みはいらなくなったリソースが増えてきたらいらないもののうち古いものから消していくというものだったのですが、増えていくべきいらないリソースはauto_resourceの管轄外でいらなくなった瞬間に解放され、一方auto_resouce適用可能なリソースはいつでも必要になる可能性が高くてあまり増えたり減ったりしないということで、どのみちauto_resourceではうまくいかないということだったのです。
結局のところよく使われるリソースはいつでもメモリ上に常駐しているということになり、それだったらいちいちプレイ中に動的に読み込んだりせずに最初に一気に全部読み込んでしまおうというのが、新しく考えた方法です。
結局一番古臭い方法に行き着いてしまったわけですが、プレイを一時中断して画像を読みにいったりしなくて済むし、一気に読み込む画像は全部同じファイル内にあるのでディスクキャッシュを使って非常に高速に読み込めるはずなので、実は一番効率がよいのではないかと思います。
実際計測してみると、読み込み時間は0.1秒程度で、GIFのデコードにそれなりの時間がかかることを考えれば、十分な読み込み時間だと考えられます。
そうそう、操作説明である操作をすると、操作説明が終わらなくなるというバグを発見したので修正しておきました。
ふにゃさんの画像をauto_resourceに移行中です。
ただ、主人公の絵だけは特別な処理をしているためにauto_resourceへの移行は無理そうです。
それと、ヒートゾーンやアイスゾーンなどの半透明グラフィックは、実行時にYGAを生成していましたが、これを最初からYGAファイルにすることによってちょっとぐらいは読み込み負荷を減らせたような気がします。
CharaBox3バージョン1.01をアップしました。
いくらなんでも改良したのに何ヶ月も放置というのはいけない気がしまして。
そうそう、今、ふにゃさんのプログラムの見直しをやっています。
何しろCDIB32を使っているはずなのにCPlaneBaseの機能しか今まで使っていなかったので。
とりあえず今度は回転系を使って何かしてみようと考えてます。
リソース関係も、Bomber丸Worldに使う予定のauto_resourceを使って色々改善していきたいと思っています。
爆ボンのアブソリュート戦の動画をアップしました。
どうにもこれもまた運がかなり絡むようで、運がよければタイム3000前半が出たり、もしかしたら3000すら切ることができるかもしれません。
そういえば今日マウスを見てきたんですが、色々あるものですね。
横スクロールもできるマウスや手に負えないほどの多機能マウスなど、色々ありました。
マウスパッド不要のレーザーマウスはちょっとほしいかも。
プロフィールの基本機能がひとまず出来上がりました。
まず、スパム対策のためフォームはname属性をスクランブルした上、フォームの並び順そのものもシャッフルして、コンピュータから見てほとんど意味のわからない、しかしそれでいて人間から見ればあまり違和感のないインターフェースにすることができました。
しかもこのスクランブル&シャッフルはフォームの構成をパラメータとして渡せば掲示板などにも応用できる優れものです。
しかも、色やアイコンを選ぶフォームは設定から自動的に内容を調べてきて適切な表示ができるように、ことにアイコンについてはJavaScriptを利用して項目を切り替えるたびにアイコンのプレビューが出るようにしました。
で、それで、いよいよプロフィール書き込みを作ろうかと思って作ったところ、記録されるには記録されたようなのですが、画面に反映されないんですよね。
どうにも特定のIDのときにクッキーに保存したデータが読み出せなかったみたいなんですね。
暗号化が悪かったのか、復号処理に問題があったのか、それともシリアライズがおかしかったのか、見当もつかなかったんですよ。
それで、とりあえず全ての元凶を暗号・復号処理だと決め付けて、それらの処理を取っ払ってみたところ、やっぱりうまくいかなかったんですね。
でも暗号化されていない分、記録されたデータは丸見えだからクッキーの内容を記録した変数を見ればわかるだろうと思ったんですよ。
すると、データ中には不自然な「\"」があったというわけです。
どうやらPHPはクッキーのデータに対しても特殊文字をバックスラッシュでエスケープする機能がついていたらしく、暗号化されたら暗号化されたで暗号化された結果が特殊文字だったり、しなかったらしなかったでデータ中に元々あった特殊文字がエスケープされ、うまく動かなかったというわけです。
そんなわけで、めでたく動くようになったはずなのでよろしければ試してみてください~。
ドラクエ8やってました。
ちょっとした発見です。
おどかして追い払った敵からは経験値はもらえないがアイテムはもらえる、というのはよく知られたことですが、メタル系の敵はおどかし損ねたときに自らの意思で逃げることはしないのです。
つまり、普通に戦えばアイテムごと逃げられて得られなかったアイテムも、おどかして逃がせば手に入る可能性が高くなるのです。
だから、経験値よりもアイテムがほしい場合なんかは、下手に戦うよりもおどかしたほうが確実ということになるのです。
もっとも、レベルも上げたいので普通に戦いましたが。
PHPのarray_merge関数、仕様上重複する配列の要素が配列だった場合、古い配列は新しい配列でそっくり置き換えられて古い配列は残らなくなりますが、その点を改善して重複する配列の要素が配列だった場合、更にその配列同士をmergeする、mixed_mergeを作ってみました。
添字が数値だった場合array_mergeと全く異なる挙動を示すのが少し問題ですが、まあ、そっちのほうがTGscriptには合っているので。