mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
98 lines
2.9 KiB
Plaintext
98 lines
2.9 KiB
Plaintext
SUBSYSTEM_DEF(time_track)
|
|
name = "Time Tracking"
|
|
wait = 10
|
|
flags = SS_NO_TICK_CHECK
|
|
init_order = INIT_ORDER_TIMETRACK
|
|
runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT
|
|
|
|
var/time_dilation_current = 0
|
|
|
|
var/time_dilation_avg_fast = 0
|
|
var/time_dilation_avg = 0
|
|
var/time_dilation_avg_slow = 0
|
|
|
|
var/first_run = TRUE
|
|
|
|
var/last_tick_realtime = 0
|
|
var/last_tick_byond_time = 0
|
|
var/last_tick_tickcount = 0
|
|
|
|
/datum/controller/subsystem/time_track/Initialize(start_timeofday)
|
|
. = ..()
|
|
GLOB.perf_log = "[GLOB.log_directory]/perf-[GLOB.round_id ? GLOB.round_id : "NULL"]-[SSmapping.config?.map_name].csv"
|
|
log_perf(
|
|
list(
|
|
"time",
|
|
"players",
|
|
"tidi",
|
|
"tidi_fastavg",
|
|
"tidi_avg",
|
|
"tidi_slowavg",
|
|
"maptick",
|
|
"num_timers",
|
|
"air_turf_cost",
|
|
"air_eg_cost",
|
|
"air_highpressure_cost",
|
|
"air_hotspots_cost",
|
|
"air_superconductivity_cost",
|
|
"air_pipenets_cost",
|
|
"air_rebuilds_cost",
|
|
"air_turf_count",
|
|
"air_eg_count",
|
|
"air_hotspot_count",
|
|
"air_network_count",
|
|
"air_delta_count",
|
|
"air_superconductive_count"
|
|
)
|
|
)
|
|
|
|
/datum/controller/subsystem/time_track/fire()
|
|
|
|
var/current_realtime = REALTIMEOFDAY
|
|
var/current_byondtime = world.time
|
|
var/current_tickcount = world.time/world.tick_lag
|
|
GLOB.glide_size_multiplier = (current_byondtime - last_tick_byond_time) / (current_realtime - last_tick_realtime)
|
|
|
|
if(times_fired % 10) // everything else is once every 10 seconds
|
|
return
|
|
|
|
if (!first_run)
|
|
var/tick_drift = max(0, (((current_realtime - last_tick_realtime) - (current_byondtime - last_tick_byond_time)) / world.tick_lag))
|
|
|
|
time_dilation_current = tick_drift / (current_tickcount - last_tick_tickcount) * 100
|
|
|
|
time_dilation_avg_fast = MC_AVERAGE_FAST(time_dilation_avg_fast, time_dilation_current)
|
|
time_dilation_avg = MC_AVERAGE(time_dilation_avg, time_dilation_avg_fast)
|
|
time_dilation_avg_slow = MC_AVERAGE_SLOW(time_dilation_avg_slow, time_dilation_avg)
|
|
else
|
|
first_run = FALSE
|
|
last_tick_realtime = current_realtime
|
|
last_tick_byond_time = current_byondtime
|
|
last_tick_tickcount = current_tickcount
|
|
SSblackbox.record_feedback("associative", "time_dilation_current", 1, list("[SQLtime()]" = list("current" = "[time_dilation_current]", "avg_fast" = "[time_dilation_avg_fast]", "avg" = "[time_dilation_avg]", "avg_slow" = "[time_dilation_avg_slow]")))
|
|
log_perf(
|
|
list(
|
|
world.time,
|
|
length(GLOB.clients),
|
|
time_dilation_current,
|
|
time_dilation_avg_fast,
|
|
time_dilation_avg,
|
|
time_dilation_avg_slow,
|
|
MAPTICK_LAST_INTERNAL_TICK_USAGE,
|
|
length(SStimer.timer_id_dict),
|
|
SSair.cost_turfs,
|
|
SSair.cost_groups,
|
|
SSair.cost_highpressure,
|
|
SSair.cost_hotspots,
|
|
SSair.cost_superconductivity,
|
|
SSair.cost_pipenets,
|
|
SSair.cost_rebuilds,
|
|
SSair.get_active_turfs(), //does not return a list, which is what we want
|
|
SSair.get_amt_excited_groups(),
|
|
length(SSair.hotspots),
|
|
length(SSair.networks),
|
|
length(SSair.high_pressure_delta),
|
|
length(SSair.active_super_conductivity)
|
|
)
|
|
)
|