广州市番禺区钟村街市广路钟三路段9号A-8房 15615736541 jiuyou@j9.com

公司新闻

游戏机制解析课:重复通知合并计数与滑动到期——7拍窗口的十五条通知(案例20)

2026-10-29

短时间内反复出现的相同提示可以合并成一条并显示次数。关键是明确新事件是否延长显示期限,以及刚好到期时新提示算旧组还是新组。

本篇给出一份完整且可重复的虚构游戏记录。先读清规则,再尝试自行推演输入,最后逐项对照中间状态。不同作品可以选择不同约定,只有在相同前提下才能比较结果;不要只看最终数字相同就认为过程正确。

约定与原始记录

每个通知类别独立计数,事件按时刻排序。同类事件到来时,若旧组仍有效则次数加一,否则从一开始;每次到来都把该组到期时刻设为当前时刻加窗口。当前时刻等于到期时刻时旧组已经失效。

合并窗口7 [[5, '完成'], [8, '拾取'], [11, '发现'], [15, '发现'], [19, '拾取'], [19, '完成'], [21, '发现'], [25, '完成'], [27, '拾取'], [28, '拾取'], [28, '完成'], [30, '发现'], [34, '完成'], [39, '拾取'], [39, '发现']]

逐步计算

时刻5收到完成,先到期移除[],本类现计1次、到期12;所有有效组[次数,到期时刻]为{'完成': [1, 12]}。

时刻8收到拾取,先到期移除[],本类现计1次、到期15;所有有效组[次数,到期时刻]为{'完成': [1, 12], '拾取': [1, 15]}。

时刻11收到发现,先到期移除[],本类现计1次、到期18;所有有效组[次数,到期时刻]为{'发现': [1, 18], '完成': [1, 12], '拾取': [1, 15]}。

时刻15收到发现,先到期移除['完成', '拾取'],本类现计2次、到期22;所有有效组[次数,到期时刻]为{'发现': [2, 22]}。

时刻19收到拾取,先到期移除[],本类现计1次、到期26;所有有效组[次数,到期时刻]为{'发现': [2, 22], '拾取': [1, 26]}。

时刻19收到完成,先到期移除[],本类现计1次、到期26;所有有效组[次数,到期时刻]为{'发现': [2, 22], '完成': [1, 26], '拾取': [1, 26]}。

时刻21收到发现,先到期移除[],本类现计3次、到期28;所有有效组[次数,到期时刻]为{'发现': [3, 28], '完成': [1, 26], '拾取': [1, 26]}。

时刻25收到完成,先到期移除[],本类现计2次、到期32;所有有效组[次数,到期时刻]为{'发现': [3, 28], '完成': [2, 32], '拾取': [1, 26]}。

时刻27收到拾取,先到期移除['拾取'],本类现计1次、到期34;所有有效组[次数,到期时刻]为{'发现': [3, 28], '完成': [2, 32], '拾取': [1, 34]}。

时刻28收到拾取,先到期移除['发现'],本类现计2次、到期35;所有有效组[次数,到期时刻]为{'完成': [2, 32], '拾取': [2, 35]}。

时刻28收到完成,先到期移除[],本类现计3次、到期35;所有有效组[次数,到期时刻]为{'完成': [3, 35], '拾取': [2, 35]}。

时刻30收到发现,先到期移除[],本类现计1次、到期37;所有有效组[次数,到期时刻]为{'发现': [1, 37], '完成': [3, 35], '拾取': [2, 35]}。

时刻34收到完成,先到期移除[],本类现计4次、到期41;所有有效组[次数,到期时刻]为{'发现': [1, 37], '完成': [4, 41], '拾取': [2, 35]}。

时刻39收到拾取,先到期移除['发现', '拾取'],本类现计1次、到期46;所有有效组[次数,到期时刻]为{'完成': [4, 41], '拾取': [1, 46]}。

时刻39收到发现,先到期移除[],本类现计1次、到期46;所有有效组[次数,到期时刻]为{'发现': [1, 46], '完成': [4, 41], '拾取': [1, 46]}。

最后仍有效的类别为['发现', '完成', '拾取'],只有同类新事件刷新该类到期时间。

复核方法与适用范围

对每个类别单独抽出事件序列,用相邻事件间隔是否小于窗口划分组;本次属于哪组、组内第几次,应与在线合并记录一致。其他类别的事件不会刷新这一组的期限。

相同类别是否允许合并是产品约定,不能把内容不同但看起来相似的提示随意折叠。本例只记录类别标签,没有丢弃最后一条真实事件;显示到期与后台事件是否已处理也是两个不同状态。

练习时可以只改动一个输入,再观察哪一步首次出现差异。对等于门槛、重复请求、空集合和最后一步分别留一份记录;如果发现异常,应先回到单位、顺序和边界约定,避免用额外补偿掩盖前面已经发生的错误。