为什么u3d编译出的u3d小游戏源码有的地方是粉红色

游戏引擎基本概念及常见游戏引擎介绍
发布于: 15:55&&&|&&&
作者: 管理员
&&&|&&&原作者: TP&&&|&&&来自: 原创
一、前言在翻阅各种游戏介绍或者实现资料的时候,经常会遇到引擎一词。引擎听上去非常高大上,那到底什么是游戏引擎,实际开发中常接触到的游戏引擎有哪些。本篇幅将会侧重这两个方面进行介绍。二、什么是游戏引擎了解游戏引擎,必须要先知道引擎是什么。套用现在最流行的解释,从词原意上理解,引擎是赛车上的一个部件,并且是一个核心部件。引擎是赛车的心脏,决定着赛车的性能和稳定性。赛车相关的指标都是建立在引擎的基础上的。游戏引擎也是如此,它是每款游戏中都具有的控制游戏所有功能的代码。小到几百K的小游戏,大到几个G的大游戏,都存在一段起控制作用的核心代码。这段代码涉及到游戏的各个方面:物理效果、动画、图像渲染、声音、人工智能等。因此,一款游戏的实现,本质就是调用这段代码将游戏中的所有元素捆绑在一起,按照游戏设定使它们同时、有序地工作。游戏行业初期,几乎每款游戏都要从头开始编写代码,尤其是上面提到的核心代码耗费了大量人力。渐渐地,游戏研发行业逐渐专门化,这部分代码被人专门提取出来开发成一个通用框架代码,成熟的游戏引擎也就应运而生。&游戏的运行实现可以切分成4个层,底层的硬件层、接着的三方功能组件层、还有就是游戏引擎层、最上面才是游戏逻辑层。最底层各种硬件可以是手机、PC、Xbox等,各种硬件会提供驱动支持基本的操作系统功能。而运行在Android、iOS、Windows等操作系统上的游戏,均是需要游戏引擎的支持,如Cocos2D、Unity3D等。这些游戏引擎,其子系统,子功能会基于三方组件实现,如渲染会调用DirectX/OpenGL这些底层的图形库。&2.1&游戏引擎子系统随着游戏行业的发展,游戏引擎需要承担的功能越来越复杂。图片渲染、物理系统、声音、脚本、动画、人工智能、网络、内存管理、本地化支持、场景管理等功能都是游戏引擎基本标配功能。这里详细介绍下几个重要部件:渲染系统、音频系统、物理系统、人工智能。2.1.1&渲染系统渲染系统是引擎所有子系统中最复杂最强大的一块。需要先了解下,渲染(Render)是干什么。这里引用wiki(超链接至:https://en.wikipedia.org/wiki/Rendering_(computer_graphics))的定义:Render是指用软件从模型生成图像的过程。模型是指用语言或者数据结构进行严格定义的三维物体或虚拟场景的描述,包括非常多信息,比如几何、视点、纹理、照明和阴影等信息。图像是数字图像或者位图图像。可以抽象理解成,根据配置和用户输入绘制出我们看到的游戏画面的过程。比如进入游戏场景,绘制出建筑、角色等;控制运动视角切换的时候,游戏画面的变化过程,都主要依赖渲染系统。这里提到的配置,主要就是模型文件,常见的是游戏美工们利用3ds&Max、maya等建模工具制作生成。游戏引擎中,渲染系统消耗绝大部分计算量。其计算量和模型的复杂度、要求渲染出来的图像的精细程度、尺寸大小等直接相关。直观感受是场景越精细复杂的游戏,对设备要求越高,否则难以支撑其实时渲染性能消耗导致卡顿效果。这里提到一个实时渲染概念。为什么CG电影等能弄得那么高清流畅,《怪兽大学》中毛怪身上毛发数量能达到550万根还如此流畅,而移动设备上一些场景稍微多点锯齿模糊怪兽则出现卡顿。这是因为CG电影等都是预渲染,如《怪物大学》事先可以花费30个小时去绘制一帧动画,之后把渲染后的动画连续放给观众即可。但是游戏涉及到的基本是实时渲染技术,30FPS的要求不可能允许游戏引擎去慢慢渲染,玩家要求马上有效果,故而在渲染效果上有较大舍弃。当然,实际研发中很多游戏也会采用预渲染技术去获取静态物体贴图等,不在游戏进行中渲染,这个则是场景烘培技术。游戏引擎的渲染系统,一般是基于成熟的图像API实现,比如DirectX或者OpenGL,这些API封装了GPU和显卡的部分功能。渲染系统的实现涉及到了浓淡处理、纹理映射、距离模糊、阴影、反射、透明等较多复杂技术算法,这里就不再深入讨论。不过,这里可以稍微提及下FPS游戏中经常遇到的透视挂,和渲染引擎相关性较大。该类型外挂核心都是关闭引擎的z-buffer,导致在墙壁等阻碍物后面的人物也能被渲染出来,从而实现透视外挂效果。。2.1.2&音频系统虽然在游戏开发中,音频的地位不如图像那么重要,但是音效对于创建具有身如其境代入感的游戏场景是非常重要的。从关卡中的环境音效、到载具或武器的交互式音效、&再到游戏中角色间对话,游戏中的音频都决定着用户体验。游戏引擎中的音频系统,主要负责的就是音频的处理。在游戏世界里,每个能够发出声音的物体都代表了1个音源。游戏每个场景一般都会包含大量的音源,这些音源到达玩家耳朵中应该是怎样的声音就是由音频系统负责。这里涉及到的音频处理技术有:混响,反射,闭塞,阻碍物,远方传来的声音(音源与听众的距离)等。整个系统可以简单理解为实现音源出现和传输到角色。传输过程涉及音源与环境的交互(封闭、障碍、排斥)及音源的特性(声波传输距离等)。随着声音的传播,声波与环境具有干涉的作用。为了把音效完全融合到游戏里面,必须要考虑出声环境及其与音源的交互作用两方面因素。直观的理解,隔着一面墙的怪物产生的音源和就在身边的怪物产生的音源传播到玩家耳朵会有不同表现。类似渲染引擎有成熟的图像API,音频系统也是有类似API:Windows&Multimedia,&Direct&Sound,&OpenAL,&Aureal&A3D。 2.1.3&物理系统相比渲染、音频系统,物理系统会更容易理解。物理引擎主要是模拟牛顿力学模型。既是计算在质量、速度、摩擦力、空气阻力等因素影响下的物理状态。直观点理解,游戏中出现的碰撞、跳跃、飞行等,都需要依赖物理引擎。游戏中比较常用的场景是碰撞检测(断两个或多个对象是否产生交集),比如子弹是否命中目标?赛车前端是否发生碰撞?这里也是游戏的一个安全风险点,既是穿透外挂。由于引擎接口是公开的,外挂很容易知道哪些接口负责处理碰撞,从而能快速定位到对应代码,然后修改碰撞检测逻辑实现无敌(无法攻击命中)、穿墙(能穿透障碍物)等功能。这里再提及下相关的碰撞检测原理,最理想的是像素级别的碰撞检测,既是连模型的一个像素点碰撞都能检测到。但实际上,地图格子检测方法在2D中较为常见,其核心就是把像素检测转为格子检测,而格子又是像素的N倍大。另外,用矩形或者圆形包围体,将物体包围起来,降维到矩形或者圆形碰撞检测,也是一种常用的检测思路。进一步有四叉树等提高碰撞检测效率的算法。深入了解这方面内容,可以研究下《Real-Time&Collision&Detection》这本书籍。游戏引擎通常是提供一个平台抽象层,让游戏跨平台运行。所以大多设计都是基于组件的架构。如本篇幅一开始的图所示,类似于渲染、音频,物理系统也是一个单独组件。有PhysX、Box2D等三方物理引擎支撑。2.1.4&人工智能说起人工智能,可能马上想到的是最直观的博弈游戏,如五子棋、围棋等。实际上,游戏中涉及到的人工智能,及需要人工智能提高的地方数不胜数。比如人物自动寻路的寻路算法、NPC行为的有限状态机。目前游戏的不少AI都是定性人工智能的行为,表现具有确定性和可预测性。虽然编程简单,只需编写大量明确行为代码即可,但影响游戏的可玩性。这个子系统,是根据wiki对游戏引擎的定义添加的。也是笔者认为未来游戏引擎中比较重要的一块系统。三、常用游戏引擎目前国内移动游戏,除去部分自研引擎,比较主流的游戏引擎有两个:Cocos2D(超链接至:http://cocos2d.org/)和Unity3D(超链接至:/cn)。这里简单介绍下这两个引擎。3.1&Cocos2D顾名思义,Cocos2D是个2D游戏引擎。基于MIT协议的一款开源框架,后期衍生出了Cocos2d-x、Cocos2d-XNA、Cocos2d-ObjC等版本。其衍生版本,主要是针对不同平台的不同语言做出的改进优化,支持C++/Javascript/Lua/Object-C/Python/C#等多种语言,具体如下图所示。Cocos2D是开源项目,可以根据自身游戏针对性修改引擎代码,适合定制化需求较高的开发团队。同时,Cocos2D支持的语言较多,比较方便各类程序员上手,尤其是基于C++的开发者。另外,Cocos2D是免费的。3.2&Unity3DUnity3D是一款可视化游戏开发工具,其封装了很多引擎功能特性,提供了各种强大的可视化编辑功能。Unity官网有段用来说明“什么是Unity”的视频,包含下图。该图展示了Unity3D游戏开发工具的界面,可以发现开发者能在U3D开发工具中实时直观看到游戏效果。同时Unity3D引擎是一种Component-Based结构,可视化界面中可直接加入各种组件(人物、AI等),捆绑指定的脚本,即可实现游戏逻辑。Unity3D目前支持C#/boo/javascript,但绝大部分开发团队都是用C#开发。典型代表有王者荣耀、全民突击、CF手游等手游。由于其是款高效的IDE+游戏引擎,相比Cocos2D更好封装了底层代码,开发者的上手门槛要低很多,故游戏开发初学者更适合通过U3D上手尝试游戏开发。同时,由于Unity3D有优秀的跨平台支持,只需要简单选项就能编译出不同版本(输入输出还是需要脚本中用宏来控制区分不同平台),更适合对游戏跨平台推广期望较高的开发团队。四、小结本篇幅主要普及了下游戏引擎知识,同时介绍了下主流的Cocos2D和Unity3D引擎,方便游戏开发者入门了解。有深入了解需求的话,推荐学习下《Game&Engine&Architecture》。针对两款主流引擎的话,也有官网及对应社区可深入了解学习。苹果系统的啪啪啪游戏得分的那个粉红色是什么游戏_百度知道给我们留言
地址:福建省晋江市青阳街道洪山路国际工业设计园纳金网
电话: 400-067-3919
(周一到周五,
周六周日休息)
查看: 2519|回复: 2
最后登录注册时间阅读权限90积分23535
资深设计师, 积分 23535, 距离下一级还需 26465 积分
纳金币19222 精华62
代码驱动带来的技术题1.游戏碎片化。U3D 引擎有个很有力的特色,就是实时编译运行。这意味着无论在任何时候,只要按下运行图标,当前的场景就会进入可执行状态。这导致了游戏在开发的过程中经常陷 入一种不应当的自信状态。同时也导致了游戏内容长期处在碎片状态下,并低估游戏功能整合时可能遇到的困难。
2.资源管理是 U3D 引擎的一个难点。U3D 的资源管理系统因为跨平台的缘故和操作系统的文件系统是脱钩的,需要熟练的掌握 Resources 目录和 Assetbundle 的技术才能灵活的控制游戏中的资源使用情况。但这一工作时常会被简单的理解为将资源放置在游戏工程目录下,剩下的交给引擎自己搞定 ……
3.需要自己做数据系统。我们如今国内研发的作品,绝大多数是数据密集型(策略、经营、卡牌、KRPG),这和 Temple Run 这样的游戏类型有些不同。数据密集型的游戏需要采用数据驱动的形式来进行游戏的设计和开发,但是 U3D 提供的框架是一个代码驱动型的结构(对于原型开发来说极为有力)很多时候会让研发团队陷入泥潭 —— 看起来功能开发出来了(只要在U3D的对象检查器里调调参数就能工作),却迟迟无法进入大规模制作阶段(策划拿着数据表格却无法应用到游戏里)。U3D 引擎本身也没有提供任何在数据方面的支持,数据表要么需要自行处理,要么需要自己寻找嵌入式的数据库解决方案。
4.网络连接部分其实也是类似。U3D 本身集成的网络模块并不是为大规模 C/S 结构的游戏所设计,常需要自行开发一套客户端和服务器结构。当然也可以求助中间件来解决 …… 但是容易让人迷惑的地方在于,U3D 既可以使用 .net 的网络机制像端游一样工作,也退一步可以用加密的 www 机制,当一个简单的页游来处理。如何抉择是个难题,贸然贪多求全往往换来遥遥无期。
5.测试 U3D 开发的游戏亦一个很麻烦的过程。原因也是那个几乎不会崩溃,随时可运行的场景/逻辑混成编辑器 —— 它会让开发团队误算自己当前的游戏完成度,以及需要什么样的测试。
尖端技术带来的麻烦事1.高精尖的动态光照和复杂材质系统。U3D 比起其他的移动平台或者网页游戏开发工具而言,往往最打动人的就是其无与伦比的画面渲染效果。但是在光鲜的官方演示背后,仿佛总有看不到的壁垒阻碍着其他 开发者的步伐。实际上驾驭 U3D 所需要的能力是超乎一般想像的。U3D 的渲染架构的确够强大,完成 Unreal 甚至 CryEngine 级别的画面渲染质量都是可能的,但是它并没有这些系统而是将灵活性交给了开发者。我们的程序员是否已经控制住了渲染管线的复杂度?我们的技术美术是否 可以指导我们的美术完成充分发挥 U3D 能力?美术制作人员是否有具有胜任所谓“次世代”精度要求的游戏内容制作?这些东西属于小团队吗?
2.全局光照烘培。这是一个非常非常非常实用的 U3D 功能。理应所有的 U3D 团队都灵活使用。但是想要用好就有了另外一番难度 —— 美术和场景制作人员的配合,而谁来负责就比较难说了。另外美术必须用非常精准的尺寸来制作场景中的物件,否则 U3D 将无法正确的处理全局 UV。
工具链带来的纷纷扰扰1.GUI 系统的各种理论。所有人都在吐槽 U3D 自带的 GUI 系统太慢 —— 问题是真的有证据吗?一方面很多人说我做测试的时候做了一大堆的控件,的确很慢。另外一方面大家也会发觉 GUI 系统会带来一些不必要的渲染请求(Draw Call)。于是大家都在拼了命的做两件事情,一个是减少渲染请求,一个是想尽一切办法的避开 GUI。但其实情况没那么严重,无论是挑选替代中间件如 NGUI 还是直接使用 U3D 的 UI 系统都不会巨大的影响 —— 除了不当使用之外极少见到 GUI 成为性能焦点的时候。不过无论是 NGUI 还是 U3D 内置 UI 都没有很好的 UI 工具 —— 要么过于程序员导向,要么过于偏向布局而不方便增加代码功能。内部开发一些扩展工具或者工作流程都很有必要。
2.版本控制的难题。Asset Server 还是 SVN 其实多多稍稍都有不适应 U3D 的情况。但是更关键的地方在于整理好文件的内部结构以及经常备份。恰当的使用 U3D 的命令行模式可以实现 U3D 工程的自动编译发布。3.扩展 U3D 本身功能的能力。因为 U3D 较为完整的功能而忽视对 U3D 本身的功能拓展是一种常见状态,随时保持专人不断的优化 U3D 本身的功能是非常重要的,譬如各种各样的批量化操作等等。但是这有个前提,扩展工具需要充分理解工具,U3D 相对来说功能过于强大,以至于很多团队中的成员会害怕学习,而将 U3D 作为少数团队成员或专属于程序员的工具 —— 这就很成问题了。
需要前瞻性的判断能力每一个,每一个国内开发 U3D 游戏的团队都在抱怨 U3D 的中文字体支持问题等等。可是实际上真正用前瞻性的角度在使用 U3D 引擎的团队并不多 —— 以今天此时此刻为例,U3D 4.0 已经可以在任何平台上使用动态的字体,支持 Unicode 编码 —— 中文不在话下。从 U3D 3.5 迁移到 4.0 几乎不用对项目做任何的修改,而如果说之前并不知道 4.0 会支持动态字体的话,那么为什么不多去官方论坛关注一下每个版本的开发进度情况呢?每一个在 2013 才会发布的游戏都不应该担心字体问题才对嘛 ……保持对每个版本 U3D 更新内容和未来 U3D 功能的关注可以大量减少重新发明轮子的问题,也能在遇到一些困境时保持更好的心态。直接邮件开发者也会是个很好的选择,请一定要多骚扰他们!一般提前3个月到6个月就能获知将来版本可能更新的内容的。
最后登录注册时间阅读权限90积分6667
高级设计师, 积分 6667, 距离下一级还需 3333 积分
纳金币2715 精华0
Great stuff 1!!
最后登录注册时间阅读权限50积分1072
助理设计师, 积分 1072, 距离下一级还需 928 积分
纳金币449 精华0
Great stuff 1!!
站长推荐 /1
纳金名模第112期沙发凳3d模型:数量75个,大小为581MB。完全免费下载哦!这样的福利我和我的小伙伴们都惊呆了!!下载地址:
400-067-3919
Powered by - X2.5
Narkii Inc.有一个游戏做菜的要按过程做有粉红色页面_百度知道
有一个游戏做菜的要按过程做有粉红色页面
提问者采纳
直接去各大游戏论坛查找攻略就可以了一般各大平台都有游戏专区,专区里的攻略已经很详细了你好,其实很简单教你个方法
来自团队:
其他类似问题
为您推荐:
做菜的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 u3d游戏开发教程 的文章

 

随机推荐