fraxiinus / ReplayBook

Play, manage, and inspect League of Legends replays
https://www.fraxiinus.dev/ReplayBook/
GNU General Public License v3.0
325 stars 51 forks source link

[WE'RE BACK] New Replay Format #299

Closed fraxiinus closed 2 months ago

fraxiinus commented 4 months ago

Initial Support for rofl2 is available for preview with the unstable builds.

Download the artifact from the most recent actions run: https://github.com/fraxiinus/ReplayBook/actions/workflows/main-branch-trigger.yml

A github account is required.

Original Post

Initially reported by "Melon" on discord

Hi guys, my partner and I cannot watch any replays, whenver we launch a replay in the lol client it says replay file corrupted if we try it in replaybook it says replay load failure "RoflParser - Reading JSON Metadata: Arithmetic operation resulted in an overflow."

Example file from Melon attached with file extension changed to "txt" OC1-619631145.rofl.txt

fraxiinus commented 4 months ago

Example file from "Aluz" from NA, showing the exact same strange file format.

Spectate will sometimes die, disconnecting all spectators as the game still continues. Trying to download a replay at this point returns a file in this format. Perhaps this is a truncated replay file that only contains the replay information up to the point of disconnection. The stats object cannot be populated before the game ends, so this is a possible explanation.

NA1-4976306960.rofl.txt

fraxiinus commented 4 months ago

Riot has released a new ROFL format that is INCOMPATIBLE with ReplayBook and roflxd. This new format does NOT contain ANY METADATA for the game, only the unreadable replay data is left. This move means that going forward ReplayBook and other replay tools will no longer be able to extract game data, or provide a match preview without playing the replay.

Others have reported that the League of Legends executable no longer supports playing replays by dragging them onto the .exe. What most likely will be needed now is a webserver to host the replay packets for the client, much like how OP.GG batch files work.

If this is true, then I will likely stop development on ReplayBook and roflxd altogether. I'm tired. I understand that Riot never supported this avenue of data parsing; that was a risk I took. But I'm still just tired of working on this.

Riot has increasingly shown that they're not interested in keeping cool fan projects like this alive. However, the community has always been supportive and appreciative of my work. Thank you everyone who supported ReplayBook, roflxd, and even ROFLPlayer for the past seven years. What started as a project I made while I was bored at a summer internship, turned into something used all over the world, and translated to seven different languages! I would never have expected such an outcome, so I want to thank you all again.

The code and server will stay up, though I will archive the repositories and take down the website next week.

JerryLiew commented 4 months ago

I am very saddened to hear this news. As a heavy replay collector, ReplayBook and roflxd have been with me for three years. Thank you for your past work on this project.

fraxiinus commented 4 months ago

Thank you for your support with translation and code!

A Riot employee did respond to the situation, they will bring it up to the team to see how feasible it will be to add the data back in. Getting a response is already more than I expected, but I'm still not betting on metadata coming back.

In the meantime, I am considering putting together a "final" update to hopefully get some of my unfinished features out. No promises though, this situation definitely dampened my enthusiasm.

NobbiHabogs commented 3 months ago

Just as I was starting to get to grips with replaybook, Riot messes everything up again. It's a real shame to hear that the project will probably be cancelled and that there will probably be no convenient way to view replays in the future, some of which are only a day old because the game played was a day before the patch day.

fraxiinus commented 3 months ago

I guess I'm eating my words! Official response from Riot, we will be getting our metadata back!

Hiya! I'm Ridley and I've been taking on the work to re-add to the rofl files the metadata that your tool reads =D We've added the metadata to the end of the file, the final 4 bytes of the file is the size of the JSON. We didn't keep the game version in that metadata but it can be gotten from near the start of the file. You should see the metadata added as of 14.11

ain-soph commented 3 months ago

@fraxiinus Thanks for the great tool! Is it still working now? I see there's still the warning notice at the readme.md. I tried download the most-recent released version at Jan 2024, but it doesn't work for replay files after 14.9 (14.7 still works). Would you consider a new release sometime, since you've got good news from Riot?

I'm now suffering with the official replay download files corruption issue. It downloads rofl files with only 1-3MB, which is corrupted. I have to delete them and retry around 20-30 times and it will download the correct replay file, which is a torment to do it manually.
I'm tired of this and desperately desired to looking for some good tools to watch replay.

Others have reported that the League of Legends executable no longer supports playing replays by dragging them onto the .exe. What most likely will be needed now is a webserver to host the replay packets for the client, much like how OP.GG batch files work.

To correct, it still works for me to drag rofl file into the .exe shortcut. It cannot be the original exe file; I have to make a shortcut of it.

fraxiinus commented 2 months ago

I'm working on updating roflxd.cs first, which is the replay parsing library used by ReplayBook. There will be additional work required, including updating the database and search systems in order to handle a new format for replay ID as match ID is no longer included. After that I need to figure out what I can do to get replays to play without having to disable/enable vanguard.

It will hopefully be out before 14.12 but no promises!

fraxiinus commented 2 months ago

roflxd.cs has been updated to support both rofl (pre 14.9) and rofl2 (14.11+) files. Work is now starting on updating ReplayBook to support the new file model.

1056599884 commented 2 months ago

roflxd.cs怎么使用呢

ain-soph commented 2 months ago

roflxd.cs怎么使用呢

End Users do not need to care about it. It's the backend used in this tool to parse replay files. Just need to wait for the maintainer to update ReplayBook
终端用户(使用者)不需要关心这个。那是软件用来读取解析回放文件用的。我们等作者更新ReplayBook就行

fraxiinus commented 2 months ago

Initial support for rofl2 has been pushed to main #304, a unstable build is available here: https://github.com/fraxiinus/ReplayBook/actions/runs/9411353907

RyuPandax commented 2 months ago

It works fine for me now, thanks! Problem now is that I need to close Vanguard to start the replay. If I want to start League afterwards, I have to reboot my PC :(

fraxiinus commented 2 months ago

Vanguard does not allow programs to start League of Legends.exe, it must be exited before ReplayBook can play files. I think the LCU api is able to start replays, but I have no experience in the matter so for now the workaround is to just close Vanguard.

New unstable builds can be downloaded from the main branch trigger actions page: https://github.com/fraxiinus/ReplayBook/actions/workflows/main-branch-trigger.yml

ain-soph commented 2 months ago

@fraxiinus It might be a little off-topic, but is there any possibility to download replays in ReplayBook instead of LOL client? The official replay files are always corrupted for me. I have to delete and re-download 20 times to make it work for each replay.

Reference: https://www.reddit.com/r/leagueoflegends/comments/1c8wcxu/league_replays_corrupted/

fraxiinus commented 2 months ago

Not something I'm able to look into. Seems the issue is affecting the replays themselves at Riot.

xiagujuguangd commented 2 months ago

Hello, I am a heavy user of ReplayBook from China, and there is a large group of people in China who are also using ReplayBook. We are eagerly anticipating the release of your latest version. May I ask when approximately the new version will be available? We are very excited about it.

ain-soph commented 2 months ago

Hello, I am a heavy user of ReplayBook from China, and there is a large group of people in China who are also using ReplayBook. We are eagerly anticipating the release of your latest version. May I ask when approximately the new version will be available? We are very excited about it.

I'm not the maintainer, but I want to tell you that you can always use the latest codes to build the project by yourself using the guidance from homepage.
Besides, you can download the unstable binary builds from github action workflows (e.g., at the bottom of workflow summary page, you can see a 15MB zip artifact file.)

我不是这个项目的维护者,但我想告诉你你可以自己使用github的代码来编译这个项目。另外,你可以从github action工作流下载不稳定的版本(例如,在workflow summary page页面底部,你可以看到一个15MB大小的zip压缩artifact文件)

xiagujuguangd commented 2 months ago

Thank you for your help. The current unstable version is now usable

------------------ 原始邮件 ------------------ 发件人: "fraxiinus/ReplayBook" @.>; 发送时间: 2024年6月16日(星期天) 下午2:46 @.>; @.**@.>; 主题: Re: [fraxiinus/ReplayBook] [WE'RE BACK] New Replay Format (Issue #299)

Hello, I am a heavy user of ReplayBook from China, and there is a large group of people in China who are also using ReplayBook. We are eagerly anticipating the release of your latest version. May I ask when approximately the new version will be available? We are very excited about it.

I'm not the maintainer, but I want to tell you that you can always use the latest codes to build the project by yourself using the guidance from homepage. Besides, you can download the unstable binary builds from github action workflows (e.g., at the bottom of workflow summary page, you can see a 15MB zip artifact file.)

我不是这个项目的维护者,但我想告诉你你可以自己使用github的代码来编译这个项目。另外,你可以从github action工作流下载不稳定的版本(例如,在workflow summary page页面底部,你可以看到一个15MB大小的zip压缩artifact文件)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

jake1dsas commented 2 months ago

Currently using latest version and can't open replays (file signature does not match rofl format) I'm confused. I thought the metadata issue was solved? :(

fraxiinus commented 2 months ago

Either use current unstable build, or wait for the next release coming later today (5 PM EST)

fraxiinus commented 2 months ago

Fixed in #310