TIC-80,fpsと使用メモリの表示

2020年6月7日

fantasy console gamedev Lua TIC-80

t f B! P L
TIC-80でゲーム作っていたとき、最初のほうにcollisionの処理がどれだけ回るか調べたりしていたので、パフォーマンスが落ちていないか、fpsを表示するところからやりました。メモリはメモリオーバーで死んだのを観測して、その時に追加しました。メモリはあまり気にせずテーブルにどんどん積んでいる感じありますね。


fpsの表示

TIC関数は60fpsで呼ばれます。time()関数で経過時間をmillisecondsで取得できるので、TIC関数の先頭で、前フレームの経過時間と現フレームの時刻の差分をとって、デルタタイムやfpsを計算しています。
prev_time=time()/1000
frame_time_sum=0
frame_times={}
FPS=0

function TIC()
	-- calc fps
	local ct=time()/1000
	local dt=ct-prev_time
	prev_time=ct
	frame_times[#frame_times+1]=dt
	frame_time_sum=frame_time_sum+dt
	local frame_num=15
	if #frame_times > frame_num then
		frame_time_sum = frame_time_sum-frame_times[1]
		remove(frame_times,1)
	end
	FPS = frame_num / frame_time_sum

	-- ゲームの処理
 
	print(string.format("%6.3f",FPS), 0, 0) end
end

使用メモリの表示

luaのcollectgarbage("count")で、luaが使用しているメモリがキロバイト単位で取得できるのでそれを表示しています。
	if _DEBUG then
		local memuse=collectgarbage("count")
		print_dbg(string.format("mem:%6.1fKB",memuse),0,8+6)
	end

まとめ

少し長めの開発をする場合、開発の初期段階で表示しておいて、メモリリークしてないか、パフォーマンス落ちてないか、継続的に観測しておくのがよいと思います。パフォーマンスに関して、細かい処理単位で計測などは行ってないですが、time関数で括ることで計測するものを作成できると思います。


QooQ