英雄联盟回放保存以及播放研究

前言

20230923 更新

大家问得最多的是为什么黑屏,这是因为回放文件跟英雄联盟版本强绑定,过去的回放文件无法用新版联盟播放,可以看官方说明https://lol.qq.com/act/a20170728replay/ 我的方案是轻量版的,如果有想探寻究竟的同学可以看过程,只想使用的同学可以跳到播放结论推荐使用这个 https://www.fraxiinus.dev/ReplayBook/ 源码 https://github.com/fraxiinus/ReplayBook

2021-02-28

纯好奇驱动,写了本篇

正文

当前英雄联盟版本为

保存

在英雄联盟客户端打开生涯->对局记录->下载回放 下载完之后可以去获取保存位置查看回放数据文件(名称是.rofl结尾),可以移动到其他地方或者分享给别人,可以以简要信息修改命名

播放

如果最近的回放直接在下载的地方点击播放即可,但是比较久的就需要手动了,手动播放历史文件比较麻烦,非求道(原理)者直接看结论点击(题外话:csdn锚点如果是中文只能在编辑时跳转~,被坑了一下)

根据多年联盟经验,我们知道登录程序叫做 LeagueClient.exe回放和游戏运行的程序叫做League of Legends.exe

网上的方法都是把数据文件拖动到回放程序League of Legends.exe 这样的结果是

报错是因为无法读取到数据文件,所以需要拷贝数据文件到回放程序同级目录下,再拖动到回放 这样确实能播放,但是启动的界面是英文的,并且中文乱码

命令行启动 根据逆向易得League of Legends.exe有以下部分参数

-CloseOnGameEnd

-GameID

-PlayerID

-PlatformID

-RiotClientPort

-RiotClientAuthToken

-gameflow

-gameflow

-received

-message

-GameBaseDir

-info

-FatalAssertions

-GameCfgName

-GameBaseDir

-Locale

-HighlightsPath

-InsecureRemoting

-RemotingPrivateKey

-RegisterRemotingWithDiscoveryService

-3A1FF4F0

-UseDX11

-plugins

-persistence

-uniplugin

-be

-rso

-new

-stay

-disable

-config

-localization

-status

其中根据经验可知-Locale参数为设置语言,根据拳头文档可知支持的语言有

defalut:en_US

Chinese:zh_CN

Japanese: ja_JP

Korean: ko_KR

我们来验证一下,wegame启动观战的参数为

c:\wegameapps\英雄联盟\Game\League of Legends.exe C:\Program Files (x86)\WeGame\apps\pallas\ob\31_92446303.rofl -GameBaseDir=c:\wegameapps\英雄联盟\Game -Locale=zh_CN -SkipRads -SkipBuild -EnableLNP=false -UseNewX3D=1 -UseNewX3DFramebuffers=1

精简为 cmd /c "League of Legends.exe" 你的数据文件名.rofl -Locale=zh_CN 效果还行

播放结论

保存以下脚本startReplays.cmd在回放目录(你存放回访的目录),修改LeaguePath(以下脚本的变量)为你英雄联盟的主路径,因为有中文,记得保存文本格式为ANSI或者GBK 名字startReplays.cmd

@ECHO OFF

set LeaguePath=c:\wegameapps\英雄联盟

set LeagueGamePath=%LeaguePath%\Game

cd "%LeagueGamePath%"

rem if "%1" == "" goto end

"%LeagueGamePath%\League of Legends.exe" %1 -GameBaseDir="%LeagueGamePath%" -Locale=zh_CN -SkipRads -SkipBuild -EnableLNP=false -UseNewX3D=1 -UseNewX3DFramebuffers=1

:end

然后拖动回放文件到这个脚本即可