CS2服务器 - 录制demo
在csgo时期,demo分为个人视角demo和全局demo两种。 所谓个人视角demo,就是玩家自己在控制台输入 这种格式的命令来开始录制,然后在控制台输入 命令停止
1 前言&目录
1.1 前言
在csgo时期,demo分为个人视角demo和全局demo两种。
所谓个人视角demo,就是玩家自己在控制台输入 record demo名称 这种格式的命令来开始录制,然后在控制台输入 stop 命令停止并保存demo文件,播放demo时仅能观看自己的视角,无法观看他人视角或切换自由视角。
如今在CS2里仍然能录制个人视角demo,但是播放demo时会造成CS2游戏闪退,也就是说这种录制demo的方法已经不可用,因此本专栏主要讲述如何录制全局demo。
全局demo就是既能观看个人视角,又能观看其他玩家的视角,还能以上帝视角以任意角度观看demo,我们从官匹、5E、完美等对战平台下载的比赛demo就属于全局demo。
1.2 目录
2.x 章节 ==> 纯净服录制全局demo
3.x 章节 ==> 通过服务器插件录制全局demo
4.x 章节 ==> 本地服务器录制全局demo
5.x 章节 ==> 模拟各种比赛状况
6.x 章节 ==> 播放demo的方法
7.x 章节 ==> 现存问题
2 纯净服录制全局demo
2.1 修改server.cfg配置文件
所谓纯净服,简单理解为不加插件的CS2服务器,类似于官匹。
这里以自建的CS2服务器为例,我把开服相关的配置保存在 /game/csgo/cfg/server.cfg 中,因此需要在 server.cfg 中添加一条命令 tv_enable 1 来开启SourceTV的录制功能,如下图所示。
2.2 录制并保存demo
一般情况下,CS2开服后,玩家进入热身环节,此时在CS2服务器端开始录制demo,命令格式为:tv_record demo名称 ,例如自定义demo名称为 2024-0706 ,如下图所示
等本场比赛结束后,在CS2服务器端输入命令停止录制并保存demo,命令为:tv_stoprecord ,如下图所示。
默认的demo保存目录为:/game/csgo/ ,打开此目录即可找到刚才录制好的 2024-0706.dem 文件。
2.3 一些特殊情况
【情况一】
进行到某一回合后才想起来使用 tv_record 命令。
这个并不影响录制整场比赛demo,因为在 tv_enable 1 的前提下,CS2开服即自动开始录制, tv_record 命令主要是设置一下demo的名称。只要能按正常流程使用 tv_stoprecord 就能完美录制整场比赛,甚至能把玩家进入服务器前的那段热身时间也录制进demo中。
但demo播放可能出现显示bug,例如从第5回合才使用 tv_record 命令,那么播放之前回合时可能出现武器比例不正常的情况,如下图所示。
【情况二】
正常开启demo录制,一场比赛结束之后,才想起来使用 tv_stoprecord 命令停止录制,此时CS2服务器已默认开启第二场比赛。
demo只会保留第一场比赛的完整过程,不会保留第二场比赛的内容。所以使用一份demo录制多场比赛是不可行的,想要继续录制第二场比赛,还需再使用 tv_record 命令。
【情况三】
正常开启demo录制,一场比赛结束之后,忘记使用 tv_stoprecord 命令停止录制,直到CS2服务器关闭都没有停止录制。
demo仍能保存首场完整比赛,与情况二相似。
【情况四】
正常开启demo录制,在一场比赛未结束前就使用 tv_stoprecord 命令停止录制。
demo能正常保存手动停止录制前的比赛回合。
【情况五】
正常开启demo录制,比赛过程中CS2服务器关闭,无论是正常流程的关闭还是因异常而关闭,总之没有使用 tv_stoprecord 命令停止录制。
仍能找到已保存的demo文件,但播放demo时CS2游戏可能闪退,也可能demo中的玩家卡住不动,也就是demo文件不可用。
【其他情况】
意外情况多种多样,在第章节会讲述如何模拟各种比赛状况,请自行探索。
3 通过服务器插件录制全局demo
3.1 使用MatchZy插件录制一场比赛demo
这里以 MatchZy-0.7.12 版本为例,仍旧是在 server.cfg 中添加一条命令 tv_enable 1 来开启SourceTV的录制功能。
MatchZy插件的竞技比赛模式是自动开始录制的,也能在一场比赛结束后自动保存demo文件,它能自动调用 tv_record 、tv_stoprecord 命令管理demo录制,因此你可以从日志中找到相关的命令信息,如下面两个截图所示。
MatchZy插件的配置文件位置: /game/csgo/cfg/MatchZy/config.cfg
其中,matchzy_demo_path 是指定demo保存位置,默认位置为 /game/csgo/MatchZy/ ,matchzy_demo_name_format 是自定位demo名称格式。还有其他选项可以将录制好的demo自动上传到指定位置,比如自动上传某网站、某云盘……
3.2 功能冲突
如果CS2服务器曾经安装过 MatchZy 插件,如果有一天不想用插件了,甚至将整个 addons 文件夹都删掉,这样CS2服务器就变回纯净服,但再使用 tv_record 命令可能会报错:CDemoFile::Open: couldn't open file 111.dem for writing. 如下图所示。
解决办法是找到 /game/csgo/gameinfo.gi ,删掉之前添加的 Game csgo/addons/metamod 即可恢复demo录制功能。以后再需要安装 metamod 等一系列插件时记得把它添加回去。
4 本地服务器录制全局demo
4.1 使用练习模式录制全局demo
如果你没有自建的CS2服务器,那么通过CS2游戏自带的练习模式也可以开启一个本地服务器(或者在控制台使用命令 map 地图名 来开启一个本地服务器),但在进入练习模式地图之前,需要打开控制台,输入一条命令 tv_enable 1 来开启SourceTV的录制功能。
然后进入地图,接着在控制台输入命令开始录制demo,命令格式为:tv_record demo名称 。等比赛结束后,使用命令:tv_stoprecord 停止录制并保存demo,如下图所示。
4.2 可能出现的报错
如果在输入 tv_record 命令后无法正常开启录制,控制台返回信息:TV[0]: Only TV Master can record demos instantly.,如下图所示。
原因是你没有在开服前输入 tv_enable 1 ,需要按4.1章节所述方法重新开服。
需要注意的是,如果在开服后输入 tv_enable 1 ,查询其状态是返回 true ,但实际上是不能开启录制的。同样的,如果是自建云服务器也不能在开服后使用 tv_enable 1 ,应该将其写入 server.cfg,随CS2服务器一起启动才可以。
5 模拟各种比赛状况
介绍几个常用控制台命令,方便在与bot比赛中快速结束每回合,实测完成一场 MR12 比赛不超过5分钟。
bot_kick 踢掉所有bot
bot_add t 添加一个T阵营bot
bot_add ct 添加一个CT阵营bot
mp_freezetime 0 回合开始原地冻结时间0秒
mp_round_restart_delay 2 回合结束后等待时间2秒
mp_warmup_end 立即结束热身环节
sv_cheats 1 开启作弊
bind 键位 noclip 将指定键位绑定为穿墙飞行快捷键
【小技巧】有些命令可以一次性输入控制台,中间使用英文分号连接即可,示例:mp_warmup_end;mp_freezetime 0;mp_round_restart_delay 2;sv_cheats 1
6 播放demo的方法
① 将demo文件放到CS2的根目录下,一般情况下路径为:Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\
② 在CS2游戏内控制台输入命令:playdemo demo名称,示例如下图所示。
如果你喜欢将demo存放在某文件夹,比如在 game\csgo\ 目录下新建一个 demo 文件夹,如下图所示。
那么在控制台播放demo时就要写相对路径,如下图所示。
7 现存问题
无法将游戏内语音保存进demo文件中,不知道完美平台时如何做到的。能找到与demo语音相关的控制台指令有 tv_relayvoice 1 和 tv_listen_voice_indices ,但还是无法录制语音。