RUDLを試してみた

プロの人も使っているらしいRUDL。
しろりん氏のゲーム講座もRUDLだし、いったいどういうものだろうか、と。
いつものように、ゲーム開発のハブサイトさまの比較サンプルで。
http://ruby-game-dev.org/wiki/index.php


ようするにSDLのラッパーなので、サーフェイスなどの考え方はRuby/SDLと似たような感じ。
しかし日本語の解説が見当たらない。
一応動いてはいるようだが使い方が合っているかどうかは不明。
フレームレート調整はRUDL同梱のutil/frame_timerで。
Ruby/SDLと比べるとメソッドが非常に少なく、シンプルでわかりやすい。
かわりにそのぶんできることは減っているのだろう。

require 'RUDL';include RUDL;include Constant
require 'frame_timer'
require 'sprite'

# Sprite オブジェクトの配列を初期化する。
sprites = Array.new(200){ Sprite.new }

# 画面のサーフェイスを取得する
screen = DisplaySurface.new([640, 480], HWSURFACE, 32)

# スプライトに用いる画像を読み込む。
surface= Surface.load_new "ruby.png"
surface.set_colorkey [139,0,0]

timer = FrameTimer.new(30)

# メインループ
loop do

  # windowを閉じるかESCキーが押されていたら終了する。
  EventQueue.get.each do |event|
    case event
      when QuitEvent
        exit
      when KeyDownEvent
        exit if event.key==K_ESCAPE
    end
  end

  # 画面を初期化する。
  screen.fill([0, 0, 0])

  # 各 Sprite オブジェクトに対して処理を行う。
  sprites.each do |sprite|

    # Sprite オブジェクトを更新する。
    sprite.update

    # 画面に対してスプライト画像を描画する。
    screen.blit(surface,[sprite.x, sprite.y])
  end
  screen.flip
  timer.wait_for_next_frame
end