基于Unity3D 的即时战略战争迷雾系统开发与实现_第1页
基于Unity3D 的即时战略战争迷雾系统开发与实现_第2页
基于Unity3D 的即时战略战争迷雾系统开发与实现_第3页
基于Unity3D 的即时战略战争迷雾系统开发与实现_第4页
基于Unity3D 的即时战略战争迷雾系统开发与实现_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要RTS即时战略游戏为众人皆知的一种游戏类型,在多种游戏载体中电脑(PC)独占一席。战略游戏主要分为:回合制策略游戏、即时略游戏、在线即使战略游戏。本篇所讲述的内容为即时战略游戏,模拟真实流逝的时间是构成游戏的重要元素,玩家以上帝视角参与游戏,选择好游戏的类型,研究这类游戏的开发过程,以及学习其中的游戏理念。在过去很多的时间里,RTS凭借着掌控全局的战术分析,以及在微观部分上各种操作,极具观赏性和可玩性,让玩家获取成就感从而风靡了全球。这种童年时期的电子游戏,在国内市场盛极一时,如今鲜有人问津。本篇论文的立论基础:研究RTS的发展历史,游戏的内在结构,了解游戏的基础玩法,这类游戏在市场中的定位,以及它和如今市场上绝大多数热门游戏的不同之处,还有其由盛转衰的原因。关键字:Unity3D即时战略游戏开发

AbstractRTSreal-timestrategygameisawell-knowngametype,withacomputer(PC)occupyingaseatamongvariousgamecarriers.Strategygamesaremainlydividedinto:turn-basedstrategygames,instantstrategygames,onlineevenstrategygames.Thecontentdescribedinthisarticleisareal-timestrategygame,therealnameofthereal-timestrategygameinEnglishisReal-TimeStrategy.Thiskindofgamesimulatesreal-timewaractivities.Simulatingtherealelapsedtimeisanimportantelementofthegame.FromtheperspectiveofGod,playerschooseagoodgametype,understandthedevelopmentprocessofsuchgames,inordertolearnthegameconcept.Foralotoftimeinthepast,RTS,withitstacticalanalysistocontroltheoverallsituationandvariousoperationsonthemicroscopicpart,ishighlyornamentalandplayable,allowingplayerstogainasenseofaccomplishmentandbecomepopularallovertheworld.Thiskindofchildhoodvideogameisverypopularinthedomesticmarket,andnowfewpeopleareinterested.Thebasisofthisthesis:tostudythedevelopmenthistoryofRTS,theinternalstructureofthegame,understandthebasicgameplayofthegame,thepositioningofthistypeofgameinthemarket,andhowitdiffersfrommostpopulargamesonthemarkettoday.Therearereasonsforitsdeclinefromprosperity.Keywords:Unity3D、Real-TimeStrategyGame、Develop目录第1章绪论 第1章绪论1.1选题目的及意义科技发展到如今,世界已大为不同。手机游戏,PC端对于主机端游戏,乃至VR游戏逐渐进入市场,丰富了开发游戏的方式。游戏开发的进展之路,一路走到现在,游戏免费作为市场主流的运营模式。它的不同于商业化的独立游戏,售卖至今的优秀游戏多数在PC端和主机端这两个平台比起还未全面发展起来的虚拟现实游戏游戏世界日新月异。当时极少数人在电脑上玩游戏,引用电子游戏的简史,那些首批次撰写程序的都是闻名世界的大学的成员,而又或者作为实验室这类型军事为集体的的参与人员,早期的游戏开发者无不是精英众多的精英。比起这些早在其他器材的示波器上作为载体的游戏出现的问题,银幕小问题,简陋问题,画面显示问题。相对如今,平台游戏众多,游戏产业如此发达的世界,游戏只是从现实物理世界搬到了由冯·诺伊曼结构实现通用图灵机的计算设备上,从现实物理世界搬到了科技发展出来的虚拟环境。伴随着这样的发展,20世纪70年代的街机进展过程转变为1980至1989年,应运而生的它们,适应时机而产生,“实天生德,应运建主”;在我国改革开放和现代化建设时期的1990年左右,国外的游戏机的游戏画面胜过街机游戏,街机厅开始破产,放在公共娱乐场所的经营性的专用游戏机开始淘汰。电子街机行业黄金时期随之而去,家用游戏主机,通过微处理器和显示设备给予玩家游戏体验,从早期著名游戏机到时下几种耳熟能详的PS4、Xbox和Switch,分别索尼微软和任天堂,全世界的玩家不在少数。个人使用的多用途计算机在1970年代称时尚,热爱游戏和编写电子游戏程序都变得愈来愈益,不再特殊。Gamedeveloper(游戏开发者)从早期的磁带驱动和软盘,到如今的机械硬盘和固态硬盘,PC硬件飞速提升,在20世纪90年代中期成为主流游戏平台。盘点在PC强势的游戏,战略的策略类、单人称射击类及多人在线大型游戏繁多,玩家都是热衷的。电子游戏根据玩法分方向动作、射击、冒险、经营、模拟、音乐、益智、体育、策略、赛车类,上述描述也仅仅显露出来的一小部分。随着不同游戏元素的交错融合,新型游戏在不断的诞生,上述游戏的交叉种类也在不断的更新人们的认知。GTA5就是一款包含了动作冒险、第三人称射击、赛车、模拟养成、动作及策略类的游戏,这种交叉着多种元素的游戏受大众喜爱。这类游戏进程高速,更谨严于多个方向:扩展、研究、采撷、歼灭。单独论Real-timeStrategy游戏,是策略类游戏,可以用多个元件来大概归纳:收集材料,建设家园,点亮科技数值点,间接操作团队。与由同一大类的RPG彼此无差异。RTS作为主流策略类游戏代表之一,典型的《命令与征服》、《星际争霸》作品。过去即时战略(Real-timeStrategy,RTS)和第一人称射击(First-personShooter,FPS)这两大类游戏,它主要流行在PC平台,在21世纪之后,已经可以登录游戏主机平台。根据育碧的市场调研,如今中国游戏市场,免费游戏占70%以上,而移动端游戏是逐年增加的。热门的移动端包括Android和IOS在内的手机平台。RTS想要再度流行起来,突破自身的瓶颈,从PC跨平台到如今市场更广的移动游戏平台和主机游戏平台市场经济角度下来看,移动端比非移动端。国内来,基本上可以做到付费碎片化(首冲,等级,月卡等),而非移动端大部分消费属于模块化的消费(各种DLC,甚至游戏本体等)。RTS类型游戏的衰落有目共睹,游戏登录平台是一个主要的原因,最重要的是入门较难且捷径较少,传统游戏机制不符合现今游戏市场,大部分玩家急于求成的心态无法满足,逐渐被越来越快餐化的市场淘汰。1.2研究现状Unity3D(以下简称U3D)在游戏开发引擎中处于领先地位。竞争领域的厂商中,由Epic平台开发的UE4(虚幻引擎4),存在公知,为多数人授权,并被他们所接受认可的游戏开发设计引擎之一,其中虚幻现实真人模仿能力很强。虚幻引擎的最大好处是其图形功能该引擎的目标是AAA游戏,可以使用AAA图形。此外,它还具有用于多人游戏的内置工具,可方便地制作Fortnite之类的游戏(已使用虚幻引擎开发)。但是,通常并不意味着最适合交互式应用程序的游戏。以下是虚幻:不支持VuforiaAR平台(这意味着某些AR功能无法实现)2D游戏开发的便利性低对移动设备的优化不佳(旧手机性能较差,二进制文件更大)强制性要求向EpicGames(虚幻引擎开发人员)支付产品收入的5%支持较少的平台和工具并且开发复杂。国内的游戏开发引擎U3D和UE4成为主流,作为在校的学生来说,开源且免费的U3D是学生的不二之选。因此,将U3D作为交互式应用程序游戏开发、VR和AR应用程序首选。U3D的游戏脚本基于VisualStudioCode,强大的插件扩展,程序员可用JavaScript、C#加以编写。U3D具有非常强大的社区和工具,可帮助开发者轻松构建3D游戏。即使是业余爱好者依然可以开发出符合自己的游戏产品。不需要花费大量时间,仍然获得经验。表现出色意味着开发者能经常获得一些好的见解开发者仍然需要花费一定的时间和精力从AssetStore(资产商店)下载一些U3D完整的项目以及U3D的插件,了解专业人员如何解决,理解和使用问题。另外,资产存储库中还有许多其他发行商提供的免费完整项目。1.3研究内容一个RTS游戏界面一般包含有以下几个要素:玩家的游戏视角主要表示为的自顶向下俯视视角,主界面为3D游戏既视感,可以自由切换视角,从而看掌握具体单位、环境模型,这个界面能显示当前的单位,房屋,家园,路径条件等各种因素。一个置于屏幕侧方或者角落的小地图,以图形显示所有的战斗场景的主要资料,包括且不限于材料收集区,中立地点,敌我双方单位多方面相对比,战斗状况,正在交战的地点,以及我方所有单位房屋的地理和可视区域,部分小地图还能显示地形等信息。一个用于控制单位的指令界面,指令包括移动、攻击、防守、巡逻、撤退等,亦包括相应的技能施放指令,配合相应的快捷键。一个用于生产建造界面,一部分是直接在屏幕底部显示,一部分则是指出特别的开发建造单位或生产资源单位数量来显示,点击之后可以在地图建设家园。第2章游戏引擎相关内容介绍2.1Unity3D脚本中的值类型Vector2、Vector3这两个结构分别用来表示2D向量、3D向量程序员表示2D的位置和向量时候,Vector2结构则是用于在这样情景下,包括了Grid中的矩阵或者textures坐标中的位置偏移。在其他情况下开发情景的主要是调用Vector3来展示方向向量和点的。传递方向向量通过改结构在游戏引擎实现。它也包含做些简单的向量运算的方法。向量结构静态成员有down、left、one、right、up、zero、back、forward。向量结构实例成员有magnitude、normalized、sqrMagnitude、x、y、z、w,提供了当前实例的具体状态是因为这些实例变量。这些内容通常在3D游戏开发的过程里面,就是不可或缺的工作内容。因此,为了方便游戏程序员能够便捷地进行各种计算向量的方法,有数个常用的方法以向量结构方法提供来计算。【Unity3DUnity3D脚本编程使用C#语言开发跨平台游戏陈嘉栋北京:电子工业出版社,2016.09方法作用Cross向量交叉乘积Dot向量的点乘积Distancea和b之间的距离Lerp向量之间的线性插值表2-1向量结构方法别的普通的值类型如Color,应用呈现RGBA色彩,当中的r、g、b诠释了RGB色彩,是代替红绿蓝和透明程度的多个要素。最后一个A透明度是A。射线即为当中的Ray。射线就是一条有限长的线,初始点为原点,朝向某个方向射去。2.2C#语言基础C#中大部分类型都是引用类型,但是在实际开发中,能够得知开发者使用次数为主的是值类型这个类型。引用类型要是在managedheap分配,C#实现条件对象都调用new操作符的创立。普通也将Class、Interface引用类型来使用,还有一些内建引用类型为Dynamic、Object、string。用Unity3D引擎设计的同时,C#脚本方便了相应的Unity3D中API脚本中的引用类型,该引用类型为游戏开发者掌握了使用C#的同时,更好提供便利条件应用到游戏开发。有如:UnityEngine.Object类,UnityEngine.Object类提供的类成员有hideFlags,name,GetInstanceID,ToString、Destroy、Instantiate等。UnityEngine.Component类,UnityEngine.Component类提供常用的类成员有gameObject、tag、transform、GetComponent、GetComponents、SendMessage等。UnityEngine.MonoBehaviour类。UnityEngine.MonoBehaviour类提供常用的类成员有Awake、FixedUpdate、Update、LateUpdate、OnCollisionEnter、OnCollsionExit、OnCollisionStay、OnDestory、OnDisable、OnEnable、OnGUI、OnTriggerEnter、OnTriggerExit、OnTriggerStay、Start等2.3RTSEngine插件引擎引擎提供建造属于的RTS游戏和开放所需的所有需要的功能,能够加工地形的建造,玩家阵营,NPC的AI,建筑物信息,战斗单位,战斗信息,任务信息,资源材料,UI界面,单人、多人功能等等。2.4Shader和Material一小段的就是Shader部分,真实的情况中Shader担任把从外部送到内部的网格将按照要求所采取的工作样式,与色彩或者从外部送到内部的贴图等整合过程产生,然后从内部送到外部的内容。一部分预先强调结束的Shader是色彩、纹理等与之相关的高级全局照明渲染插件能够按照要求获得处理的色彩和点集合的相关联系的应用。但是Shader的游戏程序开发者需要的就是获得的数据,使用计算转换,产生新的数据而已。进来的数据的纹理或者色彩等,添加相关的Shader之后,并且连接Shader的自定义的参数内容,将这些Shader及输入数据整合放置一块,最终得到的数据成为了新的Material。简单来说,拥有影响最终对象“外观”的Shader,然后创建了影响Shader特定方面(例如颜色不透明,凹凸)的贴图。Shader和贴图的组合称为Material。

第3章游戏设计介绍3.1游戏简介使用了Unity3D内置商店AssetStore的商业插件TheRTSEngine,RTS引擎的插件之上的游戏Demo场景部件。3.2游戏资源素材游戏的选用素材来自Kenny免费商店。制作游戏创新原型模型某一个优秀的资源站点,有超过上万个游戏资源素材,不仅归纳了种类繁多的UI界面内容资源、一般2D场景游戏内容和贴图。包括了良好的其矢量图,因而对于独立游戏制作人员相当优秀的,不仅这些资源任意制作任意平台的显示,绝大部分的素材是任由下载使用的,你也能够自发捐献9美金下载全部内容。图3-2-1KennyGameAssets的自然包扩展自然包的扩展版本增加了新的树木,树叶,岩石以及其他结构和物体。可在Unity,虚幻引擎和所有其他3D引擎中使用,优化的低多边形模型,没有纹理(仅材质)。图3-2-2KennyGameAssets的UIPack:空间扩展UI包的扩展,包括用于创建用于太空或现代游戏的图形用户界面的元素。图3-2-3KennyGameAssets的城堡套件该套件包括用于建造城堡的模型(以及等距/自上而下的精灵)。其中包括城堡的城墙,塔楼,城门,攻城武器,人物,旗帜等等。3.3游戏指令普通的指令系统,玩家们可以通过自行按键各种简便指令来得到需要的行动,又或者变换单位状态。游戏指令快捷键相机运动:WASD/方向键放大/缩小:向上/向下翻页或鼠标滚轮空格关注单位:P摄像机平移:(按住)LeftShift保留和放置建筑物:H旋转到位建筑物(+):G旋转到位建筑物(+):(按住)LeftControl多种选择:鼠标左键选择:鼠标右键任务分配:鼠标左键双击分配单位组:1or2or3+LeftShift选择单位组:1or2or3表3-3游戏指令图3-3控制说明界面摄像机功能RTS的摄像机供给整个必要的功能:缩放摄像机镜头,限制移动摄像机,跟随单位行动,平移地点等等。RTS小地图和小地图摄像机能够在地图上快速,更高效地移动,而且能够对玩家的单位在受到攻击同时提醒信息。提供为我方敌方阵容、我方敌方自由单位、我方敌方建筑物类型和公共资源类型自定义相应的图标,因而令玩家对整个地图上的过程有完整的了解。3.4游戏单位游戏单位单位描述材料A材料B材料C骑士近距离攻击会造成伤害矿石70木头60矛兵近距离攻击可以快速移动矿石30食物50弓箭手远程攻击,生命值中等食物50木头40弹射器远程车辆,对建筑物非常有效,不能攻击任意单位木头90科技50攻城塔在攻城塔内运输任意单位矿石70木头60科技50航天器展示一个空中单位矿石100弓箭手升级为火弓箭手造成更大的伤害并且快速移动科技300食物80木头50 表3-4游戏单位表总览任意游戏单位建造不一致类型的单位来进行任务过程,有创建建筑,收集材料,生成材料,攻击敌方阵营,治疗其他单位,杀害敌方单位,移动其他单位等。启动单位的默认行动,为治疗者、转化者可以在指定的区域内确定目的单位进行使用能力,而且能够建筑者、村民移动到需要的建筑,或者可收集资源,并不会闲置的建筑。通过一样的方法建造不一样类型的单位:要是是一般的移动单位,弹射器、船、坦克和航天器,就通过一样的进程来建造不同特色的单位。应用不一样的移动方式移动不一样的单位组,而且可以查看简单定义整个和移动相同的设定。建造不规定所有阵容和在地形上安置的自由单位,而且把它作用在地图上奖励,玩家和电脑阵容能够狩猎的单位,或者在任何适合RTS游戏的单位的保护者。地图和阵容建造和设置出特别的地形。按照分配一部分特别的建筑,单位,任务内容和限制内容建造阵容而且设置出所有阵容。设置好NPC阵容而且按照观察者完全掌握它的行为,来设计几个难度等级,而且在和NPC阵容完成战斗时多次得到不一样的效果。按照观察员简单调理和智能相联系的内容来掌控NPC阵容决定进程的多个方面,而且定义多种智能难度等级,为了在多个游戏中供给不一样的游戏体验。战斗/攻击系统单位、建筑可以接触攻击敌方单位或者建筑,也能够应用进攻的对象攻击敌方单位或者建筑。伤害能够应用到某个目标,也能够应用到全部目标。攻击设置的包括:按照时间进行造成伤害,CD,伤害和攻击特效,视野,多次攻击进行转换等。从观察员简单地替攻击单元设置和造成不一样的进攻范围和移动、攻击方式。升级简单用于的建设的组件可以提升单位与建筑。所有提升也能够直接敌方单位、建筑提升作用,让玩家可以设置把阵容升级到新的时代的进化。3.5建筑单位游戏单位单位描述材料A材料B首都扩大你的国家边界,并创建平民,治疗者,和转换者食物120木头120图书馆允许你的阵营进行科学研究并收集科技点木头60食物30仓库允许单位收集资源木头60矿石40住宅将最大人口增加5,并作为非军队单位的隐身处木头60食物30营房创建可以为你赢得战斗的单位,属于军队单位木头120小塔这个建筑物攻击所建造地点范围内的敌方单位木头40矿石60 表3-5建筑单位表总览建筑建造建筑而且让所有阵营成为阵容,进行不一样的任务内容:添加阵容数量,进攻敌方单元,提升单位、其他建筑。生成材料,移动单元,担任单位的隐蔽点等等。按照增加血量状态与结构状态来,新的方式设置建筑,如此状态和结构状态可以建筑按照隐蔽、展示特别效果和模型的不一样内容来展示它当前血量状态信息。所有阵容在地形上都有界限,可以阵容使用资源材料而且把建筑安放在界限所设定的区域之中。在地形上设定界限,用来可以阵容在游戏中表示家园区域,而且能够在它区域内独自建造建筑和收集资源材料,又是禁用界限可以阵容在游戏地形里任意移动。图3-5-1营房预设组件营房的创建之中,选择好模型之后,添加WorkerManager脚本,TaskLauncher脚本用以创建游戏中游戏战斗单位,添加战斗单位的功能描述,战斗单位的图标,战斗单位所需求资源内容。Building脚本用来描述该建筑物模型的功能效果如营房名称,营房所属于的建筑分类、营房的图标。BuildingPlacer脚本限制营房这个建筑物所需求资源的种类和大小、BuildingHealth脚本显示建筑物的生命值等内容。图3-5-2预设组件脚本的数值第4章游戏实现内容4.1菜单界面用户界面使用UI界面,包含了任务内容,单个、多个选择内容,资源内容,暂停菜单面板,胜利、失败游戏菜单面板。工具提示菜单内容,健康值,玩家鼠标建筑上显示健康状态、单位等。采用对不一样的阵容范例,使用不一样的UI样式。场景1MainMenu战役按钮,为了运行场景2CampaignMenu。更新场景游戏战役选择模式。按照鼠标按下该按钮,就能够加载运行的战役选择。如果玩家把鼠标悬停到按钮上方,以及按钮移出鼠标时,按钮就会对应的颜色状态变化显示。图4-1-1场景1MainMenu单人游戏按钮:用来进入单人游戏界面,也就是场景3SinglePlayerMenu。当按下选项按钮的时候,跳转到单人游戏界面。玩家可在单人游戏界面设置阵营数量以及该阵营的颜色、名称、类型和难度水平等。图4-1-2场景3SinglePlayerMenu离开按钮:用来退出游戏。场景2CampaignMenu描述:该场景表现为游戏的战役模式,场景2里面的第一个战役为游戏加载,第二个战役为灰色状态显示,灰色状态是不可点击形式,需要完成第一个战役后方可解锁。图4-1-3场景2CampaignMenu加载按钮:用来加载所选择的战役,加载后进入游戏。重置进度按钮:用来重置已完成的战役。从而初始化战役模式。任务和场景全面动态展示并可设定的任务内容,能够建造个人战役。内部的任务条件有材料收集,单位、建筑的生产、生存以及失败条件包括了时间长度的限制,防护单元、建筑,阵营失败,以及能够按照别的方法设定的任务条件、失败条件。所有场景皆是系列工作,需要根据玩家指导先后进行,而且能够任意地形情景里应用。给予某个简要的系列菜单,能使玩家设定某系列情景,玩家能够载入,运行和结束如此情景,通过这样解锁下个任务。4.2菜单界面的制作MainMenu菜单简单的加载场景和退出游戏代码部分内容public

class

MainMenu

:

MonoBehaviour

{

……

public

void

LeaveGame

(){

Application.Quit

();

}

public

void

LoadScene(string

sceneName){

SceneManager.LoadScene

(sceneName);

}}加载按钮实现逻辑,由manager调用以刷新UI元素的内容public

class

ScenarioMenuUI

:

MonoBehaviour{

……ScenarioLoader

manager;public

void

Init(ScenarioLoader

manager,

int

index){……}//由manager调用以刷新UI元素的内容public

void

Refresh

(string

name,

string

description,

bool

available){}

//单击加载按钮时调用public

void

OnLoadButtonClick(){

manager.Load(ID);}}图4-2可视化创建及事件绑定4.3场景界面游戏主界面均使用UGUI制作,分布在屏幕分别有任务面板、资源面板、人口面板、工具提示面板、任务面板、选择面板、工具人状态选择按钮、玩家信息面板、上帝模式面板、切换控件菜单、控制菜单、暂停游戏按钮、暂停菜单、游戏胜利菜单、游戏失败菜单、游戏冻结菜单等。控制选择应用键鼠控制某个或者多个单位,建筑或者材料来展示相关它们的内容信息和替其担任任务。玩家想要在典型的RTS游戏中得到全部控制的功能,包括了多次点击单元以在视野内选择一样的单元种类,控制玩家的阵容自由单元等等。多组控制:把指定的单元组按照给自定义的按键,然后随时应用一样的键按控制一样的单元组。图4-3游戏收集材料资源材料建造和设定好多种多样的资源材料,用来提供各阵营采集与消耗该阵营安置家园的建筑,进行行动与建造单元。使用材料收集来收集资源材料,或者在将要达成某个数量时,使它们跌落到建筑中。在地形中添加奖励,而已奖励拥有资源材料。任务系统使用TaskLauncher关系到单位或者建筑,而且为它建造条件。条件类型包含了单元建造,科技,毁坏和设定等。设置出条件则为了把委托事件安置到自己设定的组件,传递到任务进行里面键入的全部任务信息的条件,让玩家能够下一步设定资源。在任务启动后,完成、失败时,所有任务进行也能够自己接触事件。4.4场景界面的制作地形的内容场景地图是RTS游戏的首要搭配信息之一,多样式地形能够让玩家在体验游戏的进程中拓展与采集资源材料,自我发展与壮大。图4-4-1游戏场景的山地模型图4-4-2山地总预览多个山地模型合成一个地图,一个地图包括了不可穿越的物理地形,物理地形需要通过战争迷雾的范围扩大来解锁视野。地图中除了物理元素意外,还包含了可供玩家收集的5种资源,包括木头、食物、矿石、科技点则需要玩家建立相应的建筑物获得,还有野外箱子的探索可以获得资源并且有中立生物。图4-4-3游戏场景中建筑物的样式图4-4-4场景全部可收集资源类分布图预览显示所有的资源种类,总共有5个元素,3个是玩家可以采集的元素,分别包括木头,矿石,食物。该管理组件包括了资源类型,资源图标,资源名称。可以创建一个ResourceManager管理组件来实现资源的采集种类和资源类型数量。图4-4-5可收集资源类管理器管理组件内容在场景4DemoMap中,包含了诸多内容其中的管理器组件包括了GameManager管理组件、TerrainManager管理组件、AttackManager管理组件、TaskManager管理组件、UnitManager管理组件、UIManager管理组件、UpgradeManager管理组件、ResourceManager管理组件、BuildingsManager管理组件、MissionManager管理组件、DemoSceneManager管理组件、MinimapManager管理组件、GodMode管理组件等等。图4-4-6管理组件界面

第5章战争迷雾系统5.1简要概述战争迷雾寻常一般的某项技术,其中即时战略这种游戏里面中取得了分外多的行使。可视区域通常在即时战略游戏里,要求时刻的运行搜索和探查从而拓宽新的的可视区域,又或者应用表明我方单元能够观察的视野,又或者为逃避敌军等。本章的战争迷雾的实现,则通过玩家视角的上帝视角达到渲染的效果,应用该类方法则把所有初始范围内的可视区域渲染表示。实现了的基本效果是黑色半透明的迷雾,玩家探索之后是半透明,没有被视野遮挡就是纯透明。在一大片范围内可以有玩家的视角。实现的方式,战争迷雾预计算生成数据,使用一个平面来切分网格,正常地形,变成网格地形,在指定视野范围内先找出最近的障碍物点,然后从角色位置到障碍物点位置的方向,可以计算出所有不可见的格子,越近的障碍物,遮挡范围角度大。5.2参考代码生成一个FogOfWar,InitMap(),传送进去一个二维数组,即为网格信息,网格信息遍历,网格信息存在一个list中,同时生成一个colorBuffer[]的信息。publicvoidInitMap(int[,]mapData){map=newFOWMap();map.InitMap(mapData);this.mapData=mapData;} publicvoidInitMap(int[,]mapData){...for(intj=0;j<mapHeight;j++){for(inti=0;i<mapWidth;i++){map.Add(newFOWTile(mapData[i,j],i,j));colorBuffer[i]=newColor32(0,0,0,255);}} ...}5.3核心内容核心的计算视野,RayCast(),比障碍物更远的物体才会被计算在范围内,距离越远,计算角度就越小。只需要判断相差的角度相对于中心点,计算好迷雾的角度,就可以达到效果。publicList<FOWTile>RayCast(intx,inty,List<FOWTile>tiles){varfogTile=newList<FOWTile>();//只有比当前网格距离远的物体才会被检测varstartIndex=tiles.IndexOf(this);for(inti=startIndex+1;i<tiles.Count;i++){vartile=tiles[i];if(tile.CantDisplay(this,x,y)){fogTile.Add(tile);}}returnfogTile;}核心思想应用到3d场景中,相对于2D的场景内容,想要平滑的3D场景中的战争迷雾,场景之上盖上一张贴图,贴图的大小和场景地图的大小相差不大。贴图的透明度就是迷雾的透明度,简单的shaders实现,除了纯盖视角,pass,开启正常的透明度混合,关闭深度测试,判断两个物体谁显示在前面的测试。SubShader{

Tags{"Queue"="Transparent+20"}

ZTestOff

BlendSrcAlphaOneMinusSrcAlpha

Pass{

CGPROGRAM

#pragmavertexvert

#pragmafragmentfrag

ENDCG

}

}Ztest关闭之后不会进行深度的比对,再渲染队列,放在透明度之后,也就是放在绝大多数3d物体之后,如此,不管物体在何处,物体会显示在最前面,具体的内容需要了解sharders的深度测试,一个比较通用的思想,迷雾脚本,贴上shader的物体,未进行特殊处理,处理的时候,在shader中模糊处理之后变成正常的迷雾,加上缓冲之后,就不会一顿一顿的。通过一系列的处理,达到战争迷雾的效果。如果ZWrite变成Off,那么ZTest会成功通过,所有像素表示的深度不能够完全存储到深度缓存,并且又因为ZTest通过了,所有像素的色彩值会存储到色彩缓存。渲染的效果导致不透明的物体,后面的物体不被挡住。图5-3物体没有被挡住5.4实现过程在空对象,也就是Cube对象上添加上InitMap初始化地图。再添加FowFogRenderer,其中的RendererPrefab预设组件,是一个Unity自带的Plane平面物体。而Plane平面物体的材质为Shader渲染的材质。使用Shader渲染的材质,这样做会节省系统资源,方便迷雾视野范围的计算花销占系统资源不会过多。图5-4-1战争迷雾预设部件材质在场景中添加一个空对象传入脚本FowManager迷雾的FogSizeX为156.6,FogSizeY为172.6,MapTileSize为0.5。其中的ViewerList为视野物体列表,也就是在FogOfWar之下不被遮挡住的物体对象。如此就完成了战争迷雾的实现内容。在用到战争迷雾的物体上添加一个FowViewer脚本,可以控制迷雾的视角范围,从而根据物体本身的大小来改变可见范围,以至于利用达到视角可以任意改变。图5-4-2FowManager脚本的数值自上往下看,战争迷雾的效果如此便实现了。图5-4-2摄像头自上往下5.5实现效果添加到场景的游戏单位中,让其成为FowViewer的视野物理的列表中的对象,因此需要对多个游戏单位做成预设,从而达到每次建立的游戏单位都拥有FowViewer这个脚本代码,从而不会被FogOfWar遮挡住,以显示在游戏摄像头玩家的面前,达到了战争迷雾的开发效果。图5-4-2游戏中覆盖了战争迷雾的场景预览

第6章结束语6.1工作总结本次课题所研究的基于Unity3D的即时战略战争迷雾系统开发与实现至此已经实现完成。简单的总结,比较肤浅。在实现完成的过程中,进一步加深了对Unity引擎的内部结构的认识,从Unity中第三方插件的兼容性来看,使用第三方插件开发游戏是特别有效率的。在游戏开发的过程中,个人的精力是有限的,开发游戏对于个人而已工作量的特别大。如果需要借助第三方的工具就能够简单的实现希望的效果,而不必多余工作和精力的进行代码的编写,不必花费周章过多专研其他内容,只需要明确游戏的开发方向,游戏所需要的功能以及详细的策划内容。6.2问题和展望用Unity3D开发3D游戏的过程中,3D游戏的画面呈现复杂的场景、细致额度内容与视觉效果,为此,要是不使用插件工具,程序则必须要处理空间几何数学相关的内容数据,对象的材质这些繁杂的元素,程序员的基础储备得要宽广和全面。一个游戏想要稳定性好,也就是涉及了太多因素的影响,开发的难度因此不容小觑。

参考文献Unity5.X3D游戏开发技术详解与典型案例吴亚峰;索依娜北京:人民邮电出版社,2016.02Unity游戏案例开发大全吴亚峰;杜化美;于复兴北京:人民邮电出版社,2015.01通关!游戏设计之道罗杰斯北京:人民邮电出版社,2013.11游戏研发系列Unity3D2D游戏开发从0到1第2版刘国柱北京:电子工业出版社,2018.01Unity43D开发实战详解吴亚峰北京:人民邮电出版社,2013.12Unity3D游戏开发技术详解与典型案例吴亚峰;于复兴北京:人民邮电出版社,2012.11Unity案例开发大全吴亚峰;索依娜;于复兴北京:人民邮电出版社,2018.08Unity5.x完全自学手册商宇浩;李一帆;张吉祥北京:电子工业出版社,2016.09VR游戏设计开发李鹏飞广州:暨南大学出版社,2018.11迎接互联网的明天玩转3DWeb邹静北京:电子工业出版社,2011.06通关!游戏设计之道第2版SCOTTROGERS;孙懿;高济润北京:人民邮电出版社,2017.01移动开发人才培养系列丛书UNITY3D游戏开发标准教程吴亚峰;于复兴;索依娜北京:人民邮电出版社,2016.06Unity3D2D游戏开发从0到1刘国柱北京:电子工业出版社,2015.07VisualC++程序设计教程杨明合肥:安徽大学出版社,2001.02C++程序设计陈恒鑫;熊壮重庆:重庆大学出版社,2016.02Unity3D虚拟现实游戏开发李婷婷北京:清华大学出版社,2018.03Unity3D脚本编程使用C#语言开发跨平台游戏陈嘉栋北京:电子工业出版社,2016.09

致谢从开始论文的开题报告,到论文的选题方向、搜集相关资料和完善论文的整个过程中,得到了许多帮助和支持。毕业论文目前将完成,将要感谢各位同学的探讨深刻,感谢各位老师的热情和帮助。感谢参考内容的提供者。非常感谢王千秋导师,导师的工作认真负责,在完成论文之时给予了中肯的建议和帮助。永远不忘关怀的家人,是家人默默无闻支持、关心、督促。感谢诸位几年来一直的激励。

电脑故障检测卡代码表

1、特殊代码"00"和"ff"及其它起始码有三种情况出现:

①已由一系列其它代码之后再出现:"00"或"ff",则主板ok。

②如果将cmos中设置无错误,则不严重的故障不会影响bios自检的继续,而最终出现"00"或"ff"。

③一开机就出现"00"或"ff"或其它起始代码并且不变化则为主板没有运行起来。

2、本表是按代码值从小到大排序,卡中出码顺序不定。

3、未定义的代码表中未列出。

4、对于不同bios(常用ami、award、phoenix)用同一代码代表的意义不同,因此应弄清您所检测的电脑是属于哪一种类型的bios,您可查阅您的电脑使用手册,或从主板上的bios芯片上直接查看,也可以在启动屏幕时直接看到。

5、有少数主板的pci槽只有一部分代码出现,但isa槽有完整自检代码输出。且目前已发现有极个别原装机主板的isa槽无代码输出,而pci槽则有完整代码输出,故建议您在查看代码不成功时,将本双槽卡换到另一种插槽试一下。另外,同一块主板的不同pci槽,有的槽有完整代码送出,如dell810主板只有靠近cpu的一个pci槽有完整代码显示,一直变化到"00"或"ff",而其它pci槽走到"38"后则不继续变化。

6、复位信号所需时间isa与pci不一定同步,故有可能isa开始出代码,但pci的复位灯还不熄,故pci代码停要起始代码上。

代码对照表

00.已显示系统的配置;即将控制INI19引导装入。

01处理器测试1,处理器状态核实,如果测试失败,循环是无限的。处理器寄存器的测试即将开始,不可屏蔽中断即将停用。CPU寄存器测试正在进行或者失败。

02确定诊断的类型(正常或者制造)。如果键盘缓冲器含有数据就会失效。停用不可屏蔽中断;通过延迟开始。CMOS写入/读出正在进行或者失灵。

03清除8042键盘控制器,发出TESTKBRD命令(AAH)通电延迟已完成。ROMBIOS检查部件正在进行或失灵。

04使8042键盘控制器复位,核实TESTKBRD。键盘控制器软复位/通电测试。可编程间隔计时器的测试正在进行或失灵。

05如果不断重复制造测试1至5,可获得8042控制状态。已确定软复位/通电;即将启动ROM。DMA初如准备正在进行或者失灵。

06使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS停机字节。已启动ROM计算ROMBIOS检查总和,以及检查键盘缓冲器是否清除。DMA初始页面寄存器读/写测试正在进行或失灵。

07处理器测试2,核实CPU寄存器的工作。ROMBIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。.

08使CMOS计时器作初始准备,正常的更新计时器的循环。已向键盘发出BAT命令,即将写入BAT命令。RAM更新检验正在进行或失灵。

09EPROM检查总和且必须等于零才通过。核实键盘的基本保证测试,接着核实键盘命令字节。第一个64KRAM测试正在进行。

0A使视频接口作初始准备。发出键盘命令字节代码,即将写入命令字节数据。第一个64KRAM芯片或数据线失灵,移位。

0B测试8254通道0。写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。第一个64KRAM奇/偶逻辑失灵。

0C测试8254通道1。键盘控制器引脚23、24已封锁/解锁;已发出NOP命令。第一个64KRAN的地址线故障。

0D1、检查CPU速度是否与系统时钟相匹配。2、检查控制芯片已编程值是否符合初设置。3、视频通道测试,如果失败,则鸣喇叭。已处理NOP命令;接着测试CMOS停开寄存器。第一个64KRAM的奇偶性失灵

0E测试CMOS停机字节。CMOS停开寄存器读/写测试;将计算CMOS检查总和。初始化输入/输出端口地址。

0F测试扩展的CMOS。已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。.

10测试DMA通道0。CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。第一个64KRAM第0位故障。

11测试DMA通道1。CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。第一个64DKRAM第1位故障。

12测试DMA页面寄存器。停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。第一个64DKRAM第2位故障。

13测试8741键盘控制器接口。视频显示器已停用,端口B已作初始准备;即将开始电路片初始化/存储器自动检测。第一个64DKRAM第3位故障。

14测试存储器更新触发电路。电路片初始化/存储器处自动检测结束;8254计时器测试即将开始。第一个64DKRAM第4位故障。

15测试开头64K的系统存储器。第2通道计时器测试了一半;8254第2通道计时器即将完成测试。第一个64DKRAM第5位故障。

16建立8259所用的中断矢量表。第2通道计时器测试结束;8254第1通道计时器即将完成测试。第一个64DKRAM第6位故障。

17调准视频输入/输出工作,若装有视频BIOS则启用。第1通道计时器测试结束;8254第0通道计时器即将完成测试。第一个64DKRAM第7位故障。

18测试视频存储器,如果安装选用的视频BIOS通过,由可绕过。第0通道计时器测试结束;即将开始更新存储器。第一个64DKRAM第8位故障。

19测试第1通道的中断控制器(8259)屏蔽位。已开始更新存储器,接着将完成存储器的更新。第一个64DKRAM第9位故障。

1A测试第2通道的中断控制器(8259)屏蔽位。正在触发存储器更新线路,即将检查15微秒通/断时间。第一个64DKRAM第10位故障。

1B测试CMOS电池电平。完成存储器更新时间30微秒测试;即将开始基本的64K存储器测试。第一个64DKRAM第11位故障。

1C测试CMOS检查总和。.第一个64DKRAM第12位故障。

1D调定CMOS配置。.第一个64DKRAM第13位故障。

1E测定系统存储器的大小,并且把它和CMOS值比较。.第一个64DKRAM第14位故障。

1F测试64K存储器至最高640K。.第一个64DKRAM第15位故障。

20测量固定的8259中断位。开始基本的64K存储器测试;即将测试地址线。从属DMA寄存器测试正在进行或失灵。

21维持不可屏蔽中断(NMI)位(奇偶性或输入/输出通道的检查)。通过地址线测试;即将触发奇偶性。主DMA寄存器测试正在进行或失灵。

22测试8259的中断功能。结束触发奇偶性;将开始串行数据读/写测试。主中断屏蔽寄存器测试正在进行或失灵。

23测试保护方式8086虚拟方式和8086页面方式。基本的64K串行数据读/写测试正常;即将开始中断矢量初始化之前的任何调节。从属中断屏蔽存器测试正在进行或失灵。

24测定1MB以上的扩展存储器。矢量初始化之前的任何调节完成,即将开始中断矢量的初始准备。设置ES段地址寄存器注册表到内存高端。

25测试除头一个64K之后的所有存储器。完成中断矢量初始准备;将为旋转式断续开始读出8042的输入/输出端口。装入中断矢量正在进行或失灵。

26测试保护方式的例外情况。读出8042的输入/输出端口;即将为旋转式断续开始使全局数据作初始准备。开启A20地址线;使之参入寻址。

27确定超高速缓冲存储器的控制或屏蔽RAM。全1数据初始准备结束;接着将进行中断矢量之后的任何初始准备。键盘控制器测试正在进行或失灵。

28确定超高速缓冲存储器的控制或者特别的8042键盘控制器。完成中断矢量之后的初始准备;即将调定单色方式。CMOS电源故障/检查总和计算正在进行。

29.已调定单色方式,即将调定彩色方式。CMOS配置有效性的检查正在进行。

2A使键盘控制器作初始准备。已调定彩色方式,即将进行ROM测试前的触发奇偶性。置空64K基本内存。

2B使磁碟驱动器和控制器作初始准备。触发奇偶性结束;即将控制任选的视频ROM检查前所需的任何调节。屏幕存储器测试正在进行或失灵。

2C检查串行端口,并使之作初始准备。完成视频ROM控制之前的处理;即将查看任选的视频ROM并加以控制。屏幕初始准备正在进行或失灵。

2D检测并行端口,并使之作初始准备。已完成任选的视频ROM控制,即将进行视频ROM回复控制之后任何其他处理的控制。屏幕回扫测试正在进行或失灵。

2E使硬磁盘驱动器和控制器作初始准备。从视频ROM控制之后的处理复原;如果没有发现EGA/VGA就要进行显示器存储器读/写测试。检测视频ROM正在进行。

2F检测数学协处理器,并使之作初始准备。没发现EGA/VGA;即将开始显示器存储器读/写测试。.

30建立基本内存和扩展内存。通过显示器存储器读/写测试;即将进行扫描检查。认为屏幕是可以工作的。

31检测从C800:0至EFFF:0的选用ROM,并使之作初始准备。显示器存储器读/写测试或扫描检查失败,即将进行另一种显示器存储器读/写测试。单色监视器是可以工作的。

32对主板上COM/LTP/FDD/声音设备等I/O芯片编程使之适合设置值。通过另一种显示器存储器读/写测试;却将进行另一种显示器扫描检查。彩色监视器(40列)是可以工作的。

33.视频显示器检查结束;将开始利用调节开关和实际插卡检验显示器的关型。彩色监视器(80列)是可以工作的。

34.已检验显示器适配器;接着将调定显示方式。计时器滴答声中断测试正在进行或失灵。35.完成调定显示方式;即将检查BIOSROM的数据区。停机测试正在进行或失灵。

36.已检查BIOSROM数据区;即将调定通电信息的游标。门电路中A-20失灵。

37.识别通电信息的游标调定已完成;即将显示通电信息。保护方式中的意外中断。

38.完成显示通电信息;即将读出新的游标位置。RAM测试正在进行或者地址故障>FFFFH。

39.已读出保存游标位置,即将显示引用信息串。.

3A.引用信息串显示结束;即将显示发现信息。间隔计时器通道2测试或失灵。

3B用OPTI电路片(只是486)使辅助超高速缓冲存储器作初始准备。已显示发现<ESC>信息;虚拟方式,存储器测试即将开始。按日计算的日历时钟测试正在进行或失灵。

3C建立允许进入CMOS设置的标志。.串行端口测试正在进行或失灵。

3D初始化键盘/PS2鼠标/PNP设备及总内存节点。.并行端口测试正在进行或失灵。

3E尝试打开L2高速缓存。.数学协处理器测试正在进行或失灵。

40.已开始准备虚拟方式的测试;即将从视频存储器来检验。调整CPU速度,使之与外围时钟精确匹配。

41中断已打开,将初始化数据以便于0:0检测内存变换(中断控制器或内存不良)从视频存储器检验之后复原;即将准备描述符表。系统插件板选择失灵。

42显示窗口进入SETUP。描述符表已准备好;即将进行虚拟方式作存储器测试。扩展CMOSRAM故障。

43若是即插即用BIOS,则串口、并口初始化。进入虚拟方式;即将为诊断方式实现中断。.44.已实现中断(如已接通诊断开关;即将使数据作初始准备以检查存储器在0:0返转。)BIOS中断进行初始化。

45初始化数学协处理器。数据已作初始准备;即将检查存储器在0:0返转以及找出系统存储器的规模。.

46.测试存储器已返回;存储器大小计算完毕,即将写入页面来测试存储器。检查只读存储器ROM版本。

47.即将在扩展的存储器试写页面;即将基本640K存储器写入页面。

48.已将基本存储器写入页面;即将确定1MB以上的存储器。视频检查,CMOS重新配置。

49.找出1BM以下的存储器并检验;即将确定1MB以上的存储器。.

4A.找出1MB以上的存储器并检验;即将检查BIOSROM数据区。进行视频的初始化。

4B.BIOSROM数据区的检验结束,即将检查<ESC>和为软复位清除1MB以上的存储器。.4C.清除1MB以上的存储器(软复位)即将清除1MB以上的存储器.屏蔽视频BIOSROM。.4D。已清除1MB以上的存储器(软复位);将保存存储器的大小。.

4E若检测到有错误;在显示器上显示错误信息,并等待客户按<F1>键继续。开始存储器的测试:(无软复位);即将显示第一个64K存储器的测试。显示版权信息。

4F读写软、硬盘数据,进行DOS引导。开始显示存储器的大小,正在测试存储器将使之更新;将进行串行和随机的存储器测试。.

50将当前BIOS监时区内的CMOS值存到CMOS中。完成1MB以下的存储器测试;即将高速存储器的大小以便再定位和掩蔽。将CPU类型和速度送到屏幕。

51.测试1MB以上的存储器。.

52所有ISA只读存储器ROM进行初始化,最终给PCI分配IRQ号等初始化工作。已完成1MB以上的存储器测试;即将准备回到实址方式。进入键盘检测。

53如果不是即插即用BIOS,则初始化串口、并口和设置时种值。保存CPU寄存器和存储器的大小,将进入实址方式。.

54.成功地开启实址方式;即将复原准备停机时保存的寄存器。扫描“打击键”

55.寄存器已复原,将停用门电路A-20的地址线。.

56.成功地停用A-20的地址线;即将检查BIOSROM数据区。键盘测试结束。

57.BIOSROM数据区检查了一半;继续进行。.

58.BIOSROM的数据区检查结束;将清除发现<ESC>信息。非设置中断测试。

59.已清除<ESC>信息;信息已显示;即将开始DMA和中断控制器的测试。.

5A..显示按“F2”键进行设置。

5B..测试基本内存地址。

5C..测试640K基本内存。

60设置硬盘引导扇区病毒保护功能。通过DMA页面寄存器的测试;即将检验视频存储器。测试扩展内存。

61显示系统配置表。视频存储器检验结束;即将进行DMA#1基本寄存器的测试。.

62开始用中断19H进行系统引导。通过DMA#1基本寄存器的测试;即将进行DMA#2寄存器的测试。测试扩展内存地址线。

63.通过DMA#2基本寄存器的测试;即将检查BIOSROM数据区。.

64.BIOSROM数据区检查了一半,继续进行。.

65.BIOSROM数据区检查结束;将把DMA装置1和2编程。.

66.DMA装置1和2编程结束;即将使用59号中断控制器作初始准备。Cache注册表进行优化配置。

67.8259初始准备已结束;即将开始键盘测试。.

68..使外部Cache和CPU内部Cache都工作。

6A..测试并显示外部Cac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论