Zh/Menu Background Map: Difference between revisions

From Valve Developer Community
< Zh
Jump to navigation Jump to search
m (-Using L template for links)
m (Multipage removal)
Line 1: Line 1:
{{langsp|title=动态背景}}
{{LanguageBar|title = 动态背景}}
[[Category:Level Design|{{Autolang|Level Design|zh=关卡设计}}]]{{ACategory|Tutorials}}[[Category:Modding|{{Autolang|Modding|zh=MOD 制作}}]]
 
'''动态背景''' (Background maps) 是在进入游戏时出现的会动的 3D 背景画面. 这是已编译的 BSP 格式的文件, 就和标准的游戏关卡地图一样. 虽然所有的 MOD 都可以使用 动态背景, 但是它一般被用于像 {{L|Half-Life 2}} 这样的单人游戏. 根据作者的意愿, 动态背景 可以根据玩家的游戏进度 (以章节为单位) 作出相应的改变, 玩过 HL2 的应该都理解吧.
'''动态背景''' (Background maps) 是在进入游戏时出现的会动的 3D 背景画面. 这是已编译的 BSP 格式的文件, 就和标准的游戏关卡地图一样. 虽然所有的 MOD 都可以使用 动态背景, 但是它一般被用于像 {{L|Half-Life 2}} 这样的单人游戏. 根据作者的意愿, 动态背景 可以根据玩家的游戏进度 (以章节为单位) 作出相应的改变, 玩过 HL2 的应该都理解吧.



Revision as of 08:21, 12 July 2024

English (en)Русский (ru)中文 (zh)Translate (Translate)

[[Category:Level Design|

Red x.png
This template (and its redirect) is Wikipedia icon Deprecated. Its use is not recommended and its functionality may be compromised.
You can help our editors by replacing or deleting this template on the Pages that use this template. Once no more pages use this template, it should be Marked for deletion.

Additional notes:
Use #switch parser function instead. Example
{{#switch: {{language}}
| #default = English
| ja = 日本語
| zh-tw = 中文(台灣)
‎}}

]][[Category:Modding|

Red x.png
This template (and its redirect) is Wikipedia icon Deprecated. Its use is not recommended and its functionality may be compromised.
You can help our editors by replacing or deleting this template on the Pages that use this template. Once no more pages use this template, it should be Marked for deletion.

Additional notes:
Use #switch parser function instead. Example
{{#switch: {{language}}
| #default = English
| ja = 日本語
| zh-tw = 中文(台灣)
‎}}

]]

动态背景 (Background maps) 是在进入游戏时出现的会动的 3D 背景画面. 这是已编译的 BSP 格式的文件, 就和标准的游戏关卡地图一样. 虽然所有的 MOD 都可以使用 动态背景, 但是它一般被用于像 Half-Life 2(en) 这样的单人游戏. 根据作者的意愿, 动态背景 可以根据玩家的游戏进度 (以章节为单位) 作出相应的改变, 玩过 HL2 的应该都理解吧.

构造 动态背景

动态背景应该以立体模型 (dioramas) 来构建. 地图中要展现的东西应该被限制于摄像机镜头之内, 超出摄像机镜头的任何东西除了耗费资源外无任何意义. 应该尽可能的构造最少的几何体与使用最少的材质贴图, 这样才能让地图更小, 读取更快.

开始创建一个 动态背景 地图:

  • 创建一个基本的几何体容纳您想要包含在动态背景中的所有东西. 不能有任何的裂痕 (leaks), 必须像其他标准的关卡地图一样是密闭的. 光照与材质都是必需的. 您也可以修改一个已有的关卡地图, 只需删除或隐藏在动态背景中不需要的部分. 所有不需要的成分 (elements) 都删了吧.
  • 添加 info_player_logo(en) (多人游戏) 或是 info_player_start(en) (单人游戏) 到地图中. 这个实体放在哪无关紧要, 只要包含在几何体的内部, 并且离地面不是太高, 玩家出生时不会摔死就可以了.
  • 添加一个 point_viewcontrol(en) 实体到地图中您想要摆放摄像机的地方. 命名 point_viewcontrol 以方便使用, (例如 "viewcontrol_background1" ).
  • 打开 point_viewcontrol 实体的属性 (ALT+ENTER), 切换到 flags 标签下, 去掉 Start at Player / Follow Player / Interruptable by Player 前面的勾, 打上 Freeze Player / Infinite Hold Time / Snap to goal angles / Make player non-solid 前的勾, 点 apply
  • 添加一个 info_target(en) 实体. 它的位置决定了 point_viewcontrol 摄像机将会指向的地方. 以与 point_viewcontrol 相似的方式命名 ( 例: "target_background1" ).
  • 选择 point_viewcontrol. 找到 Entity to look at 关键字, 将他的值指向您刚刚创建的 info_target 实体.
  • point_viewcontrol 应该在 动态背景 地图载入的时候被激活. 最简单的方法是使用 logic_auto(en) 实体. 在属性页的 Outputs 标签栏下面选择 add..., 在 My output 选择 OnMapSpawn, Targets entities named处指向 point_viewcontrol 实体, Via this input 选择 Enable, 点 apply.
  • 您也可以在 logic_auto 实体的 outputs 里面添加您想要在地图中展现的事件, 比如灯光闪烁, NPC(en) 匆匆走过, 或是播放声音 等等. 但是注意别弄得太复杂了, 不管怎么说, 动态背景应更多的考虑性能, 读取速度, 而不是把玩家的注意力从菜单转移到背景上去.
  • 保存, 编译您的地图. 如果您要替换已有的 Half-Life 2(en) 地图, 请看看下面的 替换 Half-Life 2 的动态背景 以保证名称正确.

测试 动态背景

测试动态背景地图, 请不要在运行游戏时直接加载这张地图. 应该在进入游戏之后, 调出 开发者控制台(en), 接着输入:

map_background <地图名称>

这里的 <地图名称> 就是您的动态背景的名称. 这样,您的地图就会被作为背景画面读取到游戏中.

测试完之后, 您可以回到编辑器完善它. 您也许也想要添加更多的细节, 改变摄相机的位置或摄相机的方向. 制需要重新编译, 再使用 map_background 命令来看看所做的改变. 一旦摄像机的位置确定下来, 尽最大努力来优化地图是一个不错的选择, 比如为那些摄像机看不到的表面涂上 toolsnodraw 材质. 再次重申, 我们的目的是让动态背景尽可能的小, 使其具有更佳的性能表现.

建议看看 maps\sdk_background.vmf 文件, 这是一个动态背景示例文件.


菜单背景图像

我们还需要为 动态背景 .BSP 制作一个背景图像. 这就是在您运行游戏之后, 动态背景加载中的时候显示的图像. 在 Half-Life 2 里, 这是一张模糊化的动态背景的截图 (制作的时候, 1280x 的图像 使用 30像素 的高斯模糊滤镜). 当 动态背景 .BSP 加载完成时, 屏幕将会从静态的图像渐变到实际的 3D 动态背景.

下面的两个文件是必需的:


<game directory>\materials\console\<map name>.vmt

<game directory>\materials\console\<map name>_widescreen.vmt

例如, 您制作了一个名称为 sdk_background.bsp 的动态背景, 您需要以下的文件:

hl2\materials\console\sdk_background.vmt

hl2\materials\console\sdk_background_widescreen.vmt

背景图像常常使用 1024x1024 分辨率的截图, 用图象编辑软件使其模糊化.

您可以在游戏中的 选项 -> 键盘 设置截图按键. 默认的按键为 F5, 并且以 .JPG 格式保存到 <游戏文件夹>\screenshots 目录下. 您也可以绑定一个按键到控制台的命令 screenshot , 这样将会以 .TGA 格式保存.

菜单背景图像的 .vmt 文件应该是这样的格式:

"UnlitGeneric"
{
	"$basetexture" "console/sdk_background"
	"$vertexcolor" 1
	"$vertexalpha" 1
	"$ignorez" 1
	"$no_fullbright" "1"
	"$nolod" "1"
}

至于怎样创建, 请看 材质的创建(en) 文档.

sdk_background 示例文件的默认材质位于:

\sourcesdk_content\hl2\materialsrc\console (for the source .TGAs)

\half-life 2\hl2\materials\console (for the .VMT and .VTF files).


MOD 中动态背景 与 章节的脚本操作

创建了一个修改过的动态背景之后, 为了能够正常被游戏读取, 并在适当的章节处展示, 它应当被插入到适当的脚本文件中.

这段描述了几个用来控制动态背景展现的文件.

hl2\scripts\ChapterBackgrounds.txt 文件将动态背景与游戏章节相关联. 它列出了游戏中所有的章节, 和当玩家进行到某章节后哪一个 BSP 文件应该被读取.

这里是 Half-life 2 的 ChapterBackgrounds.txt 文件:

"chapters"
{
	1	"background01"
	2	"background01"
	3	"background02"
	4	"background02"
	5	"background03"
	6	"background03"
	7	"background04"
	8	"background04"
	9	"background05"
	9a	"background05"
	10	"background06"
	11	"background06"
	12	"background07"
	13	"background07"
}

hl2\scripts\titles.txt 包含有章节的键值. 每一个章节都有自己的键值. 这些值被记录到 Hammer 编辑器 中 Map 菜单项下的 Map Properties 里面的 “Chapter Title Message” 的值里. 实际游戏中显示的文本是记录在各种语言的文件中, 就是这些文件:

hl2\resource\hl2_english.txt
hl2\resource\hl2_french.txt
hl2\resource\hl2_german.txt
...
hl2\resource\hl2_schinese.txt
...

这些文件用各种语言的文本记录了各个章节的名称. 在游戏中出现章节名称的时候就会显示这些文件里对应的文本.

测试 chapterbackgrounds.txt

当您把您的做的改变写入 chapterbackgrounds.txt 文件中的时候, 你可以使用控制台变量 sv_unlockchapters 测试您的动态背景. 这个变量控制着您已经玩穿了哪个章节, 只要把它的值设置为您想要查看章节序号, 您就可以看到对应的动态背景了.

选择查看哪一个 动态背景:

  1. 保存 chapterbackgrounds.txt 文件到 <MOD 文件夹>\scripts 目录.
  2. 运行游戏.
  3. 打开开发者控制台.
  4. 输入 "sv_unlockchapters n" 这里的 n 就是位于 chapterbackgrounds.txt 的动态背景的序号.
  5. 输入 quit 退出游戏.
  6. 重新运行游戏, 这样您选择的动态背景就会显示出来啦.
Note.png注意: sv_unlockchapters 的值保存在 config.cfg 游戏设置文件内, 如果需要, 您可以直接修改此文件. 对于 Half-Life 2, 这个文件可以在 \half-life 2\hl2\cfg\config.cfg 找到, 可以被任何文本编辑器打开.


替换 Half-Life 2 动态背景

如果您想用自己的作品替换 Half-Life 2 的默认动态背景, 只需用上面提到的方法创建 .BSP 与 .VTF 和 .VMT 文件, 把文件名改成您想要替换的章节的名称就可以了. 在 chapterbackgrounds.txt 文件内记录着 Half-Life 2 动态背景的名称:

"chapters"
{
	1	"background01"
	2	"background01"
	3	"background02"
	4	"background02"
	5	"background03"
	6	"background03"
	7	"background04"
	8	"background04"
	9	"background05"
	9a	"background05"
	10	"background06"
	11	"background06"
	12	"background07"
	13	"background07"
}

例如, 如果您想要替换第一个章节的动态背景, 只需把相关文件命名为 background01. 如果要替换第十个章节的动态背景, 只需把相关文件命名为 background06.


屏蔽 动态背景

如果您指想要使用 vmt 来当作背景 (不使用 动态背景), 只需修改 \cfg\valve.rc 加入如下内容:

// load the base configuration
//exec default.cfg
// Setup custom controller
exec joystick.cfg

// run a user script file if present
exec autoexec.cfg

//
// stuff command line statements
//
stuffcmds

如果您要再次启用 动态背景, 只需在 valve.rc 文件中新建一行, 写入 startupmenu .