若你的游戏服务器是使用其他语言开发的,这篇文章对你的帮助可能小一些,在我从业的这些年,早期的时候大量的游戏服务器都是使用c++开发的,特别是MMO类型的游戏。本文涉及的内容曾经在某游戏实际落地过,最核心的玩法是策划使用这套编辑器自行制作出来的,但由于涉及到具体的商业化产品,源码无法提供,只能主要讲述方法论以及提供部分无关紧要的示例代码。
c++的反射可以参考开源库:laiyongcong/cppfoundation: c++ basic library (github.com)
在游戏中,玩法通常千变万化,但是多年的总结下来后,策划的玩法思路跳不出这样一个圈圈:在特定条件下触发特定的事情,这些特定的事情触发后成为或者产生新的条件,然后触发后续的事情。这些“条件->事件”串行或并行地执行,构成了整个玩法。
游戏的条件可能是:玩家进入特定区域、怪物血量变化或者死亡、某些特定事件发生等等。
游戏的事件可能是:npc做一个表现、客户端播放一段动画、某个机关的状态发生改变、记录一个状态等等。
玩家的任务系统、副本系统、游戏世界级的地图玩法也可以采用这种方式组织,功能类似于虚幻的蓝图,但是粒度会比蓝图粗很多很多。
言归正传,我们可以把条件(Condition)封装成类,触发的事件动作(Action)封装成类,链接条件和动作构成的一个主体逻辑(Main)封装成类,一个玩法逻辑就可以用下面的图表示:

这些玩法逻辑是可以串并联起来的,组成一个复杂的玩法网络。
那这个跟C++反射有什么关系?这关系可大了,上图中的逻辑图的每个节点都需要经过反射在我们的

最低0.47元/天 解锁文章
700





