RGSS2を知る(1)

RGSS2の実装に関して、マニュアルに書いていないことを挙動から分析する。
ネットで検索してもイマイチ出てこないから自分でやることにした。
まあ、そのためにツクールVXを買ったわけだが。
どこかにいい記事があるのを知ってる人がいたら教えてほしい。
新しいPCが来ないからノートPCで認証しちゃったよ。


では前口上から。
ツクールVXでRGSSを使っていて、よくわからないコトは無いだろうか。
たとえばdisposeメソッドは実行すると具体的に何が起こるのか、とか、Viewportってようするに何?、とか。
この記事は互換ライブラリを作ろうとして設計の判断に困った俺がRGSS2の内部実装を分析するシリーズの第1弾となる。
いいオモチャをゲットしたのでしばらく続くかもしれないし、すぐに飽きるかもしれない。
いつものように期待しないように。


さて、いまさっきツクールVXを認証したところで、とりあえずマップをいじってみて、オートタイルとはこういうものかー、とか、スクリプトエディタを開いて、ほんとにRubyで書いてあるっていうか規模小さいなーとか、そんなことを思っていたのだ。
とりあえずスクリプトを全部消して、まずは気になっていたことを実験。

c1 = Color.new(0,0,255,255)
c2 = Color.new(0,0,255,0)
bitmap = Bitmap.new(500,500)
bitmap.gradient_fill_rect(bitmap.rect, c1, c2)
s = Sprite.new
s.bitmap = bitmap


loop do
  s.flash(Color.new(255,255,255,255), 100) if Input.trigger?(Input::C)
  s.update
  Input.update
  Graphics.update
end

アルファ値でグラデーションした画像を描画して、真っ白にフラッシュだ。
フラッシュの挙動が具体的にマニュアルに書いてないから、実際どのように動くのかを試してみた。


上がボタンを押す前、下が押した直後。
指定した時間をかけて、だんだんもとの色に戻る。
これを見る限り、アルファ値は変更せず、全体の色を補正する処理のようだ。
白じゃなくて緑にすると、緑から水色っぽい色を経由して暗い青になり、明るい青に戻る。指定する色のアルファ値を低くすると緑が弱くなる。
この挙動から察するに、flashの動作は指定時間に比例して元の色の割合をあげ、指定色の割合(アルファ込み)を下げる、んでもって、最終的なアルファ値は元のままという感じになっていそうだ。
なるほど、と思ったがこれはいきなり実装がめんどくさそうだ。