游戏开发论坛

 找回密码
 立即注册
搜索
查看: 12832|回复: 12

2D回合制游戏开发,战斗/技能实现遇到困难,求指导

[复制链接]

1

主题

5

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2015-11-27 21:22:10 | 显示全部楼层 |阅读模式
本帖最后由 清蒸鲈鱼 于 2015-11-27 21:23 编辑

我业余水平,自个开发一款2D回合制游戏,素材和创意都是别人家的(就是防制)。
(注:仅爱好,没别的意思)


游戏外围功能的实现还算顺利、但在战斗实现上遇到些困难。技能的相互作用,buff的实现,现在一点思路都没有。
4个有相互作用的技能:
gq.png
bx.png

buff有:每回合回复气血,降低属性,增加属性,封系buff(不能出手,不能平砍,不能使用法术)


技能,buff,要怎么实现、我要怎么做?
求指导

















来几张截图
1.png
3.png

2.png

3

主题

7

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2015-11-28 13:13:39 | 显示全部楼层
可以参考下wow私服服务端里的技能设计,buff本身也是一种技能(aura spell),
它里面的技能大概有以下数据组成:
1:通用信息定义(如需要消耗法力值还是能力值,持续时间等)
2:包含3种效果类型及其数值(如攻击某个单位,治疗某个目标)
3:包含3种buff类型及其数值(如增加力量,每隔一定时间回复生命值,体型增大或缩小,击中时有几率触发某个技能等)

围绕这些数据,给出程序实现,就OK了。

3

主题

7

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2015-11-28 13:18:38 | 显示全部楼层
可以参考wow私服服务端的技能设计,buff本身也是一种技能(aura spell)
技能大概包含以下数据:
1:通用定义(如消耗法力值、持续时间等)
2:3种效果类型及其数值(如攻击某个单位、治疗某个单位、制造一个物品等)
3:3种buff类型及其数值(如增加力量,每隔一定时间回复生命值、体型增大或缩小、击中时有几率触发技能等)

围绕这些数据给出程序实现就行了。

0

主题

125

帖子

1445

积分

金牌会员

Rank: 6Rank: 6

积分
1445
发表于 2015-11-28 22:50:16 | 显示全部楼层
Buff作为一个虚类对象,留几个重写的函数,OnAttach() OnDetch() OnUpdate()
角色身上放个list<Buff>,释放技能的时候,创建一个buff,执行OnAttach()函数,根据需要传参,此处可以改变玩家的一些属性,攻击,气血,防御……
需要倒计时的,就在这个函数里创建一个timer,到时间移除buff,执行OnDetch(),恢复玩家原本的攻击气血和防御

改变属性的公式会比较繁琐,因游戏而已

1

主题

5

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2015-11-29 15:24:39 | 显示全部楼层
墨闻 发表于 2015-11-28 13:18
可以参考wow私服服务端的技能设计,buff本身也是一种技能(aura spell)
技能大概包含以下数据:
1:通用定 ...

墨闻兄说的很对味,但以我的水平有些地方不能理解,特别是从想象到实际代码这一过程,我开发的过程中在这方面花了很多的精力和时间。
这几天我又想了想,自我感觉在战斗其余方面都能理解,唯有技能和buff的实现思绪很乱。
这些问题可能是我的思路和水平导致的,以我最能表达清楚的两个问题举例。

其一:如何定义一个技能,是写脚本,还是填表,要怎么写,应如何填。
其二:如何让定义的这个在游戏中生效。
问题其二,考虑到不同的思路和不同的环境实现方式不同,在加上我就会lua,能否在思路和游戏系统的逻辑层面进行讲解。

还请墨闻兄赐教。

1

主题

5

帖子

29

积分

注册会员

Rank: 2

积分
29
 楼主| 发表于 2015-11-29 16:07:59 | 显示全部楼层
VHwy 发表于 2015-11-28 22:50
Buff作为一个虚类对象,留几个重写的函数,OnAttach() OnDetch() OnUpdate()
角色身上放个list,释放技能的 ...

兄台说的很专业,能理解一部分但我还是听的茫茫然。其中兄台说到buff的实现,我就想起了前段时间一直想不明白的问题(现在也没明白)。关于装备和buff对目标属性影响的实现过程。
假设某buff是一个技能:【力量源泉】增加(英雄等级*2)的力量值
某装备:恶魔手套(力量+10),恶魔手套强化1级多增加10点力量。


这个buff对目标的属性改变,在代码中这样理解对不对
最终力量值=原生力量+技能附加力量+装备附加力量
而力量源泉这个技能,影响的是目标的"技能附加力量"参数
而装备附加的属性则是影响"装备附加力量"。

力量源泉这个技能增加的属性受到目标等级的影响,目标升级后增加的属性也需要改变。
如果以我的思路要实现这个技能就需要对目标对象定一个“属性刷新函数”
属性刷新函数,作用于装备穿戴,属性改变(等级提升) 等需要重新计算属性的地方。

我以我的思路和方式写段伪代码(仅考虑力量部分):


假设举例.png

以这种方式实现buff对目标的属性进行影响是否可行,如果以兄台来选择,这种方式是上策,中策,还是下策?
技能/buff和装备对目标属性进行影响,是否能这样理解,装备就是一种buff的表现形式,带上它就拥有了这个buff的附加属性?

代码中的实现方式,可以打几分?
另外编辑帖子的过程中我视乎明白了什么,好像又仅限于视乎。

0

主题

125

帖子

1445

积分

金牌会员

Rank: 6Rank: 6

积分
1445
发表于 2015-11-29 22:35:36 | 显示全部楼层
清蒸鲈鱼 发表于 2015-11-29 16:07
兄台说的很专业,能理解一部分但我还是听的茫茫然。其中兄台说到buff的实现,我就想起了前段时间一直想不 ...

随着游戏规则的增加,公式会越来越远复杂,需要的寄存变量越来越多,例如:各种增益减免的加减值和百分比,仅修改增益变化百分比的值,修改角色基础属性的加减值和百分比。此外,百分比的增长和绝对值的增长谁先被计算是个很重要的问题,数值是否允许为负数也是个要考虑的问题。

不过,个人建议,在游戏规则允许的情况下,只设置基础值和变化值2个寄存变量,最终值=基础值+变化值,大部分buff和技能都只是以基础值为参数,计算出变化值。

对于你分开的装备附加值和技能附加值,如果没有针对性的百分比影响可以归为一类,因为都是加减法,无所谓计算顺序。

0

主题

125

帖子

1445

积分

金牌会员

Rank: 6Rank: 6

积分
1445
发表于 2015-11-29 22:43:57 | 显示全部楼层
给你提个经典问题,一个角色100攻,双持2把剑,2把剑各自+50攻同时增加50%攻击力,问角色此时应该有多少攻击力

进阶问题,该角色受到诅咒buff,降低50%攻击力,由于该buff可以叠加,该角色中了2次,此时,角色的实际攻击力又是多少?

当然,答案不唯一,完全取决于设计者的公式。

3

主题

7

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2015-11-30 00:02:38 | 显示全部楼层
清蒸鲈鱼 发表于 2015-11-29 15:24
墨闻兄说的很对味,但以我的水平有些地方不能理解,特别是从想象到实际代码这一过程,我开发的过程中在这 ...

第1个问题:
要么存数据库,要么存到表格文件(自定义,或者用csv这种逗号分隔文件都可以)
至于技能表怎么定义,我前面说了

第2个问题:
我也是参考cmangos来的,只能大概根你说下,
大概要封装如下几个类:
1:技能类,处理所有技能,效果和Buff
   其中,效果都是直接改变角色属性的,都是立即执行的.所以,写成一个个函数即可(如果有100种效果,写100个函数)
2:Buff类: 实现各种Buff效果,由技能类调用
3:技能管理器,管理所有技能配置

43

主题

298

帖子

1510

积分

金牌会员

Rank: 6Rank: 6

积分
1510
发表于 2015-12-1 15:00:31 | 显示全部楼层
一般来说,属性会有内层属性(力量,耐力,.....)和外层属性(攻击,防御,气血...)等差别。改变内层属性,外层属性也需要重新计算。回合制战斗,因为大部分buffer不会在战斗外生效,所以通常会复制一份数据到战斗中,战斗中有每个角色有额外的buffer类,当增加buffer或者减少buffer的时候有可能需要重算属性。可以根据buffer类型分成各种类别,有的影响行为的,有的影响属性的,有的需要在攻击时判断,有的需要被攻击时判断,等等,而技能类,主要是在使用的时候加上buffer,注册相关的处理函数。buffer的结束时间,不同的设计也会有很不同的效果。
属性怎么算,就看这个游戏怎么设计了。
buffer通常是有回合限制,过时失效的,装备对属性的影响则是永久的。当然装备也有可能有能够生成buffer的技能。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-25 11:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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