スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

記事ながいです

今さらながらBitmap.newのサイズ上限。16MBを超えるサイズでエラー落ちします。
ピクセル数にして、4194304までが上限ですね。よくアイテムを持ちすぎるとエラー出て落ちるとか。
なので、対策を考えてみた。

Bitmap.new(w, h) 時に w * h が4194304を越えていたら通常の処理を行うと当然落ちるので、
そのでかいサイズのビットマップをFileクラスを使ってカレントフォルダに作成、そのファイルを読み込んですり替えてしまう…という。(読み込みはサイズに関わらず問題なくできる)
読み込み後はファイルを削除して一件落着計画。

とりあえず指定サイズのビットマップファイル作成はあっさり成功。

Bitmapクラスのinitialize内ですり替えできれば一番スマートだったんだけど、どうもselfを破壊的に変える事はできないっぽい。データがどこに格納されてるのかもわからないのでお手上げ。
この時点で理想だった汎用性が大幅ダウン↓↓
しかたがないので Window_Selectable の create_contents をエイリアスすることに。

…できた。
アイテム武器防具を2000種ほど持たせてアイテム画面を開く…



すると…



うまくいった!


ただし、重いwアイテム画面開くのに2秒くらいかかる…ッ!

描画に時間がかかるのは別としてビットマップファイル作成&読み込みにかなりの時間がかかってるっぽい。ファイルの大きさも50Mbくらいあるし…
そこでピコーンと思いついた。32bitの透過特大ビットマップなんか作ってたら重いに決まってる。
特大なのは避けようがないんだから、1bitのファイルにすればいい。
透過は読み込んでからclearすればあっというまに復活できるはず。

…できた。
生成されるファイルの容量は1/16くらいにまで減った!…しかしまだ重い。
そーだ。ビットマップは圧縮できるはずだ。RLE方式というのがあったはず…
ファイルを8bitにしてRLEで圧縮すれば縦ピクセル数×4しかデータがないからかなり削減できるだろ。

…できた。
RLEで画像が生成できて、どんな特大サイズでも数10kb程度で生成できるようになった!
あれ?今度はツクールが画像を認識できない。
RLEに対応していないんだろうか。

ううう、今度は…そうだ…、pngにしてやればいい。pngもRGSSで生成はできるッ!


…できた。
生成されたpngの容量は…



なんと…



2kb!!

アイテム画面開くのもなんとか実用に足る速度になった!
ビットマップファイル君は使えない子だった…!
もっさりはするけど、ほとんどアイテム名描画にかかる時間だろう。
これはテキストキャッシュとかで対応してもらうしかないなー
と、いうことで成果物↓

アイテム画面エラー回避

さて、私は特大ビットマップの生成が成功したので次の野望へと進みますね。
【その他の作った小物とか】

スプライトムーブ

スクリプトを作る方、スプライトをなめらかに動かしたい時ってありますよね?
よく見る処理が、何らかのカウント用変数でカウントしながらループ処理で ○.x += 1 みたいな。

毎回これだととても面倒くさいので、ピクチャの移動のように簡単にスプライトを動かせるようにしてみた。
組み込みのSpriteクラスに直接突っ込んでるので、あらゆるスプライトが一行の命令で簡単に動かせます。
ほとんどGame_Pictureの処理をコピペしただけですが
---------------------------------------------------------
ゲーム高速化

たまに○○ボタンを押しっぱなしにしていると高速モードでプレイできるゲームを見るけど、
あれって素材では見かけないから、たぶん作者様が自力で書いてるんですよね?
誰でも簡単に自作ゲームに搭載できるように素材にしてみた。…小物すぎて泣けてくる

【暗号化とテストモード起動について思ったこと】
VXの暗号化されたゲームをデバッグモードで起動できるという話があるらしい。
なんでもバイナリで一つ数字を書き換えれば壁はすり抜けできるし、変数も変えまくりなんだとか。

ゲーム作者としてはなんともいえない気分になりますねー
配布時にデバッグ特有の処理を全て削除したりとか、テストモード時は強制終了させるとかもあるけど、配布の際にいちいちこの作業をしなくちゃいけなくて面倒に感じます。

実は簡単にできて、自分のテストプレイにだけは支障ない対策方法はいくつかあると思うので、一例として軽く作ってみた。
改造して色々なネタを仕込むのもいいかも知れませんね。

→テストモード制限←

コメント

Secret

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。