游戏机制笔记:收集任务如何忽略重复触发——6种目标与17次触发(例15)
一个道具被多次触发提示,并不代表收集到了多个不同道具。对要求不同收集物的任务,保存已经领取的唯一标识比只累计触发次数更可靠,也方便处理重复接触和读档后的回调。
下面使用一组独立练习数据,说明输入、规则、处理顺序和输出之间的关系。建议先遮住结果自己推演,再逐步对照;如果出现差异,应先定位第一处不同,并检查边界条件,不要只把最后的答案改成一样。
规则和数据
本例A至J代表十个不同收集物,开始时已经拥有其中两个。每次触发一个标识,只有此前没有拥有的才增加进度。达到目标数量后仍保留完整集合,不消费收集物,也不会重复发放任何奖励。
起始收集物['H', 'J'],要求6种 触发次序['B', 'C', 'G', 'C', 'E', 'B', 'H', 'A', 'C', 'E', 'A', 'F', 'H', 'H', 'D', 'F', 'F']
逐步推演
第1次触发B:首次拥有,进度增加;现在3/6,目标尚未满足。
第2次触发C:首次拥有,进度增加;现在4/6,目标尚未满足。
第3次触发G:首次拥有,进度增加;现在5/6,目标尚未满足。
第4次触发C:已拥有,忽略重复;现在5/6,目标尚未满足。
第5次触发E:首次拥有,进度增加;现在6/6,目标已满足。
第6次触发B:已拥有,忽略重复;现在6/6,目标已满足。
第7次触发H:已拥有,忽略重复;现在6/6,目标已满足。
第8次触发A:首次拥有,进度增加;现在7/6,目标已满足。
第9次触发C:已拥有,忽略重复;现在7/6,目标已满足。
第10次触发E:已拥有,忽略重复;现在7/6,目标已满足。
第11次触发A:已拥有,忽略重复;现在7/6,目标已满足。
第12次触发F:首次拥有,进度增加;现在8/6,目标已满足。
第13次触发H:已拥有,忽略重复;现在8/6,目标已满足。
第14次触发H:已拥有,忽略重复;现在8/6,目标已满足。
第15次触发D:首次拥有,进度增加;现在9/6,目标已满足。
第16次触发F:已拥有,忽略重复;现在9/6,目标已满足。
第17次触发F:已拥有,忽略重复;现在9/6,目标已满足。
最终拥有['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J'],新增7种,重复触发10次。
如何复核与应用
对操作记录的每个前缀求不同标识的集合,再与起始集合合并。集合大小应等于当时进度;调换重复触发的先后不应改变最后结果,但首次达到目标的时刻可能不同。
唯一标识需要在重复接触时保持稳定,若每次接触都临时生成新标识,集合也无法识别重复。本例特意把物体身份与触发次数分开,让任务进度的含义保持一致。
这是一套明确限定的教学模型,实际作品可能采用其他约定。记录实验时,保留原始输入、每步状态以及规则版本;调整一个条件后重新演算,并检查起点、终点、重复输入和刚好位于边界的情况,才能知道差异来自设计还是计算。
