相關參考code如下:
const bool CMDBrainProcesser::UpdateLUAContex(const float& fDeltaTime)
{
m_fRemainingUpdateLUAContexTime -= fDeltaTime;
if(m_fRemainingUpdateLUAContexTime <= 0.0f)
{
static std::string s_strTargetFunctionName;
s_strTargetFunctionName = m_strCurrentStateName + "_Update";
luabind::call_function
ms_fUpdateLUAContexIntervalTime-m_fRemainingUpdateLUAContexTime);
m_fRemainingUpdateLUAContexTime = ms_fUpdateLUAContexIntervalTime;
return true;
}
return false;
}
其中每一個AI物件的m_fRemainingUpdateLUAContexTime都不同,比方第一個是0.01,第二個是0.02,第三個是0.03,以此類推,而ms_fUpdateLUAContexIntervalTime是固定的,目前是0.5秒。
這個結果算蠻能接受的,我可不想什麼事都沒做,server就已經lag成這樣(雖然AI處理的部份應該是Server負擔最重的其中之一…),接下來就是server backend viewer…
不論使用哪種 binding 方法,binding functions 的 overhead 都滿重的。
回覆刪除我想還是得盡量減少呼叫 binding functions,才比較能節省效能。
嗯!的確,如何減少call的次數是效能關鍵(尤其是per frame call)。
回覆刪除