【Defold】パフォーマンスを計測する
Defoldには他ゲームエンジンと同様にパフォーマンス計測ができるプロファイラが用意されています。
そもそもDefold Engineって何?という方はこちら。
目次
プロファイラの表示
-- プロファイラ表示ON
msg.post("@system:", "toggle_profile")
基本的に、どこが重いのかを確認する時にはこれを表示して確認すると良いでしょう。プロファイラを非表示にする場合はもう一度
msg.post("@system:", "toggle_profile")
を呼ぶと非表示になります。
FPS表示だけ欲しい
詳細なプロファイラは素晴らしいものですが、シンプルにフレームレートだけ表示できれば良い場合もあります。そんなときは簡単にスクリプトを書いてしまいましょう。
local M = {}
function M.new()
local instance = {}
instance.fps = 0.0;
instance.update_interval = 1.0;
instance.accumulated = 0.0;
instance.time_until_next_interval = 0.0;
instance.num_frames = 0;
function instance.get_fps()
return instance.fps
end
function instance.update(dt)
instance.time_until_next_interval = instance.time_until_next_interval - dt;
instance.accumulated = instance.accumulated + (1.0 / dt);
instance.num_frames = instance.num_frames + 1;
if instance.time_until_next_interval <= 0.0 then
instance.fps = instance.accumulated / instance.num_frames;
instance.time_until_next_interval = instance.update_interval;
instance.accumulated = 0.0;
instance.num_frames = 0;
end
end
return instance
end
return M
1フレームに1度だけupdate(dt)を呼びます。get_fps()で現在のフレームレートが取得できます。
local mira_fps = require("mira.fps.fps")
function init(self)
self.fps = mira_fps.new()
end
function update(self, dt)
-- FPS取得!
print(string.format("fps: %s", self.fps.get_fps()))
self.state.update(dt)
end
ゲーム専用のDebugメニューなどに表示したい時に使えます。