基于c++反射实现游戏逻辑的编辑

若你的游戏服务器是使用其他语言开发的,这篇文章对你的帮助可能小一些,在我从业的这些年,早期的时候大量的游戏服务器都是使用c++开发的,特别是MMO类型的游戏。本文涉及的内容曾经在某游戏实际落地过,最核心的玩法是策划使用这套编辑器自行制作出来的,但由于涉及到具体的商业化产品,源码无法提供,只能主要讲述方法论以及提供部分无关紧要的示例代码。

c++的反射可以参考开源库:laiyongcong/cppfoundation: c++ basic library (github.com)

在游戏中,玩法通常千变万化,但是多年的总结下来后,策划的玩法思路跳不出这样一个圈圈:在特定条件下触发特定的事情,这些特定的事情触发后成为或者产生新的条件,然后触发后续的事情。这些“条件->事件”串行或并行地执行,构成了整个玩法。

游戏的条件可能是:玩家进入特定区域、怪物血量变化或者死亡、某些特定事件发生等等。

游戏的事件可能是:npc做一个表现、客户端播放一段动画、某个机关的状态发生改变、记录一个状态等等。

玩家的任务系统、副本系统、游戏世界级的地图玩法也可以采用这种方式组织,功能类似于虚幻的蓝图,但是粒度会比蓝图粗很多很多。

言归正传,我们可以把条件(Condition)封装成类,触发的事件动作(Action)封装成类,链接条件和动作构成的一个主体逻辑(Main)封装成类,一个玩法逻辑就可以用下面的图表示:

这些玩法逻辑是可以串并联起来的,组成一个复杂的玩法网络。

那这个跟C++反射有什么关系?这关系可大了,上图中的逻辑图的每个节点都需要经过反射在我们的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值