epickitten / pubg-replay-manager Goto Github PK
View Code? Open in Web Editor NEWShows undocumented information from PUBG replays, and has the ability to import and export replays
License: GNU General Public License v3.0
Shows undocumented information from PUBG replays, and has the ability to import and export replays
License: GNU General Public License v3.0
I think the parsing of Unreal engine serialized strings (groggy, kill, replayinfo, level, ReplaySummary) could be improved. The current implementation doesn't seem to be causing problems now, but this is the "proper" way to read these files so it doesn't break in the future.
See my implementation here. Here's some pseudocode that might help based on the actual Unreal engine implementation of network demos:
(x + 1) & 0xff
Had an error loading the project up the first time. Went away when I deleted the older replay files in AppData
System.IO.FileNotFoundException
HResult=0x80070002
Message=Could not find file 'C:\Users\user\AppData\Local\TslGame\Saved\Demos\match.bro.official.2017-pre6.na.duo.2017.12.08.612d9b1e-f211-4f03-8cc4-0df9f1d3c084__USER__76561198058777702\PUBG.replayinfo'.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.File.InternalReadAllBytes(String path, Boolean checkHost)
at PUBG_Replay_Manager.Main.UE4StringSerializer(String file_path, Boolean encoded, Int32 encoded_offset) in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 497
at PUBG_Replay_Manager.Main.ReadReplayInfo(String directory_of_recording) in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 544
at PUBG_Replay_Manager.Main.RefreshReplayList() in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 54
at PUBG_Replay_Manager.Main.replayListRefresh_Click(Object sender, EventArgs e) in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 913
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at PUBG_Replay_Manager.Program.Main() in D:\dev\pubgrm\PUBG_Replay_Manager\Program.cs:line 17
$ dir C:/Users/user/AppData/Local/TslGame/Saved/Demos
match.bro.official.2017-pre6.na.duo.2017.12.08.612d9b1e-f211-4f03-8cc4-0df9f1d3c084__USER__76561198058777702
match.bro.official.2017-pre6.na.duo.2017.12.09.07a562ae-b0d2-4200-b561-78857b414e4c__USER__76561198058777702
match.bro.official.2017-pre6.na.duo.2017.12.11.f064be80-992b-4c8f-8707-4dfacfc07c60__USER__76561198058777702
match.bro.official.2017-pre6.na.duo.2017.12.11.f0f94fb8-6bca-4c2a-9df4-e756aa6ce906__USER__76561198058777702
match.bro.official.2017-pre6.na.solo-fpp.2017.12.08.0f672e5f-a939-4c81-b19a-9b35b03cfb50__USER__76561198058777702
match.bro.official.2018-02.as.duo.2018.02.18.03dc150a-8c16-4179-8bd8-2130eb72d7c3__USER__8c1b0bc4d5b75f60b85192638f2863f0
match.bro.official.2018-02.na.duo.2018.02.09.64df1099-7be3-47bb-8681-215c0709b4e6__USER__8c1b0bc4d5b75f60b85192638f2863f0
match.bro.official.2018-02.na.duo.2018.02.14.5210ce3f-cd32-493b-a012-bb0f44ec62a3__USER__8c1b0bc4d5b75f60b85192638f2863f0
match.bro.official.2018-02.na.duo.2018.02.20.779b9439-6c7c-4f4b-a971-de5065df78f7__USER__8c1b0bc4d5b75f60b85192638f2863f0
match.bro.official.2018-02.na.duo.2018.02.21.5a741a4d-38aa-46ef-91c4-1a8b0898640d__USER__8c1b0bc4d5b75f60b85192638f2863f0
match.bro.official.2018-02.na.duo.2018.02.21.bd796a96-e354-4087-bbcd-8dcfe54f3ffc__USER__8c1b0bc4d5b75f60b85192638f2863f0
...
The "2017" directories just contained a checkpoints directory with a checkpoints## file in it.
Hey,
Loving your work man, very much appreciated for you doing this.
I was looking to see if I could extract the looted item data during the replay but assume thats held in the .demo file, which I think you mentioned can't be read yet ?
Cheers
Improve localization using this method: http://www.dotnetcurry.com/ShowArticle.aspx?ID=174
Then the app would be much easier to translate to any other language
The option to export all Replays just deletes any present replay.
Please check the exportallreplays_Click method its the same as the clearallreplays_Click exept for the different string shown within the confirmation box.
Luckily I backuped my replace manually in the first place
Did this three times in a row. When I delete a replay the manager crashes.
Tried to delete a replay:
match.bro.official.2018-02.na.squad.2018.02.21.4e8e7417-f152-4a26-b38f-e4e0f0d36af9__USER__8c1b0bc4d5b75f60b85192638f2863f0
Got an error:
System.IO.DirectoryNotFoundException
HResult=0x80070003
Message=Could not find a part of the path 'C:\Users\user\AppData\Local\TslGame\Saved\Demos\match.bro.official.2018-02.na.squad.2018.02.21.4e8e7417-f152-4a26-b38f-e4e0f0d36af9__USER__8c1b0bc4d5b75f60b85192638f2863f0'.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.Directory.GetDirectories(String path)
at PUBG_Replay_Manager.Main.GetDirectorySize(String directory) in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 775
at PUBG_Replay_Manager.Main.ReadReplayInfo(String directory_of_recording) in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 655
at PUBG_Replay_Manager.Main.RefreshReplayList() in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 54
at PUBG_Replay_Manager.Main.deletereplay_Click(Object sender, EventArgs e) in D:\dev\pubgrm\PUBG_Replay_Manager\Main.cs:line 851
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at PUBG_Replay_Manager.Program.Main() in D:\dev\pubgrm\PUBG_Replay_Manager\Program.cs:line 17
For some reason, your app shows incorrect map name (always Miramar), incorrect mode (always Squad) and doesn't show weather data.
Hello - really appreciate the work on the replay manager.
Since I updated to 1.0, I cannot delete a replay without the following exception. The list of replays disappears and continuing after the exception does not reload the list. I must quit and reload the program each time I want to delete. I don't have any special control access through Windows on. Something weird on my end?
Thanks.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\HeliMagnet\AppData\Local\TslGame\Saved\Demos\match.bro.official.2018-03.na.duo-fpp.2018.03.09.5bdecb0b-f761-4d25-b309-c8b91d216b7a__USER__9e0b01130a33cc40d4e24cc33ac1654c'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.Directory.GetDirectories(String path)
at PUBG_Replay_Manager.Main.GetDirectorySize(String directory)
at PUBG_Replay_Manager.Main.ReadReplayInfo(String directory_of_recording)
at PUBG_Replay_Manager.Main.RefreshReplayList()
at PUBG_Replay_Manager.Main.deletereplay_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
http://www.strawpoll.me/15027558
Please vote, should we merge https://github.com/EpicKitten/PUBG-Replay-Manager , https://github.com/EpicKitten/PUBG-Map-Chooser , and another app I want to start writing for statistics grabbing or keep them all separate?
How it would look
Sorry in advance if this is a stupid question, but judging from the current understanding of replay files, PUBG shouldn't be able to create a full video replay from just this. Would the files in events have anything to do with that? IDK it just seems like PUBG isn't giving itself enough information to work with.
Well, I'm so new to Github, and I don't know where to post this. so i had to post this in issues tab again.
I made a logo for this program, which helps this program not to look suspicious.
take a look at this.
(original psd and png is in my PC.)
(for program ICON 512x512)
If you like this and want to use this, feel free to reply, then I will bring them to you.
and i finished localizing this program for korean. during the process, I have made a information box and edited Main.cs. I don't know if this is OK. can you help me with this? I will upload the translated version.
PUBG-Replay-Manager-master-KR.zip
(image of preview of translated version.)
v0.8 works fine (except replays before release of 1.0 of PUBG) but v0.9 and v1.0 crash directly on start.
Win7
Intel i7-4770K
Asus Maximus VII Ranger
Hello, I'm very happy that I could find this useful program that contains function I wanted, but I found some issues in your program and I got some suggestions on your program, so I decided to write them here.
ps. About Localization(Translation)
First, I'm living in South Korea, and I have a plan to localize your program and distribute it on website, and I thought i need a permission from you. Your program will be very helpful for pro players, game analyst, streamers, and users, that live in Korea.
So could you allow me to do this? Thank you. ๐
It would be nice to have an option to add a custom replay folder (e.g. where I store my backed-up replays) and be able to view them in the list (and maybe save this search folder for the next sessions).
Also there seems to be an issue with "older" replays (I translated the errors):
************** Exception text **************
System.InvalidCastException: Cannot cast from source type "System.UInt64" to destination type "System.String".
at PUBG_Replay_Manager.Main.RefreshInfoGroups(ArrayList newInfo)
at PUBG_Replay_Manager.Main.replayList_SelectedIndexChanged(Object sender, EventArgs e)
at System.Windows.Forms.ListBox.OnSelectedIndexChanged(EventArgs e)
at System.Windows.Forms.ListBox.WmReflectCommand(Message& m)
at System.Windows.Forms.ListBox.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Export single replay: ex, solo-tps-na-2018-03-29T12_15
Export all: ex, replays_2018-03-27_thru_2018-03-29
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.