游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6377|回复: 5

求助游戏技能和buf效果的设计。

[复制链接]

1

主题

7

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2013-3-8 17:45:08 | 显示全部楼层 |阅读模式
  首先先感谢大家进来关注我的问题
  小弟是菜鸟,去年大概半年多的时间在一个小团队做一些小游戏,因为都是小游戏,就没有想到扩展,维护什么的,代码写的很糟糕。。至少我现在去看感觉非常糟糕。。

    好了,现在进入问题。
    最近一段时间在看设计模式,主要是讲了23种设计模式,可能书本上好理解一些,可是发现运用起来完全就是另外一回事。
    我现在碰到的问题就是:我的游戏有一个主角,主角有一些技能,然后每个技能的效果当然是不一样的,当技能击中到怪物身上时,怪物身上会出现对应技能的施加的buf状态,而不同的怪物对相同的buf的外观提现也是不一样的。  说道这里,就是这个问题了。我想的是主角的技能肯定是不依赖于主角的,因为后期会添加新的技能。所以主角释放技能时就是传一个对应技能的实例给主角。
   当技能击中怪物时,比如说主角释放的是一个冰冻技能,怪物就会被冻起来。而怪物是不知道这个技能就是冰冻的,它就不知道这个技能是把自己冻起来。
   以前请教过一个大师,他说他的实现是给每个技能标一个ID,然后在怪物的被击中函数中swith..case所有可能的技能ID,然后给自己添加对应的buf状态。。
   可是我看了设计模式,中的原则是。避免冗长的switch ,if .else 等判断,这样代码会有坏味道。而且新增一个技能,如果所有的怪物对这个技能的buf都要做自己特定的效果展示,就要去修改现有的所有怪物的代码。
    所以,该怎么实现好呢。  写的有些长,希望大师们能耐心看完。

1

主题

7

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2013-3-8 18:38:57 | 显示全部楼层
没有人回复,自己顶上去。

0

主题

32

帖子

113

积分

注册会员

Rank: 2

积分
113
发表于 2013-3-8 19:20:11 | 显示全部楼层
本帖最后由 Yuki001 于 2013-3-8 19:38 编辑

技能:我建议也是技能ID,不过技能配表里面把给对方附加的buff写成一个或多个字段,用技能类读出来。每次碰撞的时候,给怪物附加skill.targetbuff数组中的buff id就可以了
buff: 一样的配表+id,预先想好各种buff +/-的属性配好表。直接根据配表属性来影响怪物。

和你刚才说的不一样的地方,就是,你那个方法是switch case写死在代码,我这个是数据驱动的。

注意别被OO的继承骗了。OO的继承适合程序员扩展逻辑,配数据表的方式才适合策划

另外举你冰冻的例子,怪物本身应该有一个状态,是否冰冻,然后buff表里面有一个字段是否冰冻怪物。
冰冻buff id = 1,冰冻怪物 = true
假设冰冻skill id = 1 添加buff 数组 = 【1】
怪物碰到的时候,用外面的处理函数,先取skill.targetBuff ,一个循环给怪物加buff id,然后碰到了buff 1,发现其冰冻怪物= true,就触发怪物的冰冻状态。

1

主题

7

帖子

28

积分

注册会员

Rank: 2

积分
28
 楼主| 发表于 2013-3-8 20:20:30 | 显示全部楼层
你说的太好了,总算弄清楚了,很好用,非常感谢大师。
大师能否留下qq呢,想向你学习交流下。我的qq:1436461963 盼复

0

主题

11

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2015-11-20 09:47:06 | 显示全部楼层
哈哈,楼主 我否加我一下,我也想学习学习

0

主题

11

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2015-11-20 10:02:54 | 显示全部楼层
mark一下。。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-25 14:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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