游戏开发论坛

 找回密码
 立即注册
搜索
查看: 188483|回复: 0

浅谈游戏单位属性模块设计:属性组成、分级、计算与同步

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-4-15 15:56:08 | 显示全部楼层 |阅读模式
20120213133043_XYwyW.jpg

  GameRes游资网授权发布 文 / 水风

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

  1.基础属性:由单位的等级和成长决定。

  2.装备属性:影响人物面板显示的属性值。最常见的是装备等。

  3.外部属性:每次进入副本时都会重置。一般来说,都是由战斗过程中的buff等影响

  属性分级

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

  0:等级

  1:力量、敏捷

  2:血量、攻击力

20130613061459241.jpg

  属性计算

  属性的计算每次都是由低级属性开始,计算到最高级属性。

  一般来说,每次修改了低级属性,那么高级属性都需要重新计算。

  具体的计算方式根据策划需求可能不同。

  属性同步

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

01e5cf5548a2250000019ae9dec8cf.jpg

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

  状态同步

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

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

  相关阅读技能系统设计:技能模块同步的实现

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-26 23:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表