【教程类】关于Source Mod的安装与故障排除

※注意,本文章并不适合完全没有接触过起源游戏的玩家阅读,最好对起源的文件结构有一定了解再阅读
※本文章只面向正版玩家,即Steam必须拥有Valve的一些起源游戏,其中半条命2是必须的,当然,最好有Valve全家桶
※本文所指起源Mod并不包括BMS(黑山起源)的Mod
※本文章更适合在网页端上阅读

序章:文章简介
本文章的写作目的是帮助更多刚刚接触起源Mod的玩家解决一些常见的安装问题,包括基础的安装操作和一个常见问题的解决方案,由于我对起源的了解程度也并不深,所以只是简单介绍,有错漏的地方欢迎指出,射射兄弟
注解:SP为Singleplayer,MP为Multiplayer,Source SDK Base有时缩为Base
快速阅读指引:
加粗:标题/专有名词
红:重点
棕:步骤
绿:提醒
粉:链接
❶(黑底白字圈):注释标记

1、介绍
1.1 Source SDK Base
简而言之,Mod以这玩意为本体,这个东西的作用大概就是整合调用各个起源游戏的资源
版本:
Source SDK Base 2006
Source SDK Base 2007
Source SDK Base 2013 SP
Source SDK Base 2013 MP
其中常用的是2007和2013 SP
值得注意的是,Base 2013 SP常常需要更改参与测试为upcoming,但这不是必须的步骤,如果Mod的安装说明或者简介信息里没有写明需要upcoming,则不需要做这一步

你可以通过对着库存里的Base 2013 SP右击—属性—测试—upcoming—关闭,并等待Base更新完毕后即切换为upcoming

了解Base的具体信息请看:https://developer.valvesoftware.com/wiki/Source_SDK_Base
※安装了Base并不意味着不需要安装游戏,游玩mod仍需要安装对应的游戏
有的mod会把所需游戏写在文件说明里,所以仔细阅读,特别留意require之类的词,没写的话就看下的是什么游戏的mod,把对应游戏装了就行,这个因mod而异
1.2 sourcemods文件夹
sourcemods文件夹用于存放起源mod,Steam会自动读取这个文件夹里的mod,并将其显示在游戏库中
若安装了任意一个Base,这个文件夹将出现在你Steam安装目录下(初始Steam游戏库)的steamapps里
举个例子,我的sourcemods文件夹位置是D:\games\Steam\steamapps
如果你想更改这个玩意的位置就只能重装Steam了,请勿自己创建一个sourcemods文件夹,Steam不会认非Steam初始安装目录下的sourcemods文件夹
尽管如此,可以通过对base使用-game参数手动定位mod位置,然后运行base以启动mod
例:Obsidian Conflict使用的是Base 2007,那么我就给Base 2007加入以下参数
-game "D:\games\Steam\steamapps\sourcemods\obsidian"


请注意,路径必须为纯英文
另外,已证实就算Base和sourcemods在两个不同的硬盘里也不会有什么问题
补充:基于符号链接, 可随意修改位置的sourcemods目录
原理大概是让Steam以为你的sourcemods在Steam安装目录下的steamapps里, 但实际上那是个符号链接, 可以指向任意位置(大概吧, 反正应该没人想放到system32里啥的)
CMD使用 mklink /d 创建符号链接( /d 是符号链接), 语法见
https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/mklink
Powershell使用 New-Item, 语法及示例见
https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/new-item#7
以CMD为例 (也推荐CMD, 语法简单点)
mklink /d "D:\games\Steam\steamapps\sourcemods" "E:\SteamLibrary\steamapps\sourcemods"
第一个路径:Steam安装目录下的steamapps, 链接名为sourcemods, 虚假的sourcemods
第二个路径:实际的sourcemods目录位置
长度问题, 命令可能显示出来会换行, 不要换行, 用空格分割路径, 路径最好纯英文
目前也没有发现这样弄有什么问题
感谢adm-sus-233的补充, 相当有用, 几乎是无痛转移sourcemods
1.3 SteamPipe❶
关于SteamPipe的具体概念较为复杂,想要了解请看:https://support.steampowered.com/kb_article.php?ref=7388-QPFN-2491
https://developer.valvesoftware.com/wiki/SteamPipe:zh-cn
对于起源Mod来说,SteamPipe用于强制挂载模块,这东西对新mod来说没什么影响,但是老mod可能因此无法运行,这个知道有这一回事就好,故障排除涉及这个玩意
准备工作
1.安装Source SDK Base

基本上拥有任意一款起源游戏就会获得一套Source SDK工具,访问你的Steam工具库,找到Source SDK Base,并按照Mod需要下载Base版本或下载两个常用的版本,请注意Base 2013是否被要求设置为upcoming
※如果您在运行mod时没有下载所需Base,Steam会自动提示下载
2.找到你的sourcemods文件夹
照着上述介绍找就行了,再次强调,这个文件夹在Base安装完毕之后才会出现,找不着就不是我的问题了
一切就绪,该去找点Mod来试试了

2.Mods
2.1 获取一些Mod
提供两个找Mod比较好的网站,都是外网,英语实在不行就备个翻译器,自己摸索一下
1、Mod DB
https://www.moddb.com/

挺老的网站了,不解释,大多数人都从这里找各种游戏的mod
优势:老牌网站,老Mod储备比较齐全,比较适宜找大型Mod
劣势:下载有点小霸王,虽然没有墙,但有时候加载特别慢,有些Mod会故意拉人刷高分,导致有些Mod的评分不真实
2、RTSL
https://www.runthinkshootlive.com/

专门针对HL玩家的Mapping/Modding社区网站,可以找Mod也可以找地图
优势:有不少优质的中小型Mod,新Mod、新地图源源不断,Mod评分比较准
劣势:不仅下载慢,加载也慢,最好开个纸飞机访问
2.2 安装Mod

如果你完成了介绍篇的准备工作,那么,请先查阅Mod的说明(通常为Installation.txt或者Readme.txt之类的东西,亦或者在网站的文件描述上),如果说明有写安装,那就按着说明做,该装的游戏装了,该放的文件夹放了就行

如果没有,一般来说,只需要把Mod文件夹解压到sourcemods文件夹然后下载mod对应的游戏(下的什么游戏的mod就下什么游戏)即可,通常要解压的应该是一个文件夹,而不是一堆,但是有个例外就是MMod,那玩意是一大堆文件夹的,看着安装说明装就行
重启Steam,Mod将会出现在你的Steam游戏库里,玩就行了

章节前言

很多老mod都由于Valve的SteamPipe更新导致了一系列问题,无法正常游玩
而玩家社区的辛勤付出使这一切都有了较好的解决方案,不仅解决了问题,也使Mod变得更赏心悦目,即使Mod的开发者没有为Mod修复,也会有热心人制作修复补丁,即使没有修复补丁,我们仍可以通过用解包的旧版起源引擎游玩这些老mod,当然,我们自己也可以通过修改gameinfo.txt修复一部分SteamPipe问题,但这不一定能解决所有问题
在开始解决棘手的问题前,先来排除一下其他问题吧

3.故障排除
3.1 检查&分析问题
出问题有很多可能,先按照以下内容进行排查
如果mod没有出现在库里,说明mod安装有误,检查一遍自己怎么装的
以下均为无法运行mod/运行直接崩溃问题的原因及其解决方案
1.没有下载Mod所需的Base和游戏
一般来说,Mod会在文件描述或者说明文本里面说明所需Base和游戏,如果Mod根本无法运行,检查一下游戏装了没,有时候装了Base会把游戏忘了

2.Base 2013没有切换到upcoming测试/没有调回不参与测试
打了Source SDK 2013 Patch的mod需要Base 2013 [upcoming],有些mod也同样需要这个,而有些mod不需要upcoming,所以注意一下文件描述,这些都写得清清楚楚的,对着切测试就行,不知道怎么切的话上面有写,自己看一下

3.尝试验证Base完整性
有些mod需要验证一下Base的完整性才能正常运行,如1187
4.是由于SteamPipe导致的错误
如果运行mod时遇到了类似章节前言那张大图的错误提示,又或是没有画面只有声音,然后游戏崩溃,那么恭喜你,你遇到了SteamPipe问题
别担心,以下会详细介绍这种问题
3.2 SteamPipe问题的解决方案
关于SteamPipe问题是什么,章节前言已经说明了,这里有三种可选的解决方案,将按照推荐程度分先后介绍
① SteamPipe Fix/Source SDK Patch
这是解决该问题的最优解,使用Source SDK Patch不仅能修复SteamPipe问题,还能解决一些mod的bug并增强画面效果
这些东西一般可以在mod的moddb页面的files里找到
也可以在这里搜索Source SDK Patch:
https://www.moddb.com/members/malortie/downloads
看眼文件描述先,patch都是覆盖式安装,一般需要Base 2013 SP [upcoming]
如果这个办法不行,还有别的办法
② Source Unpack
Source Unpack是SteamPipe更新前的最后一版起源引擎(build 5135),内含解包的半2和传送门1,但您仍然需要在Steam库中拥有(且需要下载)HL2和Portal以运行Source Unpack
首先你需要拥有一定的英语水平,因为你将需要阅读大量资料,有关如何使用Source Unpack运行mod等我将不会在这里详细写出,但如果实在搞不懂或者有翻译需求,可以评论区提议,这个不是我懒的问题,绝对不是(某粉色app报错饼干)
有关Source Unpack的资料和下载途径可以在这里找到:https://wiki.sourceruns.org/wiki/Source_Unpack
请务必认真阅读Readme部分,那都是很重要的说明
※ 另外,Source Unpack自带了两个工具:
一个是YaLTeR's Source Pause Tool,常用于速通/分段速通,这个工具可用于启用自动连跳
另一个是RInput,移除鼠标加速的工具,这个在半1mod里的作用尤为明显❷
工具怎么用写在Readme里了
③ 手动修改gameinfo.txt
这是下下下策,如果能通过前面的方法解决,尽量不要尝试这个
介绍:SteamPipe更新到底造成了什么问题,为什么会出现文件缺失
SteamPipe更新将游戏所在的路径更改了,比如
[steam installation directory]/steamapps/[username]/half-life 2/
.
在更新后变成了
steam installation directory]/steamapps/common/Half-Life 2/
.
这导致了什么,gameinfo.txt会告诉Steam这个mod需要加载什么东西,但由于SteamPipe更新导致的路径更改,那些没有被修正的gameinfo.txt仍然保持着原来的读取目录,就无法找到所需文件,因此才提示缺失文件
这就引出了推论:可以通过手动修正gameinfo.txt解决这个问题
找到mod的gameinfo.txt,进行编辑,修正appid/路径等信息即可,细节和路径模版请参阅:http://lambdageneration.com/modding/source/fixing-half-life-2-and-portal-mods-on-steampipe-a-quick-guide/
最后警示:此方法只能解决缺少文件导致的问题,并不能解决引擎更新导致的问题,因此,不确保100%成功且非常不推荐可以在采用其他方法运行的情况下选用此方法
只要有心,问题迟早会得到解决

注释解析
❶SteamPipe问题也同样存在于一些金源mod,尽管很多受影响的金源mod不至于无法运行
❷由于很多半1mod发布时间在半1支持原始鼠标输入前,所以很多mod仍不支持原始鼠标输入(即使本体支持也没有用),在极大多数mod开启原始鼠标输入将会导致鼠标移动忽快忽慢等问题,而RInput可以解决这个问题
RInput的Github:
https://github.com/VolsandJezuz/Rinput-Library
这是新版,旧版作者已停止更新,SourceRuns Wiki的那个链接是旧版的

结语
这部分没有什么重要的内容,单纯来看教程的可以忽略了
因为写这篇文章,几天没有睡好觉
起初我写这篇文章的契机就是一天有人问怎么装起源mod,因为安装起源mod比金源繁琐多了,而且好像也没有什么特别好的教程类文章,所以我打算自己写一个,留着以后有人再问可以让人直接看
起了个草稿,一周断断续续写了第一部分的内容,完成了20%左右因为SteamPipe问题不得不停滞,花了一个晚上研究这个问题,顺便也抽空陪朋友打打游戏什么的,然后不知不觉就咕了两周,最后在归纳SteamPipe上重新选择了比较严谨的写法
这周我重新开工写这篇文章,就开始查资料写草稿,到现在基本上已经完成了,剩下的事情就是复审三遍/删改(实际上删改最多的是结语,删了足足有两百多字,写了很多不该写的东西上去,从第一段就可以猜到我到底写了什么上去)
如果看过我以前写的文章,很容易发现,这篇文章写得比较正经,因为这篇我是认真写的
我知道有些人可能不喜欢看到那堆五颜六色的文字,所谓的快速阅读指引只是为了避免我写一大堆废话而设计的,虽然这次好像并没有多少句话是废话
这篇文章理论上也不会有多少人看,那我为什么还要急着写完,不知道,我喜欢
不清楚这篇文章写得行不行,感觉会有人看不下去这个排版

感谢您看完以上的一堆废话,如果您能给些修改建议或者觉得文章哪里存在错漏/不严谨,请私聊或评论指出,我会尽快修改
——3days Vikazi
THE END