Game Development Reference
In-Depth Information
Updating the influence map
So far, we've seen how to configure and spread influences in isolation. The actual update
loop for the influence map combines each of these steps together. Remember that clearing
the influence map is necessary in between spreading influences; otherwise the resulting in-
fluences will be oversaturated:
function Sandbox_Update(sandbox, deltaTimeInMillis)
Sandbox.ClearInfluenceMap(sandbox, 0);
for i=1, 15 do
Sandbox.SetInfluence(
sandbox,
0,
Sandbox.RandomPoint(sandbox, "default"),
1);
end
Sandbox.SpreadInfluenceMap(sandbox, 0);
end
While this simple update scheme will work, it is incredibly CPU-intensive to calculate the
entire influence map every sandbox update. Typically, a slightly out of date influence map
will not adversely affect tactical decision making based on influence map data. As the
sandbox internally updates at a frequency independent of frame rate, we can use an up-
dateInterval time to space out each update of the influence map and keep a determin-
istic simulation:
local lastUpdate = 0;
local updateFrequency = 200;
function Sandbox_Update(sandbox, deltaTimeInMillis)
lastUpdate = lastUpdate + deltaTimeInMillis;
if (lastUpdate > updateFrequency) then
Sandbox.ClearInfluenceMap(sandbox, 0);
for i=1, 15 do
Search WWH ::




Custom Search