现在创建的许多游戏都有自己的成就系统,奖励玩家/用户完成某些任务。stackoverflow 上的徽章系统是完全一样的。
虽然有一些问题我无法找到好的解决方案。
成就系统必须时刻注意某些事件,想想一个提供 20 到 30 个成就的游戏,例如:战斗。服务器必须一直检查这些事件(例如:玩家在这场战斗中避免了对手的x次攻击或玩家走了x英里)。
- 服务器如何在不减慢甚至崩溃的情况下处理如此大量的操作?
成就系统通常需要仅在游戏核心引擎中使用的数据,如果没有那些令人讨厌的成就,无论如何都不需要从那里拿出来(想想例如:玩家在每场战斗中跳跃的频率,你不需要'不想将所有这些信息存储在数据库中。)。我的意思是,在某些情况下,添加成就的唯一方法是将检查其当前状态的代码添加到游戏核心,这通常是一个非常糟糕的主意。
成就系统如何与拥有后来不必要信息的游戏核心交互?(见上面的例子)
它们是如何与游戏核心分离的?
我的例子可能看起来“无害”,但想想魔兽世界目前可获得的 1000 多项成就以及同时在线的许多玩家。