单位属性模块

作者: 水风 | 来源:发表于2016-01-25 21:10 被阅读205次

一个单位的属性(攻击力、最大血量、防御力等)一般由多个模块决定,比如我们游戏的属性由三块决定:

  1. 基础属性:由单位的等级和成长决定。
  2. 装备属性:影响人物面板显示的属性值。最常见的是装备等。
  3. 外部属性:每次进入副本时都会重置。一般来说,都是由战斗过程中的buff等影响

属性分级

单位的属性一般分为多级,比如lv影响力量、敏捷,力量又影响血量、攻击力,那么把属性分级为:
0:等级
1:力量、敏捷
2:血量、攻击力

属性计算

属性的计算每次都是由低级属性开始,计算到最高级属性。
一般来说,每次修改了低级属性,那么高级属性都需要重新计算。
具体的计算方式根据策划需求可能不同。

属性同步

对于每个玩家,他都有一个面板属性(也就是显示在玩家属性UI上的数值),此属性包括了基础属性和装备属性,当玩家每次进入游戏时,首先根据他的等级信息和装备信息计算他的面板属性,并保存到player模块中。

每次进入场景创建一个玩家单位的时候,单位把面板属性保存在属性组件中,在战斗过程中buff等可能修改外部属性,但外部属性并不保存在player模块中,即玩家更换场景时buff对属性的修改就清空了。(不同游戏需求也不同,有的游戏可能要求buff信息也保存在玩家身上,这样玩家更换场景buff也存在)

状态同步

属性的同步应该使用状态同步而不是命令同步(battle server和client之间),这主要是因为AOI等问题,命令同步并不能保证属性的一致。

此外,因为伤害结算等大部分逻辑都在battle server中计算,其实client中并不需要保存太多属性信息,只需要将client需要知道的属性信息如血量/最大血量比例等同步到客户端用于表现。

相关文章

  • 单位属性模块

    一个单位的属性(攻击力、最大血量、防御力等)一般由多个模块决定,比如我们游戏的属性由三块决定: 基础属性:由单位的...

  • react--props

    props属性: props对于模块来说属性外来属性 传递参数: 模块中接受参数:this.props.username

  • Node.js模块与npm包管理

    一、Node.js模块对象的属性 在Node.js模块内部,模块对象具有以下的属性: module.id:属性值是...

  • VBA第七讲VBE编辑器

    工程模块,可以插入类模块,窗体,类模块。窗体可以插入按钮和模块。 属性窗口,随着选取工程窗口的元素,属性窗口就会显...

  • python高级第二周

    一、私有化 xx :公开属性 _xx :模块内可以访问的属性这个的作用是该属性只能在当前模块中使用,出了模块及不能...

  • abp vnext扩展实体

    对于模块的实体属性,都是在模块中定义好的,无法更改模块内部代码。我们可以通过扩展实体来向模块实体增加属性。 Ext...

  • Unity粒子系统(Shape模块)

    Shape 模块属性功能 Shape 模块中的形状 注意:Sphere 和 Hemisphere 具有相同的属性。...

  • 15 Python模块导入与常用模块介绍

    模块的导入和__name__属性 __name__属性:① 当模块(.py文件称为一个模块)以脚本方式运行的时候,...

  • # 过渡模块transition

    # 过渡模块transition # 过渡模块-其他属性 # 过渡模块-弹性效果 # 过渡模块-手风琴效果 # 什...

  • Unity基础-Mathf模块

    Mathf模块 属性 常用方法

网友评论

    本文标题:单位属性模块

    本文链接:https://www.haomeiwen.com/subject/ysemhttx.html