CS2服务器 - 录制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 章节 ==> 现存问题

featured image


2 纯净服录制全局demo

2.1 修改server.cfg配置文件

        所谓纯净服,简单理解为不加插件的CS2服务器,类似于官匹。

        这里以自建的CS2服务器为例,我把开服相关的配置保存在 /game/csgo/cfg/server.cfg 中,因此需要在 server.cfg 中添加一条命令 tv_enable 1 来开启SourceTV的录制功能,如下图所示。

featured image
tv_enable

2.2 录制并保存demo

        一般情况下,CS2开服后,玩家进入热身环节,此时在CS2服务器端开始录制demo,命令格式为:tv_record demo名称 ,例如自定义demo名称为 2024-0706 ,如下图所示

featured image
tv_record

        等本场比赛结束后,在CS2服务器端输入命令停止录制并保存demo,命令为:tv_stoprecord ,如下图所示。

featured image
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 命令,那么播放之前回合时可能出现武器比例不正常的情况,如下图所示。

featured image
demo-bug

        【情况二】

        正常开启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文件不可用。

        【其他情况】

        意外情况多种多样,在第章节会讲述如何模拟各种比赛状况,请自行探索。


featured image


3 通过服务器插件录制全局demo

3.1 使用MatchZy插件录制一场比赛demo

        这里以 MatchZy-0.7.12 版本为例,仍旧是在 server.cfg 中添加一条命令 tv_enable 1 来开启SourceTV的录制功能。

        MatchZy插件的竞技比赛模式是自动开始录制的,也能在一场比赛结束后自动保存demo文件,它能自动调用 tv_record tv_stoprecord 命令管理demo录制,因此你可以从日志中找到相关的命令信息,如下面两个截图所示。

featured image
录制开始

        

featured image
录制结束

        MatchZy插件的配置文件位置: /game/csgo/cfg/MatchZy/config.cfg

        其中,matchzy_demo_path 是指定demo保存位置,默认位置为 /game/csgo/MatchZy/matchzy_demo_name_format 是自定位demo名称格式。还有其他选项可以将录制好的demo自动上传到指定位置,比如自动上传某网站、某云盘……

featured image
demo位置

3.2 功能冲突

        如果CS2服务器曾经安装过 MatchZy 插件,如果有一天不想用插件了,甚至将整个 addons 文件夹都删掉,这样CS2服务器就变回纯净服,但再使用 tv_record 命令可能会报错:CDemoFile::Open: couldn't open file 111.dem for writing. 如下图所示。

featured image
无法写入demo文件

        解决办法是找到 /game/csgo/gameinfo.gi ,删掉之前添加的 Game csgo/addons/metamod 即可恢复demo录制功能。以后再需要安装 metamod 等一系列插件时记得把它添加回去。


featured image


4 本地服务器录制全局demo

4.1 使用练习模式录制全局demo

        如果你没有自建的CS2服务器,那么通过CS2游戏自带的练习模式也可以开启一个本地服务器(或者在控制台使用命令 map 地图名 来开启一个本地服务器),但在进入练习模式地图之前,需要打开控制台,输入一条命令 tv_enable 1 来开启SourceTV的录制功能。

        然后进入地图,接着在控制台输入命令开始录制demo,命令格式为:tv_record demo名称 。等比赛结束后,使用命令:tv_stoprecord 停止录制并保存demo,如下图所示。

featured image
本地服务器录制demo

4.2 可能出现的报错

        如果在输入 tv_record 命令后无法正常开启录制,控制台返回信息:TV[0]: Only TV Master can record demos instantly.,如下图所示。

featured image
tv master

        原因是你没有在开服前输入 tv_enable 1 ,需要按4.1章节所述方法重新开服。

        需要注意的是,如果在开服后输入  tv_enable 1 ,查询其状态是返回 true ,但实际上是不能开启录制的。同样的,如果是自建云服务器也不能在开服后使用 tv_enable 1 ,应该将其写入 server.cfg,随CS2服务器一起启动才可以。


featured image


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


featured image


6 播放demo的方法

        ① 将demo文件放到CS2的根目录下,一般情况下路径为:Steam\steamapps\common\Counter-Strike Global Offensive\game\csgo\

        ② 在CS2游戏内控制台输入命令:playdemo demo名称,示例如下图所示。

featured image
播放demo

        如果你喜欢将demo存放在某文件夹,比如在 game\csgo\ 目录下新建一个 demo 文件夹,如下图所示。

featured image
demo文件夹

        那么在控制台播放demo时就要写相对路径,如下图所示。

featured image
demo相对路径
featured image


7 现存问题

        无法将游戏内语音保存进demo文件中,不知道完美平台时如何做到的。能找到与demo语音相关的控制台指令有 tv_relayvoice 1 和 tv_listen_voice_indices ,但还是无法录制语音。



转载请注明出处
原文链接: /posts/21tMcqDL

featured image
featured image
featured image