地图编译原理

From Valve Developer Community
Revision as of 14:58, 20 January 2013 by Cpm (talk | contribs) (Created page with "{{otherlang2 |title=地图编译原理 |en=Map_Compiling_Theory}} '''原帖许可([http://www.game-edit.org/tutorials/general/compile_theory/compile_theory.shtml Source])...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
English


原帖许可(Source)。

简介

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

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

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

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

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

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

编译过程​​概述

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

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

Source Mapping Pipeline.png

编译工具

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

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

编译管理器

  • 批处理编辑器 - 支持雷神之锤(Quake),Valve,Zoners,和CST工具。
  • VBCT - 针对Source引擎。

哪种编译工具?

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

参见