Project1

标题: 对ARPG战斗实现的一些疯话 [打印本页]

作者: szk8888    时间: 2008-4-24 00:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 9244579    时间: 2008-4-24 00:53
丢东西是丢东西
怎么个丢法是个问题
作者: 一瞬间的幻觉    时间: 2008-4-24 01:06
要实现它还有很长的路要走
作者: 暴风の龙    时间: 2008-4-24 05:00
那个……我看成丢“禾西”了……郁闷……
作者: 禾西    时间: 2008-4-24 05:37
以下引用暴风の龙于2008-4-23 21:00:50的发言:
那个……我看成丢“禾西”了……郁闷……

==|||
實際上重要解决的只是攻擊範圍== <---ARPG只有這個難點

作者: 纯子    时间: 2008-4-24 16:56
可以专门设置一个地图,在上面放上各种武器,暗器,炮弹,子弹之类的事件,然后定义接触事件所触发的事件,比如伤害啊,移动方式啊,动画之类的。
然后在正真的游戏地图上,主角攻击或发动特技的时候调用这些事件,接触到敌人可以自动删除这个事件~
作者: 水迭澜    时间: 2008-4-24 21:43
望楼上,开始认真的思考这个思路……


不过,我是不会把我已经完成的部分重写的………………囧……
作者: 泡面之侠    时间: 2008-4-24 23:12
这些效果要达成其实一点也不困难,其实最关键的是对敌人动作~AI~生成的设置
作者: 非法用户    时间: 2008-4-24 23:30
以下引用禾西于2008-4-23 21:37:03的发言:


以下引用暴风の龙于2008-4-23 21:00:50的发言:
那个……我看成丢“禾西”了……郁闷……


==|||
實際上重要解决的只是攻擊範圍== <---ARPG只有這個難點

事实上攻击范围没什么难,现在令我头疼的反而是没有适合的动画素材,我这坑可能真的会填不下去了。{/hx}

以下引用泡面之侠于2008-4-24 15:12:04的发言:

这些效果要达成其实一点也不困难,其实最关键的是对敌人动作~AI~生成的设置

说白了AI就是条件分歧,多些条件分歧敌人也就越聪明,这只是写脚本者是否勤劳去写这些条件分歧罢了。{/hx}
作者: 泡面之侠    时间: 2008-4-25 01:35
AI不难,问题是怎么让其与动作很好的结合起来,往往在动作性比较强的ARPG上这样的困难会更明显
作者: 9244579    时间: 2008-4-25 01:37
以下引用纯子于2008-4-24 8:56:11的发言:

可以专门设置一个地图,在上面放上各种武器,暗器,炮弹,子弹之类的事件,然后定义接触事件所触发的事件,比如伤害啊,移动方式啊,动画之类的。
然后在正真的游戏地图上,主角攻击或发动特技的时候调用这些事件,接触到敌人可以自动删除这个事件~


这个思路弄过`````效果还行,不过就是麻烦```会弄的乱七八糟的

作者: 非法用户    时间: 2008-4-25 01:38
以下引用泡面之侠于2008-4-24 17:35:00的发言:

AI不难,问题是怎么让其与动作很好的结合起来,往往在动作性比较强的ARPG上这样的困难会更明显

也对。
看到LS在另一帖发的图,我在这里精神上支持搂主。
期待游戏。{/hx}
作者: 水迭澜    时间: 2008-4-25 11:47
嗯。光是纯理论,什么都不难。其实做出大菠萝2也不难。各位加油,千万别坑
写程序不过是体力活,问题在于你是否有这么多体力而已……囧
作者: 蕾雅    时间: 2008-4-25 21:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 蕾雅    时间: 2008-4-25 21:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水迭澜    时间: 2008-4-25 21:15
暗黑的装备系统已经有人做出来了吧?怪物系统也是如此.设置好几个对应的数组或者哈希表,在需要生成的时候从中提取就行了.至于鼠标,只能说属于RM本身的局限,目前还没有找到让它不卡的方法.
随机地图的话,站上有脚本的,而且生成的效果还不错,你可以尝试直接改写那个东西.
至于同时处理的怪30+,我尝试过一群怪(40+)放在同一屏幕内,速率大概是30FPS的样子.但是一用魔法就会卡,已经改写了范围动画的显示(跟你那个全屏动画打断的差不多,不过我没改底层),其他的就没有找到特别好的优化方法了.总的来说自己觉得效率还不错
P.S 我可没有做大菠萝的欲望,不过看大家好像觉得ARPG都很容易做的样子,你不妨找他们试试.反正我觉得ARPG还是很不容易的,不然6R上一早出来过了.
作者: 蕾雅    时间: 2008-4-25 21:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水迭澜    时间: 2008-4-25 21:34
那我偶尔也象对伸手党一样对待您可以吗
http://rpg.blue/web/htm/news335.htm
作者: Iselia雪    时间: 2008-4-26 02:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水迭澜    时间: 2008-4-26 02:56
楼上的就不能只用一个ID么……这样看着累……
使用Sprite倒是个好主意,毕竟敌人不像一般NPC事件需要那么多分歧判断
作者: Iselia雪    时间: 2008-4-26 03:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水迭澜    时间: 2008-4-26 03:36
我可没有发帖自说自话的习惯……= =
作者: 越前リョーマ    时间: 2008-4-26 04:09
ARPG是伟大的东西……
作者: CIS狂人    时间: 2008-4-26 05:23
  1. #==============================================================================
  2. # ■ ARPG_Bullet
  3. #------------------------------------------------------------------------------
  4. #  处理ARPG中范围攻击的东西`-____-``用了超级烂的方法。
  5. # 例如  陨石,3,false,25   
  6. # 这样就是陨石这个技能```范围编号是3 不需要分歧方向 延迟为25
  7. #==============================================================================
  8. class ARPG_Rangs
  9.   attr_accessor :rangs
  10.   def initialize(obj, type)
  11.     @rangs = []
  12.     get_rang(obj,type)
  13.   end
  14.   def get_rang(obj,type)
  15.     x = obj.x
  16.     y = obj.y
  17.     d = obj.direction
  18.     # 技能的范围种类就是这里````0为前后一格..1为上下左右```汗``-___-`||
  19.     case type
  20.     # 前后一格
  21.     when 0
  22.       if d == 2
  23.         @rangs =  [[x,y+1],[x,y-1]]
  24.       end
  25.       if d == 4
  26.         @rangs =  [[x-1,y],[x+1,y]]
  27.       end
  28.       if d == 6
  29.         @rangs =  [[x+1,y],[x-1,y]]
  30.       end
  31.       if d == 8
  32.         @rangs =  [[x,y-1],[x,y+1]]
  33.       end
  34.     # 上下左右
  35.     when 1
  36.       @rangs =  [[x,y+1],[x,y-1],[x+1,y],[x-1,y]]
  37.     # 直线8格(魔神斩用)
  38.     when 5
  39.       if d == 2
  40.         @rangs =  [[x,y+1],[x,y+2],[x,y+3],[x,y+4],[x,y+5],[x,y+6],[x,y+7],[x,y+8]]
  41.       end
  42.       if d == 4
  43.         @rangs =  [[x-1,y],[x-2,y],[x-3,y],[x-4,y],[x-5,y],[x-6,y],[x-7,y],[x-8,y]]
  44.       end
  45.       if d == 6
  46.         @rangs =  [[x+1,y],[x+2,y],[x+3,y],[x+4,y],[x+5,y],[x+6,y],[x+7,y],[x+8,y]]
  47.       end
  48.       if d == 8
  49.         @rangs =  [[x,y-1],[x,y-2],[x,y-3],[x,y-4],[x,y-5],[x,y-6],[x,y-7],[x,y-8]]
  50.       end
  51.     # 直线10格(激光用)
  52.     when 6
  53.       if d == 2
  54.         @rangs =  [[x,y+1],[x,y+2],[x,y+3],[x,y+4],[x,y+5],[x,y+6],[x,y+7],[x,y+8],[x,y+9],[x,y+10],[x,y+11]]
  55.       end
  56.       if d == 4
  57.         @rangs =  [[x-1,y],[x-2,y],[x-3,y],[x-4,y],[x-5,y],[x-6,y],[x-7,y],[x-8,y],[x-9,y],[x-10,y],[x-11,y]]
  58.       end
  59.       if d == 6
  60.         @rangs =  [[x+1,y],[x+2,y],[x+3,y],[x+4,y],[x+5,y],[x+6,y],[x+7,y],[x+8,y],[x+9,y],[x+10,y],[x+11,y]]
  61.       end
  62.       if d == 8
  63.         @rangs =  [[x,y-1],[x,y-2],[x,y-3],[x,y-4],[x,y-5],[x,y-6],[x,y-7],[x,y-8],[x,y-9],[x,y-10],[x,y-11]]
  64.       end
  65.     # 直线2格(枪用)
  66.     when 2
  67.       if d == 2
  68.         @rangs =  [[x,y+1],[x,y+2]]
  69.       end
  70.       if d == 4
  71.         @rangs =  [[x-1,y],[x-2,y]]
  72.       end
  73.       if d == 6
  74.         @rangs =  [[x+1,y],[x+2,y]]
  75.       end
  76.       if d == 8
  77.         @rangs =  [[x,y-1],[x,y-2]]
  78.       end
  79.       # 面向的3个敌人
  80.     when 4
  81.       case d
  82.       when 2
  83.         @rangs = [[x-1,y+1],[x,y+1],[x+1,y+1]]
  84.       when 4
  85.         @rangs = [[x-1,y-1],[x-1,y],[x-1,y+1]]
  86.       when 6
  87.         @rangs = [[x+1,y+1],[x+1,y+1],[x+1,y+1]]
  88.       when 8
  89.         @rangs = [[x-1,y-1],[x,y-1],[x+1,y-1]]
  90.       end
  91.     # 以角色为中心的3X3格
  92.     when 3
  93.       t = []
  94.       for ex in x-1..x+1
  95.         for ey in y-1..y+1
  96.           t.push([ex,ey])
  97.         end
  98.       end
  99.       @rangs =  t
  100.     end
  101.   end
  102. end
复制代码

这就是"超级烂的方法"-BY 神思




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1