现在许多游戏都自带成就系统,奖励玩家完成某些任务。而stackoverflow的徽章系统正是一个这样的例子。
然而,这里存在一些问题,我无法找到好的解决方案。
成就系统必须时刻关注某些事件,比如一个游戏提供20到30个与战斗有关的成就。服务器需要检测这些事件(例如:玩家在此战斗中避免了对手的x次攻击或玩家走了x英里)一直。
- 服务器如何处理这么多的操作而不会减速甚至崩溃?
成就系统通常需要核心引擎中才会用到的数据,如果没有这些讨厌的成就,这些数据也不会被使用(例如:玩家在每场战斗中跳了多少次,你不想将所有这些信息存储在数据库中)。我的意思是,在某些情况下,添加一个成就的唯一方法就是将检查其当前状态的代码添加到游戏核心中,而这通常是一个非常糟糕的想法。
成就系统如何与保留不必要信息的游戏核心进行交互?(参见上面的例子)
它们如何与游戏核心分离?
我的例子可能看起来“无害”,但想象一下魔兽世界中目前1000多个成就和同时在线的众多玩家。