MMORPG服务器数值系统设计

本文主要从程序员角度来描述一下MMORPG游戏服务器数值系统的设计,怎么样设计才能好扩展,策划变更需求加一个数值字段,或者调试数值,怎么样才能基本上不需要改动程序,或者少改程序就可以满足策划的需求。

MMORPG服务器的数值系统分为几大块:角色数值,技能数值,物品数值,经济数值等等。可能还有其他数值,在这里我们暂且不讨论。我们只讨论一下 角色数值 和 技能数值,这两个数值系统和游戏的战斗系统息息相关,游戏的平衡性,可玩性就靠他了。数值系统还可以规划为两类,即 数值存储 和 数值计算,我们主要从这两方面来描述数值系统

角色数值系统

角色的数据比较多,如图

角色数值

    虽然战斗属性比较多,但是需要存储的并不多,我们只需要存储角色当前HP,MP,EXP, 角色装备即可,为什么这样说呢,我们来看一下处理流程图

property

图中有2个计算表:

EXP表:根据角色数据库中读出的当前EXP,计算出当前等级,力量,体质,耐力等等

exp

Property_table表:这个是最核心的计算表,设计结构看下图

property_table

property_table表中只有两项:

属性名: 角色属性名称

计算公式:改属性的计算公式

那我们要怎么样来设计property_table的程序,才能好扩展呢

hash_map<property_node, vector<property_node>> g_property;

数据结构类似于g_property, 每一个属性节点property_node对应一个property_node数组,这个property_node数组记录了该属性节点影响了哪些节点。property_node数组也是一个如下图树形结构

update

当某一个节点数值改变了后,遍历property_node数组树,调用property_table中的计算公式进行计算

PS:这个树的设计有一个缺陷,如上图节点1不能影响节点2的下层节点,这个可以通过策划进行规避

这样,我们设计好程序后,策划需要增加一个属性,只需要在property_table中增加一个节点,并写出计算公式即可,无需增加额外的代码,至少计算这块是这样的

技能数值系统

技能数值前期推荐用脚本来做,主要是策划对数值有个调试的过程,数值会经常有改变,如果数据改变后要重启exe的话,那无疑是灾难性的,当然也可以通过其他方式实现,只是脚本更容易嵌入c++中,如lua脚本,和C语法很接近,程序员的学习成本较低,脚本还可以写一些特殊的技能

技能的计算也是依赖于property_table

技能数值

后期游戏制作完毕后,为了提高服务器效率,可以将脚本直接翻译成c++代码

本文仅仅是粗略的讲了一些设计思路,供大家讨论,如有不足或错误,请指正!

转载于:https://www.cnblogs.com/GameDeveloper/articles/2869263.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值