Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 在线游戏中处理的成果使用了哪些设计模式/架构_Design Patterns_Achievements_Online Game - Fatal编程技术网

Design patterns 在线游戏中处理的成果使用了哪些设计模式/架构

Design patterns 在线游戏中处理的成果使用了哪些设计模式/架构,design-patterns,achievements,online-game,Design Patterns,Achievements,Online Game,有一件事总是让我好奇,那就是在线游戏如何能够实时处理真正新奇或独特的成就,并立即给你一个徽章 简单的事情,比如10次杀戮或者完成一个关卡,似乎很容易,但是像跳伞时将弹夹中的每一颗子弹射向一个人来杀戮一个人之类的事情,或者类似的事情,编程起来似乎很疯狂 他们是否有一个大处理器,可以读取所有活动的实时日志,并不断计算每一项成就?或者成就是否被编程到游戏本身,进入游戏逻辑?似乎后一种情况不会出现,因为游戏的新成就经常出现 对于这类事情是否有一个完善的模式或架构?如果我们以Steam为例,那么它们提供了

有一件事总是让我好奇,那就是在线游戏如何能够实时处理真正新奇或独特的成就,并立即给你一个徽章

简单的事情,比如10次杀戮或者完成一个关卡,似乎很容易,但是像跳伞时将弹夹中的每一颗子弹射向一个人来杀戮一个人之类的事情,或者类似的事情,编程起来似乎很疯狂

他们是否有一个大处理器,可以读取所有活动的实时日志,并不断计算每一项成就?或者成就是否被编程到游戏本身,进入游戏逻辑?似乎后一种情况不会出现,因为游戏的新成就经常出现


对于这类事情是否有一个完善的模式或架构?

如果我们以Steam为例,那么它们提供了一个API来传达您完成了一项成就,因此这种情况下的实现将在游戏端实现。在stackoverflow中也有类似的事情,但它们并不完全是实时的,我猜有一个发生的操作列表,然后一个异步进程检测到完成了什么(可能徽章有某种计数器)。关于如何实现这一点,有几种方法,但这一切都取决于上下文刚才看到的这些答案看起来不错,非常好的问题!我自己也在想这个。当然,他们使用了某种观察者模式,但我想你已经知道了。