Mapが遅い理由?
マップチップの描画はMapLayerクラス無いで、↓のような感じでSprite#updateメソッドを実装して、
Screen::updateが呼ばれたタイミングで行っています。
@spr.update = lambda {|o|
return if @eventlayer
dx = @dx.abs
dy = @dy.abs
@dx = 0
@dy = 0
if dx == 0 && dy == 0
SDL.blitSurface(@buf, 0, 0, 0, 0, o.bitmap, -@mx, -@my)
elsif dx < @cw && dy < @ch
cdraw(o)
else
draw(o)
end
}試しに、描画部分をコメントアウトしてみると、なんと50fpsが200fpsになったではありませんか!!!
ところが、ブロックがMapLayerクラスのインスタンスにアクセスすると途端に処理速度が落ちることが判明・・・と思ったら、無関係でした・・・トホホ。
これ、本格的に対応しようとすると、やっぱり時間が掛かるので、PureRubyでは限界かもしれない・・・。