博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MMORPG服务器数值系统设计
阅读量:5960 次
发布时间:2019-06-19

本文共 1184 字,大约阅读时间需要 3 分钟。

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

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

角色数值系统

角色的数据比较多,如图

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

图中有2个计算表:

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

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数组也是一个如下图树形结构

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

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

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

技能数值系统

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

技能的计算也是依赖于property_table

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

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

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

你可能感兴趣的文章
阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统
查看>>
基于阿里云服务搭建的典型技术架构
查看>>
JavaEE PayPal 上线流程
查看>>
Android设备wifi开发
查看>>
xshell能ping通虚拟机,不能连接虚拟机
查看>>
任意层级树型数据的遍历和过滤
查看>>
iOS 防止反编译加密方法
查看>>
微信小程序开发的一点心得
查看>>
关于用nodejs编写管理系统
查看>>
深入理解node stream机制及其实现原理
查看>>
JavaScript 中错误正确处理方式,你用对了吗?
查看>>
分辨率,dpi,dp,与最终显示大小的四角关系
查看>>
JavaSE基础:抽象类
查看>>
Android实战 粗略实现一个简单的C S结构聊天室的功能
查看>>
购物车原理以及实现
查看>>
浅探webpack优化
查看>>
ReactNative与iOS的交互
查看>>
v-model 是怎么实现的?
查看>>
习惯不同语言以太坊开发者可选择客户端
查看>>
面试题:浏览器从输入URL到渲染
查看>>