UDN
Search public documentation:

GearsModsCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > Mod 主页 > 战争机器Mod主页 > 战争机器的Mod创建

战争机器的Mod创建


简介


开发关于虚幻引擎的mod是回报非常丰厚的工作。在当前游戏产业中,近乎没有更好的方法允许技术精湛的程序员或者拥有抱负的美术工作人员展示它们可以创建的世界。本文档的创建目的在于对mod创建感兴趣人员提供他们成功创建类似于战争机器这样的虚幻引擎游戏修改所需要的信息。它包含了一些技术信息同时也包含了一些基础知识来帮助您进行入门。如果您努力学习并进行创作,那么您便可以通过mod创建制作出一些有趣的东西。

关于Mod入门学些的更多信息,请参照入门指南(Mod开发社区)页面。

注意


战争机器编辑器是按照以现状为准不做任何修改的方式提供的,没有任何类型的担保,并且它不会受到Epic及Microsoft的支持。

请尊重他人的权利。你可以制作自定义的内容,但你要承认你会对那个内容负全部责任。您必须统一您有必要的权利来公开提供任何内容,并且它符合当地的法律,您不能侵犯任何其它个人或实体的权利。

发布和Microsoft Vista相兼容的地图时,要求您必须作为管理员启动游戏: 要先为了完成这个过程,您需要跳转到Start(开始)-》Run(运行),然后输入 cmd 。右击 cmd ,然后选择 Run as Administrator(以管理员身份运行) 。点击 Allow(允许) 来提升您的权限。跳转到Game安装目录(默认:C:\Program Files\Microsoft Games\Gears of War),创建地图然后发布它(请参照下面的 Publishing(发布) 部分。)

开始前的一些忠告


当您开始开发mod时,您应该从小的功能开始。如果您设计的目标太难以至于不能完成,那么您在朝向这个目标进行努力的过程中变得沮丧;并且您可能永远都不能把您的愿景想法变为现实。设置一系列的小目标并不断地攻克每一个是个很好的主意。首先从一个可以扩展为较大游戏的简单的想法开始。总是从较小的可管理的并且其本身可以发行的模块上进行开发是很好的。如果您正在承担一个大的项目,那么请把您的功能组织划分为发布模块并制定时间表。如果您的游戏将要有5个武器,那么制作完2个或3个后,在制作剩余武器的过程中您可以先发行已经制作好的2、3个武器。在开发中需要控制您的节奏并做出长远的规划。

每个人都有一些创意想法。每个人都认为它们有一个革命性的新游戏概念,并且认为这些概念别人从来没有想到过。具有酷的创意很少能把您带到游戏产业的任何地方。因为您必须可以实现你的想法或者提供一些有用的技术, 这个事实也适用于mod创建。如果您成为了一个技艺精湛或著名的mod创建者,那么您会找到那些需要您为其实现它们的创意的人。永远不要加入项目的创意者或领导没有明显的开发技术的项目; 永远不要加入一个仅有网站设计人员的项目。您有您自己的思想, 认真地从较小的模块开始致力于开发它们,最终您将可以开发一个很棒的项目。

请记住开发一个mod后,如果您不发行它,那么它没有太多意义。权衡您的任务列表,以便随着您的mod的不断成熟,您可以快速地发行一些东西,以及添加和改进一些功能。如果您在您的项目的所有东西都变得完美之前隐藏您的项目,那么您会发现最终您自己没有发布任何东西。

一旦您有了您的创意,您需要选择哪种mod类型比较适合您。决定之后,您可以设立所有东西,并开始把您的想法变为现实。

创建Mod项目


现在是开始的动手操作的时候了。首先,您应该知道虚幻引擎游戏一般是如何安装的。之后,您应该知道您的mod适合放在游戏的哪个地方,以及知道一些虚幻引擎处理内容的方式 – 包括最初的和新的方式。然后,根据您的方法,您可以开始建立所有的东西,并开始创建您的mod了。

目录结构

默认情况下,战争机器将会安装在以下目录中:

C:\Program Files\Microsoft Games\Gears of War

另外,将会为每个用户存储用户设置:

C:\Documents and Settings\<userID>\My Documents\My Games\Gears of War for Windows\WarGame\

可以通过点从开始菜单中点击桌面图标或者通过以下命令来运行游戏:

Startup

可以通过从开始菜单或者以下命令来运行游戏编辑器:

Startup editor -cookededitor -installed

您可以复制桌面快捷方式图标,并把它重命名为 Gears of War Editor(战争机器) 。右击快捷方式并选择 Properties(属性) 来修改 Target(目标)

Startup editor -cookededitor -installed

为了使它的样子好看,您可以改变图标。右击快捷方式并选择 Properties(属性) 。点击 Change Icon(改变图标) 按钮并选择绿色的编辑器图标。

包是游戏资源的集合。The resources can be any of several types of assets: 贴图、模型、动画声效、音乐、UI页面。对于所有的资源来说,包的格式是一样的,并且多个资源类型可以混合在一个包中。为了便于管理,战争机器把包按照资源分类。Textures 目录含着贴图包、Sounds 目录包含了声效包等以此类推。即使这些包可能包含了不同类型的内容,但是它们都具有相同的文件扩展名(.upk),并且它们是同种文件。

请参照虚幻包页面获得更多信息。

编程

当您进行入门学习时,您需要自己进行很多的搜索。如果您花时间使自己熟悉引擎的架构和提供给您的代码,那么您便会成为一个优秀的UrealScript程序员。学习一些解决和您的mod设计目标相关的问题的创新方法并最大化地利用提供的工具是有用的。

UnrealScript 源码文件

注意我们没有提供战争机器的UnrealScript源码,并且不支持针对这个游戏的编程。

内容创建

关卡

当使用游戏编辑器时,关卡保存在以下目录中:

C:\Documents and Settings\<userID>\My Documents\My Games\Gears of War for Windows\WarGame\Unpublished\CookedPC\CustomContent\Maps

为了是您的关卡在游戏菜单中可见,您需要把它保存到CustomMaps的子目录(比如Maps)中。直接保存到CustomMaps 目录本身的任何东西都将被忽略。所以,您将需要创建一个和您的mod名称相是对应的目录。

请记住当保存关卡时要使用适当的游戏mod前缀(比如SP_ 或 MP_等)。

默认情况下,游戏在 Published 目录中查找自定义的内容。您有两个选项:

  1. 通过使用 =UT3.exe –useunpublished 命令告诉游戏对 Unpublished 目录进行检测。 这对于在开发过程中获得最快的周期是最有利的。
  2. 使用编辑器中的 Publish 按钮,这将会复制Unpublished 文件夹中的内容到Published 目录中,以便游戏可以自动地检测它。(加载较快,发布较慢。)
  3. 使用编辑器中的 Publish 按钮,这将会复制Unpublished 文件夹中的内容到Published 目录中,以便游戏可以自动地检测它。(加载较快,发布较慢。)

当您第一次运行游戏时,它将会在 CustomMaps 文件夹的子目录中检测新的关卡的存在性,然后自动生成基于每个关卡的配置文件(.ini),来把关卡注册到游戏中的UI上。您可以编辑这些文件来提供关卡描述文本等。

发布及烘焙

CookedPC 的命名规则看上去可能有点令人迷惑, 它是从老的版本继承过来的规则,所以最好遵守它。Publishing(发布)将把所有东西都放到Published 目录中以便进行发布。

关于 PublishedUnpublished 的行为: 在游戏编辑器中保存的内容存储在 Unpublished 目录中 - mod创建者的工作目录。

C:\Documents and Settings\<userID>\My Documents\My Games\Gears of War for Windows\WarGame\UnPublished\CookedPC\
C:\Documents and Settings\<userID>\My Documents\My Games\Gears of War for Windows\WarGame\UnPublished\CookedPC\CustomContent\Maps\
C:\Documents and Settings\<userID>\My Documents\My Games\Gears of War for Windows\WarGame\UnPublished\CookedPC\CustomContent\Chars\
C:\Documents and Settings\<userID>\My Documents\My Games\Gears of War for Windows\WarGame\UnPublished\CookedPC\Localization\<LANGUAGE>\

如果没有在启动游戏时指定了 -useunpublished 标记,那么游戏一般从 Published 目录中运行内容。典型的mod工作流程是在脚本和地图上进行迭代开发,并使用 -useunpublished 运行游戏。当mod建立好后,最终的 Publish 将会把烘焙好的内容写到 Published 目录中,并且这些进行了加载优化的文件将会用于发布。对于配置文件和本地化文件来说,则必须手动地复制它们。

可替换地,当内容发生改变时,mod创建者通过执行 Publish 命令便可以不使用 -useunpublished 标志来运行它们正在开发的内容。通过这种方法,未烘焙的mod内容将会被复制到 Unpublished 目录,在那里游戏将会自动地识别它。正如上面所说的,我们推荐在发布mod之前才使用最终的 Publish 命令。

总结,=-useunpublished= 是为mod开发人员提供的快捷方式,使它们在工作过程中不必不断地复制文件。

本地化

您的mod的所有本地化文件都将会被创建并防止在以下目录中:

C:\Documents and Settings\<userID>\My Documents\My Games\Gears of War\WarGame\UnPublished\CookedPC\Localization\<LANGUAGE>\YourModName.int

发布

完整的mods将会通过使用类似于 WinRAR的工具将其简单地打包到一个压缩存档中。

命名规则

为了保持一致性和可维护性,在项目开发的早期建立一些命名规则和类似于编码规则的最佳实践是非常明智的。这将会保持您和您的团队成员保持一致性。

当存在疑问时,请查看战争机器中的内容,来获得Epic如何设置这些东西的实例。

可用的Mod类型


自定义内容

关于单位和比例,这里使一些需要考虑的重要事情:

  • 一般,建筑物的“地面”是256个单位是很好的。
  • 下称植被高度是96个虚幻单位;并且它必须是交钱的,以便96个单位可以覆盖它。
  • Marcus 和其它角色是162 个虚幻单位,具有50个虚幻单位宽的碰撞圆柱体。

一般,自定义内容,比如角色和武器可以通过原型进行创建。角色是由游戏中的Pawn类表示的: WarPawn。武器的表示非常简单。通过这种方式,您可以把角色或武器网格物体改变为您已经创建并导入的自定义模型。一旦创建后,一起的东西都可以通过Kismet脚本系统进行设置 - 可以设置Pawn被占有、设置把武器添加到玩家的武器库中。

关卡

当然,关卡是创建新内容而又不需要书写任何代码的最好方式。您可以简单地塑造出一个新的关卡,使用游戏中自带的现有资源装饰它;或者您可以创建您的自己的贴图及模型(静态网格物体)!

其中需要记住的一件重要事情是战争机器的游戏性时掩体系统。这是通过使用CoverLink Actor进行处理的。可以把CoverLinks 放置到关卡中您希望机器人角色适用其作为遮掩的任何地方。其它的相关Actors 包括PathNodes、Triggers和PlayerStarts。角色是作为SkeletalMeshActors放置的。光照是通过使用 SpotLights(聚光源)PointLights(点光源)或者继承Light类的Actors来进行处理的。

作战

对于作战任务,您可以在您的关卡中使用WarCheckpoint Actors 来进行处理,并且对于一些过场动画可以使用CameraActors 进行处理。设置PlayerStart为第一个Actor也是很重要的。

对于更多的单玩家关卡来说,过程几乎是唯一的 - 几乎是完全地迭代。一旦规划出了初始设计后,您便可以放置并设置一些东西,来判断游戏性是否能满足设计目标,并根据需要进行修正,这样不断地重复直到完成为止。一旦游戏性设计完成后,可以通过基于概念的装饰润色来实现视觉效果的设计。

Versus(对抗)

对于对抗任务,需要一种特殊类型的PlayerStart ,它称为WarTeamPlayerStart。您需要认真仔细地方志这些Actors;并且要确保设置TeamIndex 为值0或1来获得适当的团队安排。对于其它的武器装备,您可以放置WarWeaponPickupFactory Actors ,并设置WeaponPickupClass 为您想产生的武器的类别。

考虑您的关卡所关注的游戏类型也是一个很好的注意。这里使一些可用的游戏类型:

  • Warzone - 基于团队的死亡竞技比赛。(团队死亡竞技)
  • Assassination(暗杀) - 暗杀敌人团队的头领来赢得比赛。
  • Execution(处死)- 处死您的敌人来获得分数。
  • Annex(领地吞并) - 通过占领并持有重要领地来获得分数。
  • King of the Hill - 获得对固定据点的控制。

关于设计多玩家关卡的更多信息,请参照 多玩家地图理论(战争机器)页面获得更多信息。

示例


您需要从创建一个新的管卡开始。从 File(文件) 菜单选择 New(新建)

您可以通过从 View(视图) 菜单中选择 World Properties(世界属性) 来编辑关卡属性。在 World Info 部分,您可以输入类似于 Author(创建者)Title(名称)*的信息。对于Versus(对战)关卡来说,请确保选中 *bIsMultiplayerMapGameTypesSupportedOnThisMap

所支持的游戏类型的有效列表如下所示:

Class'WarefareGameContent.WarGameAnnex'
Class'WarefareGameContent.WarGameConquest'
Class'WarefareGameContent.WarGameKillTheLeader'
Class'WarefareGameContent.WarGameResurrection'
Class'WarefareGameContent.WarGameTDM'

创建关卡

基础

地面

右击Cube(立方体)画刷构建器来打开 Builder Brush - Cube(构建画刷 - 立方体) 的属性。输入以下值:

  • X: 1024
  • Y: 1024
  • Z: 128

点击 Build(构建) 按钮来创建画刷。点击“CSG: 添加“按钮来把这个地面几何体添加到世界中。

光照

为了获得更好的效果,您至少需要一个光源。右击地面的顶部表面;从 Add Actor(添加Actor) 的关联菜单中选择 Add Light (Point)(添加光源(点光源)) 菜单项。您或许需要添加更多的光源;或者您可以通过从 Edit(编辑) 菜单中选择 Duplicate(复制) 或按下Ctrl+W来复制选中的光源。

材质

为了使地面看上去更好,您需要应用材质。在通用浏览器中,选择 Material(材质) 过滤器。右击一个包,比如COG_City_Architecture,并从关联菜单中选择 Fully Load(完全加载) 。从包中选择一个材质,比如COG_City_BaseMat_Metal_CP_Mat。右击地面的顶部表面并从关联菜单中选择 Apply Material(应用材质): COG_City_BaseMat_Metal_CP_Mat 。您可以通过再次右击地面并从关联菜单中选择 Surface Properties(表面属性) 来调整材质的大小。请确保选择了正确的表面。

Sky Dome(穹顶)

在通用浏览器中,打开位于Environments\SkyDomes目录中的SkyDomes 包。如果该包已经打开,请确认是否进行了完全加载。因为Sky Domes实际上是静态网格物体,所以您可以选择 Static Mesh(静态网格物体) 过滤器。从包中选择一个穹顶静态网格物体,比如NewSkyBox_DR_SMesh。 右击视口,并从关联菜单的 AddActor(添加Actor) 菜单项中选择 Add StaticMesh(添加静态网格物体): SkyDomes.NewSkyBox_DR_SMesh 。穹顶网格物体的大小可能需要进行调整。您可以这样来调整,右击那个actor并选择 StaticMeshActor Properties(StaticMeshActor 属性) 。请确保选择了正确的actor;在这个实例中,应该仅选择一个,您为您不需要调整其它东西的大小。值 1.5 应该会使得穹顶更好地适应地面。

Player Start

右击地面的顶部表面,并从关联菜单 Add Actor(添加Actor) 菜单项中选择 PlayerStart

构建

Build (构建)菜单 中选择 Build All(构建所有) 来对所有东西进行构建。如果运行顺利,那么应该不会出现错误。如果有错误,那么可以尝试清楚它们或者再次开始重新构建。

保存

File(文件) 菜单中选择 Save As(另存为)... 。定位到Maps目录将其保存在那里。为它取一个适当的名称。在这个例子中,我们使用SP_Example 。

测试地图

点击 Play in Editor(在编辑器中播放) 按钮来运行游戏并启动实例地图。

环境及装饰

Sounds(声效)

在通用浏览器的Actor 类别标签上,AmbientSound actor是KeyPoint的子类。在AmbientSound 下是AmbientSoundSimple;在它的下面是其它的声音actor类型。选中AmbientSoundSimple,右击关卡中的理想区域,并从关联菜单的 Add Actor(添加Actor) 菜单中选择 Add AmbientSoundSimple(添加AmbientSoundSimple)

网格物体

根据理想的视觉效果风格,在关卡中放置网格物体来装饰您的关卡。在通用浏览器中,选中 Static Mesh(静态网格物体) 过滤器。找到一个包,并从那个包中选择一个静态网格物体。右击关卡中的理想区域,并从关联菜单中选择 Add StaticMesh(添加静态网格物体)

Cover(掩体)

* 设置*

要想设立掩体,首先要放置一个静态网格物体。

在通用浏览器中,选择 Static Mesh(静态网格物体) 过滤器。在 COG_Militech_Architecture_02包中选择一个静态网格物体,比如COG_Militech_Timgad_W1_plantershort_SMesh。右击地面的顶部表面并从关联菜单中选择 Add StaticMes(添加静态网格物体): COG_Militech_Architecture_02.COG_Militech_Timgad_W1_plantershort_SMesh

CoverLinks(掩体链接)

如果您想立即测试关卡,那么对于新放置的静态网格物体来说,您的玩家不会有任何掩体情境。这里所需要的便是CoverLink actor。

放置

在通用浏览器的Actor 类别标签上,CoverLink actor是NavigationPoint的子类。在CoverLink 的下面是CoverLinkDynamic。选中CoverLink ,右击静态网格物体,并从关联菜单的 Add Actor(添加Actor) 菜单项中选择 Add CoverLink 。请确保他正面向着掩体所在地点。

默认情况下,CoverLink有一个插槽 - Slot 0。要想添加插槽,只要通过右击它并从关联菜单中选择 CoverLink Properties(CoverLink 属性) 来简单地编辑 CoverLink 属性即可。插槽的信息位于CoverLink 部分。点击箭头将会展开当前的插槽。默认情况下进有一个插槽。点击省略号(...)将会在右侧显示一个括号图标和一个绿色的加号图标。请使用加号图标来添加插槽;括号将会删除插槽。最好,请确保插槽具有 CoverType 或者 CT_Standing or CT_Midlevel

CoverGroup(掩体组)

您可以把CoverLink(掩体连接) actors分配给一个CoverGroup(掩体组)。在通用浏览器的Actor 类别标签上,CoverLink actor是Info的子类。选中CoverLink ,右击CoverLink actors附近,并从关联菜单的 Add Actor(添加Actor) 菜单项中选择 Add CoverLink

为了把CoverLink actors 添加到一个CoverGroup组中,请选中CoverLink actors,然后右击CoverGroup 并从关联菜单中的 Path Options(路径选项) 菜单项的 Complex Options(复杂选项) 子菜单中选择 CoverGroup:Add Links

构建

Build(构建)菜单 中选择 Build All(构建所有) 来重新构建路径及光照。

注意,如果您有很长的一块掩体,并且您仅手动地放置了两个插槽,那么构建路径时将会自动地向您的CoverLink actor添加更多的Slots (插槽)。

编辑技巧

您也可以通过使用 Edit(编辑) 菜单(或Ctrl+W)中的 Duplicate 来克隆一个插槽,如果您正在使用同一个种类型的掩体那么这样可以节约时间。通过点击鼠标中间键可以调整CoverLink ,使它适应您的表面,并且尝试正确地标记所有的东西;按下Alt键并进行拖动,允许您快速地克隆一个插槽。

右击一个插槽将会在关联菜单中产生一些更加常用的标记。

您也可以按下 ","键,并点击地面来放置新的掩体。

其它技巧

当在一个90度的转角处中放置掩体时,需要在转角处附近放置两个插槽 - 使它们分别面向每一面墙。请不要它们完全地重叠在一起 - 那样当您重新构建掩体时您便会自寻烦恼,因为这容易使得排序算法迷惑,不知道哪个插槽连接到了另一个插槽上。

如果您有一个掩体的边,并且您不能使它正确地知道它应该允许掩体滑动,(一旦您确定了它不是碰撞问题)您可以手动地旋转那个掩体链接来进行更新而不是自动更新,然后抓住您正在尝试标记作为掩体滑动的外部掩体插槽,稍微地旋转它,使它面向外部,点击鼠标中间键来查看它是否接受掩体滑动,然后不断地重复这个过程直到它接收为止。沿着坐标轴把掩体插槽旋转2-5度不使游戏性发生很大的改变,但是如果不能进行掩体滑动对很多玩家来说是非常糟糕的。

AI将在有掩体插槽的地方它将会隐身,而不是位于掩体间的直线区域上。这是为什么在一个具有2个插槽的长直的墙上会在这两个插槽之间自动生成一些插槽的原因。如果您手动地放置一些插槽,那么将不会自动产生了。

CoverLink actor 是路径网络的一部分,就像单独的插槽时路径网络的一部分那样。请尽量不要把coverlink 和那个链接中的插槽重叠,因为当两个节点相符重叠时会使得AI产生迷惑。

如果您已经创建了一个掩体区域,您可以在到处移动链接的过程中按下TAB 和CTRL键来移动coverlink 的位置,那样将会把插槽留在原地,仅移动主要的链接对象。

关于掩体组... 这次您告诉AI跳转到特定的掩体插槽,而是您可以在一个区域放置一个"掩体组",然后引用一个掩体区域而不是特定的插槽。可以设置掩体组包含指定半径内的每个掩体插槽,或者您可以手动地选择一组CoverLinks和掩体组actor,然后右击地面并告诉它添加选中的掩体链接。掩体组可以同时地具有半径和手动的链接,这两种方法之间不会相互排斥。当把一个链接包含在掩体组中时,您将会看到从掩体组到它引用的所有连接之间有一条虚线,如果它使用了半径,那么虚线将不会出现在那里,但是这些掩体插槽仍然是被引用的。

在两个节点间的任何地方,CoverLink 上设置的标志一般都是激活状态。所以,您可以设想一下: 您有一个直的掩体块,它的上面有4个插槽。如果仅插槽3的上面有“允许跨越”,那么仅当您精确地在那个插槽的上面时您才能跨越过它。如果插槽3和插槽4都允许跨越,那么您可以在这两个插槽间的任何地方进行跨越。所以,就设置属性标记而言,一条线上的一个单独的插槽对玩家没有太大用处的,玩家不可能精确地位于那个插槽上(尽管AI可以正确地使用它)。

对于单玩家,一定要小心处理动态载入,当您没有把编辑器中的所有关卡块都设为可见状态时会很容易地导致重新构建掩体,由于它会尝试自动对齐当前“不在那里的”的东西,所以便很可能把您的掩体搞糟。

武器

武器放置使用WarWeaponPickupFactory actor进行处理的。

放置

在通用浏览器的Actor 类别标签上,PickupFactory actor是NavigationPoint的子类。在PickupFactory下面是WarPickupFactory。这允许您获得战争机器的不同的工厂类型,比如weapons(武器)和ammo(弹药)。选WarWeaponPickupFactory,右击顶部地面表面,并从关联菜单的 Add Actor(添加Actor) 菜单项中选择 Add CoverLink 。直到您设置了它应该产生的武器 - WeaponPickupClass之前,这个actor是没有用处的。为了设置武器,可以通过简单地右击武器并从关联菜单中选择 WarWeaponPickupFactory 属性 ,然后简单地编辑WarWeaponPickupFactory 属性即可。*WeaponPickupClass* 属性位于WarWeaponPickupFactory 部分。

构建

Build(构建)菜单 中选择 Build All(构建所有) 来重新构建这个新添加的actor所创建的路径。

脚本

Gameplay (游戏性)脚本是通过编辑器中的Kismet来完成的。点击主工具条上的图标来打开Kismet。一般,游戏性是通过事件、动作以及各种条件来对其进行脚本书写的。

*触发器 *

触发器是在关卡中和事件及动作进行交互的一个非常好的方法。

右击顶部地面表面,并从关联菜单的 Add Actor(添加Actor) 菜单项中选择 添加触发器 。也有一些其它的Trigger actors可以使用。在通用浏览器的Actor 类标签下,定位到Trigger处, 那里您会看到Trigger类的其它子类。

在Kismet中,您你可以最近放置的Trigger Actor的事件。右击编辑器空间区域,在关联菜单中您会看到 New Event Using Trigger0(使用Trigger0新建事件)。 那里有很多可用的事件菜单项,比如 Touch(接触)

AI(人工智能)

CoverLinks(掩体链接) 和Weapons(武器)都AI 路径网络的一部分 - 它们都是NavigationPoint(导航节点) actor的子类。AI可以用作为敌人或者队友。

路径节点

右击顶部地面表面,并从关联菜单的 Add Actor(添加Actor) 菜单项中选择 Add Path Node(添加路径节点) 。复制Path Node(路径节点)actor并把它们放到您的关卡中是一个好主意。

*触发器 *

在您的关卡中放置一个Trigger (触发器)actor。

脚本

打开Kismet...

这会启动Kismet,但是这里还要进行以下基本的设置..

右击工作区,并从关联菜单的 New Action(新建动作)AI 子菜单选择 AIFactory 菜单。在AIFactory 动作的属性中,找到 SpawnSets 属性。这里您可以选择产生AI类型。在关卡中,选择可能的区域来产生AI - 一般通过 Path Node(路径节点)actors。右击AIFactory 动作的 Spawn Points(产生点) 输出并从关联菜单中选择 New Object Vars Using...(使用...新建对象变量)

要想触发AIFactory 来产生AI,您可以做一些事情比如创建一个 Level loaded and visible(加载关卡并使它可见) 的Kismet事件,以便它们可以在地图开始运行的时候产生;或者在您的关卡中创建一个Trigger actor的Touch事件。

检查点

对于使用检查点进行工作来说没有简单的解决方案 - 在本质上它们都是由kismet驱动的,所以它们是有点注重脚本的。

放置

在通用浏览器的Actor 类别标签上,WarCheckPoint(战争检查点) actor是PathNode(路径节点)的子类,而PathNode(路径节点)是NavigationPoint的子类。选中WarCheckPoint ,右击关卡中的理想区域附近,并从关联菜单的 Add Actor(添加Actor) 菜单项中选择 Add WarCheckPoint(添加WarCheckPoint)

脚本

一般,通常会使用 Level Loaded and Visible 事件而不是使用已经过期的 Level Beginning 事件。预留这个旧事件为了不会破坏那些意外地使用了旧的事件的任何东西。

在Kismet中,右击工作区。可以在关联菜单的 Warfare 子菜单下找到 Set Active Checkpoint(设置活动的检查点) 动作。把 Level Loaded and Visible 的输出和 Set Active Checkpoint 的输入连接到一起。选中检查点actor,右击事件���底部,然后从关联菜单中选择 New Object Var Using WarCheckpoint0(使用WarCheckpoint0新建对象)

Set Active Checkpoint 被触发时,它会自动地触发 Checkpoint Activated 事件。从那里开始,您可以编写脚本来引起其它动作的发生,比如清除检查点、打开一个新的路径等。

Checkpoints(检查点)不能在PIE(在编辑器中播放)中工作。所以,您需要退出编辑器,并实际地在正常的游戏中测试地图来验证它是否可以正常工作,同时您需要一个有效的玩家信息。

过场动画

动态载入

独爱玩家地图由一个关卡组成。您可以是多玩家关卡的每个房间作为一个单独的动态载入关卡,然后最终把它们结合到一起。

单玩家地图可以进行分割,技巧和使得在关卡部分上进行迭代更加容易的操作类似。比如,在很多包含的地图中,有多个 "_P" 地图,它们仅添加了一些子关卡。这过程是一些关卡设计人员完成的,这样它们可以快速地重建关卡来查看光照效果,而不必不断地重新构建整个关卡。

Versus(对战)关卡

基础

地面

右击Cube(立方体)画刷构建器来打开 Builder Brush - Cube(构建画刷 - 立方体) 的属性。输入以下值:

  • X: 2048
  • Y: 1024
  • Z: 128

点击 Build(构建) 按钮来创建画刷。点击“CSG: 添加“按钮来把这个地面几何体添加到世界中。

光照

为了获得更好的效果,您至少需要一个光源。右击地面的顶部表面;从 Add Actor(添加Actor) 的关联菜单中选择 Add Light (Point)(添加光源(点光源)) 菜单项。您或许需要添加更多的光源;或者您可以通过从 Edit(编辑) 菜单中选择 Duplicate(复制) 或按下Ctrl+W来复制选中的光源。

材质

为了使地面看上去更好,您需要应用材质。在通用浏览器中,选择 Material(材质) 过滤器。右击一个包,比如COG_City_Architecture,并从关联菜单中选择 Fully Load(完全加载) 。从包中选择一个材质,比如COG_City_BaseMat_Metal_CP_Mat。右击地面的顶部表面并从关联菜单中选择 Apply Material(应用材质): COG_City_BaseMat_Metal_CP_Mat 。您可以通过再次右击地面并从关联菜单中选择 Surface Properties(表面属性) 来调整材质的大小。请确保选择了正确的表面。

Sky Dome(穹顶)

在通用浏览器中,打开位于Environments\SkyDomes目录中的SkyDomes 包。如果该包已经打开,请确认是否进行了完全加载。因为Sky Domes实际上是静态网格物体,所以您可以选择 Static Mesh(静态网格物体) 过滤器。从包中选择一个穹顶静态网格物体,比如NewSkyBox_DR_SMesh。 右击视口,并从关联菜单的 AddActor(添加Actor) 菜单项中选择 Add StaticMesh(添加静态网格物体): SkyDomes.NewSkyBox_DR_SMesh 。穹顶网格物体的大小可能需要进行调整。您可以这样来调整,右击那个actor并选择 StaticMeshActor Properties(StaticMeshActor 属性) 。请确保选择了正确的actor;在这个实例中,应该仅选择一个,您为您不需要调整其它东西的大小。值 1.5 应该会使得穹顶更好地适应地面。

Player Start

在通用浏览器的Actor 类别标签上,PlayerStart actor是NavigationPoint的子类。在PlayerStart 下面是WarTeamPlayerStart。这允许玩家或者加入COG 或者加入Locust 队伍。WarTeamPlayerStart,右击顶部地面表面,并从关联菜单的 Add Actor(添加Actor) 菜单项中选择 Add WarTeamPlayerStart(添加WarTeamPlayerStart) 。默认情况下,队伍具有0个人。为了设置队伍,可以右击它并从关联菜单中选择 WarTeamPlayerStart 属性 ,然后简单地编辑WarWeaponPickupFactory 属性即可。*Team* 属性在WarTeamPlayerStart 部分中。

最好在每个队伍中放置两个Player Starts,通常使得两个队伍分别位于关卡的两端。

构建

Build (构建)菜单 中选择 Build All(构建所有) 来对所有东西进行构建。如果运行顺利,那么应该不会出现错误。如果有错误,那么可以尝试清楚它们或者再次开始重新构建。

保存

File(文件) 菜单中选择 Save As(另存为)... 。定位到Maps目录将其保存在那里。为它取一个适当的名称。在这个例子中,我们使用 MP_Example 。

测试地图

点击 Play in Editor(在编辑器中播放) 按钮来运行游戏并启动实例地图。

自定义角色

为了帮助您入门学习创建战争机器的自定义角色,我们提供了以下骨架供您参考: