Q3Map2
维基教科书用户认为此页面应该拆分为更小的页面,具有更窄的子主题。 您可以通过将此大页面拆分为更小的页面来提供帮助。请确保遵循命名规则。将书籍分为更小的部分可以提供更多关注,并允许每个部分都做好一件事,这对每个人都有益。 |
Q3Map2 现在已与GtkRadiant 项目集成。适用于 32 位和 64 位系统的 Windows、Mac 和 Linux 二进制文件可以从项目页面下载。Q3Map2 源代码现在可通过GtkRadiant GitHub 存储库获取。
官方支持论坛@Splashdamage
当前稳定版本为 2.5.17
Q3Map2 是一个用于基于 id Tech 3 引擎的游戏的 BSP 编译器。它编译 .map 文件(可以使用编辑器编辑)成 .bsp 文件(这些是游戏的二进制文件,不可编辑)。它目前支持以下平台
- Nexuiz
- Open Arena
- Quake 3 Arena/Team Arena
- Quake Live
- 重返城堡狼堡
- 命运战士 2
- 星际迷航精英部队
- 星球大战绝地武士:绝地学院
- 星球大战绝地武士 2:绝地武士
- Tenebrae(Quake 1 引擎修改项目)
- 震动
- 城市恐怖
- War§ow
- 狼穴:敌军基地
- Padman 世界
- Xonotic
Q3Map2 被设计用来替换 QERadiant、GtkRadiant 和 GMAX Tempest 附带的 Q3Map.exe。但是,有一些显著的增强功能需要进行一些调整才能使用,例如更快的照明和增强的表面生成。
有趣的事实
- Q3Map2 起初是针对 Q3Map(最初的 Quake 3 地图编译器)的错误修复。
- 骑着自行车参加 AIDS LifeCycle 的奇才编码超级英雄 ydnar 是 Q3Map2 背后的那个人。
Q3Map2 是一个命令行实用程序。通常,用户以以下三种方式之一使用 Q3Map2
- 使用GtkRadiant(维基教科书)中的 bsp 菜单
- 编写他们自己的批处理文件(或者如果在Linux 上则编写类似的 shell 脚本)
- 下载 Q3Map2 前端,例如Q3Map2Build、Q3Map2Toolz 或 Q3map2GUI
需要注意的是,GtkRadiant bsp 菜单中给出的默认命令行绝不是对可用 Q3Map2 选项和开关的完整展示。您可以从 GtkRadiant 偏好设置中编辑 bsp 菜单命令行,但为了完全控制您的 Q3Map2 编译,编写批处理文件或使用其中一个前端可能是一个更好的主意。
Q3Map2 命令行通常遵循以下格式
"C:\path\to\Q3Map2.exe" [<general option>] [<major switch> [<minor switch> <minor switch>...]] "C:\path\to\maps\mapname.map"
-connect <hostname/ip address>
- 启用将 Q3Map2 日志输出到远程主机。此开关允许所有其他(非单独)开关。
-info
- 分析已编译的 bsp 并将信息输出到屏幕或日志。此开关是单独的,并且之后只允许已编译的 bsp 的路径(注意,不是 .map)。
-game <quake3|wolf|et|etut|ef|jk2|ja|sof2|tenebrae|qfusion>
- 启用对除 Quake III: Arena 之外的游戏支持。此开关允许所有其他(非单独)开关。
-fs_game <mod name>
- 启用对除游戏中定义的基本游戏之外的游戏模组的支持(在您的 -game 开关中定义)。此开关允许所有其他(非单独)开关。
-fs_basepath <"C:\path\to\game\directory">
- 对于 Q3Map2 要读取除 Quake III: Arena 之外的游戏的资产目录,这是必需的。此开关允许所有其他(非单独)开关。
-convert [-format <ase|map|quake3|wolf|et|etut|ef|jk2|ja|sof2|tenebrae|qfusion>]
- 将已编译的 .bsp 转换为另一种格式。此开关是单独的,并且之后只允许已编译的 bsp 的路径(注意,不是 .map)。
- 如果没有 -format 子开关,-convert 会将已编译的 .bsp 转换为 .ase 模型。Q3Map2 -convert 将 mapname.ase 输出到“maps”目录。
- 其他格式可通过 -format 子开关获得
- map 将 .bsp “反编译”回 .map(大多数实体丢失了,纹理对齐信息也丢失了)。Q3Map2 -convert -format map 将 mapname_c.map 输出到“maps”目录。
- quake3 将来自其他游戏 .bsp 格式的 .bsp “交叉编译”到 Quake III: Arena(此“其他”游戏在 -game 开关中指定)。例如,要从 Wolfenstein: Enemy Territory 交叉编译到 Quake III: Arena,将使用“-game et -convert -format quake3”。此功能仍处于开发阶段,应暂时视为实验性的;surfaceparm 位标志的差异会导致交叉编译的 .bsp 中出现奇怪现象。Q3Map2 -convert -format quake3 将 mapname_c.bsp 输出到“maps”目录。
- 其他游戏简称与 quake3 类似,但适用于其各自的游戏。
-scale <N.N>
- 按规定的系数缩放已编译的 .bsp。例如,Q3Map2 -scale 0.25 将输出一个新的 .bsp,其大小为原始 .bsp 的 25%,而 Q3Map2 -scale 2.0 将输出一个新的 .bsp,其大小为原始 .bsp 的两倍。Q3Map2 -scale 将 mapname_s.bsp 输出到“maps”目录。此开关是单独的,并且之后只允许已编译的 bsp 的路径(注意,不是 .map)。
-export
- 将已编译的 .bsp 中的内部光照贴图导出到外部 .tga 图像。此开关是单独的,并且之后只允许已编译的 bsp 的路径(注意,不是 .map)。
-import
- 将外部 .tga 光照贴图导入回已编译的 .bsp。导入的光照贴图仅适用于它们从中导出的未修改的 BSP。此开关是单独的,并且之后只允许已编译的 bsp 的路径(注意,不是 .map)。
-exportents
- 将现有 BSP 中的实体导出到 .ent 文件。示例用法:q3map2 -game quakelive -exportents -v mymap.bsp
-onlyents
- 仅使用 .ent 文件更改 .bsp 中的实体。例如:q3map2.exe -game quakelive -fs_basepath "D:\Program Files (x86)\Steam\steamapps\common\Quake Live" -onlyents "D:\ql stuff\pak00\maps\hellsgate.ent"。将输出具有更新实体的 hellsgate.bsp(原始 hellsgate.bsp 也应该在包含 .ent 文件的文件夹中)。
-threads <number of threads Q3Map2 should use>
- 指定编译期间要使用的线程数。在 Windows 上,Q3Map2 会自动检测到存在的 CPU 数量,并相应地设置线程数。-threads 开关可用于覆盖此行为。
- Linux 用户需要手动设置 -threads 才能在 Q3Map2 中激活 SMP 支持。
-v
- 启用详细模式。这通常是一个好主意。
-rename
- 用于修复 SOF2 中 misc_model 实体的问题。如果您的 misc_models 显示为未照亮且完全为黑色,请使用 -rename 开关。
-bsp
- 将 .map 文件编译成二进制空间分割 (BSP) 文件,以供 Quake III: Arena 引擎使用。还会写入 .prt(门户信息)文件和 .srf(表面)文件。无需在命令行中添加 -bsp;它是默认开关。
-vis
- 根据门户文件创建可见性集。
-light
- 计算光照数据。如果未启用 -light 子开关,则会产生不理想的输出。
三个主要开关(-bsp、-vis 和 -light)都有许多选项,可以通过它们各自的次要开关访问。次要开关很多,为了可读性,次要开关列表已在 Q3Map2 wiki 的单独页面上组织。
BSP 阶段次要开关
[编辑 | 编辑源代码]Q3Map2 BSP 阶段次要开关有它们自己的页面Q3Map2/BSP
VIS 阶段次要开关
[编辑 | 编辑源代码]Q3Map2 VIS 阶段次要开关有它们自己的页面Q3Map2/VIS
Q3Map2 光照阶段次要开关有它们自己的页面Q3Map2/Light
- 指定要投影的贴花。应包含一个或多个贴花网格并以 info_null 实体为目标。在_decal 实体的中心和目标 info_null 之间绘制的目标线是投影的轴线和距离。将_decal 网格视为光胶,info_null 是聚光灯的目标,您正在将此贴花“照射”到地图几何体上,这会有所帮助。
- _skybox 实体是真正的奇迹:它指定了天空盒的起源(地图的完全包含的独立区域),类似于某些游戏的传送门天空。当与 Q3Map2 编译时,天空盒表面将从任何可以正常看到天空的地方可见。它将在地图的正常部分投下阴影,并且可以与云层和其他效果一起使用。有关用法信息,请参见_skybox 教程。
Q3Map2 特定实体键
[编辑 | 编辑源代码]Q3Map2 特定实体键在Q3Map2/Entity keys页面上有自己的页面。
当您想要生成地图的“最终”编译时,此命令行是构建的良好编译。它绝不是每个地图的完美选择,但根据您自己地图的特性开始调整的好地方。
"C:\path\to\q3map2.exe" -meta -v "C:\path\to\mapname.map" "C:\path\to\q3map2.exe" -vis -v "C:\path\to\mapname.map" "C:\path\to\q3map2.exe" -light -fast -patchshadows -samples 3 -bounce 8 -gamma 2 -compensate 4 -dirty -v "C:\path\to\mapname.map"
默认情况下启用了 r_overbrightbits 值的游戏(即 Quake III Arena)可能想要使用-gamma和-compensate开关。否则,请从上面的编译设置中删除。
- 首先,为您的模型创建几何体。
- 将此文件另存为 model.map(或任何其他名称)。
- 在 bsp 阶段使用 -v -meta -patchmeta 编译 model.map(如果您的曲线看起来太“低保真”,请将“-subdivisions 0”添加到编译行。如果您想要更复杂,请递增“ -subdivisions”值)。无需运行 -vis 或 -light。您现在应该在“maps”目录中拥有 model.bsp。
- 使用 -convert 编译 model.bsp(不是 model.map,请注意)。您现在应该在“maps”目录中拥有 model.ase。
- 创建一个新的 .map 并放置一个 misc_model 实体。为这个 misc_model 实体提供键值对“model”/“maps/model.ase”。
以下是一个执行 bsp 和转换编译的批处理文件的示例。
"C:\path\to\q3map2.exe" -bsp -meta -patchmeta -game [game abbreviation] "C:\path\to\model.map" "C:\path\to\q3map2.exe" -convert ase -game [game abbreviation] "C:\path\to\model.bsp"
瞧!您现在拥有一个从刷子创建的 misc_model。使用“modelscale”和“angles”实体键进行玩耍,并了解为什么 Q3Map2 .ase 转换是完全棒极了。
-subdivisions #
- 指定要在几何体中进行的细分数量。较大的值会增加三角剖分,因此会降低性能。
为了获得更多力量,将 model.map 导入到您的新地图中作为预制件。选择“model”刷子,并使用 clip 对其进行纹理化。将这些新的 clip 刷子旋转到位,覆盖您的 misc_model;这些 clip 刷子的刷子顶点会有些混乱,但由于玩家无法看到 clip,因此您在游戏中实际上看不出区别。它很漂亮,并且没有 Q3Map2 自动剪切的任何不良影响。
_skybox 实体通过正常的实体泛洪算法“抓取”它能“看到”的所有地图几何体,并将它们合并到传送门天空堆中。这是一个需要理解的重要概念;如果您的“主”地图与为 _skybox 指定的独立区域之间存在任何泄漏,您的编译将永远持续,只会生成一个非常损坏的 .bsp。话虽如此……
- 像往常一样构建您的地图,使用您喜欢的任何天空着色器对您的天空刷子进行纹理化。
- 将您的地图与虚空隔离开来(当然)。
- 在您“主”地图稍微远处的位置创建一个天空刷子的小方块。您可能可以绘制一个 128x128x128 的天空着色器立方体,然后使用 CSG 的“空心”按钮。
- 在此小天空盒中放置更多几何体,但注意不要使其过于复杂。此外:除非您使用 -patchmeta 编译,否则贴花网格不应进入 _skybox 区域……您每次都会得到 MAX_PATCH_PLANES。
- 在您的微型天空盒中放置一个 _skybox 实体。_skybox 实体相对于其余天空盒几何体的定位决定了传送门天空的起源相对于您地图其余部分的位置……一点点实验会向您展示它的工作原理。
- 编译,就是这样。您在 Quake III: Arena 中拥有了一个传送门天空!
注意
- “_scale”键定义 _skybox 缩放因子。根据您要使用的传送门天空类型,64-256 之间的值似乎相当不错。选择 2 的幂以将 _skybox 几何体顶点保持在网格上可能是一个好主意。
- “angles”键可用于使您的 _skybox 几何体倾斜,并使玩家感到晕船。
- 可以在 _skybox 几何体上使用 Deformvertexes 着色器,但您使用的值必须按分配给 _scale 的相同值进行缩放,否则看起来不对。
- 您还必须缩小 _skybox 几何体上的纹理坐标,否则您使用的纹理将显得极度拉伸。
作者:请参见页面历史记录
Q3Map2 可以将 .bsp 反编译为 .map。此过程绝不完美,您永远不应在许可不允许的情况下从他人的地图中获取任何内容,但反编译地图对于“了解它是如何完成的”很有用。
- 将您要反编译的 .bsp 放置到与 q3map2.exe 相同的目录中。
- 打开命令提示符并浏览到包含 .bsp 和 q3map2.exe 的文件夹。
- 键入
q3map2 -game [game abbreviation] -convert -format map [name of the bsp file].bsp
因此,如果 .bsp 的名称为 testmap.bsp,并且您使用的是 Jedi Academy,则使用以下命令
q3map2 -game ja -convert -format map testmap.bsp
然后,您应该在与 q3map2.exe 和 .bsp 相同的文件夹中找到一个 .map。