rguplayer
rguplayer copied to clipboard
Sprite Drawing Benchmark
As it is still in development, it may help you, LiteRGSS2 seems to be the fastest of the bunch for now
Engine | Sprites | Frames per Second |
---|---|---|
MKXP-Z | 20,000 | 34 |
RGM | 50,000 | 33 |
LiteRGSS2 | 50,000 | 47 |
class SpriteGenerator
DEFAULT_SPRITE_COUNT = 20_000
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
SPRITE_SIZE = 32
def initialize
@sprite_count = DEFAULT_SPRITE_COUNT
@viewport = Viewport.new(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
@bitmap = nil
end
def run
initialize_sprites
loop do
Graphics.update
end
rescue StandardError
puts "\nEND\n"
end
private
def initialize_sprites
puts "Sprite Count: #{@sprite_count}"
@sprites = @sprite_count.times.map do |i|
initialize_bitmap if (i % 100).zero?
initialize_sprite
end
end
def initialize_bitmap
@bitmap = Bitmap.new(320, 320)
@bitmap.fill_rect(0, 0, 320, 320, random_color)
end
def initialize_sprite
sprite = Sprite.new(@viewport)
sprite.bitmap = @bitmap
sprite.x = rand(SCREEN_WIDTH) - SPRITE_SIZE
sprite.y = rand(SCREEN_HEIGHT) - SPRITE_SIZE
set_sprite_src_rect(sprite)
sprite
end
def set_sprite_src_rect(sprite)
j = @sprite_count % 100
sprite.src_rect.set(32 * (j / 10), 32 * (j % 10), SPRITE_SIZE, SPRITE_SIZE)
end
def random_color
Color.new(rand(256), rand(256), rand(256), 32)
end
end
SpriteGenerator.new.run