Skip to content

Commit 649211b

Browse files
committedAug 18, 2020
Allow the ABM time budget to be configurable.
1 parent 7242de1 commit 649211b

File tree

5 files changed

+9
-2
lines changed

5 files changed

+9
-2
lines changed
 

Diff for: ‎builtin/settingtypes.txt

+4
Original file line numberDiff line numberDiff line change
@@ -1282,6 +1282,10 @@ active_block_mgmt_interval (Active block management interval) float 2.0
12821282
# Length of time between Active Block Modifier (ABM) execution cycles
12831283
abm_interval (ABM interval) float 1.0
12841284

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+
12851289
# Length of time between NodeTimer execution cycles
12861290
nodetimer_interval (NodeTimer interval) float 0.2
12871291

Diff for: ‎src/defaultsettings.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ void set_default_settings(Settings *settings)
403403
settings->setDefault("dedicated_server_step", "0.09");
404404
settings->setDefault("active_block_mgmt_interval", "2.0");
405405
settings->setDefault("abm_interval", "1.0");
406+
settings->setDefault("abm_time_budget", "0.2");
406407
settings->setDefault("nodetimer_interval", "0.2");
407408
settings->setDefault("ignore_world_load_errors", "false");
408409
settings->setDefault("remote_media", "");

Diff for: ‎src/environment.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Environment::Environment(IGameDef *gamedef):
3636
m_cache_active_block_mgmt_interval = g_settings->getFloat("active_block_mgmt_interval");
3737
m_cache_abm_interval = g_settings->getFloat("abm_interval");
3838
m_cache_nodetimer_interval = g_settings->getFloat("nodetimer_interval");
39+
m_cache_abm_time_budget = g_settings->getFloat("abm_time_budget");
3940

4041
m_time_of_day = g_settings->getU32("world_start_time");
4142
m_time_of_day_f = (float)m_time_of_day / 24000.0f;

Diff for: ‎src/environment.h

+1
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ class Environment
147147
float m_cache_active_block_mgmt_interval;
148148
float m_cache_abm_interval;
149149
float m_cache_nodetimer_interval;
150+
float m_cache_abm_time_budget;
150151

151152
IGameDef *m_gamedef;
152153

Diff for: ‎src/serverenvironment.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1354,8 +1354,8 @@ void ServerEnvironment::step(float dtime)
13541354
std::shuffle(output.begin(), output.end(), m_rgen);
13551355

13561356
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;
13591359
for (const v3s16 &p : output) {
13601360
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
13611361
if (!block)

0 commit comments

Comments
 (0)
Please sign in to comment.