设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7037|回复: 20
打印 上一主题 下一主题

自动战斗·同伴的AI

 关闭 [复制链接]

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

跳转到指定楼层
1
发表于 2007-12-31 04:38:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
细心的人一定会发现,VX角色设定中恢复了2K的一个很有用的功能,自动战斗。

而自动战斗的好坏直接取决于VX的AI设置了。

玩XP的人都知道,XP的怪物AI实在不怎么样(明明有血还是会加血= =)
如果VX的AI也是这个水平,那么自动战斗……实在是鸡肋啊。

各位对自动战斗有什么看法?
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

2
 楼主| 发表于 2007-12-31 04:38:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
细心的人一定会发现,VX角色设定中恢复了2K的一个很有用的功能,自动战斗。

而自动战斗的好坏直接取决于VX的AI设置了。

玩XP的人都知道,XP的怪物AI实在不怎么样(明明有血还是会加血= =)
如果VX的AI也是这个水平,那么自动战斗……实在是鸡肋啊。

各位对自动战斗有什么看法?
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。

Lv1.梦旅人

胃:伪·好人之怨念<

梦石
0
星屑
50
在线时间
4 小时
注册时间
2007-6-24
帖子
5058

开拓者VX城市地图大赛亚军

3
发表于 2007-12-31 04:41:37 | 只看该作者
XP的怪物AI好像是靠数据库里面的设置实现的吧?
因为那个“治疗”的条件为无所以有血还会加……
VX的同伴AI不知道是怎么做的……
(其实有可能自动战斗就是默认随机普通攻击……)
哈哈哈哈哈
回复 支持 反对

使用道具 举报

Lv1.梦旅人

史上最强粉丝

梦石
0
星屑
50
在线时间
9 小时
注册时间
2007-8-20
帖子
5574

贵宾

4
发表于 2007-12-31 04:43:37 | 只看该作者
自动战斗的人要比我方等级高装备好。
新手师父,大将军,言情刺客等因剧情暂时加入的人。通常是不死+保证游戏可通过剧情战斗的存在。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

5
发表于 2007-12-31 05:00:56 | 只看该作者
XP的AI函数都是随机的, 当然没血会加血
脚本都给你了,不满意只好自己写咯

而且VX和XP好像没有太大变化  只是将很多XP里面SceneBatte4行动判定统一放在了Game_BattleAction里
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
311
在线时间
204 小时
注册时间
2007-2-4
帖子
1817
6
发表于 2007-12-31 05:17:25 | 只看该作者
以下引用光郎于2007-12-30 20:43:37的发言:

自动战斗的人要比我方等级高装备好。
新手师父,大将军,言情刺客等因剧情暂时加入的人。通常是不死+保证游戏可通过剧情战斗的存在。

剧情人物而已,一般不会到最后的,就算再渣也不会体现出来
新しい誕生祝いだッ!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

7
 楼主| 发表于 2007-12-31 08:50:29 | 只看该作者
=[]=那我准备除了主角以外的角色全部用自动战斗的想法基本上夭折了吧{/ll}
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

史上最强粉丝

梦石
0
星屑
50
在线时间
9 小时
注册时间
2007-8-20
帖子
5574

贵宾

8
发表于 2007-12-31 15:52:55 | 只看该作者
很好的啊,主角又不是神,不能控制别人的行动。
要是像仙剑三那样有“全力进攻”“回复优先”“防御偷袭”等影响判定的指令就好了。
这样可以专心控制一人来战斗呢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

v

梦石
0
星屑
50
在线时间
55 小时
注册时间
2007-12-19
帖子
99
9
发表于 2007-12-31 16:10:55 | 只看该作者
RMVX的自动战斗是有AI的,不是XP那种随机行动
大概就是评估每个行动(普通攻击、每种特技对每个可能的目标等等)的价值,然后取价值最大的作为最终行动。
详见:
Game_Actor 670行
  #--------------------------------------------------------------------------
  # ● 戦闘行動の作成 (自動戦闘用)
  #--------------------------------------------------------------------------
  def make_action
    @action.clear
    return unless movable?
    action_list = []
    action = Game_BattleAction.new(self)
    action.set_attack
    action.evaluate
    action_list.push(action)
    for skill in skills
      action = Game_BattleAction.new(self)
      action.set_skill(skill.id)
      action.evaluate
      action_list.push(action)
    end
    max_value = 0
    for action in action_list
      if action.value > max_value
        @action = action
        max_value = action.value
      end
    end
  end

Game_BattleAction 288行
  #--------------------------------------------------------------------------
  # ● 行動の価値評価 (自動戦闘用)
  #    @value および @target_index を自動的に設定する。
  #--------------------------------------------------------------------------
  def evaluate
    if attack?
      evaluate_attack
    elsif skill?
      evaluate_skill
    else
      @value = 0
    end
    if @value > 0
      @value + rand(nil)
    end
  end
  #--------------------------------------------------------------------------
  # ● 通常攻撃の評価
  #--------------------------------------------------------------------------
  def evaluate_attack
    @value = 0
    for target in opponents_unit.existing_members
      value = evaluate_attack_with_target(target)
      if value > @value
        @value = value
        @target_index = target.index
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 通常攻撃の評価 (ターゲット指定)
  #     target : 対象バトラー
  #--------------------------------------------------------------------------
  def evaluate_attack_with_target(target)
    target.clear_action_results
    target.make_attack_damage_value(battler)
    return target.hp_damage.to_f / [target.hp, 1].max
  end
  #--------------------------------------------------------------------------
  # ● スキルの評価
  #--------------------------------------------------------------------------
  def evaluate_skill
    @value = 0
    unless battler.skill_can_use?(skill)
      return
    end
    if skill.for_opponent?
      targets = opponents_unit.existing_members
    elsif skill.for_user?
      targets = [battler]
    elsif skill.for_dead_friend?
      targets = friends_unit.dead_members
    else
      targets = friends_unit.existing_members
    end
    for target in targets
      value = evaluate_skill_with_target(target)
      if skill.for_all?
        @value += value
      elsif value > @value
        @value = value
        @target_index = target.index
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● スキルの評価 (ターゲット指定)
  #     target : 対象バトラー
  #--------------------------------------------------------------------------
  def evaluate_skill_with_target(target)
    target.clear_action_results
    target.make_obj_damage_value(battler, skill)
    if skill.for_opponent?
      return target.hp_damage.to_f / [target.hp, 1].max
    else
      recovery = [-target.hp_damage, target.maxhp - target.hp].min
      return recovery.to_f / target.maxhp
    end
  end

没实测过,不过八九不离十了吧{/gg}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

v

梦石
0
星屑
50
在线时间
55 小时
注册时间
2007-12-19
帖子
99
10
发表于 2007-12-31 16:18:43 | 只看该作者
特别的是自动行动角色不会用物品..估计杂兵战用了某个珍贵药品的话会被主角打死吧
另外那句rand(nil)很强大..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-22 10:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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