File tree 5 files changed +9
-2
lines changed
5 files changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -1282,6 +1282,10 @@ active_block_mgmt_interval (Active block management interval) float 2.0
1282
1282
# Length of time between Active Block Modifier (ABM) execution cycles
1283
1283
abm_interval (ABM interval) float 1.0
1284
1284
1285
+ # The time budget allowed for ABMs to execute on each step
1286
+ # (as a fraction of the ABM Interval)
1287
+ abm_time_budget (ABM time budget) float 0.2 0.1 0.9
1288
+
1285
1289
# Length of time between NodeTimer execution cycles
1286
1290
nodetimer_interval (NodeTimer interval) float 0.2
1287
1291
Original file line number Diff line number Diff line change @@ -403,6 +403,7 @@ void set_default_settings(Settings *settings)
403
403
settings->setDefault (" dedicated_server_step" , " 0.09" );
404
404
settings->setDefault (" active_block_mgmt_interval" , " 2.0" );
405
405
settings->setDefault (" abm_interval" , " 1.0" );
406
+ settings->setDefault (" abm_time_budget" , " 0.2" );
406
407
settings->setDefault (" nodetimer_interval" , " 0.2" );
407
408
settings->setDefault (" ignore_world_load_errors" , " false" );
408
409
settings->setDefault (" remote_media" , " " );
Original file line number Diff line number Diff line change @@ -36,6 +36,7 @@ Environment::Environment(IGameDef *gamedef):
36
36
m_cache_active_block_mgmt_interval = g_settings->getFloat (" active_block_mgmt_interval" );
37
37
m_cache_abm_interval = g_settings->getFloat (" abm_interval" );
38
38
m_cache_nodetimer_interval = g_settings->getFloat (" nodetimer_interval" );
39
+ m_cache_abm_time_budget = g_settings->getFloat (" abm_time_budget" );
39
40
40
41
m_time_of_day = g_settings->getU32 (" world_start_time" );
41
42
m_time_of_day_f = (float )m_time_of_day / 24000 .0f ;
Original file line number Diff line number Diff line change @@ -147,6 +147,7 @@ class Environment
147
147
float m_cache_active_block_mgmt_interval;
148
148
float m_cache_abm_interval;
149
149
float m_cache_nodetimer_interval;
150
+ float m_cache_abm_time_budget;
150
151
151
152
IGameDef *m_gamedef;
152
153
Original file line number Diff line number Diff line change @@ -1354,8 +1354,8 @@ void ServerEnvironment::step(float dtime)
1354
1354
std::shuffle (output.begin (), output.end (), m_rgen);
1355
1355
1356
1356
int i = 0 ;
1357
- // The time budget for ABMs is 20%.
1358
- u32 max_time_ms = m_cache_abm_interval * 1000 / 5 ;
1357
+ // determine the time budget for ABMs
1358
+ u32 max_time_ms = m_cache_abm_interval * 1000 * m_cache_abm_time_budget ;
1359
1359
for (const v3s16 &p : output) {
1360
1360
MapBlock *block = m_map->getBlockNoCreateNoEx (p);
1361
1361
if (!block)
You can’t perform that action at this time.
0 commit comments