半条命1开始速通前的配置(游戏文件大致结构,指令说明等)
注:
在阅读此篇文章之前,请阅读


在speedrun(www.speedrun.com/hl1/resources)下载了Half-Life 2005 WON或者Goldsrc Package并解压后,可以看到以下文件:


再次提醒:一定要启动steam并且购买了半条命1原版!

一、半条命游戏文件结构
我们拿Goldsrc Package举例子。
首先打开Half-Life WON(在Goldsrc Package中使用的是这个里面的文件启动半条命1原版),你可以看到几个主要文件夹。其中,valve、valve_hd、valve_WON、valve_won_schinese是最重要的,我下面展开来说。

游戏在启动的时候会先优先使用其他文件夹里面的资源,如果找不到对应的文件,会到valve里面找(won版会到valve_WON里面找)。如果还是找不到,那么该资源在游戏里面将不会被显示(如:音频不播放,模型丢失,天空盒错误等等)。
●valve:存储游戏的基本文件,如地图文件(maps)、音频文件(media、sounds)、模型文件(models)等等。valve是我们一定不能修改的文件夹,它包括了游戏的基本程序逻辑结构。
●valve_hd:里面包含高清模型和音频,可以在游戏的设置里面启用高清模型,但是不推荐使用。
●valve_WON:游戏在启动WON版是使用此文件夹,我们在之后自定义设置的时候把userconfig.cfg文件放在此文件夹里面。
●valve_won_schinese:速通录制的demo和存档(SAVE)均在此文件夹中,上传demo到speedrun时要保存你录制的demo,在这个文件夹里面寻找即可。

二、开始速通文件自定义配置
我们主要针对WON Scriptless 的速通方式进行文件配置。
在valve_WON中,我们可以看到有一个WON.cfg的文件,这个文件千万不能修改,否则你的速通会被认定为无效(文件中有说明)。

我们的自定义设置在userconfig.cfg中,里面有我们自定义绑定的按键指令(bind指令)、为一批指令起的别名的指令(alias指令)和其他的游戏设置指令(比如使用的纹理类型,自定义的准星等等)。
每次游戏在启动的时候会首先执行config.cfg(注:与userconfig.cfg不同,这个文件在valve_schinese文件夹中)中的所有指令,再执行userconfig.cfg(在valve_WON中),最后执行WON.cfg。





三、具体指令讲解
具体的指令配置以及哪些指令在scriptless方式速通中可以使用在speedrun官网上的guide板块有老外的详细讲解(www.speedrun.com/hl1/guides),这里我只举几个简单例子。
●bind指令:
用法:
bind <key> <command> 为某个按键绑定一个指令或者一批指令(在scriptless方式的速通中,除开始计时指令外,一个按键或者一个别名只能包含一条指令。如bind f1 "fps_max 19; wait;wait;wait;wait;wait;fps_max 100"这样的指令不能在scriptless速通中使用。)
举例:
bind z weapon_shotgun 在游戏中按下z键就可以切换到霰弹枪
bind f1 "fps_max 20" 在游戏中按下f1把fps限制到20帧
bind v "save quick" 存一个快速存档
bind g "load quick" 读取名为quick.sav的存档
●alias指令:
用法:
alias <alias name> <commands>
举例:
alias 100fps "fps_max 100"
把后面"fps_max 100"这条指令取一个别名为100fps,这时我们如果再用
bind f1 100fps
就可以非常方便地把帧数设定为100这条指令设置给按键f1,不用再麻烦地输入后面地具体指令。
再以速通开始指令为例
alias run "exec userconfig.cfg;skill 1;map c1a0;bxt_hud_timer 1;bxt_timer_reset;bxt_timer_start;bxt_autorecord run"
为后面这一批指令取别名为run,如果再使用
bind p run
设定按键p为开始速通,这里的run就代指后面("exec userconfig.cfg;skill 1;map c1a0;bxt_hud_timer 1;bxt_timer_reset;bxt_timer_start;bxt_autorecord run")这一大串指令。
由此可见,alias常与bind一起使用,单独的alias只是取别名而已,不会对游戏的按键设置有影响。对于重复的指令可用这个方式减少输入指令的工作量。
●save,load指令:
用法:
save <savename> 存档
load <loadname> 读档
举例:
save quick 存一个名字为quick的存档
load quick 读取刚刚存的档
●map指令:
用法:
map <levelname> 切换服务器到某张地图
举例:
map c1a0 切换到c1a0.bsp
注:不要把load指令和map指令弄混了。
●exec指令:
用法:
exec <filename> 执行一个脚本文件
举例:
exec userconfig.cfg 执行userconfig.cfg中的所有指令
●修改fov指令:
用法:
default_fov <number> 设置游戏fov为特定值,默认为90。数值越大,你看到的东西越多
●cl_showfps指令:
用法:
cl_showfps <0/1> 是否显示fps值,0为隐藏,1为显示
●修改渲染方式指令:
gl_texturemode <texturet_ype>
可以设定渲染模式的类型: gl_nearest_mipmap_nearest,gl_linear_mipmap_nearest, gl_nearest_mipmap_linear,gl_linear_mipmap_linear。
默认为gl_texturemode GL_LINEAR_MIPMAP_LINEAR。
但是推荐使用GL_texturemode GL_Nearest,虽然很糊,墙壁上都是马赛克,但是有些速通技巧要借用马赛克进行位置的调整,所以为了速通速度,还是使用nearest双线性过滤比较好。
●Bunnymod XT指令:
插件Bunnymod XT的指令在大佬YaLTeR的github项目bunnymodXT中有详细说明,地址:https://github.com/YaLTeR/BunnymodXT/wiki/Console-commands-and-variables
这里只分析scriptless速通方式用到的指令。
bxt_hud_timer <0/1>:显示计时器,1为显示,0为隐藏
bxt_timer_reset:计时器重置为0
bxt_timer_start:计时器开始计时
bxt_autojump <0/1>:按住空格自动跳跃,1为打开,0为关闭。scriptless速通方式不能用自动跳跃。
重点:
bxt_autorecord <filename>:自动录制demo,例如bxt_autorecord run。则录出来的demo的名称为run_1.dem,run_2.dem,run_3.dem……每次读档都会自动停止录制当前demo,继续录制下一个demo。速通完成后要输入stop结束录制最后一个demo。

四、我的速通配置参考
大家可以根据自己的习惯调整按键,我的按键只是一个参考。并且我的按键也不是一成不变的,如果我发现另一种方法更好,我会修改自己的按键。
p键:重新开始半条命剧情速通
o键:重新开始危险课程训练速通
z键:切换到霰弹枪weapon_shotgun
x键:切换到mp5 weapon_9mmAR
c键:打开手电筒 impulse 100
v键:存档
g键:读档
j键:读取自动存档
f键:切换到高斯枪 weapon_gauss
t键:切换到手雷 weapon_handgrenade
h键:切换到蜂巢枪 weapon_hornetgun
,键:设置暂停
.键:取消暂停
mwheelup上滚轮键:跳
mwheeldown下滚轮键:蹲
mouse3(滚轮按下)键:设置fps为100
mouse4键(鼠标侧键1):设置fps为4
mouse5键(鼠标侧键2):设置fps为20
b键:取消蹲
alt键:限制fps到29.8(为了jumpbug使用的fps,在跳过串联共振技巧中使用)
其他按键均为默认。

