diff --git a/mods/ENTITIES/mcl_mobs/spawning.lua b/mods/ENTITIES/mcl_mobs/spawning.lua index 719a9ffa9..a78618b44 100644 --- a/mods/ENTITIES/mcl_mobs/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/spawning.lua @@ -31,6 +31,7 @@ local vector_distance = vector.distance local pairs = pairs local check_line_of_sight = mcl_mobs.check_line_of_sight +local profile = false local logging = minetest.settings:get_bool("mcl_logging_mobs_spawn", false) local function mcl_log(message, property) if property then message = message .. ": " .. dump(property) end @@ -43,7 +44,7 @@ local dbg_spawn_succ = 0 local remove_far = true -local MAX_SPAWN_CYCLE_TIME = 2.5 +local MAX_SPAWN_CYCLE_TIME = 1.65 -- 33 timesteps at 0.05 seconds each local FIND_SPAWN_POS_RETRIES = 1 local MOB_SPAWN_ZONE_INNER = 24 @@ -1138,7 +1139,15 @@ if mobs_spawn then --MAIN LOOP local timer = 0 + local start = true + local start_time + local total_time = 0 + local count = 0 minetest.register_globalstep(function(dtime) + if start then + start = false + start_time = core.get_us_time() + end timer = timer - dtime if timer > 0 then return end @@ -1146,8 +1155,12 @@ if mobs_spawn then timer = next_spawn if timer > MAX_SPAWN_CYCLE_TIME then timer = MAX_SPAWN_CYCLE_TIME end - if logging and took > debug_time_threshold then + if profile or logging and took > debug_time_threshold then + total_time = total_time + took + count = count + 1 + minetest.log("Next spawn attempt in "..tostring(timer).." previous attempt took "..took.." us") + minetest.log("Totals: "..tostring(total_time / (core.get_us_time() - start_time)).."% count="..count) end end) end