STEAM 组
Payday 2 Mechanics PD2mech
STEAM 组
Payday 2 Mechanics PD2mech
11
游戏中
63
在线
成立于
2015 年 9 月 27 日
所有讨论 > 综合讨论 > 主题详情
Finale 2017 年 3 月 29 日 上午 12:37
Question re: Yacht heist detection
I know that, like Golden Grin, detection meters on the heist have annoying "jumpiness" and delay going on, and that a factor is the single-threaded checking of meters in the heist. Is it possible that the cause on Yacht Heist is that the check is being performed for the NPCs on the top level of the boat, at McKendrick's rally?

If we could check for this, (or some other source of the latency issue), it would be great to resolve it so the heist is playable for more people.
最后由 Finale 编辑于; 2017 年 3 月 29 日 上午 12:37
< >
正在显示第 1 - 8 条,共 8 条留言
Zdann 2017 年 3 月 29 日 下午 8:18 
The NPCs on the top are technically just props with an animation (like the crowd in Alesso). I don't believe they count.
Finale 2017 年 3 月 29 日 下午 8:34 
I see. So much for that theory; I'd love to be able to nail down a cause for these persistent performance issues.
Frankelstner 2017 年 8 月 28 日 上午 6:26 
It's a rather silly issue anyway that can be fixed by commenting out the break statement below. I've also noticed that the detection calls are queued in 2 s intervals instead of the 1 s from since the last time I checked (some update <50). So even without the swamped queue, unaware NPCs essentially open their eyes once every 2 s and are blind for the remaining time. Only if they notice something interesting they will check every 0.1 s. That's plenty of time to do some crazy stuff. But there is no way to tell when they are blind and when they are not. And all cameras still check every 0.1 s no matter what.

function EnemyManager:_update_queued_tasks(t) local i_asap_task, asp_task_t for i_task, task_data in ipairs(self._queued_tasks) do if not task_data.t or t > task_data.t then self:_execute_queued_task(i_task) --break elseif task_data.asap and (not asp_task_t or asp_task_t > task_data.t) then i_asap_task = i_task asp_task_t = task_data.t end end if i_asap_task and not self._queued_task_executed then self:_execute_queued_task(i_asap_task) end local all_clbks = self._delayed_clbks if all_clbks[1] and t > all_clbks[1][2] then local clbk = table.remove(all_clbks, 1)[3] clbk() end end
最后由 Frankelstner 编辑于; 2017 年 8 月 28 日 上午 6:26
Finale 2017 年 8 月 28 日 下午 9:05 
I see, that explains all the irregular behavior! Thank you!
Hassat Hunter 2017 年 11 月 23 日 下午 2:59 
Would you mind if I include that fix in a generic fixmod (fully credited of course)?
Frankelstner 2017 年 11 月 23 日 下午 3:08 
I would not. But I think SC has mentioned that the VR beta has this part more or less fixed. So it might not be necessary to comment out that break. The delays of 2 s between checks on the other hand are probably unchanged. Cannot be bothered to check right now.
Hassat Hunter 2017 年 11 月 23 日 下午 3:27 
Hmmm, yeah, I see the break is added to another requirement in enemymanager for the VR-beta. But considering that's not expected to go live till 2018, it'll be a good fix till then.

Fairly sure the 2s thing was still there last I checked.
最后由 Hassat Hunter 编辑于; 2017 年 11 月 23 日 下午 3:27
Frankelstner 2017 年 11 月 23 日 下午 3:42 
It's just so ridiculous considering that cameras check every 0.1 s. If performance with lots of enemies was an issue, they could make a check every 0.1 s when the alarm has not gone off and 2 s or whatever time afterwards (it does not matter much at that point anyway). But they have never cared about performance or they would not have ramped up the max enemy count several times throughout the years.
< >
正在显示第 1 - 8 条,共 8 条留言
每页显示数: 1530 50

所有讨论 > 综合讨论 > 主题详情
发帖日期: 2017 年 3 月 29 日 上午 12:37
回复数: 8