我要发帖 回复

管理员

735

主题

2万

积分

30

专家分

忠于职守杰出贡献鼓励

兴趣点(最多三项):

建模技术

私信
发表时间 : 2009-11-16 18:15:06 | 浏览 : 4747    评论 : 2
文:Li Chong
* 因为有人要看,问了几次,所以简单写一个
制作一张简单的地图,其实是件非常简单的事情,基本上,只需要15分钟你就可以轻松掌握,本教程会告诉你如何制作一个最最简单的房间,以及如何把它变成可以玩的地图。

如何运行关卡编辑器
购买任何版本的EPIC出品的PC游戏,你都将同时获得相应的关卡编辑器,UT3也不例外,安装完成之后,你在windows的启动栏的该游戏的目录里,可以找到名叫Unreal Tournament 3 Editor的快捷方式,用它即可运行关卡编辑器。或者在安装目录的子目录Binaries下面,你可以找到运行游戏的UT3.exe,你可以手动建立一个快捷方式,然后在它的属性页面的目标一栏最后空一格加入editor,如:
"D:\Unreal Tournament 3\Binaries\UT3.exe" editor
这个快捷方式让你用编辑器模式运行引擎。


地图编辑器界面简介
打开编辑器后,你看到差不多这样的界面:

标题栏下面是菜单栏,基本上所有的可视化操作,在菜单里都有对应的选项。
菜单栏下面一行,是一系列重要菜单命令的对应按钮。
整个编辑器最左边的两竖列按钮,是关卡地理场景对应的操作,包括镜头,对BSP的操作等等。
中间四个小窗口,是显示关卡场景的窗口,叫做Viewport,分别对应顶视图、前视图、侧视图和透视图,这个和很多三维软件是一样的。

建立和保存地图

在打开编辑器的同时,其实就已经新建了一个空白地图,在UE3的编辑器UED4中,默认的地图世界是一片虚无,你需要往里面添加东西,比如说地板墙壁,才能构建出场景。这个和之前几代的UED不一样,之前的默认世界是一片实体,你要首先挖出一块区域,才能往里添加。
如果你想要另外建一张地图,选择菜单File/New,或者点按钮(注意鼠标位置):

然后出现窗口:

Additive, 就是默认的方式,打开编辑器时自动建立的空白地图就是这种方式,世界是一片虚无。
Subtractive,世界充斥实体,需要挖出一块空间来给场景用。
第一种方式比较直观,适合制作室外开放的场景,但对于室内场景,操作比较繁琐,因为你需要六块墙面去拼一个房间,而第二种方式于是就适合室内,因为只需要一个box即可挖出一个房间。
为便于理解,这里我们选择第一种方式。
点确认之后,空白地图就建好了,你现在就可以保存它。
点按钮(或者使用菜单File下面的保存命令):

出来对话框让你选择目录和文件名,至于目录,通常默认在如图所示位置:

在这一代的UT编辑器里,所有第三方的数据,在没有打包发布之前,默认都放在My Documents/My Games/Unreal Tournament 3/UTGame/Unpublished/CookedPC的相应子目录下面,比如地图,会放在子目录CustomMaps下面,当然你可以修改这套路径,但属于相对复杂的技巧,所以这里就不说了。
至于文件名,你可以取比较随意的名字,不过,该游戏的机制是,给某种游戏模式制作的地图,需要命名上使用相应的前缀才能让游戏识别,比如Death Match的地图,需要前缀DM-
而本教成会让你学习制作一张DM地图,所以这里,取一个类似于这样的名字:

然后保存。

视图窗口的基本镜头操作
基本上的地图编辑都在Viewport(视图窗口)中完成,因为对于地图场景的观察只能通过它,所以掌握窗口中的镜头操作对于制作来说最为基本了。
点住左键或右键,在任意一个2d视图中移动鼠标,都可以在该视图中平移
点住左键,在3d视图(默认四分屏的左下角那个)中移动,则是移动+转动镜头方向
点住右键,在3d视图中移动,则只是转动镜头方向
同时按住左右键,在任何2d视图中移动,对视图进行缩放
同时按住左右键,在3d视图中移动,可以上下左右移动镜头
选中地图中的Actor(物件),在任何2d视图中,按下Ctrl+左键拖动,可以平移该物件
选中地图中的Actor(物件),在任何2d视图中,按下Ctrl+右键拖动,可以转动该物件
选中地图中的Actor(物件),在3d视图中,按下Ctrl+左键拖动,可以沿x轴平移该物件
选中地图中的Actor(物件),在3d视图中,按下Ctrl+右键拖动,可以沿y轴平移该物件
选中地图中的Actor(物件),在3d视图中,按下Ctrl+左右键同时拖动,可以沿z轴平移该物件

制作房间大结构
UE传统上是一个基于BSP来构建场景的引擎,不过UE3里面,BSP不是必须,但本教程因为是制作最最简单的房间,所以仍然以BSP手段为例。
之前我们选择了Additive的方式,所以地图里面是一片空白,首先来加入一个房间的地板。
确保在英文输入法选中状态下,鼠标在任意一个视图窗口里面点一下,按b,就可以看见一个红色的立方体框(看不见的话再按一次),然后选中该线框:

该红框是用来添加BSP的工具,它的造型和位置,决定每次添加BSP Brush的造型和位置,BSP Brush是UED里面构建BSP的最基本单元。
你也可以手动设置该红色线框的尺寸,在如下按钮上点右键:

出现的对话框中填入如下数字:

然后点Build按钮,注意到红色线框的造型已经相应地改变:

然后点CSG:Add按钮:

该按钮利用红框在场景中加入一个蓝色BSP Brush,表示该区域要加入一块BSP,你可以立刻看到效果(看不到的话,在3d视图的标题栏上面点选Unlit按钮,以无光模式显示):

在3d视图中按b隐藏红框,然后选择Brush Wireframe模式,你就会看到一个蓝色的BSP Brush:

加入地板BSP后,编辑器自动给它附着了黑白相间的格子材质,你可以进行替换。
点菜单栏下面按钮栏的Open the Generic Browser window 按钮,打开资源浏览器:

该浏览器让你可以访问地图编辑用到的各种资源,包括材质、模型、动画、音效等等:

上图中,Show All Resource Types选项下方的列表,用来过滤哪些类型的资源可见,如图选中Material(材质),去掉其他项的选择,该列表下方的Packages列表,表示了当前打开的资源文件包,每一项都是一个包,对应硬盘上的某个文件,名字灰色的表示部分载入内存,黑色的表示完全载入。因为只勾选了Material,所以Packages列表中的文件包,都是包含材质的,其他类型的都已经被隐藏。
在Generic 浏览器中选择菜单:File/Open,如图:

然后进入UT3安装目录的子目录:

这里面的文件每个都是一个资源包,这个目录下集中放置了和场景有关的资源,比如材质、贴图和模型,打开文件ASC_Floor.upk,然后在Generic浏览器的右边窗口中可以看到出现各种材质:

左键点选这些材质缩略图的任意一个,关闭Generic 浏览器,在3d视图中左键点击地板表面,你会注意到出现淡蓝色高亮效果,然后按住Shift+左键点击,你选择的材质就会被应用到该BSP表面上:

在选中某一表面的情况下,按Shift+B,可以选中该Brush所有裸露在外的BSP表面。
附着好贴图后,按Build All按钮(下图最右边)对地图场景进行编译:

在BSP、打光等操作完成之后,要进行编译,才能看到正确的效果。
重复上面的几步操作,利用红框制作出墙面和天花板,分别指定不同的材质,最后看上去差不多这样子(将镜头移动到房间内):

这时候,如果你在3d视图中选择的是Lit显示模式,那就会一片漆黑什么也看不见,所以接下来,要给这个房间打光。

简单的打光
在3d视图中,按下L,同时在地板中央点击左键,一个光源就被加入:

选中该光源,按下Ctrl+左右键移动,将光源抬高到房间中间高度:

这时候选择Lit显示模式,你会看到已经有效果了:

选择Lighting Only模式,将更清楚地看到lightmap分布的情况:

但这个效果并非最终的效果,不够精确和细致,点Build All进行编译,之后可以看到:

默认加入的灯光仍然是生成lightmap的,所以需要编译才能看到准确的效果。
在编辑器内运行地图
这时候已经可以在编辑器里面运行地图了,在地板上点右键,从出现的菜单中选择:

然后就会出现一个独立窗口In Editor Game,你会从点右键的位置上出生,因为文件名之前加了前缀DM,已经给你一把手枪,HUD也显示了。
到目前为止,你已经成功地做好了一个房间,并且知道如何在编辑器中运行地图,

最近VR访客查看更多↓

obuil 评论于2009-11-16 18:17:38
加入模型细节
房间有了,可以往里面加入细节了,在虚幻引擎中,场景中大部分静态的模型,都使用Static Mesh来制作,这些模型是在三维软件中制作完成后导入UED中的,结合材质,可以应付场景画面的大部分需要。
打开上半节制作的地图。
打开Generic浏览器,从中打开目录Unreal Tournament 3\UTGame\CookedPC\Environments下的ASC_Deco_Statue.upk
这个包里面有一些华丽的雕像,随便选一个,然后在3d视图窗口中右键点地板(你也可以点别的位置,或者在别的视图中操作,在3d视图比较直观一些),在出现的关联菜单中选择Add Actor/Add Static Mesh:...

然后在右键点击的位置上,就出现一个你所选模型的instance(实例),把它随意放到一个位置上,移动的操作见上半节。

调整一下灯光的位置,然后点Build All,你会看见灯光在雕像后面投下的影子,但默认设置下,影子不够明显。
在地板BSP表面点右键,从关联菜单中选择Surface Properties,打开BSP表面属性窗口

在属性窗口的Lightmap Resolution栏中,把分辨率设置为4(默认32),这里数值越小精度越高

然后Build All,这时候你可以看到雕像背后出现很清晰的影子:

利用.upk文件里面的模型资源,你可以把场景装饰得非常漂亮。

放置物品
UT这系列游戏,是围绕各种物品展开Gameplay的,所以制作地图的时候,很重要的一块就是物品的摆放,常用的物品分为武器、弹药、血包、盔甲、以及各类加强物品。本教程简述一下如何加入这些物品。
打开Generic浏览器,在它窗口的菜单栏下面,可以看到一系列页面,第一页是Generic,第二页是Actor Classes,点中该页切换到Actor浏览器。

你也可以选择菜单 View/Browser Windows/Actor Classes来打开

该浏览器中,以目录结构显示出了游戏中各种Actor的类,名字粗体的是可以放入地图的类,如下图展开,选中NavigationPoint/PickupFactory下的子类UTWeaponPickupFactory

在3d视图中右键点地板,做如下选择,

然后在地板上,就出现该类的一个Instance,是个武器座,

在武器座上双击,即可打开其属性窗口,或者选中后按F4也可打开,这两种方法同样适用于场景中大部分Actor。
从属性窗口的UTWeaponPickupFactory右边的下拉列表中选择UTWeap_ShockRifle

这样,该武器座就可以产生Shock Rifle这把武器,你可以按照上一节讲述的办法在编辑器里面运行地图来观察武器座是否正常,看上去应该这样:

同样是在那个武器列表里面,你可以随意选择各种武器。
然后来讲如何放置弹药,
打开Actor浏览器,进入NavigationPoint/PickupFactory/UTItemPickupFactory/UTAmmoPickupFactory

该类下面的都是各种武器的弹药,从名字上就能看出来,选择UTAmmo_ShockRifle,在3d视图中,按住A+左键点击地板,就可以在点击的位置上加入所选类的一个Instance(这个是通用的快捷方式):

然后是盔甲,四种盔甲,都位于.../PickupFactory/UTPickupFactory/UTItemPickupFactory/UTArmorPickupFactory:

同样也是选中某个子类,比如说UTArmorPickup_ShieldBelt,按A+左键点击加入,

而血包则位于UTHealthPickupFactory这个类下面:

加入一个普通血包,

各种加强物品位于UTPowerupPickupFactory下面:

比如说选择UDamage,加入后,

加强物品在编辑器里面只能看到底座,运行地图后,等一会儿,物品就会生出来:

上一节我们讲了如何制作一个简单的房间,这里我们进一步增加一些房间,
在Top 视图中,按下W将所有使用Static Mesh的Actor隐藏(此键可以切换这些Actor的显示),注意到各种物品也被隐藏了,因为它们从画面角度说用的也是Static Mesh,然后,在Top视图中,按下Ctrl+Alt+左键按下拖动,用出现的红线框去框选蓝色的Brush,全部选中,框选的方式让你一次可以选中多个Actor。隐藏的Actor将不被选中,灯光因为没有隐藏所以被选中了:

点Ctrl+W,将选中的Actor复制了一份,将这份移动到原来房间的一侧

将两个房间相对的两面墙壁的任意一个删除(选中+Del):

选中相对的另一面没有删除的墙壁Brush:

点选UED左侧工具条的Geometry Mode按钮:

该按钮打开Geometry Tools,可以对BSP Brush进行编辑操作,在打开的小面板中选择Vertex模式:

在该模式下,你可以编辑Brush顶点,你会看到所选Brush的顶点变得很大:

用Ctrl+Alt+左键拖动,来框选该Brush一侧的顶点

然后Ctrl+左键拖动,平移所选顶点到和另一侧房间平齐

这时候Build All,你会发现两间房间之间充满实体,我们需要在中间开一个门洞出来,这时候,用挖空的方式会比较方便。
在刚才那个Brush上面点右键,从关联菜单中选择Polygons/To Brush,

该菜单利用所选的Brush生成一个一样造型的Brush Builder红框,

在Top视图中,用Geometry Tools编辑该Brush Builder的顶点,让它看上去像个门洞的样子,

在UED左侧工具条中点击CSG:Subtract按钮,

该按钮利用Brush Builder来创建一个一样造型的挖空的Brush,
这时候你可能看不到,选择左侧工具条的Camera Mode工具,这个是默认选项,

这时候可以看见房间之间出现一个黄色框,选中之后是这样子:

这个Brush就表示该位置上的实体被挖空,但这时候从侧视图上看,该Brush顶部和底部分别超出了天花板和地板,重新使用Geometry Tools来编辑顶点,让顶部和底部分别对齐到天花板和地板,如下:

在Brush操作过程中,你可以经常Build一下来观察效果如何,最后完成后,差不多这样:

但这时候贴图有点混乱,在Generic浏览器中选择ASC_Floor包中的地板贴图,指定给门洞地板,同样也给天花板进行指定,

这样有了两间房间,便于后面进一步制作,然后,将物品根据你自己的设想放置到两个房间的合适位置,下图中,武器被放到门洞那里,盔甲和UDamage分别放到两个房间靠墙,血包复制一个,分别放到靠近门洞的墙角,雕像被复制成四个,分别放到墙角,

接下来,可以开始设置NPC寻路了

设置NPC寻路
首先放入出生点,出生点是玩家和NPC共用的,它的类位于NavigationPoint/PlayerStart,

选中该类,在房间地板上按A+左键点击,出现手柄状图标:

出生点是带有箭头的,其朝向表明了出生时玩家或NPC面朝的方向,下图是Top视图中看到的默认的朝向:

选中后,按住Ctrl+右键拖动,可以旋转一个Actor,用这个方法改变出生点的朝向,比如:

分别在两间房间加入出生点,并确保不会面朝墙壁之类尴尬的地方。
然后需要加入一些PathNode(路点),路点是UE里面设置NPC寻路最为基本的工具,路点之间构成的连接,就是NPC在寻路中需要遵循的线路,路点的类是NavigationPoint/PathNode:

在房间中央地板上加入路点,

然后Build All,这时候可能会出现报错窗口,如下:

红叉通常是比较严重的问题,黄色感叹号是需要注意的问题,未必一定是问题,这里面因为红叉的问题不影响我们所需的地图效果,所以直接关闭这个窗口即可。
Build All基本上包括Build Geometry, Build Lighting, Build AI Pathing,以及地图错误检查,这几部分你都能在Build All按钮边上找到对应的按钮(除了错误检查)。
然后,在3d视图中按下P,显示NPC寻路,你会看到各种物品,出生点,路点,这些NavigationPoint下面的子类Actor,互相之间产生连接,构成网格状寻路:

在编辑器中运行地图,或者点击按钮:

该按钮让你也在编辑器中运行地图,但会利用地图里面的出生点来作为玩家出生点。
然后按Tab,输入Addbots x,即可加入x个NPC,

你会发现NPC已经可以灵活自如地在地图中移动了,你可以和NPC较量一下,或者输入命令God观察NPC寻路如何。

制作预览图
在UT3的地图列表中,正式发布的地图需要有预览图,才能让人区分和识别。要制作预览图,首先需要截图,你可以在编辑器中运行地图,然后用截图软件截取,也可以运行游戏,如果地图还没Cook(见下一小节),那么按F10调出Console,打入命令Open DM-OOXX(地图名,后缀不用)运行,如果Cook过了,直接从列表中选择即可,运行后,按F9截图,截图保存在:My Documents\My Games\Unreal Tournament 3\UTGame\ScreenShots
然后,用Photoshop之类软件将截图编辑成诸如512x256或1024x512之类的分辨率(即长边像素是短边的一倍,并且都是2的N次方倍数,N大于等于3),保存成.tga或者.bmp之类的即可。
在UED的Generic浏览器中,选择菜单File/Import,然后从中点选预览图,将它导入,在出现的对话窗口中,Package一项你可以从下拉菜单中找到你所建的地图,或者手动输入地图名,这样该贴图就可以保存在地图文件中,Group一项随意,Name也是:


导入完成后,你可以在Generic浏览器中看到该贴图,虽然实际的预览图用的是这个贴图,但贴图在地图场景中并不能直接被引用,从而也就无法保存,所以需要另外建一个引用此贴图的材质,并在地图中引用这个材质,这样保存地图的时候就一并保存了该贴图和材质,从而提供了可供游戏地图列表引用的预览图。
在Generic浏览器中右边预览窗口的空白处点右键,从关联菜单中选择New Material:

弹出新建材质窗口,Package名仍然使用地图名,而Group和Name可以随意,但Name注意不要和贴图重名:

点OK后,出现材质编辑窗口,在Generic浏览器中选中之前导入的贴图,在该窗口空白处点右键,选择菜单New TextureSample,然后出现一个节点,由于那张贴图之前被选中了,所以该节点会自动应用此贴图,然后,点击节点左边最上面的小方块并拖拽到左侧Diffuse项上,然后一个连接就会自动建立,表示此材质的Diffuse图将使用此贴图:

完成后,在材质编辑窗口上方工具条找到三个绿勾,点击最左边那个,将材质的编辑操作应用一下:

这时候,回到Generic 浏览器,可以看到该材质(绿框是材质,右边红框是贴图):

选中该材质,然后在地图房间的外面另外制作一个小立方体,并把该材质应用到其BSP表面上,这样做的目的是为了让地图本身需要调用该材质,这样保存地图文件的时候,自动就把材质和贴图都保存了:

Build All并保存地图。
到这里,基本上一个简单的DM地图已经完成了,之后就是如何发布的问题。

如何发布
UT3的地图,在UED里制作完成后,需要经过Cook,才能产生可供发布的地图文件(实际上UED里面直接做好的地图,也可以在游戏里面运行,只是无法在地图列表里面显示,需要打命令)。而Cook基本上就是为Loading对地图进行优化。
点UED菜单栏下方工具栏的按钮:

然后,有可能会出现如下窗口,因为本地图制作中并没有创建额外的文件包,所以直接选择“否”即可(如果你建立过诸如Static Mesh包,材质或者贴图包之类的,并且不是和地图储存在一起,那么这时候需要保存一下) 。

然后,就出现如下窗口,并开始Cook,一切正常的话,出现Success字样:


关闭窗口和UED,在电脑目录My Games/Unreal Tournament 3/UTGame/Published/CookedPC/CustomMaps下面,你可以找到Cook好的地图文件和一个对应的.upk文件(如果之前没有CustomMaps目录,那么在Cook过程中会自行创建):

然后,你需要一个同名的.ini文件来定义地图的一些信息 ,新建DM-OOXX.ini,用记事本之类软件即可,输入(酌情修改红色部分即可,注意PreviewImage项目填入的是预览贴图的Package.Group.Name):
[DM-OOXX UTUIDataProvider_MapInfo]
MapName=DM-OOXX
FriendlyName=OOXX
PreviewImageMarkup=DM-OOXX.Screenshot.PreviewShot>
Description=Enjoy this shit...
NumPlayers=2 to 4 players     Author:Ass 保存ini,然后运行游戏,你应该可以在地图列表里面看到你的地图了。
然后,通常UT MOD界传统上要给地图加同名readme文件,所以建一个DM-OOXX.txt之类的,在里面描述一下地图相关信息和Credits等即可。另外,也可以准备一张截图,这样别人不用进游戏就能搞清楚这个是哪张地图了,比如说弄个DM-OOXX.jpg之类的。
最后,把DM-OOXX.ut3, DM-OOXX_LOC_int.upk, DM-OOXX.ini, DM-OOXX.txt, DM-OOXX.jpg打包到一起,最好是zip文件,因为各个第三方资源Host站点通常会建议你用zip格式
这样,就可以发布了!
superdemo 评论于2009-11-22 17:22:59
图片看不见?能把图片补上就好了。

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-2-27 02:26 AM

返回顶部