TF2社区服务器开服教程
TF2社区服务器开服教程
一. 前言
写在开头,由于国内TF2社区不断地缩小,流失的玩家数量比不上新加入的玩家数量,所以你在一腔热血之开服时最好还是思考一下:是不是我真的想当服主?我有什么办法让玩家来玩我的服务器?有不少需要你操心的东西。假如你只是想建一个朋友玩玩的服务器就好,那可以不用太理会上面的问题。
下面的教程,不需要你明白得任何的编程知识,只要跟着一步一步做,你也可以开起自己的服务器。
假如你发现了有疏忽的地方,或者是有不懂的地方,欢迎进行PR和issue。
- 二. 前置条件
- 三. 购置云服务器/VPS
- 四. 配置云服务器的安全组(非必要但很重要)
- 五. 安装TF2服务器
- 六. 我想装各种服务器的插件
- 七. 疑难解答
二. 前置条件
金钱,假如你是一名学生或者新用户,那你通常只需要几百块即可租到一台一年的云服务器。
耐心,既然是一步一步做的教程,你当然得有耐心。
基础的电脑知识。例如解压和编辑文本。
三. 购置云服务器/VPS
一般来说,不推荐个人用户使用阿里云,但是阿里云已经是个人用户能买到的不错的国内服务了。在此教程中,将以阿里云的云服务器为例。首先你得有一个阿里云账号,有的话你可以直接登录或用第三方登录,不然你得先注册一个。
阿里云一般会给新用户极大的优惠力度。你可以在阿里云首页的左上角”最新活动“里面看到各种优惠活动。按照你自己喜欢的活动进入即可。对于TF2服务器来说,你只需要一个1核2G内存的云服务器即可满足需要,假如你要承载24~32人的服务器,那十分建议使用5M的带宽,不然玩家多起来就会很卡。你可以在活动中的ECS区中挑选 “ECS突发性能 t5” 来购买。此实例的好处是,带宽可以进行临时调整来满足玩家多的时候的负载。关于地域选择,一般选择离你近的地域。根据咖啡厅2021年1月的数据,下载流量排行前五的为广东、浙江、境外、山东、湖北,你可以以此作为参考。
在购买之前,会需要你进行实名认证。按照步骤做就可以了。
一般来说只需要注意你的配置为1核2G内存、5M的带宽(也可以选择1或2然后在需要这么多人的时候进行临时调整)、地域、大约40G的硬盘和操作系统。假如你图形化的操作页面,选择Windows;想要节省更多的服务器资源,选择Linux。我选择了Linux的发行版Centos7。
在付款之后,你终于获得了你的第一台云服务器。
四. 配置云服务器的安全组(非必要但很重要)
在购买了云服务器之后,你可以得到你的云服务器的公网IP、内存等各种情况。默认的情况下,服务器的安全组是开放所有端口,这是不安全的,因此我们需要设置一套自己的安全组。
在阿里云控制台进入“云服务器ECS”,在“网络与安全”中点击“安全组”,进入安全组页面。
点击右上角的“创建安全组”,按照以下图片进行配置。
检查无误后点击“创建安全组”,即可成功创建专用于TF2服务器的安全组。
点击“实例与镜像”中的实例,点击你刚刚购买的实例,进入实例信息。点击上方的安全组。点击“加入安全组”,将你刚刚做好的安全组添加到实例中,然后移除默认的安全组,即可完成。
完成了安全组设定之后,就准备开始操作实例了。
五. 安装TF2服务器
A. Windows系统
a. 使用便捷的srcds_manager软件来安装服务器
点击下载服务器,选择APPID为232250的服务器下载即可。然后设置啥的都有图示,这里不会细说。
原帖丢了。虽然软件仍可用。但是你可以用另一个WindowsGSM。
WindowsGSM 使用办法看文档。
b. 手动安装服务器
1. 进入远程桌面
假如你选择使用Windows Server系统,那你可以使用图形化界面来管理服务器。在此教程中,服务器将安装在目录 C:\hlserver
中。首先你需要登入你的实例,你可以直接使用阿里云提供的VNC的方式进入你的云服务器;也可以选择RDP(远程桌面连接)的方式来进入你的实例。
VNC登入方式安全简单,仅需在实例信息界面点击登录,点击VNC方式即可。
RDP登入,需要你在远程桌面连接程序中输入云服务器的外网IP,系统用户名和密码。假如你忘记了密码,你就需要重置密码。
2. 下载并安装SteamCMD工具
给你的SteamCMD创建一个目录,如 C:\steamcmd
。然后使用此链接下载。
https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
解压zip压缩文件到目录中。
3. 创建SteamCMD脚本(已非必要)
在你刚刚解压工具的目录中创建一个文本文档,名为 tf2_ds.txt
。编辑文本为以下内容。
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login anonymous
force_install_dir c:\hlserver\
app_update 232250
quit
保存。
4. 创建SteamCMD更新脚本(必要)
使用记事本、Notepad3等文本编辑工具创建一个名为 update.bat
的文件。编辑文本为以下内容。
@echo off
start steamcmd +login anonymous +force_install_dir C:\hlserver +app_update 232250
5. 开始下载/更新
运行 update.bat
开始下载,内容将超过8GB,因此你可能需要等待几小时。有时候,会因为网络问题而中断,你可能需要多次运行更新脚本直到出现了 Success! App '232250' fully installed.
的字样才算完成了下载/更新。
每次服务器需要更新时,你都可以运行更新脚本进行更新。
6. 创建运行服务器的快捷方式
在你的安装TF2服务器的目录下,右键点击srcds.exe,创建快捷方式。重命名其为 Start Server
或其他你喜欢的名字。右键此快捷方式,点击属性。在“目标”文本框中,在srcds.exe后面加一个空格,然后输入以下内容。
-console -game tf +maxplayers 24 -port 27015 +map cp_dustbowl
点击“确定”。
假如有好奇心,这是各种命令行的意思。
-console
- 以控制台方式运行服务器,可节省资源。-game tf
- 设定运行的游戏为军团要塞。+maxplayers 24
- 设定最大玩家数为24.-port 27015
- 绑定到指定的端口(27015是默认)。+map cp_dustbowl
- 指定服务器启动时运行的地图。
7. 创建服务器配置文件
进入你的服务器安装目录,进入 tf/cfg
文件夹。使用记事本或Notepad3等文本编辑软件创建 server.cfg
。并编辑此文件输入以下内容。
// 显示在服务器浏览器和计分版的服务器名字
hostname "你的服务器名字"
// 留空即没有服务器密码
sv_password ""
// 使用控制台rcon权限的密码
rcon_password "Your_Rcon_Password"
// 每次地图轮换的时间,按分钟计时。0为不轮换地图。
mp_timelimit 30
// 每次地图轮换所需的回合数。0为无限制。
mp_maxrounds 10
// 允许客户端上传定制文件(比如喷漆)
sv_allowupload 1
// 允许客户端下载定制文件 (比如喷漆,自定义地图,自定义内容等等)
sv_allowdownload 1
// 最大允许上传的文件大小,按MB计算 (可选)
net_maxfilesize 15
一个包含更多服务器控制台变量版本的server.cfg将在仓库中可供下载,你只需要编辑。
8. 启动服务器
运行 Start Server.ink
快捷方式
B. Linux系统
Linux系统比Windows更稳定,更少占用,当然对初学者也需要一点点的钻研心态。如果可以,最好还有一点英语基础比较好。
如何管理云服务器上的文件?你可以使用软件WinSCP,一个开源的图形化SFTP客户端。添加云服务器的外网IP为站点,以SFTP协议登入。
a. 使用LGSM脚本快捷安装服务器
如何登入Linux系统的云服务器,你当然还是可以使用阿里云提供的网页工具,或者使用例如putty的SSH工具。关于如何使用putty,这里贴一个外部链接。
虽然Linux系统有各种不同的发行版,但操作方法大致是差不多的。此教程对于不知道如何操作Linux的人来说也可以使用。并且十分方便快捷。在此处,我们使用 Linux Game Server Managers 制作的便捷的脚本。
在示例中,我们使用的是CentOS 7。
1. 安装前置
使用root登入后,输入以下代码执行。
yum install epel-release
然后输入以下代码执行。
yum install curl wget tar bzip2 gzip unzip python3 binutils bc jq tmux glibc.i686 libstdc++
然后输入以下代码执行。
yum install libstdc++.i686 libcurl.i686
2. 安装TF2服务器
创建一个新的用户,名为tf2server
adduser tf2server
给tf2server设置一个密码
passwd tf2server
方便的话,我们可以给这个新用户添加sudo权限,以方便后期的操作。关于如何sudo的操作,参考外部链接。
假如你不知道如何在Linux环境下编辑文本,也可以顺手用搜索引擎来搜索答案。
登入到tf2server。
su - tf2server
下载linuxgsm.sh
wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh tf2server
运行安装脚本并跟随提示来安装
./tf2server install
当问你Y/N(即是或否时),你都可以选择Y,并不会有什么严重的后果。
安装的过程中,你可能会遇到一个问题,即无法从Github上获取文件,这是因为Github的某些域名与中国大陆的网络的相性并不好。你可以使用host来解决这个问题。你可以使用我仓库中的host文件。放到etc文件夹即可。
3. 基本用法
你需要以tf2server的用户执行以下指令。
你可以直接查看所有指令的说明。
./tf2server
想启动服务器,只需输入以下代码执行。
./tf2server start
停止服务器。
./tf2server stop
重启服务器。
./tf2server restart
打开控制台。
./tf2server console
当你要退出控制台时,使用CTRL+B+D。使用CTRL+C会关闭服务器进程。
更新服务器。
./tf2server update
跳过更新检查快进到SteamCMD的更新。
./tf2server force-update
验证服务器文件完整性。
./tf2server validate
b. 使用 One-Click-Run_Source_Server 脚本
c. 手动安装服务器(熟悉Linux系统时)
仍然以 CentOS 7 64-bit 为例,假如你有兴趣,可以直接看我在TF2Wiki上的低劣的翻译页面。以下内容也几乎全部来自TF2Wiki。**(以下内容可能已经过期!)**
Linux_dedicated_server/zh-hans
※. 使用Docker
假如你打算使用Docker。
docker run -d --net=host --name=tf2-dedicated -e SRCDS_TOKEN={YOURTOKEN} cm2network/tf2
SRCDS_TOKEN 需要你去自己在Steam获取
https://steamcommunity.com/dev/managegameservers
容器会在开始时自动升级游戏,假如有更新时,重启容器即可。
配置文件位于: /home/steam/tf2-dedicated/tf/cfg
如果要启动另一个实例,可以增加环境变量,使用 -e (–env):
docker run -d --net=host -e SRCDS_PORT=27016 -e SRCDS_TV_PORT=27021 -e SRCDS_TOKEN={YOURTOKEN} --name=tf2-dedicated2 cm2network/tf2
你可以在这里找到相关的Docker Hub页面: https://hub.docker.com/r/cm2network/tf2/
1. 前置
对目录的写入权限
版本大于或等于2.3.6的
glibc
不少于8GB的空余硬盘容量
安装特定的package
yum install ncompress libgcc.x86_64 libgcc.i686 glibc.i686 zlib.i686 ncurses-libs.i686
2. 下载和安装SteamCMD工具
- 创建一个新的用户,名为tf2server
adduser tf2server
- 给tf2server设置一个密码
passwd tf2server
- 创建一个目录,如./hlserver
mkdir ./hlserver
- 进入这个目录
cd hlserver
- 下载 steamcmd_linux.tar.gz :
$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
- 使用tar命令解压到工作目录:
tar zxf steamcmd_linux.tar.gz
3. 下载服务器
- 使用这个代码下载最新服务器:
./steamcmd.sh +login anonymous +force_install_dir ./hlserver +app_update 232250 +quit
- 你以后也可以执行此代码来更新服务器。
- 假如你发现错误 “Error! App ‘232250’ state is 0x202 after update job.”
表示你没有足够的硬盘空间
- 假如你有错误显示
/something/linux32/steamcmd - No such file or directory
表示你的前置没有安装好
4. 创建服务器配置文件
5. 创建一个shell脚本来运行服务器
创建 ‘./hlserver/tf2.sh’ 并编辑。
#!/bin/sh
tf2/srcds_run -console -game tf +sv_pure 1 +randommap +maxplayers 24 +sv_setsteamaccount [STEAMTOKEN]
STEAMTOKEN 可以为空,你可以在 https://steamcommunity.com/dev/managegameservers 获取
chmod u+x tf2.sh
运行以启动服务器。
./tf2.sh
6. 工具
许多服务器管理员使用screen或tmux来运行服务器,以保证在结束SSH对话时不会把服务器进程关掉。
六. 我想装各种服务器的插件
A. 安装SM和MM
你想要在服务器运行各种插件脚本?Sourcemod是大多数服务器的选择。在安装Sourcemod之前,你需要安装Metamod。
Sourcemod稳定版下载:SM Stable
Metamod稳定版下载:MM Stable
下载好两个压缩包,解压到服务器安装目录的tf文件夹下。如 C:\hlserver\tf
解压完后,你的tf文件夹下应该会有addons文件夹,在cfg文件夹中应该会有一个sourcemod子文件夹。这样子你就算安装完成了。
B. 安装插件
AlliedModders是一个开源脚本交流论坛,你可以在里面找到许多人创作的插件。
论坛首页:AlliedModders
插件搜索:Sourcemod Plugins
一般来说,插件的安装方法是把你下载的smx文件放在 tf/addons/sourcemod/plugins
但在安装之前你都有必要好好看插件的说明,并按照说明的步骤来安装。
C. 特定游戏模式的安装实例
a. VSH/FF2
1. 安装插件
安装 TF2Items
安装 TF2Attributes (推荐)
安装 SteamTools (推荐)
安装 Goomba Stomp (可选)
安装 RTD (可选)
点击右手边的Releases
最新的稳定版为 FF2 1.10.14 。点击 freak_fortress_2.zip 。下载,解压。
2. 自定义内容
将addons文件夹复制到 hlserver/tf 文件夹下,与原有的addons合并。
将materials, models, sound文件夹复制到 hlserver/tf/download 下。这样做可以更好地管理自定义内容。你可以在download文件夹下新建一个子文件夹maps,把你的自定义地图也放在里面。别忘记编辑mapcycle.txt。推荐的做法是专门写一个mapcycle_ff2.txt,然后在server.cfg最后加入 mapcyclefile mapcycle_ff2.txt
。
3. 在服务器验证是否成功
开启服务器,切换地图为任意一个arena地图。
4. 怎么添加其他的Boss?
通常来说,把作者给你的文件丢进去服务器即可,你可能还需要手动把资源文件进行bz2压缩并上传到FastDL服务器。如同之前一样,推荐把自定义文件放在tf/download而不是tf文件夹下。
别忘记编辑 /addons/sourcemod/configs/freak_fortress_2/characters.cfg
把新的boss配置文件名添加进去。
运行这种自定义内容多的插件,一般都把sv_pure设为0比较方便。
5. 更多
假如你有其他更多疑问,移步到 Wiki
b. Slender Fortress 暗鬼要塞
1. 安装插件
考虑到有的人使用Windows Server来开服务器,可以使用Slender Fortress Modified。以下内容来自其Wiki。
安装 TF2Items
安装 DHooks
安装 Sourcepawn Navmesh 假如这个使用的时候你有问题,可以下载这个替代 Dropbox
安装 SteamTools 可以在此下载正常运作的INC文件 Dropbox
安装 More Colors 可以在此下载正常运作的INC文件 Dropbox
下载自定义文件,解压到 tf/download 下。Dropbox
插件本体可在仓库找到 Releases
2. 自定义内容
模型、贴图、音效
在上面你已经解压到tf/download下了,但是别忘记进行bz2压缩然后上传到FastDL服务器。
地图
地图可以放在tf/maps下;也可以放在tf/download/maps下,但是别忘记了nav文件(nav文件要放在tf/maps),不然boss不会动。
3. 准备服务器
编辑你的mapcycle.txt文件,都换成Slender模式的地图。推荐的做法是专门写一个mapcycle_sf2.txt,然后在server.cfg最后加入 mapcyclefile mapcycle_sf2.txt
。
在你的server.cfg最后输入这两行命令
tv_enable 1
tv_name "SlenderTV" //随便取名
这样子Boss的击杀能够显示在右上角,但这不是必要的。
3. 结论
假如没有啥错误的话,你的服务器应该是可以玩的了。如果你有更多的问题,可以到 SF-M Wiki 去看看。
七. 疑难解答
A. 玩家出现了missing map的错误
意思为客户端没能找到这个地图,一般是下载错误,或是服务器没有正确设置好FastDL所导致的。
sv_allowdownload 1
sv_downloadurl "http://yourfastdlsite.com/tf"
在没有设置此值的情况下,客户端会从服务器进行地图传输,但出于此游戏年份久远的缘故,速度会很慢并且有文件大小限制。因此就需要FastDL,从别的站点下载自定义内容。这里举个例子,当我进入一个运行着 cp_hello_world.bsp 地图的服务器时,客户端会在 tf/maps 和 tf/download/maps 寻找这个地图,如果没有,就会开始下载。客户端会请求 http://yourfastdlsite.com/tf/maps/cp_hello_world.bsp
下载此文件。你可以清楚的看到你的sv_downloadurl的值和客户端访问的网址之间的关系。接下来怎么做就显而易见了。
你可以使用Apache或Nginx等软件建立站点,把文件放在对应的位置,然后你在浏览器测试是否能够正常下载。也可以去购买云服务商的存储服务。
建议把下载站点与游戏服务器分开架设,这样子玩家下载的时候不会影响正常游玩的玩家。
1. 但是我是个小白,完全不懂建站这些怎么办?
一般来说,我建议你去学习一下,百度搜索能出来许多有用的文章。但若你没有耐心去学,也可以去购买存储服务如腾讯云的对象存储,假如你的文件不多,购买一个虚拟主机也是可以的。要做的只是确保客户端能通过网址获得需要的文件。不过,你也可以手动发文件给玩家,比如QQ群等方式。