Bunnymark


Setup

The example spawns game objects and animates them using go.animate(). An alternative bunnymark test with more options can be found here.

Scripts

bunnymark.script

local BUNNY_IMAGES = {
    hash("rabbitv3_batman"),
    hash("rabbitv3_bb8"),
    hash("rabbitv3"),
    hash("rabbitv3_ash"),
    hash("rabbitv3_frankenstein"),
    hash("rabbitv3_neo"),
    hash("rabbitv3_sonic"),
    hash("rabbitv3_spidey"),
    hash("rabbitv3_stormtrooper"),
    hash("rabbitv3_superman"),
    hash("rabbitv3_tron"),
    hash("rabbitv3_wolverine"),
}

local DISPLAY_WIDTH = sys.get_config_int("display.width")
local DISPLAY_HEIGHT = sys.get_config_int("display.height")

local SPAWN_COUNT = 1000

local function spawn(self, amount)
    for i=1,amount do
        local bunny = factory.create("#factory")
        if bunny then
            local img = BUNNY_IMAGES[math.random(1, #BUNNY_IMAGES)]
            sprite.play_flipbook(msg.url(nil, bunny, "sprite"), img)
            go.set_position(vmath.vector3(math.random(DISPLAY_WIDTH), DISPLAY_HEIGHT, 0), bunny)
            go.animate(bunny, "position.y", go.PLAYBACK_LOOP_PINGPONG, 40, go.EASING_INQUAD, 2, math.random())
            self.bunnies = self.bunnies + 1
        else
            print("Unable to create more bunnies")
            break
        end
    end
end

function init(self)
    msg.post(".", "acquire_input_focus")
    self.frames = {}
    self.bunnies = 0
    spawn(self, SPAWN_COUNT)
end

function update(self, dt)
    self.frames[#self.frames + 1] = socket.gettime()
    local fps = 0
    if #self.frames == 61 then
        table.remove(self.frames, 1)
        fps = 1 / ((self.frames[#self.frames] - self.frames[1]) / (#self.frames - 1))
    end
    label.set_text("#label", ("Bunnies: %d FPS: %.2f. Click to add more"):format(self.bunnies, fps))    
end

function on_input(self, action_id, action)
    if action_id == hash("touch") and action.released and action.y < 1030 then
        spawn(self, SPAWN_COUNT)
    end
end

If you want to play with these examples, you can get the project on Github.

Do you want to see more examples? Why not write a few yourself and submit a pull request? We love contributions.

GITHUB