• 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-04-23
  • 俄罗斯电影《最后一球》定档落魄球星遇上菜鸟球队 2019-04-21
  • 【理上网来·辉煌十九大】缅甸资深媒体人高度评价习近平十九大报告:立意高远 内涵丰富 2019-04-21
  • 特朗普和金正恩先后抵达嘉佩乐酒店 会晤即将开始 2019-04-17
  • 中国侨联直属机关党委举办党务干部培训班 2019-04-17
  • 上海合作组织青岛峰会举行 2019-04-07
  • IT热点小度智能音箱发布 新飞电器破产拍卖 2019-04-04
  • 台州公务员管理再也不用“往返跑”了!“最多跑一次”撬动组织人事改革 全省首个试点 2019-04-03
  • 我要讨干嘛?姜太公钓鱼,愿者上钩。 2019-04-03
  • 新疆花开天山南北 笑迎八方来客 2019-03-25
  • 机器人占领就业市场后:人类还能从事这些工作 2019-03-04
  • 以网络文化建设推进文化惠民 2019-03-03
  • 贸易战,只能是双输。我们是众志成城,美国却不一定。 2019-02-26
  • 辣评2016年9月最HOT 轿车获奖榜单 2019-02-22
  • 交通运输部路网中心:端午假期高速通行不免费 2019-02-18
  • 福建体彩网31选7走势图: 枸杞忧天 从零点五开始用Unity做半个2D战棋小游戏(八)

    18
    回复
    1229
    查看
    打印 上一主题 下一主题
    [ 复制链接 ]
    4四处流浪
    301/500
    排名
    34881
    昨日变化

    福建36选7和值走势图 www.00-na.com 17

    主题

    25

    帖子

    301

    积分

    Rank: 4

    UID
    73054
    好友
    3
    蛮牛币
    337
    威望
    0
    注册时间
    2015-2-4
    在线时间
    37 小时
    最后登录
    2019-4-25

    专栏作家

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

    x
    本帖最后由 elsong 于 2019-3-17 11:05 编辑

    好久不见。

    这是第25篇与游戏开发有关的文章。

    |  写在最前
    这次想要一个简单且传统的战棋小游戏,大概的玩法是:2D世界里创建一张由六边形地块组成的战斗地图,敌我双方在地图上轮流行动,并向对方发动攻击,先消灭掉所有敌人的一方将获得胜利。

    预计将分为以下几篇(未完成前可能会调整...):

    1、创建战?。ㄒ淹瓿桑?/font>
    根据预定尺寸生成战场地图,并随机一些障碍物。

    2、添加地图功能 (已完成)
    实现战场格子点击反馈,地图导航及范围选定。

    3、添加对战双方(已完成)
    向战场中添加作战单位,作战单位轮流行动,可进行移动、攻击。

    4、加入玩家控制(已完成)
    玩家可控制一个战斗单位,手动选择移动目标及攻击单位。

    5、添加常用的界面(已完成)
    建立界面管理器,加入一些常用的界面。

    6、添加常用的战场显示(已完成)
    为战斗单位添加血条,加入伤害文字特效。

    7、扩展作战单位(已完成)
    丰富战斗元素,加入并实现手动释放不同类型的技能。

    8、加入AI系统(上)
    建立超级简单的AI系统。

    9、加入AI系统(中)
    调整AI系统的决策方式。

    10、加入AI系统(下)
    总结AI系统。

    11、扩展战场地图
    丰富战场地图,加入地形及道具等元素。

    12、规范战斗配置
    可以通过规范化的数据结构配置战场、职业、技能、道具等。

    本次的主题是:建立超级简单的AI系统。

    项目使用的Unity版本为:Unity2018.3.0f2。

    代码会上传至我的Github:https://github.com/elsong823/HalfSLG 中,有兴趣的同学请自取。



    |  目标  
    加入一个超级简单的AI系统,会自动释放不同类型的伤害技能。
    自动释放技能的AI


    需要提前说明的是,建立简单的AI系统预计将拆分为三篇更新。

    第一篇(本篇)通过加入一些简单的AI逻辑,保证战斗单位可以自动选择(伤害)技能、自动作战,进而顺利的完成一场战斗。

    第二篇会进一步丰富AI的决策系统,让它的表现更具期待性,使战斗变得更加有趣。

    此外,我邀请了我的好友Aillieo,拜托他按照自己的方式也设计一个AI系统。

    因此,我会在第三篇介绍他所设计的AI系统,并对这三篇做一个整体的总结。



    |  非常简单的AI系统
    个人以为,有意思的AI系统可以简单的定义为:

    让人觉得符合逻辑,却又在一定程度上超出了预期。

    如何实现一个非常简单的AI系统呢?为了让问题变得再简单些,我将AI的行为拆解成固定的三个步骤:
    1、确定攻击目标;
    2、向攻击目标移动;
    3、使用技能。

    |  确定攻击目标
    将”合理“的目标设定为攻击目标,是件并不太容易的事情。

    这里我且不谈那些优秀的游戏是怎么做的,因为我也不知道。只说说我目前所使用的方法:仇恨系统。

    AI使用仇恨列表确定攻击目标

    每当一个战斗单位在战场中被敌人攻击时,他就会偷偷的在自己的小本本里记下攻击者的名字,以及他们的罪行。

    当轮到他行动时,他就会掏出自己攥了很久的小本本,按照之前它们揍自己的程度进行降序排列,然后按照这个名单,判断自己反击的可能性。

    这里,没有反击的可能性,指的是:如果目标已经被人包围,自己却又是一个近战角色无法靠近,那他就会嘟囔着“哼饶你一条狗命”,然后继续看下一个人。

    直到确定这个家伙可以被自己攻击到,他就会合上小本本,把他的名字刻上自己的心头,然后准备开始下一个步骤:向他移动。

    |  向目标单位移动
    向目标移动就很简单了,通过A-Star算法找到移动路径后,行动即可。

    确定目标后沿路径移动

    但是这里有一个小问题:应该选择哪个格子作为移动的终点呢?

    特别是当攻击者是某些远程攻击单位,比如游戏中常见的魔法师或者弓箭手,每次都走到目标旁边去攻击,感觉上就有点像“送外卖”。

    其实解决方法也很简单,在导航时仍然选择目标所在位置做为导航终点,但在距离终点一定距离时,停止导航并返回导航路径即可。这个停止距离,可以是远程攻击单位的射程,或者手动设定的某个值。

    射程为2的小红,导航停止在距离小蓝两个单位的格子上

    这与“真正的爱情,能跨越一切障碍”是一个道理。

    当然,如果这个人儿并不在天边,而在触手可及的地方,那他根本就不用移动,直接进入下面的环节吧。

    |  对目标使用技能
    光说,不练,假把式。

    好容易走到了他(她)的身边,总得有所表示吧?

    试想一个场景:你很喜欢一个女孩儿,在表白的关键时刻,你有一百种表达方法,但你却只能选择一种,究竟哪种才是最有效的呢?

    如果是真实的生活,答案很简单:看运气。

    但是游戏则不同,你可以用S/L大法(存、读档大法)来不断重试,直到找出效果最好的那一种!

    决策将要使用的技能也可以是一样的。

    这里我且不谈那些优秀的游戏是怎么做的,因为我也不知道。只说说我目前所使用的方法:简单的计算所有可用技能的释放回报。

    计算技能得分并确定所使用的技能

    计算技能释放得分的公式异常复杂,由于这并不是一篇学术性论文,因此这里不做详细的解释和说明,只把公式列出即可:

    技能释放得分 = 技能造成的总伤害 ÷ 技能消耗的能量值

    也就众所周知的:


    天啊,好麻烦。

    但是,在得到了按照释放得分降序排列的可用技能列表后,带着何种的心情、用着怎样的姿势、使用哪个技能的问题,就变得十分容易了。

    可能我们只需要注意下远程范围技能的释放点选择问题即可。

    释放影响半径为2的远程范围技能

    对于远程范围技能,我们当然可以使用一些方法,找到覆盖最多目标的释放点。

    但为了省事儿,我这里是这么处理的:当目标超过技能释放距离时,尝试找到释放技能时,可以覆盖到目标单位的点,然后从这里随便选一个即可。当然,如果目标本身就在技能释放半径内,就选它为释放中心了。
    红色区域为覆盖半径为2的技能在释放时,可以伤害到蓝色格子的释放点

    |  能量值
    当然,为了帮助AI计算出哪个技能的释放得分更高,我为每个战斗单位都增加了一个能量值的属性(你也可以认为它是魔法值);为每个技能增加了释放的能量消耗;同时还为游戏增加了每次行动时恢复10个单位能量的设定。但是由于这些逻辑都很简单,这里就不赘述了。

    最后,我们来回顾下整个行动流程吧:
    1、打谁;
    2、去哪打;
    3、怎么打。
    完整的AI行动流程


    |  写在最后
    至此,建立超级简单的AI系统篇就介绍到这了。如你所见,这里只是实现了非常简单的AI行动逻辑,并没有体现出各种类型AI的不同,我们下期将尝试着解决这个问题。

    但是目前还没想好怎么做,而且最近又很忙,因此下回可能会拖得久一些吧。




    愿不忘初心。

    下回见。

    感谢您能读到这里,详细的代码可以移步Github(https://github.com/elsong823/HalfSLG)下载。
    文章会在我的公众号 偶尔学学Unity 中不定期更新,欢迎关注,谢谢。






    参与人数 1鲜花 +1 收起 理由
    kennyzhu2013 + 1 赞一个!

    查看全部评分总评分 : 鲜花 +1

    7日久生情
    2233/5000
    排名
    1394
    昨日变化

    0

    主题

    693

    帖子

    2233

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    135463
    好友
    0
    蛮牛币
    174
    威望
    0
    注册时间
    2016-1-23
    在线时间
    650 小时
    最后登录
    2019-4-25
    沙发
    2019-3-17 16:38:12 只看该作者
    从零点五开始用Unity做半个2D战棋小游戏
    7日久生情
    2089/5000
    排名
    2354
    昨日变化

    8

    主题

    767

    帖子

    2089

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    40014
    好友
    16
    蛮牛币
    2813
    威望
    0
    注册时间
    2014-8-15
    在线时间
    540 小时
    最后登录
    2019-4-14
    QQ
    板凳
    2019-3-18 00:04:10 只看该作者
    从零点五开始用Unity做半个2D战棋小游戏
    6蛮牛粉丝
    1017/1500
    排名
    2115
    昨日变化

    0

    主题

    202

    帖子

    1017

    积分

    Rank: 6Rank: 6Rank: 6

    UID
    26073
    好友
    1
    蛮牛币
    3875
    威望
    0
    注册时间
    2014-5-21
    在线时间
    159 小时
    最后登录
    2019-4-25
    地板
    2019-3-18 08:40:37 只看该作者
    楼主用心了,辛苦了,赞一个
    5熟悉之中
    608/1000
    排名
    10816
    昨日变化

    2

    主题

    411

    帖子

    608

    积分

    Rank: 5Rank: 5

    UID
    310426
    好友
    0
    蛮牛币
    492
    威望
    0
    注册时间
    2019-1-2
    在线时间
    99 小时
    最后登录
    2019-4-25
    5#
    2019-3-18 08:42:04 只看该作者
    这个可以的
    3偶尔光临
    204/300
    排名
    18789
    昨日变化

    1

    主题

    109

    帖子

    204

    积分

    Rank: 3Rank: 3Rank: 3

    UID
    2079
    好友
    1
    蛮牛币
    164
    威望
    0
    注册时间
    2013-8-15
    在线时间
    62 小时
    最后登录
    2019-4-25
    QQ
    6#
    2019-3-18 09:04:49 只看该作者
    楼主用心了,学习受益匪浅
    7日久生情
    2295/5000
    排名
    2248
    昨日变化

    0

    主题

    1286

    帖子

    2295

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    189581
    好友
    0
    蛮牛币
    3447
    威望
    0
    注册时间
    2016-12-5
    在线时间
    383 小时
    最后登录
    2019-4-25
    7#
    2019-3-18 09:24:52 只看该作者
    可以的 给力啊
    7日久生情
    1871/5000
    排名
    1961
    昨日变化

    1

    主题

    93

    帖子

    1871

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    219633
    好友
    0
    蛮牛币
    1725
    威望
    0
    注册时间
    2017-4-27
    在线时间
    1087 小时
    最后登录
    2019-4-25
    8#
    2019-3-18 09:50:28 只看该作者
    楼主用心了,辛苦了,赞一个
    5熟悉之中
    740/1000
    排名
    8914
    昨日变化

    0

    主题

    422

    帖子

    740

    积分

    Rank: 5Rank: 5

    UID
    36289
    好友
    0
    蛮牛币
    9
    威望
    0
    注册时间
    2014-7-25
    在线时间
    186 小时
    最后登录
    2019-4-18
    9#
    2019-3-18 10:32:17 只看该作者
    从零点五开始用Unity做半个2D战棋小游戏
    6蛮牛粉丝
    1032/1500
    排名
    16954
    昨日变化

    1

    主题

    693

    帖子

    1032

    积分

    Rank: 6Rank: 6Rank: 6

    UID
    199204
    好友
    1
    蛮牛币
    561
    威望
    0
    注册时间
    2017-1-5
    在线时间
    298 小时
    最后登录
    2019-4-24
    10#
    2019-3-18 13:33:51 只看该作者
    谢谢分享
    7日久生情
    1640/5000
    排名
    4093
    昨日变化

    0

    主题

    990

    帖子

    1640

    积分

    Rank: 7Rank: 7Rank: 7Rank: 7

    UID
    254705
    好友
    1
    蛮牛币
    1549
    威望
    0
    注册时间
    2017-11-16
    在线时间
    288 小时
    最后登录
    2019-4-25
    11#
    2019-3-18 13:34:40 只看该作者
    666666666666666666666666
    6蛮牛粉丝
    1052/1500
    排名
    5543
    昨日变化

    0

    主题

    659

    帖子

    1052

    积分

    Rank: 6Rank: 6Rank: 6

    UID
    300432
    好友
    1
    蛮牛币
    1452
    威望
    0
    注册时间
    2018-10-18
    在线时间
    133 小时
    最后登录
    2019-3-27
    12#
    2019-3-18 18:30:57 只看该作者
    666666666666666666
    5熟悉之中
    746/1000
    排名
    4111
    昨日变化

    1

    主题

    235

    帖子

    746

    积分

    Rank: 5Rank: 5

    UID
    245227
    好友
    0
    蛮牛币
    961
    威望
    0
    注册时间
    2017-9-21
    在线时间
    150 小时
    最后登录
    2019-4-25
    13#
    2019-3-20 08:53:05 只看该作者
    我想问一下, 有体积的单位在六角网格中的寻路要怎样做? 比如有个龙, 很大, 占了7个格子(普通单位半径1 龙半径2)
    因为有阻挡的情况下要做检测计算量很大的样子
    5熟悉之中
    746/1000
    排名
    4111
    昨日变化

    1

    主题

    235

    帖子

    746

    积分

    Rank: 5Rank: 5

    UID
    245227
    好友
    0
    蛮牛币
    961
    威望
    0
    注册时间
    2017-9-21
    在线时间
    150 小时
    最后登录
    2019-4-25
    14#
    2019-3-25 09:17:23 只看该作者
    你们这些回复只会喊66666吗, 没有人认真看帖的吗

    0

    主题

    1

    帖子

    1

    积分

    Rank: 1

    UID
    317576
    好友
    0
    蛮牛币
    0
    威望
    0
    注册时间
    2019-3-25
    在线时间
    0 小时
    最后登录
    2019-3-25
    15#
    2019-3-25 18:39:43 只看该作者
    楼主用心了,辛苦了,赞一个
    您需要登录后才可以回帖 登录 | 注册帐号

    本版积分规则

  • 96次航拍峨眉 换个角度看巴蜀名山 中国国家地理网 2019-04-23
  • 俄罗斯电影《最后一球》定档落魄球星遇上菜鸟球队 2019-04-21
  • 【理上网来·辉煌十九大】缅甸资深媒体人高度评价习近平十九大报告:立意高远 内涵丰富 2019-04-21
  • 特朗普和金正恩先后抵达嘉佩乐酒店 会晤即将开始 2019-04-17
  • 中国侨联直属机关党委举办党务干部培训班 2019-04-17
  • 上海合作组织青岛峰会举行 2019-04-07
  • IT热点小度智能音箱发布 新飞电器破产拍卖 2019-04-04
  • 台州公务员管理再也不用“往返跑”了!“最多跑一次”撬动组织人事改革 全省首个试点 2019-04-03
  • 我要讨干嘛?姜太公钓鱼,愿者上钩。 2019-04-03
  • 新疆花开天山南北 笑迎八方来客 2019-03-25
  • 机器人占领就业市场后:人类还能从事这些工作 2019-03-04
  • 以网络文化建设推进文化惠民 2019-03-03
  • 贸易战,只能是双输。我们是众志成城,美国却不一定。 2019-02-26
  • 辣评2016年9月最HOT 轿车获奖榜单 2019-02-22
  • 交通运输部路网中心:端午假期高速通行不免费 2019-02-18