这是虚幻引擎3UDN的技术文档,共有六个章节。如下将分别把中文译本贴出来,方便懒人学习[偷笑] html
UE3最低及推荐配置规格
--------------------------------------------------------------------------------
• 具备DirectX 9.0c的Windows XP SP3 (仅32位)
• 2GHz 或者更好的 CPU
• 2+ GB 内存
• 支持Shader Model 3.0的显卡,例如 nVidia GeForce 7800
注意: 目前Windows 7 64位是主流的开发环境。
针对开发人员的推荐PC硬件规格
--------------------------------------------------------------------------------
• Windows 7 64-位
• 2.0+ GHz 多核处理器
• 8 GB 系统内存
• NVIDIA 8000 系列或更高系列的显卡
• 大量的硬盘空间
Epic Games使用的PC硬件规格
--------------------------------------------------------------------------------
Epic的开发人员使用的硬件规格
• Lenovo ThinkStation D20 (Model 4158-C95)
• Windows 7 64-位
• Dual Quad-Core Xeon Nehalem 处理器(3.17GHz)
• 24 GB DDR3 内存
• nVidia GeForce GTX 285 (1 GB DDR3)
• 3x500 GB 硬盘 (1x OS Drive, 2x Data Drives in a RAID 0 configuration)
Epic的关卡设计人员使用的硬件规格
• Dell Precision Workstation T7400
• Windows 7 64-位
• Dual Quad-Core Xeon Nehalem 处理器(3.0GHz)
• 16 GB DDR2 内存
• nVidia GeForce GTX 285 (1 GB DDR3)
• 3x500 GB 硬盘 (1x OS Drive, 2x Data Drives in a RAID 0 configuration)
Epic的美工人员使用的硬件规格(和关卡设计人员同样)
• Dell Precision Workstation T7400
• Windows 7 64-位
• Dual Quad-Core Xeon Nehalem 处理器(3.0GHz)
• 16 GB DDR2 内存
• nVidia GeForce GTX 285 (1 GB DDR3)
• 3x500 GB 硬盘 (1x OS Drive, 2x Data Drives in a RAID 0 configuration)
Epic的测试人员使用的硬件规格
• 自组装的PC
• Windows 7 64-位
• Intel Core2Extreme Quad Core Processor - Q6800 - 2.93 GHz
• 4 GB DDR2 内存
• nVidia GeForce 8800 (768 MB GDDR3)
• 1x320 GB 硬盘 (OS Drive), 1x500 GB Hard Drive (Data Drive)
Swarm Farm 服务器的硬件规格
• IBM BladeCenter HS22 [7870AC1] (14 个节点)
• 一个节点的规格说明: ◦ Dual Quad Core Xeon 处理器(2.53 GHz)
◦ 24 GB DDR3 内存
◦ 73GB SAS Drive
显卡驱动器
--------------------------------------------------------------------------------
对于 NVIDIA 显卡,咱们目前推荐使用官方发布的 ForceWare 191.07 驱动器。在这里下载。
对于 ATI,咱们目前推荐使用官方发布的 Catalyst 9.8 驱动器。在这里下载。
性能注意事项
--------------------------------------------------------------------------------
• VTune 是一款极其有效的工具,它能够发现性能方面的问题,可是只适用于 Intel CPU。
• 为了帮助正确表现次时代游戏资源墙壁,咱们能够进行如下操做 1. 全部机器都是16 GB或更多的内存。
2. 全部机器都在游戏所在位置有一个 RAID 0(条形)驱动器。
3. 咱们具备夜间能够在全公司每一个人机器上运行清理磁盘的流程。由 RaxCo 出品的 Perfect Disk 8.0。 ■ 在远程机器上安装简单的集中式管理,按规定运行、升级等等。
■ 支持的XP, Vista64.
一般状况下,I/O 会发生瓶颈现象,获取一个 RAID 0 和大量 RAM 能够帮助解决这个问题。
编译时间
--------------------------------------------------------------------------------
如下是当咱们使用典型的Epic开发人员规格配置及其(8 HT核@2.8GHz,具备24GB内存)以发布模式彻底地编译Win32版本的UDKGame所花费的时间。
单一系统 2分50秒
使用不少XGE (IncrediBuild)代理的分布式系统 1分37秒
64 位性能
--------------------------------------------------------------------------------
Epic的开发人员使用Windows 7 64-位系统做为他们的主要开发系统。最大的优势是:它具备大于4GB的内存,大大地加速了迭代时间,您没必要在不断地将数据交换到磁盘上。
对于程序员而言,最明显的优点是:
• 编译 C++;连接 C++
• 编译UnrealScript
• 运行编辑器,运行游戏的 1-2 副本 程序员
推荐和须要的虚幻开发硬件
--------------------------------------------------------------------------------
对于用户计算机的最小需求
• Windows XP 附带 DirectX 9.0c
• 支持shader model 3.0的显卡。
开发者对计算机的最小硬件要求
• Windows XP 附带 DirectX 9.0c
• 2GHz 或者更好的 CPU
• 2+ GB 内存
• 支持Shader Model 3.0的显卡,例如 nVidia GeForce 7800
推荐供开发者使用的计算机硬件标准
• 具备DirectX 11的Windows 7 64位
• 2.4 GHz 或者更好的双核(或者四核)计算机
• 2+ GB RAM
• 支持着色器模型 3.0 的 PCI 加强型显卡,例如 nVidia GeForce 7800
• 2 个显示器 @ 1600x1200 或者更好
注意:若是您使用的是网络代码,双核处理器配置将很是有效,这样您能够在同一台计算机上运行服务器和客户端,速度也至关使人满意。
显卡驱动器
目前咱们推荐使用每一个显卡制造商最新出厂的可靠发行版本:
• 在这里下载 NVIDIA 驱动器。
• 在这里下载 ATI 驱动器。
64 位性能
--------------------------------------------------------------------------------
Epic的开发人员使用Windows 7 64-位系统做为他们的主要开发系统。最大的优势是:它具备大于4GB的内存,大大地加速了迭代时间,您没必要在不断地将数据交换到磁盘上。
对于程序员而言,最明显的优点是:
• 编译 UnrealScript
• 运行编辑器;运行游戏的 1-2 副本 web
Epic Games设计流程
--------------------------------------------------------------------------------
• Epic Games设计流程 ◦ 从概念到完成
◦ 从美术概念开始
◦ 游戏性概念
◦ 网格物体建立
◦ 材质建立
◦ 构建关卡原型
◦ 脚本
◦ 网格物体化关卡
◦ 照亮关卡
◦ 动态载入
◦ 性能优化
◦ 附录
从概念到完成
--------------------------------------------------------------------------------
本文档的目的是让你们对Epic Games公司内部的关卡建立流程有一个深刻的了解。
从美术概念开始
--------------------------------------------------------------------------------
一旦项目的美术指导和设计指导已经承认了环境的概念观,那么这个环境概念观将会传给关卡设计人员和环境美术工做人员进行设计。
细分概念
关卡设计人员将会开始识别地图中的简单构造,好比建筑物将要在哪里放置建筑物以及能够使用哪些大体的图形来构建关卡的原型。
肯定关键构造
美工人员及其指导将会肯定主要的设置块,它们作为游戏中特定区域的标志性物体。 这些工做通常都先放在一边直到项目的后期才完成,由于大部分的网络都是模块化集合,能够在90%的世界中使用它。
得到模块化的网格物体集合
关卡设计人员和环境美工人员共同定义一组模块化网格物体块,这些网格物体由美工人员构建。 它们包括相似于装饰块、门、窗、墙、角落及这些网格物体的变种等的物体。
游戏性概念
--------------------------------------------------------------------------------
在“概念”方面,咱们认为美术概念和游戏性概念上有很大的不一样,然而它们都有很重要的做用。 游戏性概念在初期阶段涉及到了关卡设计人员和程序员的不少交互。 美术概念涉及到了关卡设计人员和美工人员的不少交互,而且一般在游戏性原型没有完成以前美术概念甚至都不会开始。
设计人员/程序员间的交互
经过结合使用Unreal Kismet和引擎中现有的行为,关卡设计人员和程序员一同来勾画出游戏性观念的原型。 通常这个工做的完成是概念层次上的验证,它仅包含几何体和精确测试相关系统所须要的资源。 在项目过程当中,关卡设计人员将会须要当前不存在的行为,这些行为将会根据时间的容许程度和游戏项目的须要状况来进行优先次序排列。
Kismet中制做游戏性原型
这个行为或者添加到Kismet中或者经过游戏代码提供。 在不少状况下,关卡设计人员将会在Kismet中建立须要的行为,而后程序员能够评估这些行为并尽量地提升效率。
网格物体建立
--------------------------------------------------------------------------------
咱们的美工人员能够使用各类工具来建立人物和环境。
高多边形网格物体使用的工具
早期,网格物体的建立是在3D Studio Max中完成的,而后不少工做将会转换到Z-Brush中进行建模和细节设计。
低多边形网格物体
低多边形网格物体建模大多数都是彻底地在3D Studio Max中进行的。美工人员建立一个中等级别分辨率的网格物体,而后把它移动到Z-Brush中进行细节处理,同时它也用于提炼低多边形网格物体。
展开UV贴图
当完成低多边形网格物体后,使用3D Studio Max的UVMap 和 UnwrapUVW修改器来建立网格物体的UV贴图。 3D Studio Max 8具备比3D Studio Max 7更多的高级功能。
从网格物体建立法线贴图
美工人员能够使用不少种不一样的方法来从网格物体上建立法线贴图。 较老的方法是使用SHTools一同处理高多边形和低多边形网格物体。 在这种方法中,网格物体一般会被分解,从而能够避免那些分离的但又离得很是近的物体产生随机偏差,好比手指、肩垫、以及嘴部的部分好比牙齿和舌头。 固然,较新版本的3D Studio Max (8及以上版本) 和 Maya也有处理网格物体的能力,而且不少美工人员已经转换使用它们了。
法线贴图一般老是会和一个次要的凸凹贴图相结合,好比纺织物图案。 SHTools和较新版本的3D Studio Max都支持这个功能。固然,相似于铆钉、螺栓、划痕及花边等的较小细节一般会从美术人员制做的预处理的法线贴图库中被合成到法线贴图中。 这将会使得建模的过程变得更加快,由于只有很是少的细节须要在多边形上建模。
材质建立
--------------------------------------------------------------------------------
漫反射和高光建立
一旦建立了UV贴图,并处理了法线贴图,贴图美工人员开始着手建立物体或人物的贴图。 这经过UV贴图的布局来完成。在不少状况下,高光贴图是全色贴图,容许物体或角色的不一样部分呈现出不一样的材质,好比肉、铜、钢铁等。
在UnrealEd中建立材质
一旦物体或角色的主要贴图接近完成阶段,将会把贴图导入到引擎中,而后为那个物体建立一个材质。 在导入贴图的过程当中使用DeferCompression标志能够节约不少时间,由于在包被保存以前,它将延迟把贴图压缩为DXT1 或 DXT5格式,所以能够在实验及调整最终贴图的过程当中进行快速地导入。 建立一个新的材质,把贴图放到它上做为贴图样本,而且将其链接到适当的着色器节点(漫反射、高光、法线)上。
构建关卡原型
--------------------------------------------------------------------------------
根据概念构建粗略的BSP模型
关卡设计人员使用环境的概念美术来决定关卡所须要的基本图形和布局来测试环境并建立游戏性原型。 在这个阶段,关卡的任何几何体上都只会不多或不该用材质,并只应用不多的光源。 几乎全部的构造都是BSP图元,这些图元稍后在构建通道中将会被静态网格物体或地形所替换。 在最终的关卡中将会有不多的图元,通常最终存在的图元主要是用于地面、顶棚或简单墙壁的图元。
粗略寻路BSP关卡
最初的寻路是很是简单的,主要适用于保证全部的玩家和AI角色均可以导航环境。 当设计出初始路径后,则开始游戏性测试。
在BSP关卡中进行游戏性测试
这时,已经能够在BSP关卡中进行游戏性测试了。 最初仅有关卡设计人员及关卡设计人员指导运行整个关卡,而后从那里进展到由设计团队的其余成员来从完成的各类状态来测试关卡。 若是关卡设计的是多玩家地图,在咱们的测试实验室中有预约的游戏性会话,在游戏播放会话结束后将会给出评论。
游戏性粗略设计
这是决定某些游戏性元素是否适合这个关卡,一旦脚本是适当的,即可以调整难度和交战及拾取物的位置。 关卡设计人员在这时将会仔细检查整个关卡来放置游戏性物体好比弹药拾取物,同时也会进一步调整路径放置并开始为关卡设计基本的脚本。
脚本
--------------------------------------------------------------------------------
Kismet介绍
Epic公司使用Unreal Kismet来完成几乎全部关卡和过场动画的游戏行为。 关卡设计人员负责全部脚本的适当放置,并负责报告脚本元素相关的问题。 在这时,关卡也会要求使用自定义的Kismet动做来执行关卡或游戏的特定任务。
使用Matinee书写随着时间变化的事件脚本
在咱们的游戏中使用Matinee主要用于执行两个任务。 第一个是书写随着时间变化的事件脚本。 这能够像打开门那么简单,或像随着时间发生的能够改变物体上的材质而且能够致使其余Kismet事件被触发的一系列爆炸那么复杂。 在战争机器中使用的大多数Matinee都是用于执行较简单的动做,好比门。
向关卡中添加特效
关卡设计人员完成大多数的放置环境粒子特效(好比烟雾和火)以及稍后要经过Kismet触发的特效(好比飘落的灰尘)的工做。 大多数的特效都是经过Kismet来驱动的,这容许当再也不须要它们时能够关闭它们,从而提高了性能。
网格物体化关卡
--------------------------------------------------------------------------------
预留位置
关卡设计人员在关卡原型建立阶段一般都会使用预留位置。 设计人员常用有美术工做人员提供的大小和形状和最终网格物体近似的物体。 这个物体命名为和最终网格物体相同的名称,而且放在相同的包中。 这容许美术工做人员导入最终的网格物体及材质,并使得它们自动地传递给任何使用其相应预留位置的地方。
从新使用现有的网格物体
虚幻引擎3容许对放置在关卡中的物体进行非统一缩放。 咱们普遍地使用这个功能来装配这个关卡,经过以多种方式使用一个网格物体,从而下降贴图和网格物体数据的内存消耗量。 这个应用的一个实例是使用一各建筑物上的门框来构建窗框,或者使用一个碎石堆构建一个远处的山堆。
网格物体应用的优化
其中一个对网格物体和内存消耗进行优化的比较简单的方法是使用通用浏览器的Primitive Stats(图元统计)部分来辨别那些不常用而且能够被其它已经一个用的网格物体替换的网格物体。 这个应用的一个实例是替换一个和其它圆柱体有不多不一样但仅在环境中使用几回的柱子。 尽管基于每一个物体来讲它不会节约不少内存或性能,可是那个和其它网格物体结合一同删除时,产生的性能提升则很大。
照亮关卡
--------------------------------------------------------------------------------
静态光源
静态光源用于照亮独立于动态场景元素(好比角色、物理物体或移动物体)的场景。 将会使用不少静态光源来照亮环境。 按住L键并点击表面,将会在这里添加一个光源。 从这些光源产生的引擎是静态的,这些阴影或者被烘焙到光照贴图或网格物体的顶点光照中。 这使光源的默认风格。
动态光源
有两种类型的光源能够影响动态物体。 一个是动态光源,它能够经过右击一个光源并从"Set what this light affects(设置这个光源影响的物体)"的列表下选择" affecting only dynamic objects (仅影响动态物体)"来实现。 这些动态光源将会仅影响设置了动态光照通道的物体,它默认状况下将包括人物、movers(相似于门的插值actors)和物理物体。 这些光源默认状况下在场景中投射昂贵的动态阴影,而且应该节约地使用它,由于每一个影响一个物体的动态光源都在额外地渲染一遍那个物体。 设置光源为`affecting both dynamic and static objects(同时影响动态和静态物体)'将会致使光源影响世界中的任何东西。 这是咱们场景中主要的阴影透射光源,应该很是当心地使用它,由于这是最昂贵的一种光源类型。 默认状况下设置为这种类型的惟一光源是定向光源类型,咱们使用它来模拟太阳光。
Skylights(天空光源)
Skylights用于模仿半球体到整个世界的漫反射光照。 这用于为世界提供环境光照。 使用这些光源是很是便宜的。
反射光照
同时按下Shift和L键并左击,这将将会添加一个颜色为您点击的像素的颜色的光源,具备较低的密度和半径,用于模仿反射光照。 能够普遍地应用这个光照来提供更加真实的光照效果。
调制阴影
默认状况下,全部的投射阴影的光源都会计算它们是否被遮挡,以便在场景中产生精确的阴影。 设置这个光源使用调制阴影有利于使用阴影投射物轮廓的投射贴图来调制场景。 这是在世界中产生阴影时具备较高性能的方法,尽管它不像使用深度缓存阴影方法那样精确。 这种方法也容许咱们控制阴影的颜色和密度。
动态载入
--------------------------------------------------------------------------------
还没有完成。
切割关卡为动态载入部分
还没有完成。
使用体积进行动态载入
还没有完成。
内存统计
还没有完成。
性能优化
--------------------------------------------------------------------------------
光照优化
在虚幻引擎3中,光照是一个最昂贵的东西,因此当心地使用它们是很是地重要的。 有不少工具能够优化光源,而且打算多数工具已经在UDN中进行了详细的介绍。LevelOptimization(关卡优化)中也有几个主题是关于光照优化的。
内存优化
在UnrealEd的通用浏览器中,有一个标签图元统计数据。 这个工具显示了当前关卡使用的全部网格物体所占用内存量。 咱们监视和那个网格物体相似或同样的能够替换它的网格物体,来节约内存消耗。
这里是一些游戏中用于分析当前场景的命令:
Stat memory -显示每种类型的资源所使用的内存量的列表。
Stat d3dscene -显示了Direct3D的统计数据,说明了渲染了多少个三角形、以及渲染那一帧中各个部分所花费的时间(以毫秒为单位)。
附录
--------------------------------------------------------------------------------
附录1: 导入资源到引擎中
大多数状况下,负责建立内容的美术工做人员也负责把这些资源导入到引擎中。 全部的静态网格物体都是经过使用3D Studio Max的Ascii Scene Export (ASE)格式导入的。 经过使用一个命名机制把它们导入到内容包中,以便稍后咱们能够定位它。 贴图能够按照.TGA 或.BMP格式进行导入。 Targa格式支持24或32位贴图,然而咱们仅支持.BMP文件的24-位贴图(没有alpha通道)。 咱们也会在咱们Perforce仓库的`artsource'仓库(depot)下也存储了全部的源资源。
附录2: 分配材质给资源
在导入一个.ase文件时,导入器将会检查应用到物体上的材质是否和当前加载到编辑器中的材质的名称相匹配。 若是发现它们匹配,它将会自动地分配那个材质。
在3D Studio Max中,这个过程经过命名那个材质来简单地设置。
若是您想为一个物体的全部实例都从新分配材质(好比改变门上的材质),那么请在通用浏览器中双击那个静态网格物体,打开LODInfo文本域,打开[0],而后出现材质列表。 改变材质是很简单的,只要选择您想改变的材质元素,在通用浏览器中找到新的材质,选择他,而后点击材质列表上的绿色箭头便可。
改变放置在关卡中的网格物体的材质将不会将该改变传递给那个网格物体的其它副本,因此这能够用于在不须要加载额外网格物体到内存中的状况下来建立那个网格物体的变种。
选择您想改变的放置在关卡中的网格物体。 好比,有两个并排放置的门,可是其中一个须要具备不一样的材质。 您能够选择其中一个门,按下F4键来打开StaticMeshActor的属性窗口, 打开StaticMeshActor 项,而后打开StaticMeshComponent。 向下滚动到Rendering,而后点击Materials项。 它或许是空的,因此点击绿色的+图标。 这将会添加一个和应用到那个网格物体上的第一个材质相对应的元素。 若是您有两个材质要应用到门上,好比一个材质用于门的基础部分,一个用于窗子部分,而且您仅想改变‘第二个’材质,那么您能够像Material数组中添加两个元素,改变第二个,而不改变第一个。
如今要想改变应用到网格物体上的材质,请使用向前面介绍的同样的步骤来进行。 在浏览器中找到新的材质,而后在属性窗口中选择那个材质元素,并点击绿色的箭头来输入它。 如今其中一个门的颜色应该和另外一个是不一样的了,尽管它们都使用相同的网格物体。
附录3: 物理资源
关于导入具备简化碰撞的静态网格物体的参照信息页面是: 碰撞参考指南。 任何具备简化碰撞的静态网格物体均可以做为Rigid Body[刚体](物理物体)添加到世界中。
已经具备了使用PhAT建立的物理设置的骨架网格物体, 能够做为Physics Assets(物理资源)放置到世界中,而且它们能够和世界进行物理化地交互。
附录4: 物理材质
物理材质是指PhysX系统决定的当两个物体发生碰撞时它们的行为。 关于物理材质的参考信息以及它们是如何工做的信息,请参照页面: PhysicalMaterialSystem 。
附录5: 烘焙控制台游戏平台上播放的游戏
还没有完成。
附录6: Source Control集成
咱们已经把source control (SCC)集成到了通用浏览器中。 这容许咱们在编辑器中迁入和迁出内容包(但不是关卡)。 须要注意的是: 若是包不是最新的版本,它是不能被迁出的。 那时,必须关闭编辑器并把内容包同步到最新的版本才能进行迁出操做。
关卡必须在编辑器的外面进行迁入迁出。
Epic使用[[]做为内部的源码控制系统。
附录7: 内容管理
再次说明,Epic使用[[]来管理游戏内容。美工人员一般会迁出源包,把它们有的内容添加到那个包中,而后保存包。全部的美工人员几乎天天均可以访问和更新内容,因此他们老是能够拥有最新的内容。若是一个包被迁出了,那么您能够请求迁入它们 。
咱们的包一般是150mb,而后咱们将会继续,为给定的环境集合制做新的包。
好比,咱们将创建一个像这样的环境包结构:
对于 COG_City:
• COG_City_Doors
• COG_City_Doors02
• COG_City_Doors03
• COG_City_Floors
• COG_City_Floors02
• COG_City_Floors03
请参照资源通道页面得到关于命名惯例和包组织结构的更多信息。
附录8: 编译
目前,天天都会经过编译脚原本搜索到最新版本的内容和代码,编译引擎和全部的游戏工程,为其添加惟一的标签,把全部的内容并把编译好的二进制文件迁入,而后在书写一个内部的通知邮件,告诉项目团队已经有一个新的版本。 全部的美工人员和设计人员在他们的系统上都有批处理文件,这容许它们同步到最近的彻底编译版本。 这个有助于避免工做人员对正在使用哪一个版本进行工做产生疑惑。。 spring
配置文件 ◦ 概述
--------------------------------------------------------------------------------
虚幻引擎 3 依赖于配置文件来指示它将如何运做及初始化。配置是由成对的键值来决定的,他们咱找部分排列。一个键能够和一个或多个值相关联。
一些变量能够直接地经过 native 代码进行访问,而其它的变量能够很容地追溯到 UnrealScript 代码中。不管什么时候当在一个对象上调用 SaveConfig() 或 StaticSaveConfig() 函数时,引擎把全部的变量保存到指定的配置文件中(除非已经定义类能够把它的设置保存到可替换的配置文件中)。
Native 代码所使用的配置文件中的变量通常有一个简单的部分标题。好比,出如今 DefaultEngnine.ini 配置文件的第一部分简单地命名为 [URL] 。然而,UnrealScript 代码使用的任何变量一般都有彻底的符合要求的类名称,它遵循命名格式 [(package).(classname)] 。例如,DefaultEngine.ini 中的 [Engine.Engine] 项指向存储在 Engine 软件包内部的 Engine 类。对于这个规则而言有一些例外状况,例如 [WinDrv.WindowsClient] 项。
同时,请记住 UnrealScript 代码编辑器 (UCC) 使用配置文件来决定哪一个包存在。和游戏引擎不同的是,UCC 仅使用设置信息的一个较小的子集(主要是 DefaultEngine.ini 配置文件中的 [Editor.EditorEngine] 项)来加载包。
第一次运行引擎,可能会缺乏某些配置文件。它将会加载默认的配置文件,而后把它们转化为使用当前项目名称的配置文件。好比,对于 UDKGame 项目来讲,DefaultEditor.ini 会转换为 UDKEditor.ini。当生成真正的配置文件后,将再也不使用默认的文件。然而,您将会发现默认文件做为参考或者容许终端用户将他们的配置文件从新设置为默认设置是很是有用的。
这些默认文件构成了引擎项目中的 Base 文件中的核心配置。这能够在默认配置文件的 [Configuration] 部分看到。
引擎配置文件用来做为项目和变量的默认值。用户输入配置能够用做为函数的按键绑定,好比可执行命令。
使用配置文件
--------------------------------------------------------------------------------
文件格式
部分和键-值对
通常的配置文件由成块的键-值对组成,以下所示:
[Section]
Key=Value
特殊字符
• + - 若是该属性还不存在则添加一行(从前一个 .ini 文件或者同一个 .ini 文件的前面的部分)。
• - - 删除一行(可是它必须是精确匹配)。
• . - 添加一个新属性。
• ! - 删除一个属性;可是没必要是精确匹配,仅须要匹配属性的名称便可。
注意 : . 和 + 相似的,只是 . 能够添加一个重复的行。这对绑定是有用的(正如在 DefaultInput.ini 中所看到的),好比,其中最底部的绑定生效,因此若是您添加了相似于如下的东西:
[Engine.PlayerInput]
Bindings=(Name="Q",Command="Foo")
.Bindings=(Name="Q",Command="Bar")
.Bindings=(Name="Q",Command="Foo")
它将能够正确地工做。可是若是使用 + 则不能添加最后一行,且您的绑定将是错误的。因为配置文件绑定,将会发生上面的应用形式。
注释
大多数人彷佛都会以为配置文件中的分号表示注释,但它们不是。这种行为是故意设计的。从技术上讲,任何字符均可以表明任何一种不一样的键值对。一般,会在新的一行的行首放置一个分号。它的功能像是注释,但事实上它不是。
; This is a Comment
; So is this!
建立配置文件
当建立一个基于另外一个配置的新配置文件时,您须要包含 [Configuration] 项和 BasedOn 项的键值对。
好比,若是您的配置文件将要基于基础配置文件 Engine.ini ,您须要在您文件的顶部放置如下信息:
[Configuration]
BasedOn=..\Engine\Config\BaseEngine.ini
要想向从基础配置文件继承而来的特定部分的现有键值对添加添加附加信息,请使用 + 专用字符,以下所示:
[Core.System]
+Extensions=mymap
要想从基础配置文件继承而来的特定部分中删除一个的现有键值对,请使用 - 专用字符,以下所示:
[Core.System]
-Extensions=umap
若是您的配置文件没有基于任何东西,那么您将不须要指定 + 或 - 。
保存对象配置
虚幻引擎 3 能够把一个对象的配置文件保存到任何所需的配置文件中。虚幻脚本/引擎配置文件的语法对于建立那个入口的对象来讲是很是简单的也是很容易追踪的。
声明配置文件名称
类声明包含了新的配置文件的文件名。好比,如下实例类声明的变量将会保存到 'User' 配置文件中:
TestConfig.uc
class TestConfig extends Actor
config(User);
var config int X;
function postbeginplay()
{
X=5;
SaveConfig();
}
在运行时生成 TestConfig 时,它将会设置 X 的值并保存它的配置信息。UDKUser.ini 文件(假设您的游戏是 UDKGame)将会更新如下信息:
[UDKGame.TestConfig]
X=5
下次在运行时生成 TestConfig 时,X 的默认值将会是 5。即便您要从 TestConfig 中删除 PostBeginPlay() 函数,X 的值将会设置为等于 5,前提是在配置文件中存在 5 这个值。
若是您声明了一个新的配置文件名称,那么建立这个文件,以您的项目名称为前缀(UDK 表明 UDKGame,Example 表明 ExampleGame)。下面的示例会显示一个能够声明新的配置文件并被保存在 UDKUDN.ini 中(对于 UDKGame)的对象:
class TestConfig extends Actor
config(UDN);
变量配置和继承
--------------------------------------------------------------------------------
配置变量会被其子类继承。可是,若是在 SaveConfig() 的子类上调用 TestConfig ,X 将会保存子类的值。如下的实例扩展了上面的 TestConfig 类:
TestConfigChild.uc
class TestConfigChild extends TestConfig;
function postbeginplay()
{
X=15;
SaveConfig();
}
在运行时生成 TestConfigChild 的时候,将这个对象的配置保存为:
[UDN.TestConfigChild]
X=15
动态 vs 静态配置
程序员能够使用两种不一样的方法来把对象的配置信息保存到配置文件中: 动态和静态。基本上,这意味着若是您在对象实例上调用 SaveConfig() ,那么将会保存运行时变量。若是在一个类变量上调用 StaticSaveConfig() ,它会将对象的 默认 值写到配置文件中。上面的全部实例都是保存了运行时对象的配置信息。它将会容许您恢复最终用户配置,或者覆盖在配置文件的 Unrealscript 中定义的这个类的默认属性。
如下片断保存了 X 的默认值:
class'TestConfigChild'.default.X = 30;
class'TestConfigChild'.static.StaticSaveConfig();
X 的默认值被写入到了配置文件。
[UDN.TestConfigChild]
X=30
可用的配置文件
--------------------------------------------------------------------------------
配置文件位于任何给定项目的 Config 目录中(例如,%UDK_ROOT%\UDKGame\Config)。
这里是使用虚幻引擎的特定游戏可用的配置文件列表:
• DefaultCharInfo - 虚幻竞技场 3 使用的默认角色。
• DefaultCompat - 在表格中的默认功能。
• DefaultEditor - 虚幻编辑器的默认配置。
• DefaultEditorKeybindings - 在虚幻编辑器中使用的默认按键绑定。
• DefaultEditorUDK - 在虚幻编辑器中使用的默认 UDK 特定设置。
• DefaultEditorUserSettings - 虚幻编辑器的默认用户设置。
• DefaultEngine - 虚幻引擎 3 的默认配置。
• DefaultEngineUDK - 在虚幻引擎 3 中使用的默认 UDK 特定设置。
• DefaultGame - 在虚幻引擎 3 中用于游戏运行的默认游戏配置。
• DefaultGameUDK - 在虚幻引擎 3 中用于游戏运行的默认 UDK 特定游戏设置。
• DefaultInput - 在虚幻引擎 3 中能够用于游戏运行的默认按键绑定。
• DefaultInputDefaults - 在使用 Coalesced.ini 的时候须要它才能从新设置默认值。
• DefaultLightmass - 供 Lightmass 使用的默认 Lightmass 设置。
• DefaultUI - 在虚幻引擎 3 中用于游戏运行的默认用户界面配置。
• DefaultWeapon - 供虚幻竞技场 3 使用的默认武器设置。
• DefaultWeaponDefaults - 在使用 Coalesced.ini 的时候须要它才能从新设置默认值。 数据库
虚幻引擎3命令行参数 ◦ 概述
--------------------------------------------------------------------------------
命令行参数是一连串的关键字字符串,当运行可执行文件时能够经过命令行或者可执行文件的快捷方式将其传入。它们的目的是自定义引擎运行的方式,以便符合开发人员或用户的须要。这能够像使得运行编辑器而不运行游戏那么简单;或它也能够更加复杂,好比使用某个特定的地图在指定的分辨率和帧频率下启动游戏,同时把每帧转存到一个单独的图像文件中。
模式
--------------------------------------------------------------------------------
这些参数强制使得主要的可执行命令以某种模式而不是正常的游戏模式运行,或者强制执行众多命令行开关中的一个,它们是一些执行和开发人员的相关的常见任务的较小的专用的应用程序。它们紧跟在可执行文件名称的后面比那能够当即地被传入到可执行命令中,不须要额外的语法。这些命令是大小写不敏感的。
示例:
UDK.exe editor
• Editor: 启动编辑器
• Server: 将游戏做为服务器运行
地图/服务器/编辑器的URL 参数
--------------------------------------------------------------------------------
URLs能够传入到可执行命令中来强制游戏在启动时加载特定的地图。这些参数也能够和 SERVER或EDITOR模式结合使用来使用特定的地图运行编辑器或服务器。传入URL参数是可选的,可是该参数必须紧跟在可执行命令名称的后面或者若是存在任何模式开关则紧跟在该模式开关的后面。
URL由两部分组成: 地图名称或服务器IP地址以及一系列的可选的附加参数。地图名称能够是使放在Maps目录中的任何地图的名称。这里是否包含文件扩展名(也就是.udk 或.ut3)是可选的。要想加载在Maps目录中不能找到的地图,那么能够使用来自于Maps目录的绝对路径或相对路径。在这种状况下,则强制包含文件扩展名。服务器IP地址是一个标准的4-部分IP地址,即由0到255之间的4个值组成,这些数值之间用句号分隔。其它的选项经过把它们附加到地图名称或服务器IP地址的后面来指定。每一个选项使用‘?’做为前缀。
示例:
UDK.exe MyMap.udk?game=MyPackage.MyGame?class=MyPackage.MyPawn
UDK.exe server MyMap.udk?listen=true?bIsLanMatch=true
UDK.exe 127.0.0.1
通常选项
• CHARACTER: 要使用的玩家角色。
• CLASS: 告诉引擎要使用的玩家类(覆盖默认值)。
• GAME: 告诉引擎要使用的GameInfo 类(覆盖默认值)。
• NAME: 要使用的玩家名称。
• PASSWORD: 进入一个服务器所须要的密码。
• TEAM: 玩家所在的团队 (或比较喜欢的团队)。
服务器选项
• bHasVoice: 指出能够使用语音支持。
• bIsLanMatch: 设置多玩家游戏是否在本地网络上(好比 bIsLanMatch=0 )。
• bRequiresPassword: 设置在线游戏是否须要密码(好比 bRequiresPassword=0 )。
• DEDICATED: 指定服务器做为专用服务器。
• GAMEPASSWORD: 传入的服务器密码。
• LISTEN: 指定服务器做为监听服务器 (好比 Listen=...).
• SERVERDESCRIPTION: 为服务器显示的描述信息。
针对UTGame的特定选项
• DIFFICULTY: 设置游戏中机器人的技能级别。
• MUTATOR: 指定要使用的mutator (设置器)。
• NUMPLAY: 要使用的玩家的数量。(玩家的数量是机器人的数量加1的值)。
• RESTART: 从新启动地图。
• SPECTATORONLY: 以观看模式启动游戏。
Switches(开关)
--------------------------------------------------------------------------------
根据特定关键字的及它的应用目的的不一样,这些参数能够传入到游戏或编辑器中。有些参数是通常的开关(也就是-UNATTENDED),而其它的参数是设置开关,它们是“键=值”对(也就是-LOG=MyLog.txt)。这些命令是大小写不敏感的。传入普通的开关的语法是在每一个参数前面加上一个减号(‘-’),而后后面紧跟上那个参数。设置开关除了服务器开关外,其它的不须要以 ‘-‘开头。
示例:
UDK.exe –silent LOG=MyLog.txt
开发人员
• ABSLOG: 和LOG=相似,可是没有文件名长度检查。
• ALLUSERS: 当指定了INSATLLGE时,为全部用户添加游戏。
• AUTO: 假设对全部问题的回答都为”是“(好比在编译过程当中)。
• AUTOCHECKOUTPACKAGES: 自动检查须要保存的包。
• AUTODEBUG: 执行自动调试。附加UnrealScript调试器并在遇到的第一个字节代码出现则中断。
• AutomatedMapBuild: 执行针对特定地图的自动构建。自动地图构建。
• BIASCOMPRESSIONFORSIZE: 覆盖关于大小的压缩设置。
• BUILDMACHINE: 设置为编译机器。用于决定是否启用调试输出。
• BULKIMPORTINGSOUNDS: 当批量地调出声音时使用它(针对通用浏览器)。
• CHECK_NATIVE_CLASS_SIZES: 启用native类的大小检查。注意: 游戏机平台上的Native类会致使native类的大小检查失败,尽管假设它们是正确的。
• CODERMODE: 启用Coder(编码)模式。
• COMPATSCALE: 手动地设置兼容性设置来覆盖PCCompat工具设置。
• CONFORMDIR: 当统一包时要使用的目录。
• COOKFORDEMO: 指定其为演示做品的烘焙包。
• COOKPACKAGES: 指定烘焙包的标签。
• CRASHREPORTS: 老是报告引擎的崩溃状况。
• D3DDEBUG: 使用 d3d调试设备。
• DEBUG: 告诉引擎发送调试信息到调试器,或者在脚本编译过程当中编译调试包。
• DEBUGFACEFX: 跟踪FaceFX动画。
• DEVCON: 禁用开发人员的可靠链接(使用未加密的插槽)
• DUMPFILEIOSTATS: 跟踪并记录文件IO的统计数据。
• DUMPUDKSURVEY: 简单地转存UDK硬件调查。不上传。
• FATALSCRIPTWARNINGS: 把调试过程当中的脚本警告当成致命错误。
• FINAL_RELEASE: 为脚本编译设置FINAL_RELEASE宏。
• FIXEDSEED: 使用固定的值0初始化随机数生成器。
• FIXUPTANGENTS: 自动修复在分布中遗留的切线。
• FORCELOGFLUSH: 强制在每行后进行日志刷新。
• FORCEPVRTC: 强制对移动平台进行pvrtc贴图压缩。
• FORCESOUNDRECOOK: 强制彻底地从新烘焙全部声效。
• GENERICBROWSER: 使用通用浏览器。
• INCLUDEUTGAMECONTENT: 设置要加载的UTGameContent包。
• INSTALLED: 用于开发,就像安装了游戏那样运行游戏。
• INSTALLFW / UNINSTALLFW: 设置是否要执行防火墙集成的处理。
• INSTALLGE: 把游戏添加到游戏浏览器中。
• LANGUAGEFORCOOKING: 设置烘焙所使用的语言。
• LIGHTMASSDEBUG: 使用–debug手动地启动lightmass,并容许lightmass执行屡次。
• LIGHTMASSSTATS: 强制全部的lightmass代理向日志中报告详细的统计数据。
• LOG: 当用做为开关(-log)时,将打开一个独立的窗口实时地显示日志的内容。当用做为设置(LOG=filename.log)时,将告诉引擎使用紧跟在后面的字符串做为日志文件名。
• LOGTIMES: 在日志输出中打印时间。(默认状况下,这和设置*Engine.ini文件的[LogFiles]部分中的LogTimes=True的效果一致。)
• NOCONFORM: 告诉引擎不要统一包,由于它们已经编译了。
• NOCONTENTBROWSER: 禁用内容浏览器。
• NOINNEREXCEPTION: 禁用native C++中的异常处理程序。
• NOLOADSTARTUPPACKAGES: 强制不加载启动包。若是启动包中的对象必须从编辑器中删除,那么您能够使用这项。
• NOLOGTIMES: 在日志输出中不打印时间。 (默认状况下,这和设置*Engine.ini文件的[LogFiles]部分中的LogTimes=False的效果一致。)
• NOMODAUTOLOAD: 不要自动地加载mod类。
• NOPAUSE: 在退出时自动地关闭日志窗口。
• NOPAUSEONSUCCESS: 只要没有错误存在,那么便在退出时自动地关闭日志窗口。
• NOREMOTECONTROL: 禁用远程控制。用于专用服务器。
• NORC: 禁用远程控制。用于专用服务器。
• NOVERIFYGC: 不验证垃圾编译器的假定条件。
• NOWRITE: 禁止把结果输出到日志中。
• OUTPUTHEADERS: 强制批量导出脚本中头文件的输出。
• RC: 强制使远程控制可见。
• REMOTECONTROL: 强制使远程控制可见。
• REPAIR: 自动修复游戏资源数据库的任何问题。
• SCRIPTSTACKONWARNINGS: 在调试过程当中显示警告的脚本栈。
• SEEKFREELOADING: 仅使用烘焙的数据。
• SEEKFREEPACKAGEMAP: 使用免搜索(烘焙)版本覆盖包地图。
• SEEKFREELOADINGPCCONSOLE: 仅为PC控制台模式使用烘焙的数据。
• SEEKFREELOADINGSERVER: 仅为服务器使用烘焙的数据。
• SETTHREADNAMES: (仅Xbox) 强制设置线程名称。这可能会搞糟XDK COM API,这也是为何在须要的状况下必须现实地设置执行它的缘由。
• SHOWMISSINGLOC: 若是丢失了本地化文本则返回错误的字符串,而不是英文文本。
• SILENT: 禁用输出和反馈。
• SKIPDOWNLOADER: 对于针对Android系统的开发目的,跳过Google Play扩展下载器并使用手动同步的数据。
• TRACEANIMUSAGE: 跟踪动画的应用。
• TREATLOADWARNINGSASERRORS: 强制加载警告做为错误处理。
• UNATTENDED: 设置为无人管理的状态。禁用须要从用户得到反馈的任何东西。
• UNINSTALLGE: 从游戏浏览器中删除游戏。
• USEUNPUBLISHED: 强制使用在Unpublished文件夹中的包(废弃?)。
• UTRACE: 启用脚本跟踪功能。
• VADEBUG: 使用Visual Studio调试器界面。
• VERBOSE: 设置脚本编译器使用详细的输出。
• VERIFYGC: 强制验证垃圾编译器的假设条件。
• WAITFORDEBUGSERVER: 强制游戏等到UnrealConsole链接为止。
• WARNINGSASERRORS: 把警告当作错误处理。
• WXWINDOWS: 必须传入这个参数来启用属性窗口和远程控制。
渲染
• ConsolePosX: 控制台输出窗口的水平位置。
• ConsolePosY: 控制台输出窗口的垂直位置。
• PosX: 设置游戏窗口在屏幕上的水平位置。
• PosY: 设置游戏窗口在屏幕上的垂直位置。
• WindowPosX: 设置游戏窗口在屏幕上的水平位置。
• WindowPosY: 设置游戏窗口在屏幕上的垂直位置。
• ResX: 设置游戏窗口的水平分辨率。
• ResY: 设置游戏窗口的垂直分辨率。
• VSync: 经过命令行激活VSYNC(这会防止产生图像撕裂,但会形成fps消耗并致使输入延迟)。
• NoVSync: 经过命令行禁用VSYNC。
• BENCHMARK: 为了避免跳任何帧来处理每一帧,则以固定步长来运行游戏。当把这个参数和DUMPMOVIE选项结合使用时是很是有用的。
• DUMPMOVIE: 把渲染的帧使用当前的分辨率转存到文件中。
• DUMPMOVIE_TILEDSHOT: 使用指定的分辨率乘数把渲染的帧转存到文件中。使用为高分辨率帧使用平铺截图(好比 DUMPMOVIE_TILEDSHOT=4)。
• EXEC: 执行指定的exec文件。
• FORCESHADERMODEL2: 即便在shader model 3硬件上也强制使用shader model 2来渲染路径。
• FORCESHADERMODEL3: 强制使用shader model 3。
• FPS: 设置性能基准测试中每秒钟的帧数。
• FULLSCREEN: 设置游戏以全屏模式运行。
• PIXO: 使用pixomatic软件渲染。
• SECONDS: 设置最大的tick(更新)时间。
• SM3: 强制使用shader model 3。
• SM4 / D3D10: 若是DirectX 10存在,则强制使用它。
• WINDOWED: 设置游戏以窗口模式运行。
网络
• LANPLAY: 告诉引擎在链接到服务器时不要超过客户端的带宽。由于服务器更新量是双倍的,这可能会占用充满整个客户端带宽。
• Limitclientticks: 强制对网络更新进行节流。
• LIVEMACADDRESS: 指定Panorama链接所使用的MAC地址。
• LIVEPORT: 指定Panorama链接所使用的端口。
• LIVEREGKEY: 指定一个注册码。
• MPGAMETYPE: 指定烘焙使用的一种单独的游戏类型。
• MULTIHOME: 告诉引擎为网络使用多寻址地址。
• NETWORKPROFILER: 启用网络分析跟踪。
• NOLIVE: 禁用Panorama。
• NOSTEAM: 设置不使用steamworks。
• PORT: 告诉引擎使用特定的端口号。
• PRIMARYNET: 影响引擎如何处理网络绑定。
用户
• NOHOMEDIR: 覆盖使用My Documents(个人文档)文件夹做为主目录。
• NOFORCEFEEDBACK: 在引擎中禁用强制反馈功能。
• NOSOUND: 禁用引擎中的任何声效输出。
• NOSPLASH: 当加载游戏时禁止使用程序启动图像。
• NOTEXTURESTREAMING: 禁用贴图动态载入。总加载最高质量的贴图。
• ONETHREAD: 使用单线程运行引擎而不使用多线程。
• PATHS: 设置测试冲突的内容所使用的路径。这个参数对发行版本无效。
• PREFERREDPROCESSOR: 设置特定处理器的线程关联性。
• USEALLAVAILABLECORES: 强制在目标平台上使用全部可用核心。
服务器开关
• LOGIN: 设置登陆时使用的用户名。
• PASSWORD: 设置登陆时使用的密码。
游戏 统计数据/数据库
• CSVSTATS: 把统计数据写入到文件中,使用分号分隔。
• GAMESTATS: 使用游戏统计数据可视化效果。
• NODATABASE: 请不要使用数据库。忽略数据库链接错误。
• NOGADWARNING: 在编辑器启动时禁用游戏资源数据库警告。
• NOLIVETAGS: 跳过加载SQL数据库中没有验证的标签改变。仅为当前用户加载。
• STARTSTATSFILE: 开始写入到统计数据文件中。
• STATFILE: 设置输出统计数据所到的文件的名称。
• XMLSTATS: 使用XML格式把统计数据写入到文件中。
INI/Config 文件
• ENGLISHCOALESCED: 若是不能找到语言的本地化版本则恢复到默认的(英语)coalesced .ini。
• NOAUTOINIUPDATE: 禁止向更新的.ini文件中输入提示信息。
• NOINI: 不更新.ini文件。
• REGENERATEINIS: 强制从新生成.ini文件。
能够使用另外一个命令行参数来临时地覆盖游戏或编辑器加载的INI文件。好比,若是使用了一个自定义的'MyGame.ini' 文件而不是'UDKGame.ini',那么该参数将为(也就是-GAMEINI=MyGame.ini )。这个表格列出了UE3中用于覆盖不一样的INI文件的参数。
命令行参数
INI覆盖
DEFEDITORINI=
Default Editor
EDITORINI=
Editor
DEFEDITORUSERSETTINGSINI=
Default EditorUserSettings
EDITORUSERSETTINGSINI=
EditorUserSettings
DEFCOMPATINI=
Default Compat
COMPATINI=
Compat
DEFLIGHTMASSINI=
Default Lightmass
LIGHTMASSINI=
Lightmass
DEFENGINEINI=
Default Engine
ENGINEINI=
Engine
DEFGAMEINI=
Default Game
GAMEINI=
Game
DEFINPUTINI=
Default Input
INPUTINI=
Input
DEFUIINI=
Default UI
UIINI=
UI
2012年5月以后编译版本中可供使用的参数
针对基础数据类型(没有进行处理的数列和结构)的单个 .ini 文件如今也能够在命令行开关上进行重载(在Debug/Release/Test中,而不是在Shipping/FINAL_RELEASE中)。
这个功能一般用于移动设备(或者家用机),在这里改变命令行开关很容易,可是只是更新 .ini 设置来从新烘焙您的数据是有难度的。它的工做原理是这样的:
-ini:IniName:Section1.Key1=Value1,Section2.Key2=Value2,...
好比:
-ini:PS3-UDKEngine:Engine.Engine.bSmoothFrameRate=False,TextureStreaming.PoolSize=100
-ini:ExoGame:AwesomeBoss.HitPoints=100000
重点是使用正确的 .ini 名称!! 这已经经过生成的.ini文件进行测试(UDKEngine,不是DefaultEngine),因此我建议继续使用。
要点: 在PC上使用这项功能将会使您在本地生成 .ini 文件被更新。在家用机/移动设备上,这些 .ini 文件都是只读文件,这样它就只会影响游戏的运行。
调试
• BugLoc (e.g. BugLoc=(X=1798.8569,Y=475.9513,Z=-8.8500))
• BugRot (e.g. BugRot=(Pitch=-1978,Yaw=-7197,Roll=0))
其它
• timelimit (e.g. timelimit=[time])
• goalscore (e.g. goalscore=[score])
• numbots (e.g. numbots=[num]) 编程
内容烘焙概述
--------------------------------------------------------------------------------
内容烘焙是指如何转换内容为 游戏机平台支持 (当前是 Xbox 360 和 PS3)的格式。PC如今也能够使用烘焙数据,这将会产生更快的加载速度。就绝大部分功能而言,它是很是简单的,可是有几个事情至少须要您的团队中的一我的知道。
烘焙器自己是一个Unrealcommandlet(命令开关)。通常,您将使用Unreal Frontend工具来调用这个命令开关,能够传入任何配置选项。可是,您也能够经过直接使用命令行开关自己来烘焙您的内容。
请确保您已经正确地设置了您的版本!
烘焙
--------------------------------------------------------------------------------
烘焙器的最主要的做用是以最佳的格式保存包,以即可以在游戏机平台(以及PC)上进行加载。在包上所进行的处理包含如下几个方面:
• 剥离任何没必要要的数据,好比仅编辑器使用的数据(这将会对文件的大小产生很大的影响)。
• 字节交换全部数据,以便它能够在没有CPU消耗的状况下被大尾字节架构所加载。
• 处理资源,以便它们按照它们native(自己)的格式存储,而且为加载作好准备,使得在游戏机平台上不须要任何进一步的处理。
• 建立免搜索的、独立的包,以即可以从寻道速度时间较慢的媒体(也就是 DVD/BD)上得到最佳的加载速度。
在游戏机平台上,UE3仅支持加载烘焙的包。在PC上的UE3能够加载烘焙的、位烘焙的、甚至二者混合的包。
决定要烘焙的东西
命令开关经过加载包、处理它们而后从新保存它们来进行操做。加载的包列表由命令行开关和.ini设置决定。烘焙的包被保存到一个烘焙目录中,它的格式是XXXGame\CookedYYY,这里的XXX是指您的游戏的名称,YYY是指游戏平台名称。烘焙的包文件在游戏机平台上的扩展名是.xxx,在PC上的扩展名是原来的。若是命令开关选项覆盖了默认值的状况下,仅那些比烘焙过的包的日期更新的日期会被进行从新烘焙。
专用文件Textures.tfc(.tfc是贴图文件缓存的扩展名)包含了全部的动态载入贴图。这是游戏机平台的默认行为,可是您能够禁用这个功能。若是没有.tfc文件,游戏机平台将仅存储引用的内容包的副本,仅把它们贴图留在内容包中。若是使用了.tfc文件,将再也不须要内容包,因此烘焙目录将仅包含seekfree包和.tfc文件。
详细的流程是这样的:
• Non-seekfree(非免搜索)包 (当不使用.tfc时): ◦ 烘焙被正在烘焙的免搜索(seekfree )包所引用的任何过时的非-免搜索包(non-seekfree)。
• Seekfree (免搜索)包 (脚本、启动文件、地图) ◦ 烘焙任何相对于源文件来讲已通过期的免搜索(seekfree)包(检查是否有更新的引用的内容包)。
◦ (当使用.tfc时)当处理seekfree(免寻道)的包、贴图或者过时贴图时,它们将会被添加到.tfc文件中进行动态载入。
• 独立的seekfree(免搜索)包 ◦ 烘焙任何相对于源文件来讲已通过时的seekfree(免搜索)包。
若是指定了-full,那么将会首先删除全部的烘焙的包,以便全部的文件都会在日期检查时失败,从而能够进行所有地烘焙。若是指定了-recookseekfree,那么无论怎样,地图、启动文件以及独立的免搜索包都将会被烘焙。
命令行
通常,您将会使用Unreal Frontend来运行烘焙器,可是若是您想进行自动地烘焙或相似的行为,您能够使用命令行界面。
gamename.exe CookPackages [map1] [map2] ... [mapn] -platform=<Platform> -[options]
选项
• platform= <PLATFORM>: 设置为那个平台进行烘焙。平台能够使如下其中之一: ◦ pc - 烘焙具备编辑器支持的PC版本。
◦ pcserver - 烘焙针对专用服务器的PC版本 (不支持编辑器、剥离了大量数据)
◦ pcconsole - 像烘焙游戏机平台版本那样烘焙PC版本 (没有编辑器支持,剔除无关数据)。
◦ ps3, xbox360, xenon - 游戏机平台。
◦ tegra, iphone - 移动设备平台。
• full: 强制从新保存全部现有包。若是指定了这个选项,则首先会删除CookedYYY文件夹的内容。
• singlethread: 禁用多线程烘焙。
• processes= <N>: 在一个多线程烘焙中使用N个进程。
• recookseekfree: 强制从新烘焙全部的免搜索的包(在命令行或.ini上的启动包、独立的免搜索的包、地图)。当默认的依赖性检查不能正常工做时,这个功能是有用的(尤为是对独立的免搜索的包来讲,由于当任何非免搜索的包改变时,它将不会从新烘焙全部的独立的免搜索的包,这个地图是不同的)。
• -cookallmaps: 烘焙游戏中的全部地图。
• -mapsonly: 仅烘焙地图,将不会尝试烘焙其它东西。
• -inisonly: 仅烘焙.ini文件和本地化文件(烘焙到Coalesced.ini 和 Coalesced.int等文件中)。
• -sha: 为启动文件和接合文件生成SHA hash,并把它们输出到Hashes.sha中。
• languageforcooking= <LANG>: 设置LANG一种语言,以便进烘焙一种单独的语言。默认值为int(英语)。
• multilanguagecook= <LANG1<+LANG2<-LANG3...>>>: 同时烘焙多种语言。示例: -multilanguagecook=int+ita-fra 烘焙英语、意大利语和法语。前面有减号的语言(好比French(法语)),仅针对文本本地化文件进行烘焙,因此近启动包和ini文件会被烘焙。
• saveshadersatend: 告诉烘焙器延迟着色器缓存的保存直到烘焙结束为止,而不是在烘焙每一个包后进行保存。
• nopackagecompression: 不容许对烘焙后的包进行压缩。以包的大小为代价加速烘焙。
• noloccooking: 仅针对字幕处理的当前语言,仅生成和本地化文件结合的当前语言。
• verifytfc: 检查.tfc文件的错误。
• analyzereferecedcontent: 存储烘焙的包所引用的内容的统计数据。请参照FAnalyzeReferencedContentStat。
• usermode: 烘焙内容,就好像它是DLC或mod同样(这将仅烘焙在命令行中指定的包,它不会烘焙发行的脚本包)。关于DLC的更多信息,请参照DownloadableContent and 针对PS3平台的DLC?页面。
• skipmaps: 仅烘焙非地图免搜索的包。
• skipsavingmaps: 烘焙但不保存地图。这对于烘焙地图使用的LOC数据是有用的。
• skipnotrequiredpackages: 跳过 加载&保存 那些不须要进行烘焙处理的包,从而加速LOC烘焙。
• skipmaterialcleanup: 跳过清除材质的过程来加速烘焙迭代。
• skipstaticmeshclean: 跳过把材质压入到关卡中放置的静态网格物体实例中的过程。skipmaterialcleanup将会自动完成这个处理。
• skippmapobjs: 跳过识别P-maps(永久性关卡)中所包含的对象的步骤,并从它包含的子关卡中删除这些对象。(注意: 多个永久性关卡中包含的子关卡将会自动跳过这个优化。)
• skippsysmodules: 跳过从粒子系统删除相同的模块的过程。
• fastcook: 等同于指定NOLOCCOOKING、SKIPMATERIALCLEANUP、SKIPPSYSMODULES、SKIPPAMPOBJS & QUICK。
输出
烘焙器的输出是这六种类型文件的其中一种: levels(关卡)、native script packages (native脚本包)、combined startup package(组合的启动包)、texture streaming packages(贴图动态载入包)、standalone seek-free files(独立的免搜索文件)、texture file caches(贴图文件缓存)以及 metadata/helper(元数据/帮助)文件。
(关卡) 是一个包含了除了针对高级贴图mips的内容以外关卡所需的全部内容的包,从而基本能够使它免搜索地加载关卡(没有高细节贴图)。
native script packages (native脚本包)是一个UnrealScript包,在它内部有native类,而且一般老是在游戏启动时加载。它将会把脚本代码所引用的内容烘焙到这个包中,因此您须要当心地处理脚本代码直接引用的资源的数量。对于 Gears of War(战争机器) 来讲,咱们有一个主要的native脚本包WarfareGame.u,它具备native基类;WarfareGameContent.u,它没有native类,可是它有不少引用了不少不须要同时加载的内容(怪物等)的子类。
combined startup package(组合的启动包) 组合了全部用于启动游戏所须要的但却又没有被烘焙到主菜单关卡中的包。这包括相似于DefaultMaterial的物体。任何在启动包中的物体将老是被加载。
Texture streaming packages (贴图动态载入包) 包含了真正高级别(大的)mip数据,以便它不会在DVD上被复制太屡次,并使得它能够在运行时很容易地进行动态载入。
Standalone seekfree packages(独立的seekfree包) 它不是地图或脚本包,可是它把到它们的全部引用抽取出来放到一个单独的包中。在 Unreal Tournament(虚幻竞技场) 中,这用于组成自定义人物的网格块的包。当经过不少个网格块构建出一我的物时,咱们经过加载独立的seekfree包(异步地)快速加载网格物体和它们所依赖的贴图。由于在游戏机平台上不支持DynamicLoadObject,咱们经过彻底地加载包来加载物体。当烘焙独立的免搜索包时会有两个输出包 – 一个具备_SF扩展名。而另外一个没有。带有 _SF的文件是真正的包含全部物体和它们依赖的免搜索包,而没有带_SF的文件包含了动态加载的贴图(因为压缩差别,引擎不能从免搜索文件中自动地载入包)。
texture file cache(贴图文件缓存) 是一个独立的文件,它把不少值得动态载入的贴图组合到一个文件中。这个文件能够用于下降磁盘上文件的总数量以及一次同时打开文件的总数量(当平台有任何限制时)。
Audio streaming packages 没有建立Audio streaming packages(音频动态载入包) ,可是您能够动态载入包含音频的包。这种方法是比实现对任意音频的动态载入支持上更有利的,由于咱们想把更多的带宽尽量地留给贴图动态载入;并且,对于像虚幻竞技场和战争机器这样的如此快动做的游戏来讲,发生延迟也是不能接受的,并且在这时同步FaceFX动画也成为了一个额外的麻烦事。做为替换,战争机器建立了一个专用的对话框系统。
PC和烘焙
PC能够运行烘焙或未烘焙数据。要想运行具备烘焙数据的游戏,请使用-seekfreeloading命令行选项(或者在Unreal Frontend中的Run with Cooked Data[运行具备烘焙数据的游戏])。要使用编辑器运行未烘焙的数据,请使用-cookededitor命令行选项。
为PC和游戏机平台进行烘焙的不一样:
• PC包保持它们的扩展名,游戏机平台的包的扩展名改成.xxx。
• PC的 非-seekfree 包中保留了全部的物体,而不是像游戏机平台那样仅保存贴图。
• 游戏机平台烘焙支持TextureFileCache包。
• 游戏机平台烘焙时删除的“源数据”比PC烘焙时删除的更多,由于PC编辑器能够加载使用烘焙的包(参照UT3)来提供mod支持等。
UT3的PC版本发行了烘焙数据,而且容许mods。咱们把它做为"Publishing(发布)"版本呈现给用户的,它和烘焙相似,可是它仅烘焙在它们mod中的包。它基本上是在"-usermode"中来为PC烘焙的(也就是,没有烘焙咱们的native 脚本包)。
烘焙的包
--------------------------------------------------------------------------------
类型
有4种类型的烘焙的包。如下是它们的描述以及它们是如何加载的介绍。
Native 脚本包
描述: 描述:这些包中是native脚本代码。它们将通过烘焙而且使它们成为“seekfree”包(尽管对于相似于Core和Engine的脚本包来讲,因为它们在对象之间的相互依赖致使它们不可能真正地100%的seekfree,但bPreloadPackagesFromMemory选项能够读取搜索不是很重要的地方的内存)。经过烘焙,全部直接引用的内容(贴图、网格物体等) 都会被放到这个包中。
加载 : 它们将会始终并永久地被100%地加载:) 它们是启动时要加载的第一个东西(也就是Core、Engine、GameFramework、UTGame等)。
启动包
描述: 这些包是最初启动游戏时所须要的额外的包,它们的内容不会被烘焙到其它包中。它们被列在 [Engine.StartupPackages]部分。通常,咱们须要启动包的缘由是在这些包中的物体没有被脚本或地图直接地引用,因此须要对它们进行手动地烘焙和加载。
加载 : 在这些包中的全部物体都将会在启动时加载,而且将永远不会对其进行垃圾回收。这意味着您应该从这些包中删除没必要要的物体,从而能够节约运行时内存。
地图包
描述: 地图和那个地图引用的全部资源(除了在native脚本包中的类)。和native脚本包同样,它们也是免搜索的。多个烘焙的地图能够包含相同的物体(即若是两个使用了同一个贴图,那么将会把那个贴图分别烘焙到两个包中)。这增长了DVD/BD的使用量,可是不会增长运行时内存,由于若是物体已经经过使用它的地图加载到内存中,那么当再次加载使用这些物体的地图时(当您须要在动态载入关卡时加载多个关卡的状况),这些物体将会被跳过。
加载 : 当游戏或玩家切换地图时加载。它将会被彻底地加载(对动态载入来讲一般是异步的),而且在关卡经过调用LoadMap卸载或动态载出以前它将一直存在。
贴图包
描述: 这个包含有用于贴图动态载入的高级别的mip数据。在烘焙期间,除了高级mips之外的全部东西都会从包中删除。
加载 : 这些包将永远不会做为包加载,它们仅用于动态载入贴图(它的低级别mips在烘焙包中)。
应用
根据资源的应用来烘焙资源的方法:
直接引用的资源: 若是有一个物体被其余物体直接地引用,那么须要该物体的免搜索包(native脚本、地图)将会把它抽取到烘焙的免搜索包中,除非它具备动态载入贴图而且您如今没有使用贴图文件缓存,不然在Cooked(烘焙)目录中将不存在资源包。
解决方案: 不须要作任何事。这正是咱们所但愿的。
Loaded dynamically from any level(从任何关卡进行动态加载): 若是没有免搜索包(native脚本、地图)引用那个物体,而且在运行时加载了那个物体,那么咱们指望加载物体的方法是 LoadPackage ,由于若是物体没有经过 LoadPackage 进行加载,那么 DynamicLoadObject 将会在游戏机平台上返回 NULL 。
解决方案: 在您游戏的DefaultEngine.ini中的 [Engine.PackagesToAlwaysCook] 部分,把它标记为独立的免搜索包:
[Engine.PackagesToAlwaysCook]
+SeekFreePackage=MyGamePackage
这将会建立 MyGamePackage_SF.xxx(若是有贴图而且您没有使用TextureFileCache,那么MyGamePackage.xxx能够用于任何动态载入贴图)。这个包在进行游戏机平台加载时将会使用更加适合的格式,而不是像以前那样对外部引用和动态载入贴图不能进行正确地展示。
Loaded dynamically from one level(从一个关卡中动态地加载): 若是仅一个或两个关卡(也就是,菜单关卡)动态地加载那个物体,您能够把那个包强制地加入到地图文件中,那么之后当加载那个地图时,那个包也将老是会被加载。
解决方案: 在您游戏的DefaultEngine.ini的 [Engine.PackagesToForceCookPerMap] 部分,设置要强制加入到地图中的包:
[Engine.PackagesToForceCookPerMap]
.Map=MyFrontend
.Package=MyGamePackage
如今,不管什么时候,当加载MyFrontend时,在MyGamePackage中的全部物体都将会被加载,而且能够使用 DynamicLoadObject=/=FindObject 去获取物体。
Used in EVERY level(在每一个关卡中使用): 若是一个物体在任什么时候候均可以使用,您应该把它放到Startup 包中,以便它将只加载一次,但之后将老是在内存中。
解决方案: 在您的游戏的DefaultEngine.ini的 [Engine.StartupPackages] 部分添加您的包:
[Engine.StartupPackages]
+Package=MyGamePackage
配置
-------------------------------------------------------------------------------
配置文件
当设置您的游戏进行烘焙时,您须要修改一些.ini设置。由于游戏机平台的Engine.ini文件是从主要的Engine.ini文件来生成的,因此您应该在您游戏的DefaultEngine.ini文件中指定这些设置。然而,烘焙器将会在生成的目标平台的Engine.ini文件中查找那些设置,因此若是须要,您能够在您的游戏中的针对特定平台的的Engine.ini指定那些设置。
[Engine.PackagesToAlwaysCook]
描述: 这个部分是用于放入您确认全部用户已经烘焙的地图以及独立的免搜索包。自从12月份的版本后,全部的 非- 免搜索包都将会被烘焙,因此没必要再指定您想烘焙的随机包了。
这个部分在之后或许会进行重命名或者被分割为两个部分,由于随着时间的推移它的应用已经发生了改变。同时,独立的免搜索包也不会每次都进行从新烘焙,除非您在命令行中进行了覆盖。
何时使用: 您须要把那些你必须使用的包放在那里,好比主菜单关卡。同时,当您须要一个独立的seekfree包时(请参照上面的 “Operation”部分)。使用"Package="来确保它们已经被烘焙,而且使用 "SeekFreePackage=" 来指定seekfree包。
格式:
[Engine.PackagesToAlwaysCook]
+Package=entry
+Package=UTFrontend
+SeekFreePackage=CH_IronGuard_Male
[Engine.StartupPackages]
描述: 这里列出的包将会基于每种语言(Startup_int.xxx, Startup_kor.xxx, 等)被组合到一块儿来合成一个免搜索的启动包。在这些包中的物体(以及它们的依赖)是您在您最初启动游戏时所须要的,而且它们将老是在内存中 。一般在这些包中的物体将不会被烘焙到其它包中。
何时使用: 当您在最初启动过程当中须要的物体或者须要物体老是在内存中时使用。在如下的实例中,正确的字体文件将会在UI_Fonts处进行应用。因此,若是有一个UI_Fonts_KOR.upk包,当针对韩语烘焙时,它将会把UI_Fonts_KOR放到Startup_KOR.xxx中。
格式:
[Engine.StartupPackages]
+Package=FX_HitEffects
+Package=UI_Fonts
+Package=UI_Scenes_HUD
+Package=UI_Skins
+Package=UI_Skin_Derived
+Package=SpeechRecognition
bSerializeStartupPackagesFromMemory(是否从内存中序列化启动包)
描述: 以在最初启动期间大量的临时内存为代价来启用较快的启动速度。在启动时所作的事情是开始读取启动包中的列表到内存中,这个过程在幕后是异步的。因此,当正在从DVD(相对较慢)中读取一些包时,它能够处理其它包。默认状况下,引擎将会预先加载native脚本包、启动包和Startup_*.xxx。
它的工做原理是这样的:
• 开始把Core.u从DVD读入到一个已分配的内存块。
• 等待它完成。
• 开始读取Engine.u。
• 从内存块中把Core.u序列化到引擎中。
• 当从序列化已读取包的过程当中,继续读取包。
何时使用: 当您有足够的内存来分配这些额外的大的内存块而且您想加速启动游戏的引导速度时使用它。
格式: [Engine.StartupPackages] bSerializeStartupPackagesFromMemory=True
bFullyCompressStartupPackages(是否彻底压缩启动包)
描述: 描述:启用对启动包的全部包进行压缩。这些能够在加载过程当中经过一个单一的操做来进行异步压缩。
何时使用: 当和bSerializeStartupPackagesFromMemory 结合使用时,这将可能有利于得到更快的启动包加载速度。当引擎准备好处理已经加载的包时,它就已经解压缩。
格式: [Engine.StartupPackages] bFullyCompressStartupPackages=True
[Engine.PackagesToForceCookPerMap]
描述: 这个部分将会强制把某些包彻底地烘焙到一个地图包中。
何时使用: 当您想使用DynamicLoadObject (DLO)来经过字符串名称而不是对象引用来加载物体时使用它。烘焙器将会仅遵循对象引用而不是字符串引用,因此它们不会使物体被烘焙到地图中。好比,UI系统使用DLO来打开UIScenes(UI页面)和贴图。因此,在虚幻竞技场中,咱们轻质把包含页面和贴图的包烘焙到主菜单中。这样即可以达到预约目标,以便页面和贴图能够经过加载UTFrontEnd地图来进行简单地加载。只要加载了关卡,物体就不会被垃圾回收。
格式:
格式是 Map=后跟随着任何数量多的Package=,从而列出要烘焙到那个地图中的包。
[Engine.PackagesToForceCookPerMap]
.Map=UTFrontEnd
.Package=UI_Scenes_Mutators
.Package=UI_FrontEnd_Art
.Package=UI_Portrait
.Package=UI_Scenes_ChrisBLayout
.Package=UI_Scenes_FrontEnd
.Package=UI_Scenes_Common
.Package=UI_Skin_Derived
.Package=UI_Skins
.Package=UI_Scenes_Campaign
.Package=UI_Weapons
.Map=UTM-MissionSelection
.Package=UI_Scenes_Campaign
.Package=UI_Skin_Derived
.Package=UI_Skins
[Core.System] SeekFreePCPaths
描述: 这部分将会保留CookedPC目录内部的扩展名和相关目录结构(使用 -cookededitor 标志得到编辑器功能)。
何时使用: 针对PC烘焙的版本。
格式:
[Core.System]
SeekFreePCPaths=<PATH> windows
控制台命令概述
--------------------------------------------------------------------------------
控制台命令是您能够在游戏中或在编辑器中运行的基于字符串的命令。它们也被称做 可执行命令 。
要想使用控制台命令,经过按下Tab或者Tilde(~)键弹出控制台,在它们内输入命令,而后按下Enter(回车)键即可以执行。控制台命令能够从游戏中和编辑器中执行,或者若是游戏使用-server开关启动,它也能够从服务器的控制台执行。它们能够作从从新设置引擎到设置特定actor的变量等各类事情。
还能够将命令的列表存储在系统目录的文本文件中,经过在控制台键入 exec _文件名_ 执行。
命令列表
--------------------------------------------------------------------------------
如下是引擎支持的控制台命令列表。
经常使用命令
• CANCEL (取消) -告诉引擎取消一个正在执行的链接尝试。
• DISCONNECT(断开链接) -将客户端和当前的游戏/服务器断开。
• EXIT(退出) -告诉引擎关闭应用程序。
• MAP - = START= 的别名
• OPEN [url] -告诉引擎根据命令后面出现的字符串的名称来打开地图,包括任何额外的URL参数(经过 命令行参数指出);请使用TRAVEL_Partial。
• QUIT - 和EXIT同样。
• RECONNECT(从新链接) -将客户端和当前的游戏/服务器 从新链接。
• SERVERTRAVEL -根据命令后面紧跟的字符串 名称/地址 从客户端穿行到服务器端。
• START [url] -和OPEN相似,不一样之处是它不进行TRAVEL_Absolute而进行的是RAVEL_Partial。
• STREAMMAP [url] – 准备并提交URL中的地图改变。
调试命令
• ANALYZEOCTREE [option] – 输出关于八叉树的信息。 ◦ VERBOSE – 输出详细信息
• CANCELMATINEE [param] – 跳过当前的matinee;参数指出了在命令生效以前播放器在matinee中所处的秒数。
• CLOSEEDITORVIEWPORT –关闭PIE视口。
• COLLAPSEOCTREE – 合并八叉树中的子树。
• CONFIGHASH - 显示配置信息。
• CONFIGMEM – 显示内存信息。
• COUNTDISBALEDPARTICLEITEMS – 输出禁用的粒子系统、lod级别及模块的数量。
• CUSTOMLODDATA [LOD=lod] – 设置为静态网格物体使用的自定义细节层次级别。
• DEBUG - 用于模仿各类错误,能够使用如下参数来进行区分: ◦ ASSERT – 告诉引擎模拟触发Assert错误的状况。
◦ BUFFEROVERRUN – 告诉引擎执行栈溢出测试。
◦ CRASH - 告诉引擎模仿严重的崩溃。
◦ EATMEM - 告诉引擎模仿耗尽全部的可用系统内存。
◦ GPF - 告诉引擎模仿通常的保护错误。
◦ HITCH – 告诉引擎模拟游戏中休眠1秒的故障停顿现象。
◦ LONGLOG – 输出一个很长的日志来测试日志使用的调整缓冲大小的代码。
◦ RECURSE - 告诉引擎模仿失去控制的递归或死循环。
◦ RENDERCRASH - 告诉引擎在渲染线程上模仿严重的崩溃。
◦ SLEEP - 睡眠几秒钟。
• DEBUGPREFAB [object] [command] – 输出关于某个特定预制的信息。命令能够是如下状况之一: ◦ GRAPH – 显示预制的子对象图表。
◦ SHOWMAP - 显示预制的原型映射。
• DIR - 显示全部使用过的目录和文件。
• DISABLEALLSCREENMESSAGES – 显示全部的屏幕消息或通过。
• DISTFACTORSTATS – 输出在游戏运行过程当中渲染SkeletalMeshComponents 所使用的DistanceFactor(距离因数)的信息。
• DN [comment] – 在当前位置建立一个具备指定注释的note actor。仅在PIE游戏中使用。
• DUMPDYNAMICLIGHTSHADOWINTERACTONS – 将场景的动态光照和阴影交互输出到日志中;仅包括阴影投射交互。
• DUMPLINECHECKS – 若是定义了 LINE_CHECK_TRACING,则输出自从上一次重置后线性检测的结果。
• DUMPMATERIALSTATS [platform] – 输出针对特定平台的材质统计数据。
• DUMPNATIVES - 显示全部native函数。
• DUMPSHADERSTATS [platform] – 输出针对特定平台的着色器统计数据。
• EDITACTOR [parameter] – 根据参数编辑找到的第一个actor的属性。 ◦ CLASS= - 要查找的类。
◦ NAME= - 要查找的名称。
◦ TRACE – 跟踪玩家视角得到第一个碰到的actor。
• EDITDEFAULT [CLASS=class] – 打开针对特定类的默认属性的属性编辑器。仅在独立平台上使用。
• EDITOBJECT [parameter] – 编辑所找到的第一个属于特定类或者具备指定名称的对象的属性。 ◦ CLASS= - 要查找的类。
◦ NAME= - 要查找的名称。
• ENABLEALLSCREENMESSAGES – 启用全部屏幕上显示的消息或警告。
• EXEC [filename] – 执行指定文件的内容(其余控制台命令)。
• FORCESKELLOD [option] – 强制显示骨架网格物体的特定细节层次。Option(选项)是: ◦ LOD= - 要强制使用的LOD。
• GAMEVER / GAMEVERSION – 输出引擎版本和变动列表到日志中。
• GETMAXTICKRATE – 输出最大更新频率到日志中。
• FLUSH - 告诉引擎冲掉引擎的全部缓存。
• FLUSHLOG – 告诉引擎冲掉全部日志。
• FLUSHPERSISTENTDEBUGLINES – 清除全部永久调试行调用。
• FRAMECOMPUPDATES – 输出一帧中全部的组件更新的列表。
• HIDELOGDETAILEDTICKSTATS – 关闭详细统计数据的输出。
• KILLPARTICLES – 使粒子系统中止活动并销毁全部粒子。
• KISMETLOG – 启用Kismet日志并强制全部序列输出日志。
• LISTAWAKEBODIES – 输出当前激活的全部刚体的列表。
• LISTDYNAMICLEVELS – 输出世界中全部动态载入关卡的列表。
• LISTLOADEDPACKAGES – 输出已加载的包的列表。
• LISTPAWNCOMPONENTS – 输出世界中全部Pawns的组件的列表。
• LISTPRECACHEMAPPACKAGES – 输出位于预缓冲列表中可是尚未被“加载”出来的包的列表。
• LISTSKELMESHES – 输出全部骨架网格物体的骨架网格物体到实例的映射列表。
• LISTSPAWNEDACTORS - -列出永久性关卡的全部动态actor及它的某些信息;同时隐含地被称为MEMLEAKCHECK 。
• LISTTHREADS - 给出关于哪一个线程正在哪一个核心上运行的大量信息。
• LOGACTORCOUNTS – 输出全部actors、动态actors及更新的actors的数量。
• LOGOUTSTATLEVELS – 输出关于动态载入关卡的信息。
• MERGEMESH [meshes] – 使用网格物体融合工具融合指定的骨架网格物体(用空格分隔列表)。
• MOVEACTORTIMES – 输出一帧中全部actor的移动次数。
• NAMEHASH – 显示关于名称表格的信息。
• OBJ - 用于和如下参数结合使用: ◦ BULK -
◦ CLASSES - 显示全部加载的类别的列表。
◦ COMPONENTS -
◦ DEPENDENCIES - 显示依赖于字符串参数所传入的特定包的对象的列表。 ■ PACKAGE= - 要检查的包。
◦ DUMP - 转存特定对象的全部变量值,支持指定类别来进行隐藏或显示(hide(隐藏)=移动、碰撞)。 ■ [class] - 简单名称 或者是 CLASS= 或者NAME= 。
■ HIDE= - 要排除的类别的列表,中间以逗号分隔。
■ SHOW= - 要包含的类别的列表,中间以逗号分隔。
◦ FLAGS -
◦ GARBAGE - 强制进行垃圾回收清理。
◦ GC - 强制进行垃圾回收清理。
◦ HASH - 显示具备hash(哈希表)的object的数量。
◦ INSTRINISICCLASSES -
◦ LINKERS - 迭代GObjLoaders并显示关于它们的链接器的信息。
◦ LIST - 显示包中的一个类别的全部物体的列表。 ■ CLASS= - 字符串的值是要查找的对象的类别。
■ INSIDE= - 字符串的值是要在其中查找对象的包的名称。
■ PACKAGE= - 字符串的值是要列出对象的包的名称,该包有一个外部容器。 ■ COUNT - 实例的数量。
■ NUMBYTES - 由序列化和类别大小决定的尺寸。
■ MAXBYTES - 和上面的同样,可是也考虑了TArray闲置状况。
■ RESBYTES - 资源的最大大小(贴图、声效、动画等)。
◦ MARK - 告诉引擎迭代全部物体并设置它们的标记标志。
◦ MARKCHECK - 显示没有标记的物体的列表。
◦ REFS - 能够带两个参数,用于说明对象的类别和名称,而后显示引用它的全部对象(注意 : OBJ REFS 使用不少栈,因此若是在使用它时发生了奇怪的崩溃,请增长您的栈的大小 – 对于PC来讲,这项在Visual Studio工程的 编译器设置?的Linker->System部分)。 ■ CLASS= - 要检查的类。
■ NAME= - 要检查的对象的名称。
• PARANOIDDEVICELOSTCHECKING – 切换是否在每一个描画调用中检测设备丢失。
• PARTICLETICKSTATS – 跟踪粒子更新统计数据。 ◦ DUMP – 以CSV格式将粒子更新统计数据输出到日志文件中。
◦ RESET – 清空跟踪的粒子更新统计数据。
◦ START – 开始跟踪粒子更新统计数据。
◦ STOP – 结束跟踪粒子更新统计数据。
• PHYSASSETBOUNDS – 更新一帧中全部物理资源边界更新的列表。
• PUSHVIEW [command] – 用于控制从编辑器中繁衍对象的命令。 ◦ START – 开始繁衍。
◦ STOP – 中止繁衍。
◦ SYNC – 若是启用了繁衍功能,同步玩家的位置和旋转度。
◦ [X] [Y] [Z] [PITCH] [YAW] [ROLL] – 直接设置玩家的位置和旋转度。
• REATTACHCOMPONENTS [CLASS=class] – 强制从新附加指定类别的全部组件。
• RELOADCFG [class/object] – 从新加载指定类或对象的配置。
• RELOADCONFIG [class/object] – 从新加载指定类或对象的配置。
• RELOADLOC [class/object] – 从新加载指定类或对象的本地化数据。
• RESETLINECHECKS – 若是定义了LINE_CHECK_TRACING则清除线性检测结果。
• SAVESHADERS – 保存本地着色器缓冲。
• SHOWEXTENTLINECHECK – 描画非零粗细碰撞检测的调试线,并在检测的结束处描画调试框。
• SHOWFACEFXBONES – 确认FaceFX骨骼索引和骨架网格物体骨骼索引相匹配。
• SHOW FACEFXDEBUG – 跟踪FaceFX骨骼列表来查看是否有多个网格物体正在引用或从新链接到主骨骼列表。
• SHOWISOVERLAPPING – 输出一帧中全部IsOverlapping函数调用列表。
• SHOWLIGHTENVS – 输出每帧中更新的全部光照环境的列表。
• SHOWLINECHECK – 描画针对非零粗细检测的调试线。
• SHOWLOG – 切换控制台日志窗口的显示状态。
• SHOWOCTREE – 切换八叉树的显示状态。
• SHOWPOINTCHECK – 在点检测的范围上描画方框。
• SHOWSKELCOMPLODS – 输出一帧中全部的骨架组件LOD。
• SHOWSKELCOMPTICKTIME – 输出一帧中更新的全部骨架网格物体组件的列表。
• SHOWSKELMESHLODS – 输出一帧中的全部骨架网格物体LOD。
• SHRINKOCTREE – 删除八叉树中任何闲置。
• STRUCTPERFDATA – 启用跟踪序列化性能功能。须要定义 TRACK_SERIALIZATION_PERFORMANCE 或 LOOKING_FOR_PERF_ISSUES。 ◦ DUMP – 输出序列化性能数据。
◦ RESET – 清除序列化性能数据。
• SUPPRESS [tag] - 禁止日志信息。
• TICKFREQ – 若是须要能够切换应用下降的更新频率。
• TOGGLEALLSCREENMESSAGES – 切换全部屏幕上的消息或警告的显示状态。
• TOGGLECROWDS – 切换全部群体的打开或关闭状态。
• TOGGLEDEBUGGER – 切换脚本调试器的应用。
• TOGGLEDRAWEVENTS – 切换描画事件的显示。
• TOGGLEFLUIDS – 切换全部流体表面的打开或关闭状态。
• TOGGLELINECHECKS – 切换线性检测栈跟踪的打开或关闭状态。
• TOGGLELINECHECKSPIKES [value] – 设置当线性检测的数量超过多少时转存当前帧的线性检测。
• TOGGLELOGDETAILEDACTORUPDATESTATS – 切换输出详细的actor更新统计数据的打开或关闭状态。
• TOGGLELOGDETAILEDCOMPONENTSTATS – 切换输出详细组件统计数据的打开或关闭状态。
• TOGGLELOGDETAILEDTICKSTATS – 切换输出详细的更新统计数据的打开或关闭状态。
• TOGGLEMOBILEEMULATION – 切换PC上移动设备仿真的应用 (游戏或编辑器)。
• TOGGLEONSCREENDEBUGMESSAGESYSTEM - 切换全部屏幕调试信息的显示状态。
• TOGGLEONSCREENDEBUGMESSAGEDISPLAY -切换屏幕上的调试信息。
• TOGGLERENDERINGTHREAD – 开始/中止 渲染线程。
• TOGGLESTREAMINGVOLUMES [ON/OFF] – 根据指定的参数打开或关闭动态载入体积。若是没有指定参数,则执行切换。
• TRACEFACEFX – 跟踪FaceFX骨骼列表来查看是否有多个网格物体正在引用或从新链接到主骨骼列表。
• UNSUPPRESS [tag] – 告诉引擎不要禁止日志消息。
• USENEWMOUSEINPUT – 切换新的DirectInput鼠标输入方法的应用。
• VIEWNAMES [Number] – 显示添加到名称表格中的上几个名称。
统计数据命令
STAT命令负责在游戏运行时在屏幕上启用显示统计数据功能而且能够控制显示哪些数据和显示方式。它能够和如下参数结合使用来切换 打开/关闭 数据的特定组的统计数据的显示(请参照 统计数据描述页面得到更多信息。)
• ANIM – 切换动画系通通计数据的显示状态。
• ASYNCIO – 切换异步加载统计数据的显示状态。
• AUDIO – 切换音频系通通计数据的显示状态。
• CANVAS – 切换画布描画统计数据的显示状态。
• CHART [command] [parameters] – 用于控制统计数据表格的命令。命令和参数能够是如下之一: ◦ Command(命令) ■ KEY – 切换表格按键的显示状态。
■ LOCKSCALE – 锁定表格的缩放比例。
■ RESCALE – 从新缩放表格来适应全部数据。
■ RESET – 删除全部表格线。
■ SHOW – 切换统计数据表格的渲染。
◦ Parameters(参数) ■ XRANGE= - 在X轴设置表格上的范围。
■ XSIZE= - 在X轴上设置表格的尺寸。
■ YSIZE= - 在Y轴上设置表格的尺寸。
■ XPOS= - 在X轴上设置表格的原点。
■ YPOS= - 在Y轴上设置表格的原点。
■ ALPHA= - 设置表格的背景不透明度。
■ FILTER= - 设置表格的过滤器字符串。
• COLLISION – 切换碰撞统计数据的显示状态。
• CROWD – 切换群体统计数据的显示状态。
• D3D10RHI – 切换DirectX 10统计数据的显示状态。
• D3D9RHI – 切换DirectX 9统计数据的显示。
• DECALS – 切换decal(贴花)渲染统计数据的显示。
• DLE – 切换动态光照环境渲染统计数据的显示。
• ENGINE – 切换通常引擎统计数据的显示。
• FACEFX – 切换FaceFX动画统计数据的显示。
• FLUIDS – 切换流体仿真统计数据的显示 (也就是流体表面)。
• FPS – 切换帧频率统计数据的显示。
• FPSCHART – 切换帧频率表格统计数据的显示。
• GAME – 切换游戏统计数据的显示。(更新时间等)
• INSTANCING – 切换实例化统计数据的显示。
• MEMORY – 切换通常内存统计数据的显示。
• MEMORYCHURN – 切换处理内存分配的统计数据的显示。
• NAVMESH – 切换导航网格物体统计数据的显示。
• NET - 切换网络统计数据显示的 打开/关闭 状态。
• NONE - 关闭全部统计数据的显示。
• OCTREE – 切换八叉树相关统计数据的显示。
• PARTICLES – 切换通常粒子统计数据的显示。 ◦ BEAMPARTICLES – 切换关于光束发射器的统计数据的显示状态。
◦ MESHPARTICLES – 切换关于网格物体发射器的统计数据的显示状态。
◦ TRAILPARTICLES – 切换关于尾部发射器的统计数据的显示状态。
• PATHFINDING – 切换通常寻路统计数据的显示。
• PHYSICS – 切换通常物理统计数据的显示。 ◦ PHYSICSCLOTH – 切换关于布料仿真统计数据的显示。
◦ PHYSICSFIELDS – 切换关于物理域的统计数据的显示状态。
◦ PHYSICSFLUIDS – 切换关于PhysX流体仿真统计数据的显示。
• SCENRENDERING – 切换场景渲染统计数据的显示。
• SCENEUPDATE – 切换通常场景更新统计数据的显示。
• SCRIPT – 没有和这个命令相关的统计数据。
• SHADERCOMPILING – 切换着色器编译统计数据的显示。
• SHADERCOMPRESSION – 切换着色器压缩统计数据的显示。
• STREAMING – 切换动态载入关卡统计数据的显示。
• THREADING – 切换引擎中运行的中线程的统计数据的显示。
• UI – 切换UIScene统计数据的显示。
STAT也能够和如下参数结合使用来修改关于显示什么数据和数据显示方式的设置:
• COLOR – 未实现。
• COUNTERS – 切换计数器和累加器的渲染。
• CYCLES - 切换循环计数器的渲染。
• EXCLUSIVE – 切换全部独占数据的显示。
• FONTSCALE [scale] - 能够缩放描画这个统计数据的字体大小。
• GROUPED – 设置统计数据渲染模式为分组渲染。
• HIER / HIERARCHY – 设置渲染模式为层次结构化渲染。
• INCLUSIVE – 切换全部包含数据的显示。
• LIST – 根据如下信息在控制台上显示统计数据组的名称。 ◦ GROUPS – 显示全部可用组的名称。
◦ SETS – 显示.ini文件的CustomStats部分中所保存的任何设置的名称。
◦ Group [name] – 显示指定组中包含的统计数据。
• NAME [name] – 根据指定的名称启用或禁用统计数据。
• NAV [index] – 当以层次结构方式渲染时,导航统计数据树结构。这个索引是要导航到的统计数据的编号。
• NONE – 切换当前可见的全部统计数据的显示。
• SAVE [name] – 使用指定的名称做为组名称将全部当前可见的统计数据输出到*Engine.ini文件的CustomStats 部分。
• SLOW [threshold] [duration] – 设置渲染模式仅显示慢循环统计数据。Threshold默认为0.01f,duration默认为10.0f。
• STARTFILE – 开始捕获统计数据文件以便和StatsViewer结合使用。
• STOPFILE – 完成捕获统计数据文件。
内存和性能命令
• BEGINTRACKINGTHREAD – 开始跟踪当前线程。
• DEFERRED_STOPMEMTRACKING_AND_DUMP - 以延迟的方式执行 SNAPSHOTMEMORY、STOPTRACKING和DUMPALLOCSTOFILE命令。
• DUMPFPSCHART – 输出FPS表格信息。
• DUMPMEMCHART – 输出内存表格信息。
• DUMPPARTICLECOUNTS – 输出关于粒子数量的信息。
• DUMPSLACKTRACES – 输出数组闲置跟踪的踪影;仅当启用TRACK_ARRAY_SLACK时有效。
• ENDTRACKINGTHREAD – 中止跟踪当前线程。
• MEM - 显示所分配的内存信息。
• MEMFRAGCHECK – 执行内存碎片检测。直到下一个垃圾回收后延迟真正的执行,已得到精确的读取。
• MEMLEAKCHECK – 执行内存泄漏检测。直到下一个垃圾回收后延迟真正的执行,已得到精确的读取。
• MEMORYSPLIT – 输出关于内存在各类资源之间如何分割的信息。
• MEMREPORT [option] – 执行一组命令来输出各类信息和内存信息。惟一的选项是: ◦ FRAG – 使得同时执行MEMFRAGCHECK(内存碎片检测)。
• MEMTAG_UPDATE – 强制更新MemTagging系统。
• MESHESWITHCOLLISION – 输出全部已加载静态网格物体列表及他们是否具备碰撞网格物体的相关信息。
• PARTICLEMEMORY – 输出粒子所占用的内存状况的信息。
• PARTICLEMESHUSAGE – 输出和粒子系统结合使用的静态网格物体的数量的信息。
• PROFILESCRIPT / SCRIPTPROFILER - 用于分析脚本执行; ◦ * START* - 开始脚本分析。 ■ TIME= - 捕获特定时间段(以秒为单位)内的数据。
◦ STOP - 结束脚本分析。
◦ RESET – 重置脚本分析。
• QUERYPERFDB – 输出这台机器上任务的累积时间;按任务分组,按时间间隔排序。
• RENDERTARGET_MEM_USAGE – 输出将渲染目标到日志中所占用的内存。
• RESETFPSCHART – 重置FPS表格信息。
• RESTEMEMCHART – 重置内存表格信息。
• RESETSLACKTRACKING – 重置数组闲置跟踪;仅当启用TRACK_ARRAY_SLACK时有效。
• SNAPSHOTMEMORY -
• TOGGLESLACKTRACKING – 打开或关闭数组闲置跟踪;仅当定义了 TRACK_ARRAY_SLACK时有效。
• TRIMMEMORY – 尝试将未使用的片断的内存返回给系统。
显示命令
• GAMMA [value] – 修改显示gamma级别。
• SETRES [height]x[width][w|f] -改变分辨率(w = 窗口; f = 全屏),好比 800x600f
渲染命令
• AVAILABLETEXMEM – 输出可用的贴图内存的量。
• CAPTUREMODE - 切换全部屏幕上消息或警告的显示。
• COLORGRADING – 切换颜色分级的应用。
• DUMPAVAILABLERESOLUTIONS – 输出全部可用显示分辨率。
• FREEZEALL – 冻结渲染和动态载入。
• FREEZERENDERING – 强制冻结渲染或继续渲染。容许渲染出输入命令的那个时刻所在的场景。
• FREEZESTREAMING – 强制冻结或继续动态载入。
• FULLMOTIONBLUR [value] – 若是value的值为-1则为FullMotionBlur使用默认的引擎设置。若是value的值为0则强制关闭 Full MotionBlur(彻底运动模糊)。若是value的值为1则打开FullmotionBlur(彻底运动模糊)。
• LIGHTMAPSTREAMINGFACTOR [value] – 设置光照贴图动态载入的强度。较小的值(默认0.03f)意味着动态载出时速度更强烈。
• LISTMISSINGPHYSICALMATRIALS – 输出一系列没有物理材质关联的全部材质实例。
• LISTTEXTURES – 输出一个贴图列表。 ◦ ALPHASORT – 强制列表按照字母排序而不是按照大小排序。
◦ NONSTREAMING – 列出非动态载入贴图。
◦ STREAMING – 列出动态载入贴图。
• LOWRESTRANSLUCENCY – 切换向下采样半透明缓冲的应用。
• MOVIE [command] – 控制全部的视频。命令能够是如下之一: ◦ PAUSE – 中止全部视频。
◦ PLAY – 开始播放全部视频。
◦ STOP – 中止播放全部视频。
• MOVIEHIDE – 设置隐藏当前视频。
• MOVIESHOW – 设置当前视频可见。
• MOVIETEST [movie] – 处于测试目的播放指定视频,等待播放完成后,中止视频。
• NEXTVIEWMODE – 切换到下一个视图模式。
• NUMSTREAMEDMIPS [lodgroup] [mips] – 设置指定贴图组所使用的mips的数量。
• PREVVIEWMODE – 切换到前一个视图模式。
• RECOMPILESHADERS – 强制根据如下命令之一从新编译着色器: ◦ ALL – 从新编译全部着色器。
◦ BPCF – 仅从新编译SRG_GLOBAL_BPCF_SHADOW_LOW着色器。
◦ CHANGED – 仅从新编译改变的着色器。
◦ GLOBAL – 从新编译全局着色器。
◦ GLOBALMISC – 仅从新编译SRG_GLOBAL_MISC着色器。
◦ MATERIAL [name] – 从新编译指定材质。
◦ MATERIALSHADERTYPE [type] – 从新编译指定着色器类型的材质。
◦ SHADOW – 仅从新编译SRG_GLOBAL_MISC_SHADOW着色器。
◦ VF [name] - 从新编译指定的顶点工厂。
• RECOMPILEGLOBALSHADERS – 从新编译全局着色器。和RECOMPILESHADERS GLOBAL同样。
• SETMAXMIPLEVEL [max] – 设置光照贴图所使用的最大mip级别。
• SHADERCOMPLEXITY [max] – 设置和SHADERCOMPLEXITY视图模式结合使用的最大复杂度值。
• SHADOWMAPSTREAMINGFACTOR – 设置动态载出贴图的强度。较小的值(默认0.09f)意味着动态载出时速度更强烈。
• SHOW - 切换各类项目的显示(仅用于客户端)。 ◦ BOUNDS – 切换actor边界的显示。
◦ BSP – 切换BSP几何体的显示。
◦ BSPSPLIT – 切换BSP分割的显示。基于模型组件关联性控制BSP。
◦ CAMFRUSTUMS – 切换相机平头截体的显示。
◦ COLLISION – 切换碰撞统计数据的显示状态。
◦ CONSTRAINTS – 切换物理约束的显示。
◦ COVER – 切换掩体位置的显示。
◦ DECALINFO – 切换decals(贴花)的调试开发信息的显示(平头截体、切线轴等)。
◦ DECAL – 切换decal actors的显示。
◦ DYNAMICSHADOWS – 切换动态阴影的显示。
◦ FOG – 切换雾actors的显示。
◦ FOLIAGE – 切换植被的显示。
◦ HITPROXIES – 切换点击代理的显示。使用不一样的颜色描画每一个点击代理。
◦ INSTANCEDSTATICMESHES – 切换实例化静态网格物体的显示。
◦ LENSFLARES – 切换镜头眩光的显示。
◦ LEVELCOLORATION – 切换是否使用同一颜色渲染同一场景中的全部对象。
◦ MESHEDGES – 切换是否已填充视图模式显示网格物体边缘。
◦ MISSINGCOLLISION – 切换高亮显示启用了碰撞可是没有碰撞网格物体的静态网格物体。
◦ NAVNODES – 切换和寻路相关的actors的显示。
◦ NONZEROEXTENT
◦ PARTICLES – 切换通常粒子几何体的显示。
◦ PATHS – 切换路径或导航网格物体的显示。
◦ POSTPROCESS – 切换后期处理特效的显示。
◦ RIGIDBODY
◦ SCENCAPTURE – 切换场景捕获探测器的更新。
◦ SHADOWFRUSTUMS – 切换未被遮挡的阴影平头截体的显示状态。
◦ SKELETALMESHES - 切换骨架网格物体几何体的显示。
◦ SKELMESHES – 切换骨架网格物体几何体的显示。
◦ SPEEDTREES – 切换speedtree几何体的显示。
◦ SPLINES – 切换样条曲线的显示。
◦ SPRITES – 切换平面粒子组件的显示。
◦ STATICMESHES – 切换静态网格物体几何体的显示。
◦ TERRAIN – 切换地形几何体的显示。
◦ TERRAINPATCHES – 切换地形块的显示。在每一个块的周围描画一个轮廓。
◦ TRANSLUCENCYDOF – 切换半透明模糊因数的显示。
◦ UNLITTRANSLUCENCY – 切换不带光照半透明物体的显示。
◦ VOLUMES – 切换体积的显示。
◦ ZEROEXTENT
• SHOWMATERIALDRAWEVENTS – 切换描画事件产生的显示。
• SHOWMIPLEVELS – 切换使用固体颜色而不是使用光照贴图来可视化mip级别的应用。
• TEXTUREDEFRAG – 整理贴图池碎片。
• TEXTUREDENSITY [min] [ideal] [max] – 设置最小、理想和最大贴图密度值,以便和TEXTUREDNEISTY视图模式结合使用。
• SHOWSELECTEDLIGHTMAP – 切换是否可视化调试相机显示的光照贴图。
• TOGGLEAO – 切换环境遮挡后期处理。
• TOGGLECOLLISIONOVERLAY – 切换地形碰撞网格物体覆盖物的渲染。
• TOGGLEMINDISTORTION – 切换是将扭曲应用到最小屏幕空间范围仍是整个屏幕。
• TOGGLEMINTRNSLUCENCY – 切换半透明是否应用于原是格式。
• TOGGLEOCCLUSION – 切换遮挡的应用。
• TOGGLESCENE – 切换场景颜色后期处理。
• TOGGLEUI – 切换UI的更新和显示。
• TRACKTEXTURE [name] – 将贴图名称添加到动态载入系统中来跟踪包含那个名称的全部贴图。
• UNTRACKTEXTURE [name] – 从贴图跟踪中删除贴图名称。
• VIEWMODE [value] - 设置渲染模式。 ◦ BRUSHWIREFRAME – 以线框视图渲染场景,显示画刷边缘。
◦ LIGHTCOMPLEXITY – 使用特殊着色器渲染场景,该着色器能够使用特定的颜色显示每一个表面上的光照复杂度(影响表面的动态光源的数量)来展现光源的数量。
◦ LIGHTINGONLY – 仅使用几何体上的光照信息来渲染场景。
◦ DETAILLIGHTING - 使用受到法线贴图的光照影响的中性色彩材质渲染场景。
◦ LIGHTMAPDENSITY – 经过使用用于显示每一个表面上光照贴图密度的专用着色器渲染场景。
◦ LITLIGHTMAPDENSITY - 经过使用用于显示每一个表面上光照贴图像素密度的专用着色器渲染彻底带光照的场景。这从本质上讲是 LIGHTMAPDENSITY和LIGHTINGONLY视图模式的结合。
◦ SHADERCOMPLEXITY – 经过使用用于显示每一个表面上所应用的材质的复杂度的专用着色器渲染场景,使用不一样的颜色表明着色器指令的多少。
◦ TEXTUREDENSITY – 使用用于显示每一个表面上漫反射通道上的贴图像素密度的专用着色器渲染场景,使用特定的颜色来表明密度。
◦ UNLIT – 使用平坦的着色渲染场景,也就是没有光照。
◦ WIREFRAME – 以线框视图渲染场景。
贴图mip-map衰减命令
• TOGGLEMIPFADE -却换 打开/关闭 全部的贴图衰减。
• PAUSERENDERCLOCK - 暂停/继续 贴图衰减所使用的渲染线程时钟。暂停它将会冻结衰减。而后任何新的动态载入的地图都将是低分辨率(不会淡入)。而后您能够切换mip衰减 和继续时钟来查看先后的不一样(并测量性能)。
物理命令
• DUMPAWAKE – 输出全部激活的物理刚体的列表。
• MESHSCALES – 将全部静态网格物体的缩放比例值输出到日志文件中。
• NXDUMP – 输出全部物理信息到XML文件中。
• NXDUMPMEM – 输出全部PhysX内存分配到日志中。
• NXSTATS – 启用输出全部物理统计数据。
• NXVIS – 启用物理仿真的可视化。 ◦ PHYSX_CLEAR_ALL – 清除当前启用的全部可视化标志。
◦ ACTOR_AXES – 切换actor坐标轴的可见性。
◦ BODYAXES – 切换刚体的坐标轴的可见性。
◦ BODY_ANGULAR_VELOCITY – 切换物理刚体角速度的可见性。
◦ BODY_JOINT_GROUPS – 切换关节组的可见性。
◦ BODY_LINEAR_VELOCITY – 切换物理刚体线速度的可见性。
◦ CCD – 切换CCD骨架的可见性。
◦ CCDTESTS – 切换CCD测试的可见性。
◦ CLOTH_ATTACHMENT –切换布料附加物的可见性。
◦ CLOTH_COLLISIONS – 切换布料碰撞的可见性。
◦ CLOTH_MESH – 切换网格物体线框的可见性。
◦ CLOTH_SELFCOLLISIONS – 切换布料自身碰撞的可见性。
◦ CLOTH_SLEEP – 切换总体布料休眠的可见性。
◦ CLOTH_SLEEPVERTEX – 切换顶点休眠的可见性。
◦ CLOTH_TEARABLE_VERTICES – 切换可撕裂顶点的可见性。
◦ CLOTH_TEARING – 切换布料撕裂的可见性。
◦ CLOTH_VALIDBOUNDS – 切换布料的有效边界的可见性。
◦ CLOTH_WORKPACKETS – 切换PPU仿真群集的可见性。
◦ COLLISION – 切换物理简化碰撞几何体的可见性。
◦ COLLISION_AABBS – 切换世界空间中沿着坐标轴对齐的边界的可见性。
◦ COLLISION_AXES – 切换碰撞几何体坐标轴的可见性。
◦ COLLISION_COMPOUNDS – 切换组合边界的可见性。
◦ COLLISION_DYNAMIC – 切换动态剪除结构的可见性。
◦ COLLISION_EDGES – 切花碰撞网格物体激活的边缘的可见性。
◦ COLLISION_FNORMALS – 切换碰撞网格物体和表面法线的可见性。
◦ COLLISION_FREE – 切换“自由”剪除结构的可见性。
◦ COLLISION_SPHERES – 切换边界球体的可见性。
◦ COLLISION_STATIC – 切换静态剪除结构的可见性。
◦ COLLISON_VNORMALS – 切换碰撞网格物体和顶点法线的可见性。
◦ CONTACTERROR – 切换接触错误的可见性。
◦ CONTACTFORCE – 切换接触力的可见性。
◦ CONTACTPOINT – 切换接触点的可见性。
◦ CONTACTS – 切换接触法线的可见性。
◦ FLUID_BOUNDS – 切换流体发射器AABB边界的可见性。
◦ FLUID_DRAINS – 切换流体发射器排水通道形状的可见性。
◦ FLUID_DYN_COLLISION – 切换流体发射器动态碰撞的可见性。
◦ FLUID_EMITTERS – 切换流体发射器的可见性。
◦ FLUID_KERNEL_RADIUS – 切换流体发射器内核半径的可见性。
◦ FLUID_MESH_PACKETS – 切换具备流体发射器的网格物体包的可见性。
◦ FLUID_MOTION_LIMIT – 切换流体发射器运动限制的可见性。
◦ FLUID_PACKET_DATA – 切换流体发射器包数据的可见性。
◦ FLUID_PACKETS – 切换流体发射器包的可见性。
◦ FLUID_POSITION - - 切换流体发射器粒子位置的可见性。
◦ FLUID_STC_COLLISION – 切换流体发射器静态碰撞的可见性。
◦ FLUID_VELOCITY – 切换流体发射器粒子速度的可见性。
◦ FORCEFIELDS – 切换力域的可见性
◦ JOINTLIMITS – 切换关节限制的可见性。
◦ JOINTLOCALAXES – 切换关节局部坐标轴的可见性。
◦ JOINTWORLDAXES – 切换关节世界坐标轴的可见性。
◦ MASSAXES – 切换刚体的质量坐标轴的可见性。将休眠的刚体描画为黑色,激活的刚体描画为白色,同时输入某个休眠组中的休眠刚体描画为红色。
◦ SOFTBODY_ATTACHMENTS – 切换软体附加物的可见性。
◦ SOFTBODY_COLLISIONS – 切换软体刚体碰撞的可见性。
◦ SOFTBODY_MESH – 切换软体网格物体的可见性。
◦ SOFTBODY_SLEEP – 切换彻底休眠的软体的可见性。
◦ SOFTBODY_SLEEP_VERTEX – 切换每一个顶点都处于休眠状态的软体的可见性。
◦ SOFTBODY_TEARABLE_VERTICES – 切换软体可撕裂顶点的可见性。
◦ SOFTBODY_TEARING – 切换软体撕裂的可见性。
◦ SOFTBODY_VALIDBOUNDS – 切换软体有效边界的可见性。
◦ SOFTBODY_WORKPACKETS – 切换PPU仿真软体群集的可见性。
◦ WORLDAXES – 切换世界坐标轴的可见性。
• NXVRD – 使用远程调试器。 ◦ CONNECT [ip] – 若是没有提供ip地址或主机,则使用指定的ip地址或主机链接到远程调试器。
◦ DISCONNECT – 从远程调试器断开。
音频命令
• AUDIO FLUSH TRUE - 冲掉全部音频缓冲。
• DISABLELPF – 禁用全部源上的低通滤波来进行测试。
• ISOLATEDRYAUDIO – 删除混响来隔离干声。
• ISOLATEREVERB – 删除干声来隔离混响。
• LISTAUDIOCOMPONENTS – 输出全部的音频组件列表。
• LISTSOUNDCLASSES – 按类输出已加载的音频列表。
• LISTSOUNDCLASSVOLUMES – 输出每一个声音类的全部音量和音调的列表。
• LISTSOUNDDURATIONS – 输出全部声音波形和他们的持续时间。
• LISTSOUNDMODES – 输出全部音效模式的列表。
• LISTSOUNDS – 输出全部已记载音频及它们的内存占用量的列表。
• LISTWAVES – 输出波形实例及它们是否具备源的列表。
• MODIFYSOUNDCLASS [soundclass] [VOL=volume] – 使用给定音量修改指定的声效类别。
• PLAYSOUNDCUE – 播听任意一个sound cue。
• PLAYSOUNDWAVE – 播听任意一个声音波形。
• RESETSOUNDSTATE – 将全部音量重置为它们的默认值,并删除全部测试过滤器。
• SETSOUNDMODE [mode] – 将声效模式设置为指定模式。
• SOUNDTEMPLATEINFO – 输出关于每一个惟一声效的信息。
• TESTFEBLEED – 在全部音频源上设置低频率音效渗入到最大值以进行测试。
• TESTLPF – 在全部音频源上设置低经过滤器为最大值以进行测试。
• TESTSTEREOBLEED – 在全部音频上设置立体声渗入到最大值以进行测试。
网络命令
• CRACKURL - 分解传入到引擎中的URL和参数?,以便 地图/游戏 显示全部参数。
• PACKAGEMAP – 将全部打开的网络链接的包地图输出到日志文件中。
• SOCKETS – 将全部打开的网络链接的列表输出到日志文件中。
静态图片捕获和演示录制命令
关于这个的更多信息,能够是在[[DemoRecording] [演示录制]]页面找到。
• BUGSCREENSHOT – 得到bug的屏幕截图。
• DEMOPLAY - 播放先前录制的演示视频。
• DEMOREC - 准对下一个播放录制演示。
• DEMOSTOP - 中止演示 播放\录制。
• SHOT / SCREENSHOT – 以当前的屏幕分辨率截取屏幕截图。
• TILEDSHOT [factor] – 以当前分辨率乘以指定因数为分辨率来获取屏幕截图。
视频捕获
关于这个的更多信息,能够是在视频捕获]页面找到。
• STARTMOVIECAPTURE – 启动游戏中的视频捕获。
• STOPMOVIECAPTURE - 中止游戏中的视频捕获。
游戏性命令
• SAVEGAME - 告诉引擎保存当前的游戏状态。 请参照 保存和加载游戏?页面得到更多信息。
• SAY -仅用于GUI服务器。
导航和寻路指令
• ADDLONGREACHSPECS [option] – 添加较长到达范围的规格说明。Option(选项)是: ◦ NUMPATHS= - 要添加的路径的数量。
• BUILDCOVER [option] – 添加完到达范围规格说明后生成激活连接和专用移动标志。Option(选项)是: ◦ FROMDEFINEPATHS= - 是否使用已定义的路径。
• BUILDNETWORKIDS – 构建导航节点的网络IDs。
• DEFINEPATHS [options] – 清除全部路径而后从新构建它们。Options(选项)是: ◦ REVIEWPATHS= - 若是建立了任何路径将会检查这些路径。
◦ SHOWMAPCHECK= - 在构建完路径后出现地图检测对话框。
◦ UNDEFINEPATHS= - 在构建路径以前不会定义路径。
• FINISHPATHBUILD – 对路径构建过程执行结束和清除处理。
• GENERATENAVMESH – 从新构建导航网格物体。
• NAVOCTREE [options] – 能够使用如下选项: ◦ STATS – 输出关于导航八叉树的统计数据。
◦ FIND – 找到八叉树中的指定节点。 ■ NAME= - 要查好的节点的名称。
• POSTDEFINEPATHS – 在全部Kismet序列对象上调用PostPathBuild。
• PREDEFINEPATHS – 在全部Kismet序列对象上调用PrePathbuild。
• SETPATHCOLLISION [option] – 启用或禁用路径碰撞。Option(选项)是: ◦ ENABLED= -是启用路径碰撞仍是禁用路径碰撞。
用户界面命令
• DEBUGUIPREFAB [object] – 输出关于某个特定UI预制对象的信息。
• SHOWINPUTHANDLERS – 输出指定UIScene中的特定按键的输入手柄。 ◦ SCENE= - 指定要在其中进行搜索的UIScene 。
◦ KEY= - 指定要查找的按键以便进行订阅。
• SHOWUNRESOLVEDPOSITIONS – 输出指定UIScene中位置过时的任何对象。 ◦ SCENE= - 指定要在其中进行搜索的UIScene 。
• TOGGLEDEBUGINPUT [true/false] - 显示调试信息(CTRL-ALT-D来切换显示信息;CTRL-F切换显示聚焦控件)。
其余命令
• GET [class] [property] - 返回类别属性的默认值。
• GETALL [class] [property]-返回全部实例化类别的值属性。
• DISPLAYALL / DISPLAYALLSTATE - 和"getall"同样, 可是会在屏幕上实时地显示输出,和统计数据相似。
• DISPLAY [object] [property] - 仅显示指定单独对象的指定属性。仅当要求了足够的外部链时才能是对象惟一可识别。
• DISPLAYCLEAR - 清除全部display* 输出。
• DLE – 输出全部禁用的动态光照环境列表。
• VERIFYCOMPONENTS – 迭代全部组件以验证完整性。
• LISTANIMSETS – 输出动画集列表。 ◦ ALPHASORT – 按字母顺序排序列表。
• ANIMSEQSTATS – 输出动画序列统计数据。
• LISTANIMSETS – 输出一个动画集列表。 ◦ ALPHASORT – 按字母顺序排序列表。
• LISTANIMTREES – 输出动画树列表。 ◦ ALPHASORT – 按字母顺序排序列表。
• LISTMATINEEANIMSETS – 输出当前关卡中Matinee所使用的动画集的列表。 ◦ ALPHASORT – 按字母顺序排序列表。
• SET - 这个是全部这些命令中最强大的一个。它的第一个参数字符串是一个类别的名称,第二个字符串是变量的名称,第三个字符串是一个数值。 给定类(包括子类)的全部对象将会把给定的变量设置为给定的值。 好比,"set Pawn CollisionRadius 200"将会使全部的pawns的碰撞半径为200(请参照Pawn技巧与帮助?得到更多信息)。在版本V3323中,当在网络上使用时, set 命令有一些限制,这个限制是为了防止网络欺骗而设置的。
• SETNOPEC – 和SET命令同样,可是不能激活 Pre/Post Edit Change(提早/滞后 编辑改变)通知。
• SHOWHOTKISMET – 输出前10个最经常使用的Kismet序列选项。
系统设置命令
系统设置命令容许您修改系统设置文档中描述的设置,这些设置通常经过 应用程序兼容性系统设置。
• SCALE [scale command] - 这里[scale command] 是如下之一: ◦ ADJUST - 启用/禁用 使用Xbox的“shoulder”按钮绑定到SCALE DECR和SCALE INCR。
◦ DECR - 减小ScreenPercentage设置。
◦ DUMP - 转存当前系统设置到日志中。
◦ DUMPINI - 转存INI系统设置到日志中。
◦ INCR - 增长ScreenPercentage设置。
◦ LEVEL [0-5] - 设置其中一个应用程序兼容性级别,范围从0到5。
◦ LOWEND - 采起个很是低端的设置列表
◦ HIGHEND - 采起一个很是高端的设置列表。
◦ RESET - 从新从INI文件中加载系统设置。
◦ SET [setting] [value] - 将特定设置项(系统设置文档中列出的项) 设置为某个值。
◦ TOGGLE [setting] - 切换一个布尔设置。
移动设备命令
这些命令只适用于移动设备平台(专门针对 iOS)
• CALIBRATETILT - 根据设备的当前方位再校准设备的倾斜状况。
• MOBILE/IPHONE [command] - 这里 command 是如下之一: ◦ DISABLEROTATION - 在用户旋转视图的时候禁用视图自动旋转。
◦ ENABLEROTATION - 在用户旋转视图的时候启用视图自动旋转。
◦ DISABLESLEEP - 会阻止设备的屏幕进入睡眠状态。
◦ ENABLESLEEP - 会让设备的屏幕进入睡眠状态。
◦ ABOUT [url] - 在平台的网页浏览器中加载网页。使用 MobileEngine.ini 中的 AboutURL 配置设置,按后使用在这个命令中指定的 url 替换 `~ 。
◦ SAVESETTING [key] [value] - 将一个键/值字符串对保存到用户的设置中。
◦ LOADSETTING [key] - 从用户设置中为指定 key 加载值。
◦ PLAYSONG [song] - 播放在硬盘中给定的 mp3 song (文件名称不含路径或扩展名)。
◦ STOPSONG - 中止当前在硬盘中播放的 mp3 歌曲。
◦ APPEXIT - 在设备上退出这个应用程序。
针对编辑器的命令
请参照编辑器控制台命令页面得到关于仅在编辑器中使用的更多命令。 数组
可执行函数概述
--------------------------------------------------------------------------------
可执行函数是使用虚幻脚本在类内部定义的特殊函数类型。这些函数能够由处于运行时的用户执行,经过在引擎运行过程当中调出游戏内置控制台(一般是经过按下 ~ 按键)并在该函数可能须要的任何参数后面输入函数的名称。这些函数相似于控制台命令,能够在控制台中执行,可是仍是有所不一样,由于它们是在脚本中进行定义的,并且能够很容易地添加、修改或删除。
为可执行函数扫描的类(包括全部子类):
• Input(输入)
• Controller(控制器)
• Pawn
• InventoryManager(武器库管理器)
• Weapon(武器)
• HUD
• GameInfo
• CheatManager(秘籍管理器)
• GameViewportClient
• Interaction - 将会执行放置到PlayerController的交易中交易,可是不会在控制台命令中所有显示出来
建立新的可执行函数
--------------------------------------------------------------------------------
要添加新的可执行函数,这样就能够将它映射到一个按键上,它与在函数前面添加“可执行函数”同样简单。
下面的示例会显示图和添加一个参数化的可执行函数。
ExamplePawn.uc
exec function MyExecFunction(int ParameterA)
{
`Log("The user executed my custom function with "$ParameterA);
}
更改 *Input.ini
--------------------------------------------------------------------------------
将一个新的可执行函数添加到您本身的类中将会容许控制台执行这些函数,可是一般您须要将它们直接绑定到一个按键上。进行这项操做的方法是将这个按键绑定添加到您的 *Input.ini。这个 * 是前缀,它能够是Default(若是您但愿添加一个默认按键绑定)或者UDK(若是您但愿添加一个非默认按键绑定,而是UDK指定按键绑定)。这些配置文件一般放置在%UDK_ROOT%\UDKGame\Config\(其中UDKGame将是您的游戏项目文件夹)中。
要添加一个新的按键绑定,请确保将其插入到[Engine.PlayerInput]配置组下面。下面的示例会显示如何将一个按键绑定到 H 上,经过在上面的示例中定义的参数运行这个自定义可执行函数。
.Bindings=(Name="H",Command="MyExecFunction 99")
现有引擎可执行函数
--------------------------------------------------------------------------------
下面列出的可执行函数均可以在基础引擎类中找到。
游戏管理
这些函数可让您管理当前游戏。大多数这些函数要求您以管理员身份登陆到服务器,而有些函数只要求您具备某些特定特权便可。
• Admin [command] –这会在您以管理员身份登陆的服务器上执行一个管理员命令。
• Kick [command] [users] – 从游戏中删除一个用户。用户能够使他们的 ID(如踢除列表命令所示)或一个名称(*能够用做一个通配符)。该命令可选,也能够是如下其中一个命令: ◦ List – 显示全部玩家及其 ID
◦ Ban – 不容许玩家返回
◦ Session – 禁止用户(仅限该游戏)
• KickBan [users] – 删除游戏中的一个用户并不容许他们返回。用户能够使他们的 ID(如踢除列表命令所示)或一个名称(*能够用做一个通配符)。
• KillBots – 删除游戏中的全部机器人。
• PlayerList – 显示全部玩家名称以及他们的 ping 时间。
• RestartMap – 重启当前地图。
• Switch [map] – 根据地图的值通知服务器更改关卡。将地图解析为地图 URL(请参阅 CommandLineArguments(命令行参数)了解更多有关地图 URL 的详细信息)。
秘籍
这些函数在大多数游戏中被看作是秘籍,可是一般都是在开发过程当中使用。
• AffectedByHitEffects – 使玩家不受全部撞击效果影响(例如,冲力、撞击效果等等)。
• AllAmmo – 将弹药数目设置为全部武器的最大值
• AllWeapons – 为玩家提供游戏中全部可用的武器。
• Amphibious - 使玩家能够实际不限定地呆在水下(设置 Paw.UnderwaterTime = 999999.0)。
• EnableCheats - 在游戏中启用秘籍
• Fly - 使玩家能够用飞代替走。
• FreezeFrame [delay] - 因为特定延迟时间,强制游戏暂停。