サイログ。

~雑多な記事置き場~

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では限界かもしれない・・・。