TF2服务器搭建教程

TF2服务器搭建教程

TYHH10 Lv1

⚠️️注意⚠️

TF2在国内非常冷门,而且结合当前环境来看也不适合搭设服务器,在看之前一定要考虑好,不要脑子一热就搞了
(假如你只是想跟你的好友或朋友之间玩一玩,建议查看这篇教程:
Enabling connections to your server [without portforwarding, external programs or websites])
而且前提是足够的耐心和电脑基本知识还有金钱
而且该教程是随便写着玩,可能会有各种毛病
假如你下定决心搞,那就继续往下看

目录

云服务器

我也没什么好推荐的,看你买的是哪个,网络带宽推荐5M可以满足24人(不过可能还是有点卡)
采购完服务器之后配置安全组,你可以选择新建安全组,也可以直接在默认中加入
这边举例两个云服务器
这个端口根据你设置的来放行

配置完成之后,连接你的服务器进行下一步操作

安装TF2服务器

Windows

需要会使用搜索引擎解决教程中没有提到的一些问题
1.自己部署
首先
前置操作:
点击工具,在文件夹选项中,选择查看,在里面找到”隐藏已知文件类型的扩展名”然后取消勾选(win7及下的)
在文件夹里点击上面查看,勾选文件扩展名(win8及以上)
服务器系统默认是勾选上这个文件扩展名的应该,假如看不到扩展名,就按这个操作一下就行了
1.在C盘或者桌面,新建一个steamcmd
2.目录然后到这个网站下载steamcmd
https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
3.下载完之后把压缩包里的steamcmd.exe解压到刚刚创建的目录里面
在steamcmd目录中新建文本tf2_up.txt和tf2_vd.txt(验证脚本可选)
4.tf2_up.txt在里面输入

1
steamcmd.exe +login anonymous +force_install_dir C:\tf2server +app_update 232250 +quit

5.tf2_vd.txt在里面输入

1
steamcmd.exe +login anonymous +force_install_dir C:\tf2server +app_update 232250 validate +quit

6.保存关闭窗口
7.然后把后缀(扩展名)txt改成bat,双击运行刚刚的tf2_up.bat,SteamCMD会先下载它自身的必要组件之后就会进行服务器本体的下载,在此期间等待即可,假如游戏有更新,关闭服务器,再双击运行这个批处理文件就可以对服务器进行更新
假如服务器缺少文件的话,双击运行tf2_vd.bat就会验证服务器下载那些缺失的文件
下载的时候可能出现问题,多试几次就可以了
假如屏幕上出现了Success! App '232250' fully installed那么代表服务器已下载并安装成功(当然这边脚本中添加了+quitSteamCMD执行完相关操作就会自动退出,所以也就不会显示前面这个了)
8.返回到这个srcds.exe文件的目录里面,右键建一个快捷方式名字随意
鼠标右键快捷方式点击属性,在目标这一栏结尾空格一下,然后输入

1
-console -game tf +ip 0.0.0.0 +maxplayers 24 -port 27015 +map cp_5gorge

其他启动项参考Valve 开发者社区Source Dedicated Server
9.应用,然后关掉窗口双击运行刚刚的快捷方式

使用软件部署服务器

你也可以选择使用软件来管理你的服务器

WindowsGSM

WindowsGSM现代化的一个管理软件,默认支持游戏46个,可以使用插件扩展更多,软件内存占用有些高


截图:
主菜单
Home_Menu
仪表盘
Dashboard_Menu
Discord Bot
Discord_Bot_Menu
插件
Plugins_Menu
设置
Settinge_Menu
安装游戏服务器
Install_Game_Server_Menu

SRCDS server manager

SRCDS server manager老的管理软件,对于双核或单核CPU服务器,软件占用率比较高,可以通过软件下载的服务器比较少,内存占用低
windows_server_srcds_smanageBeta4_6.7z[点击后下载]


截图:主菜单
Home_Menu


设置中文
1.点击设置→语言chi_1
2.在使用语言文件对话框里选择chi.inichi_2
3.点击保存chi_3
保存之后软件会自动重启,重启之后就是中文了
当然,这个中文还是不完整的,但也够了

seDirector

3.seDirector
Windows Server 最低版本2016
图片来自论坛中

主菜单Home_Menu
主菜单游戏服务器,右键主菜单游戏服务器右键


Linux

跟Windows是一样,需要会使用搜索引擎解决教程中没有提到的一些问题
然后需要一些基本Linux知识
这边举例两个发行版,不同的发行版操作可能不太一样
注意:在开始之前,你需要准备一个ssh远程连接工具

这边演示的系统版本是:24.04
装相关的依赖

1
sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install -y lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libsdl2-2.0-0:i386

建立服务器账户,并修改密码

1
sudo useradd -m server && sudo passwd server

如果你直接登录服务器账户,你可能会看到输入框这边只有$
这边需要更改/etc/passwd里面文件的内容

1
sudo vi /etc/passwd

小键盘上的上下左右键进行,光标的移动
然后找到这个

1
server:x:1001:1001::/home/server:/bin/sh

按键盘的I进入编辑模式
将结尾的sh修改为bash
按键盘ESC返回命令模式,在输入:wq保存退出
输入cd /home进入home目录
在当前目录创建两个目录,输入:

1
sudo mkdir steamcmd && sudo mkdir tf2server

创建完后输入cd steamcmd 进入steamcmd目录
然后下载并解压steamcmd压缩包,输入:

1
sudo wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && sudo tar zxf steamcmd_linux.tar.gz && sudo rm steamcmd_linux.tar.gz

下载并解压完成后,更改修改权限给server账户

1
sudo chown -R server /home/tf2server && sudo chown -R server /home/steamcmd

假如你用sudo -i进入临时的root账户需要按Ctrl+d退出root账户
修改完后登录server账户su server

由于服务器运营商基本上都不提供ArchLinux,所以你需要用这个Vps2arch来进行转换
转换好后再进行下面的操作
安装需要用到的东西(如果已经安装则不需要)

1
sudo pacman -S vim wget

安装好后,我们需要先开启Arch Linux官方的软件仓库,输入:

1
sudo vim /etc/pacman.conf

详细请查看官方Wiki
小键盘上的上下左右键进行,光标的移动
然后找到这个

1
2
#[multilib]
#Include = /etc/pacman.d/mirrorlist

按键盘的I进入编辑模式
把前面的#删掉(两个都要)
按键盘ESC返回命令模式,在输入:wq保存退出
更新并安装相关依赖:

1
sudo pacman -Syu && sudo pacman -Syy lib32-gcc-libs lib32-libcurl-gnutls

建立服务器账户,并修改密码:

1
sudo useradd -m server && sudo passwd server

输入cd /home进入home目录
在当前目录创建两个目录,输入:

1
sudo mkdir steamcmd && sudo mkdir tf2server

创建完后输入cd steamcmd 进入steamcmd目录
然后下载并解压steamcmd压缩包,输入:

1
sudo wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && sudo tar zxf steamcmd_linux.tar.gz && sudo rm steamcmd_linux.tar.gz

下载并解压完成后,更改修改权限给server账户

1
sudo chown -R server /home/tf2server && sudo chown -R server /home/steamcmd

演示的系统版本为:9.6-x86_64
装相关的依赖

1
sudo yum install glibc.i686 libstdc++.i686 libcurl.i686 zlib.i686 ncurses-libs.i686 libgcc.i686 

建立服务器账户,并修改密码:

1
sudo useradd -m server && sudo passwd server

输入cd /home进入home目录
在当前目录创建两个目录,输入:

1
sudo mkdir steamcmd && sudo mkdir tf2server

创建完后输入cd steamcmd 进入steamcmd目录
然后下载并解压steamcmd压缩包,输入:

1
sudo wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && sudo tar zxf steamcmd_linux.tar.gz && sudo rm steamcmd_linux.tar.gz

下载并解压完成后,更改修改权限给server账户

1
sudo chown -R server /home/tf2server && sudo chown -R server /home/steamcmd

这一步发行版都一样
登录server账户su server
输入cd /home/steamcmd切换到steamcmd目录,假如原本就是则不需要
然后输入

1
./steamcmd.sh +login anonymous +force_install_dir /home/tf2server +app_update 232250 +quit

进行服务器本体下载,刚开始会下载steamcmd相关的文件
如果遇到什么steamcmd的相关报错请访问这两个网页
Valve开发者社区
Team Fortress 2 Wiki
当你看到Success! App '232250' fully installed.
那么代表下载并安装成功了
切换到服务器目录,输入cd /home/tf2server
来进行一次服务器的启动测试,输入:

1
./srcds_run -game tf -console +map cp_5gorge +ip 0.0.0.0 -port 27015 +maxplayers 24

如果服务器可以正常启动和加入服务器,就可以进行之后的操作了

Alma Linux如果你直接启动可能会看到:

1
FATAL ERROR: Could not load: replay_srv.so 

你需要使用这个指令

1
ln -s /usr/lib/libcurl.so.4 /home/tf2server/bin/libcurl-gnutls.so.4

解决方案来自github.com/GameServerManagers/LinuxGSM/issues/2062
这个好像是个通用的方案,上面的其他两个我没遇到过所以不好说

使用脚本部署服务器

你可以使用LGSM脚本来进行的安装
访问这个Team Fortress 2 |LinuxGSM_网页选择Install选项
根据网页的说明进行操作,先建议把账户切换到root
这样的脚本可以自动化安装相关的依赖
然后输入安装指令,根据提示进行输入
如果安装没有任何问题就可以返回那个网页,选择Basic Usage选项
查看相关指令
不过有个注意的地方,假如你上传文件的时候不是他这个账户,你就需要把你刚刚上传的文件权限赐予给那个账户,否则你的启动服务器时会报错

server.cfg

建议保存的编码格式为UTF-8

这个文件将会在服务器启动和更换地图的时候自动执行里面的内容
示例

1
2
3
4
5
6
7
8
9
10
11
12
// 显示在服务器浏览器和计分版的服务器名字
hostname "服务器名字"
// 留空即没有服务器密码
sv_password ""
// 使用控制台rcon权限的密码(必须要填写的)
rcon_password "把我这段文本替换成你自己的"
// 每次地图轮换的时间,按分钟计时。0为不轮换地图。
mp_timelimit "50"
// 每次地图轮换所需的回合数。0为无限制。
mp_maxrounds "10"
// 允许客户端下载定制文件 (比如喷漆,自定义地图,自定义内容等等)
sv_allowdownload "1"

TF2 Wiki有完整的示例Example Server.cfg for TF2 dedicated server,也可以使用我这边给的server.cfg[点击后下载]
PS:这边提供的文件编码为UTF-8

装插件

首先我们需要安装Metamod:SourceSourceMod(以下简称MM:S和SM)
前者是运行SourceMod平台的基础,后者就是提供sm插件的运行环境
ps:插件文件的扩展名为.smx这个是已经编译好的文件.sp是源代码
根据你的系统下载MM:SSM
MM:S和SM稳定版的压缩包
Linux在自己本地电脑下载好后,通过FTP上传到服务器tf目录
上传或者下载好后将压缩包移动到tf目录里面
Linux

1
2
tar -xf sourcemod-*.tar.gz
tar -xf mmsource-*.tar.gz

压缩包里面包含两个文件分别是
addons
cfg
Windows使用解压软件解压的时候自动创建了一个文件夹,把里面的addons,cfg移动到tf目录
Linux建议使用指令重新赐予一下目录的权限,以防权限是root

1
sudo chown -R server /home/tf2server/tf/cfg && chown -R server /home/tf2server/tf/addons

如果是完全跟着教程来走的话,就直接把这些内容复制就行了,但这个目录如果是自己改过的,那需要修改一下
如果没问题的话,重启tf2服务器往后输入smmeta
meta这个可以选择不输入,因为MM:S装好之后SM也就可以正常运行了
假如控制台输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SourceMod Menu:
Usage: sm <command> [arguments]
cmds - List console commands
config - Set core configuration options
credits - Display credits listing
cvars - View convars created by a plugin
exts - Manage extensions
plugins - Manage Plugins
prof - Profiling
version - Display version information

Metamod:Source Menu
usage: meta <command> [arguments]
alias - List or set an alias
clear - Unload all plugins forcefully
cmds - Show plugin commands
cvars - Show plugin cvars
credits - About Metamod:Source
force_unload - Forcefully unload a plugin
game - Information about GameDLL
info - Information about a plugin
list - List plugins
load - Load a plugin
pause - Pause a running plugin
refresh - Reparse plugin files
retry - Attempt to reload a plugin
unload - Unload a loaded plugin
unpause - Unpause a paused plugin
version - Version information

那么MM:S和SM就装好了
装好之后你就可以去,SourceMod Plugins这边找插件了(这个已经提前设置好过滤器,游戏为TF2)
SM文件结构,查看wiki alliedmods的Managing your Sourcemod installation/zh网页
你下载过来的插件,假如位置放错了那么是无法正常运行的
所以建议试看一下这个这个网页以防文件放错位置
不过要注意,假如你下载过来的没有.smx也就是编译好的插件
只有.sp源代码那么你需要自行编译
不要忘记给自己加个权限
打开目录tf/addons/sourcemod/configsadmins_simple.ini的文件
划到最底下在最后一行添加

1
"STEAM_x:x:xxxxxxx" "99:z" //xxx

相关权限,请查看Adding Admins
这里Steam ID 可以访问lookup -STEAMID I/O网站获取到了
只需要把你的个人主页网址输进去,然后点击lookup
然后填写进去保存
服务器控制台中使用指令sm_reloadadmins刷新
进入服务器输入!admin这个指令,如果弹出的菜单,那就没问题了


插件编译

关于插件的编译
Windows,你只需要把那.sp文件拖到compile.exe这个执行文件上就行了
文件路径是:

1
\tf\addons\sourcemod\scripting

用这个spcomp.exe也是一样的,因为compile.exe本质上也是调用这个
Linux,使用
这一演示的是sm自带的那个funcommands.sp文件

1
2
3
// 这里的路径根据你的sm文件位置来填
cd /tf/addons/sourcemod/scripting
./compile.sh funcommands.sp

如果没有问题,你就看到这个输出

1
2
3
4
5
6
7
8
9
Compiling funcommands.sp...
SourcePawn Compiler 1.12.0.7125
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2021 AlliedModders LLC

Code size: 77480 bytes
Data size: 17588 bytes
Stack/heap size: 17028 bytes
Total requirements: 112096 bytes

编译好的文件会放在这个里面
scripting/compiled
假如是用spcomp那么编译好的文件就在.sp所在的文件目录Windows也一样
后面的要编译的文件
你可以直接填写路径加文件名,只不过可能会报无法写入文件
sm12版本报错

1
2
3
4
5
6
7
8
9
10
11
12
server@xxx:/.../scripting$./compile.sh /.../scripting/funcommands.sp

Compiling /.../scripting/funcommands.sp...
SourcePawn Compiler 1.12.0.7125
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2021 AlliedModders LLC

/home/.../scripting/funcommands.sp(350) : error 419: cannot write to file: "compiled//.../scripting/funcommands.smx"
350 | }
---------^

1 Error.

include目录文件放编译所需要的依赖,文件格式为.inc`
也就是文件里面这个
就是你在下载插件的时候,插件运行所需要的依赖
当然有些会标注仅编译,那么就是游戏中是用不到的,但是编译的时候是要用的
假如他没有标记出来,用到哪些依赖
可以先进行一次编译,如果报缺少的话,你就打开文件看这个

1
#include <xxxx>

这个一般都是指向依赖的.inc的文件名字
可以直接复制粘贴到浏览器中搜索
然后下来放进,scripting/include目录就可以了然后再进行编译
除去依赖错误,还有其他的代码错误
一些情况下可能需要修改代码(搜索,然后再解决问题),或者是提交报告或者就是问大佬
我这边自己也是不懂这些错误qwq,所以我这边也没法给你提供一些参考的解决方法
不过你可以看一下以下这些说不定会有帮助:
wiki.alliedmods.net|Scripting FAQ (SourceMod)
wiki.alliedmods.net|Introduction to SourceMod Plugins
forums.alliedmods.net|[IDA/DHooks]How to get vtable offsets
forums.alliedmods.net|[TUT] SourcePawn Scripting - Tips, Basics to Advanced
forums.alliedmods.net|[TUT] Compiling errors

自定义资源的下载

当你开始添加一些地图、模型、材质等资源的时候可能会出现以下情况

注意

下面四个提到的问题并非是下载问题,可能也是其他原因
比如资源本身有问题、客户端这边的问题等等…..
所以这边只提下载的问题

  1. Missing map maps/xxx.bsp, disconnecting
    Missing map
  2. 玩家看模型以及一些地图物品是ERROR
    Missing model
  3. 地图(有些会把资源打包进地图里)和模型材质黑格子
    Models Materials Missing
  4. 玩家听不到音效或音乐

通常是没有配置下载,其次就是是没配置好下载配置文件,当然你忘记传资源也是一种
FastDL有以下几种方式

  1. 玩家直接在服务器上下载资源(不推荐,这个会显著影响到当前服务器中的玩家的游戏体验)
  2. 通过另外台服务器部署一个站点,然后再通过那个站点链接来下载(需要一些建站基础,这个下载是就取决于那台服务器的上行带宽多少了)
  3. 使用对象存储(OSS-阿里云 or COS-腾讯云),来进行资源的下载(不过这个需要根据的情况来决定,如果你的资源量不是很大用用还是可以的,但是你资源量很大的话这个非常的烧钱)

如果你使用第一个来进行下载,你可能需要先更改这个 net_maxfilesize 这个是决定玩家可以从服务器上直接下载文件的最大大小,上限为64mb默认为16
不过依旧不推荐直接从服务器上面下载文件

第二个方式部署站点,这个你需要自己在网上搜索教程

二和三有了链接之后,就可以在server.cfg中配置上(上面的net_maxfilesize也一样)

1
sv_downloadurl "http://your_download_server.com/tf2/"

随后客户端就会在连接服务器的时候通过这个链接向站点或者对象存储请求这个文件下载
二三两种,上传上去的文件有两个选择
第一个是直接上传文件
第二个就是进行bz2后在再上传
一般都是建议进行bz2压缩后再上传到下载服务器
需要先去仓库下载bzip2-1.0.8.0-win-x64.zip可执行文件
下载好后找位置解压,你就会看到4个文件
需要使用的是bzip2.exe
使用方式就是把文件拖上去即可

bzip2不支持文件夹批量压缩

但是你可以使用bzip2 Tool进行批量压缩

(打开一片空白,这个需要挂梯子不知道为什么:( )
一个窗口只能一个建议只压缩一个目的,压缩另外一个再打开一个
压缩好后会在原文件那边创建一个bziped双击打开后会有的根源文件一模一样的那个就是压缩后的(里面的bziped这个是压缩时的临时目录,不需要管)
然后把这个压缩好了上传到下载服务器或者对象存储中


下载配置文件这两种一个是SM下载插件另外一个是MvM
MvM你要根据你添加的任务中,所需要的材质模型音频配置到当前任务对应的地图文件夹里面地图以文件名命名的.res中(这个需要自行创建)
格式如下

1
2
3
4
5
6
7
Resources
{
"models/xxx/..." "file"
"materials/xxx/..." "file"
"sound/xxx/..." "file"
}
PS:需要包含目标的完整文件名字+扩展名

SM下载插件举例SM File/Folder Downloader and Precacher
addons/sourcemod/configs/downloads_simple.ini

1
2
3
models/xxx/
materials/xxx/
sound/xxx/

参考资料

Blog

https://blog.midheart.club/2021/02/01/tf2_ds_cn/

TF2 Wiki

https://wiki.teamfortress.com/wiki/Linux_dedicated_server
https://wiki.teamfortress.com/wiki/Windows_dedicated_server/zh-hans

AlliedModders

https://wiki.alliedmods.net/index.php/Category:SourceMod_Documentation

  • 标题: TF2服务器搭建教程
  • 作者: TYHH10
  • 创建于 : 2024-04-11 12:49:43
  • 更新于 : 2025-06-30 11:45:22
  • 链接: https://blog.tyhh10.xyz/2024/04/11/tf2_server_setup_tutorial/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论