testads1

2016年3月26日星期六

A*寻路——多人寻路

之前两篇▶A*寻路——基础入门与战术寻路、▶A*寻路——跨层寻路和大家分享了一些A*的简单的用法和例子,这次分享下A*的多人寻路的做法,也算是A*的完结篇。

在我们玩魔兽或者红警的时候,我们经常会做的一个动作就是拖动大量人物,然后进行一些移动操作,这时被我们选中的人物会排好队依次前进,到达我们指定的地方。我们作为一个游戏设计者需要控制组成小队的多个AI角色,那么现在我们看看A*能做成什么样的效果。

首先我们从性能上分析,A*寻路要求的计算量是比较大的,很难在一帧之内完成,如果还是同时为一群AI寻路,A*寻路就会显得比较吃力了。

对于这样的情况,一种可能的解决办法是将A*寻路和之前说的群体操控行为结合,选择一个AI作为领队,用A*寻路算法为这个单元计算路径,然后队伍其他单位只要利用跟随领队行为,以及分离,聚集,队列和避障这几个组行为结合就可以了,这样不仅降低了寻路的计算量,而且群体看起来比较真实,也不会互相拥挤碰撞。
但是如果小队的规模比较大,或者地形很复杂,有好几层的话,这个解决方案不一定能正常工作,这时我们可以采用另外一个方法,就是为每个单元的目标位置都加上一个偏移量,这样我们的小队单元接近目标的时候,就不会互相拥挤或者碰撞,好,那我们开始!

我们分析好思路,那现在我们就从以下几个方面开始考虑

集群系统:小队的每个单元需要协同移动,所以我们要编写让他们以这种方式移动的逻辑

雷达: 用来寻找周围的队友,如果距离过近就产生一个排斥力。

寻路与避开障碍:让那个单元找到一条路径,而且需要避开中途的障碍物。

目标点:如果全部单元的目标点都是同一就会产生堆叠和碰撞,所以我们需要为小队的每个单元生成不同的目标点,这样就不会互相堆叠起来。
   
首先新建个场景,添加Obstacles,Ground层。然后创建一个平面将Layer设置为Ground。然后添加一些墙体做障碍物,将Layer设置为Obstacles。

然后创建一个空物体命名为A*,选择GridGraph,设置好相应参数,扫描,建立基于单元的导航图。最后创建一个目标点预制体,创建一个空物体,命名为MyDestination,添加rigidbody,然后添加一个Destination.cs脚本,这个预设物就作为我们双击鼠标在目标点后产生的AI移动的目标点。

然后放到Project目录,后期自动产生。
然后,我们设定一个目标点,当我们双击鼠标,就在鼠标点的地方产生一个目标点,如果我们小队中全部成员都向这个目标点移动的话,那就会产生拥挤火堆叠,所以我们改成以原目标点为中心,为小队中每个成员寻找原目标点周围的位置作为寻路目标,我们来开始新建一个脚本Destination.cs  用来实现给目标点周围添加角色移动的点。

我们创建一个空物体,命名为myDestination ,把脚本拖上去,然后放到Project面板保存起来,下一步在创建一个目标位置管理器,创建一个空物体,名称为Manager,再添加一个DestinationManager.cs 脚本。




然后我们把刚才创建的myDestinationPrefab 拖到Manager的DestinationPrefab位置中,然后我们把人物拖入场景,命名为EnemyAI  ,加入CharacterController角色控制器组件,调整好位置,在添加Seeker组件 Component-Pathfinding-Seeker , 再添加Boid脚本,为了能平滑移动,在单击component-Pathfinding-Modifiers-SimpleSmoothModifier  加入一个平滑脚本,设置好AI后,我们复制多几个出来,让他们组成角色小队。
我们需要实现群体中个体之间的协调运动,至少需要两种行为:聚集(用于产生将单元聚集一起的力)和分离(用于产生单元之间彼此分离的力),使他们不至于撞到一起。

然后我们还需要一个状态奇,为小队单元设置3种运动状态,Idle闲置,Moving移动和Organizing组织。

在Boid.cs脚本中,实现了"邻居检测雷达",使每个单元都可以知道在一定半径内是否有其他单元,而为了实现这个目标,我们使用Physics.OverlapSphere函数来探测周围碰撞体,但是这个函数的性能开销比较大,所以我们使用一个协同来运行。

寻路也在这个脚本实现,我们继续使用A*,当计算好集群行为的操控力和路径时,需要把他们结合到一起,并且作用于角色控制器,在Update函数中应用这些力并进行位置更新。下面是Boid.cs代码:







好了,到这里就基本差不多了,我们运行工程,随便双击一个地方,就可以看到小队一起移动到我们要去的目的地了。
而且过程中不会发生太大的拥挤,如果我们取消A*,改用我们unity自带的寻路其实也是可以的,非常适合手游MMORPG方面的一些团战AI,对了,如果大家在制作的过程中,如果发现人物会到处乱转上下不停抖动,那极有可能是角色控制器范围太大造成的,AI和AI之间发生拥挤,这时候把碰撞器的范围缩小就搞定了。









2016年3月21日星期一

盘点2015 | Unite 2015 技术精品课程回顾



Unite是Unity倾力打造的一年一度的开发者盛会,Unite 2016将移师上海举办,时间是4月10日到12日!大会门票正在火热发售中,Keynote门票限时免费!把握机会,点击原文立即报名参加吧!

今天我们将为大家盘点Unite 2015大会上最受开发者欢迎的精品技术课程!希望大家能从中获益!

点击课程标题可跳转至具体课程页面,建议在WIFI环境下观看!



1
Unity项目架构设计与开发管理
本课程讲解了Manager of Managers的概念,详细介绍LevelManager,PoolManager等开发方式,有助于培养开发者项目开发和管理中的规范。并介绍了如何使用Strangeloc和UFrame这两个Asset Store上的精品插件,从而为项目提供更加标准的管理模式。本次课程会让你对开发管理有更多新的领悟!


2
Unity资源的优化管理
AssetBundle是Unity提供的一个强大的资源打包、更新系统,但是在使用的过程中需要特别小心资源的依赖关系,否则可能导致资源的重复和冗余。这个课程主要内容是介绍Unity 4.x下的一个AssetBundle依赖关系打包算法,可以全自动的完成AssetBundle的依赖关系打包,可以避免手动处理导致的繁琐工作,以及可能出现的操作失误。

3
Unity 5 图形系统介绍
《 Unity 5图形系统介绍》重点介绍了Unity 5中PBS(基于物理的着色器)与GI(全局光照)。PBS介绍了相关原理,编辑器以及Shader编写及使用,Reflection Probe等。GI介绍了Lighting面板的使用,强调了在制作过程中比较容易出问题的Realtime和Bake GI等。如果你在场景搭建的过程中遇到相应问题,或许可以从该课程中寻找到想要的答案。

4
Unity 5 的新AssetBundles打包功能
AssetBundle作为Unity进行资源压缩和加载的重要工具,是每一位Unity开发者必须掌握的。本课程重点介绍了Unity 5中新版本的AssetBundle功能。

Unity MVC框架 StrangeIoC

       StrangeIoC是一个超轻量级和高度可扩展的控制反转(IoC)框架,专门为C#和Unity编写。

MVCS工作图:
官网文档对自带的示例进行了详细介绍,可以看一看。

Unite 2016 | 国内技术专场议题提前曝光(下)

一年一度的开发者盛宴——Unite大会,离我们越来越近了!我们已经提前曝光了国内技术专场上半部分的内容,今天为大家介绍下半部分。

看看下面的课题哪些是您最感兴趣的?

1
Asset Store精品案例推荐
介绍Asset Store上的优秀插件。其中包括:
-ProBuilder,一个快速的场景创建工具,提供非常实用的建模工具,开发者可快速创建自己的场景;
-Pro Camera 2D,专业的摄像机跟随系统,提供多种多样的摄像机在2D平面上的跟随方案,非常适用于2D卷轴游戏;
-Easy Save,一套完善且专业的数据读存取方案,支持多种Unity内置数据类型;
-Rewired,一套高级可视化的输入定制系统,开发者只需少量的代码就可以实现多玩家输入。 

2
Unity项目管理设计
项目管理是一个重要且持续的过程,因为游戏开发具体涉及程序逻辑实现,美术资源作制作,策划文案书写,部门人员沟通等复杂内容。尤其对于Unity项目来说,各种资源分类及访问都会直接影响到项目开发的效率。所以在项目之初对项目整体结构有个大体设计是至关重要的。

3
Unity Ads:为你获得更多盈利
该课题介绍移动游戏视频广告的全球趋势,让用户更加了解如何正确使用Unity Ads 的服务。在本次课程上,Chris会通过Rovio和SEGA等成功案例,为大家分享最佳的广告集成策略以及教授您如何将游戏与广告完美融合。

4
GPU Instancing 技术简介
简单介绍GPU Instancing的原理和应用场景,并实际演示如何通过修改Shader来利用Instancing技术减少Draw Call数量。游戏内资源过多场景过大都是导致运行效率低下的原因,而此课题能够帮助大家深入理解背后的原因以及可以采取的优化办法。

Unite 2016 | 国内技术专场议题提前曝光(上)

一年一度的开发者盛宴——Unite大会,离我们越来越近了!本次大会上,来自国内外的Unity官方工程师以及业界知名的技术大牛,将为大家带来更前沿更尖端的技术分享,让大家全方位深入了解Unity引擎的强大功能以及各领域的相关应用。
今天我们将为大家揭晓本次Unite大会的国内技术专场的部分内容,看看哪些课题你最感兴趣呢?

1
Unity 5.x Editor新功能介绍
Unity 5发布以来,编辑器内又陆续加入了一些全新的功能。该课程将为大家介绍其中几个实用且有特色的功能,包括图形调试工具Frame Debugger,自动化测试工具Test Runner和新的内存调试工具Memory Profiler等。
2
Mecanim新功能讲解
Unity新的Mecanim动画系统自从发布以来又陆续加入了一些新功能,帮助开发者创造更为真实的动画效果。该课程将详细讲解Unity 5.0发布之后,新增的State Machine Behaviors,Random Nodes,Procedural States等功能特性。
3
多场景编辑
Unity 5.3中开始支持多场景编辑功能。本课程将介绍该功能的基本使用方法,进而介绍一些相关的底层实现逻辑,并将介绍该功能的应用场合以及一些使用技巧。
4
Shader使用技巧与案例分析
介绍Unity中shader的使用技巧,创建一些高级的视觉效果。介绍多种游戏中常用的视觉效果的制作原理及方法,如透视效果、卡通渲染等,并通过具体的案例来具体分析shader的编写方法及技巧。
5
Multiplayer And Networking
深入讲解Unity引擎全新的Multiplayer Networking系统,有助于开发者尤其是独立开发者快速开发多人在线游戏,具体内容包括网络建立,数据传输,玩家管理,服务器/客户端逻辑操作等。

Unity首次全球官方认证考试,正式开启报名!

成为Unity认证开发者,向雇主展示你拥有他们所需的Unity技能,你将有更大机会获得理想工作,进入梦想的游戏开发行业。Unity认证考试用行业标准来检验应试者的基本游戏设计及开发技能,证书就是应试者能力的最佳证明!

同时,基于Unity官方认证,游戏公司与开发工作室可以更加客观地衡量求职者个人具备的Unity知识与技能,进而帮助公司建立起更加专业的开发团队。

4月11日,首次全球Unity官方认证考试将在上海举行,相关信息如下:
考试时间:
2016年4月11日 14:00-16:00,16:00-18:00
考试地点:
上海市静安区延安中路1218号 静安香格里拉大酒店

成功通过本次认证考试的应试者,可以获得带有认证ID的电子版Unity官方认证书(可打印),并被录入全球Unity官方认证名单,世界各地的游戏行业雇主都可以通过查找认证ID找到你。此外,通过本次考试,也将会获得Unity认证的专属T恤和勋章。


点击[阅读原文],即刻报名参加此次Unite大会上举办的Unity认证考试,可以享受七五折的优惠,并且将有机会成为中国区第一个拿到Unity官方认证的开发者!

认证考试Q&A
1
考试内容有哪些?
Unity开发者认证考试包含了使用Unity开发视频游戏的基本技能。该考试由20个不同主题的100个问题组成,目的是评估应试者对于游戏开发过程所需知识的综合理解情况。我们还提供了Unity开发者认证考试大纲 (英文),其中包含考试涉及的各主题概要。

2
应该如何备考呢?
有些开发者可能在看过Unity开发者认证考试大纲就可以根据已有的知识和经验参加考试了。而有些可能觉得自己还需要多进行一些学习准备。对于备考的开发者,推荐观看针对Unity认证的付费培训课程,但这不是必须的。

3
考试时间多长?
整个考试约有100道题,限时90分钟完成。如果考生未在规定时间内回答完所有题目,则根据已回答完成的题目来评分。

4
需要带什么参加考试?
请带上有效身份证,每位考生都需通过身份验证。考生还需自带支持Wi-Fi的笔记本电脑,建议同时带上鼠标和电源。

5
如果未通过考试会怎样?
未通过的考生可另选时间再次参加考试,报考价格为首次报考的一半 (50%)。

退款及考试取消规定
认证考试一经注册不可转让。在考试时间24小时前,可以申请取消考试并退款。截止到考试时间不足24小时收到的取消申请,以及缺考的情况不予退款或更改考试日期。

相关条款
请仔细并完整的阅读Unity认证考试条款。注册考试就表示您已知悉并同意所有条款。

想了解更多考试大纲及Unity认证培训课程的详细信息,请访问Unity官方中文社区(forum.china.unity3d.com)。