地图编译原理

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)Français (fr)Русский (ru)中文 (zh)Translate (Translate)
Broom icon.png
This article or section should be converted to third person to conform to wiki standards.

原帖许可(Source)。

简介

很多人根本不知道或不了解如何以及为什么Source的地图需要编译。有些人甚至不知道自己的地图"正在"编译。在这篇文章中,我将试着描述一个编辑器文件到一张可玩的地图的整个过程。虽然在编译过程的某些方面我会讲得深入些,但是请记住这不是一个教你如何编译的教程。它将帮助你理解发生了什么,而为什么其他事(像防止泄露)是重要的。

创建一张可玩的Source地图是从一个编辑器文件开始的。此文件包含所有的多边形数据(又名固体(en)),实体(en)数据以及贴图(en)数据,这些定义了你完成的地图的外观和行为。所有的编辑器,基本上都要达到同样的目的---去定义一个地图是怎么出现的。这是你要理解的关键概念:所有的编辑器都是这样做的。它们并没有完成地图。他们所做的,只是给你一个方便的方式来为以后的过程准备多边形,光照,和实体数据。

一旦你已经在你的编辑器里建立了一个地图,并且已经将其保存到磁盘,你就会想要在Source里进行测试,来看看它是如何横空出世的。要确保你所有实体都正常工作,光照正确,而且没有坏的"固体"。在Hammer里,很多人都只是"运行(Run)"地图,在一段时间的"思考"之后,他们的计算机打开了半条命2,然后"砰"的一下将他们带到地图中。这个简单的事情,隐藏着许多复杂的操作和设定。

现在,问题的核心是,在那有时候奇慢无比的"思考时间"里,到底发生了什么?即便是一张中等大小的地图,大多数人都会注意到,在此期间他们的硬盘在疯狂地读取和写入数据。那么,你的计算机在做什么?是在编译你的地图!你的编辑器会调用一个脚本(.bat),然后做下面所有的事:

  1. 读取.vmf文件。
  2. 针对.vmf文件执行BSP(en)程序
  3. 针对新的.bsp文件执行VIS(en)程序
  4. 针对.bsp文件执行RAD(en)程序来添加光照信息
  5. 移动你新完成的.bsp到你的模组/maps目录
  6. 带参数执行游戏来运行你的地图

你可能会想:"该死的,原来有这么多事要做。一切都是为了什么?"。嗯,那就是我在这里要解释的东西。

编译过程​​概述

下面的图表显示了创建一个可玩的地图文件(.bsp)的全部过程。

<placeholder> .vmf > VBSP > 中间的 .bsp > VVIS > VRAD > 最终的 .bsp </placeholder>

Source Mapping Pipeline.png

编译工具

下表将很好地告诉你每一个工具做的事。描述将尽可能简单,因为任务的工具的执行涉及到一些复杂的数学运算,你作为一个地图制作者,还是需要懂一点的。只要你能明白什么工具是用来干什么的,这应该就足够了

工具 目的
VBSP(en) BSP工具的作用是转换.vmf文件数据到一个可使用的.bsp文件里,使游戏引擎可以读取。一旦BSP工具运行了,本质上地图是可以玩的,不过将有异常,它没有可见的矩阵,并且完全没有光照。这些关键的功能被应用于接下来的两个工具VIS和RAD。
VVIS(en) 这个工具根据地图的几何创建可见的矩阵。该矩阵决定了在游戏里,哪些多边形玩家可以看见,哪些可能看见,而哪些从给定的任何点都不能看见。至关重要的是, 这个工具运行在你创建的每一个.bsp上。如果它不运行,那么整个地图每时每刻都是可见的。但在所有的最简单的盒子型地图里,往往因为画面卡而导致地图不可玩。关于VIS更深入的信息可以在决定可见性(en)找到。
VRAD(en) RAD工具,或者叫光传递工具,负责生成和应用地图里的所有光照效果。上至实体光源和"天空",下到底层贴图光源,都是由这个工具处理。一个没有运行过RAD的.bsp将会完全漆黑,或者是全亮,这取决于视频模式或者控制台设定。这个工具通常是使编译速度变慢的罪魁祸首,因为它的任务需要处理大量的数据。关于RAD更深入的信息可以在RAD(技术性的)(en)找到。

编译管理器

哪种编译工具?

Hammer使用V社自己的编译工具。这些工具的名字前都存在一个'V'(例如vbsp.exe(en)vvis.exe(en)vrad.exe(en))。此外,亚当·麦克恩(Adam McKern)使用了一套新的Source编译工具(CSTBSP(en)CSTVIS(en)CSTRAD(en)--详见(http://www.ammahls.com/ CST]),它拥有比默认工具更多的功能优化和选项。截至目前,CST没有任何比V社的工具更值得注意的改进,所以已经变得过时。

参见