webcretaire / livesplitanalyzer Goto Github PK
View Code? Open in Web Editor NEWSimple online tool to analyse LiveSplit's .lss files
Home Page: https://Webcretaire.github.io/LiveSplitAnalyzer/
License: GNU General Public License v3.0
Simple online tool to analyse LiveSplit's .lss files
Home Page: https://Webcretaire.github.io/LiveSplitAnalyzer/
License: GNU General Public License v3.0
Add a PB plot to the line plot for global attempt stats (first tab), which only displays PBs instead of all finished runs
Thanks @cerpintext for the idea
After a re-route people might want to remove all their attempts with the old route, so we could make it possible to delete all attempts before some number (kind of like the "fixing gold" button but in bulk, either for a specific split or the whole run)
Thanks Fabio for the idea
Currently individual split analysis only shows the time for the current split in isolation. It could be interesting to show the best pace up to a certain split (or plot all paces up to a certain split, which is probably equivalent to the "cumulate time" that we have on comparisons, but displayed on graphs in individual splits tab)
On rare occasion the splitfile could countain a game icon, which we could extract and display. If it does not, maybe we could try getting the image from speedrun.com?
Thanks @cerpintext for the idea
When a re-route happens, a split could get deleted, in which case it's sad to loose all the history (could also happen if someone made lots of subsplits and wants to delete some). We could add a feature to merge all attempts for one split into the next or the previous one
EDIT: merging a split into the previous one doesn't make any sense for many reason, as an example : If you merge split N+1 into N, you don't want to add N+1 times to N, because you're literally lying: the times in N do not represent the time it took you to reach the N point of your run any more, it just represent N+1 times that are renamed into N, so in the end we'll just keep the "merge into next" feature, which makes more sense (also not being able to merge the last split is good, because modifying the last split means you're literally playing a different category now)
Settings could be saved to local storage and then loaded back when the user comes back to the website. This way some general parameters (like the page width) could be remembered, and users wouldn't have to change them each time
I'm not sure how useful it would be since most parameters would probably vary depending on the splitfile that's loaded, but it's an idea that's worth thinking about at least I think
Thanks @cerpintext for the idea
Have a graph (maybe 2 graphs?) to show on which split users reset the most
It could either be a plot of how far each run got (so bars would be smaller and smaller until the last one which represents the number of finished runs), or it could plot where resets happen (in which case the highest bar is not the first split but the one where most resets happen). Ideally we could do both and toggle with a switch (or just display both)
Add buttons to expand / shrink all splits in the individual split tab (maybe in other places too idk)
When opening / closing individual split graphs, if there exist a split with the same name it will get opened or closed too, because of how the collapse names are generated
split | split time | sgmnt time | best time |
---|---|---|---|
1 | 3:35.02 | 3:35.02 | 3:32.05 |
2 | 5:26.50 | 1:51.48 | 1:45.20 |
3 | 7:58.51 | 2:32.01 | 2:32.01 |
4 | 9:45.32 | 1:46.81 | 1:44.20 |
5 | 11:43.76 | 1:58.44 | 1:50.34 |
6 | 13:23.54 | 1:39.78 | 1:28.70 |
7 | 14:37.63 | 1:14.08 | 1:09.52 |
8 | 16:25.28 | 1:47.64 | 1:45.18 |
if you have the above lss-data and want to practice individual parts of it (ie. splits 3-5), you could extract those splits and make it available for download in to its own lss-file:
split | split time | sgmnt time | best time |
---|---|---|---|
3 | 2:32.01 | 2:32.01 | 2:32.01 |
4 | 4:28.82 | 1:46.81 | 1:44.20 |
5 | 6:17.26 | 1:58.44 | 1:50.34 |
this would be useful for making segment comparison splits for comparison data during segment practice, especially with longer runs with more points of data to handle manually.
Now that comparisons can be displayed / compared, and can be created using the "balanced comparison maker" modal, it would be nice to have a way to make more basic changes (edit specific values for example, or create a blank comparison for people to fill manually)
There is no difficulty from a programming perspective (it's basic CRUD), the only hard problem is how to make this ergonomic and easy to use: currently the card and the modal are already kind of full, I don't know how I'm going to add the other features yet (maybe transform values into an input when you click on them? Not sure)
Thanks beninswe/livesplitanalysis for the inspiration (just realized this project tried to do some of what we're doing, very interesting, though sadly it doesn't look very actively maintained currently)
We could allow users to provide a splits.io URL instead of uploading a splitfile, and then download it in LiveSplit format to load our tool
I reworked my route and deleted the "best" and "split" times in the LiveSplit splits editor, but later discovered (after I set up a balanced PB for comparison) I still had some fake golds in the splits file. Using the tool, I was able to remove them. However, creating a new comparison still used the old times, and the fake golds all reappeared.
Have fake golds (an attempt -1 with the best time) and delete them.
Switching to Comparisons tab and back doesn't make them reappear.
Creating a new Comparison does (and relies on it). Stats here are shown uncumulative.
Edit: I just attempted to do them separately, and it looks like deleting fake golds and saving doesn't work either...
Thanks Gwonkee for the idea
maybe for split analysis graphs, idk if bar graphs might be better. the up and down lines make it harder to see the tiny points, or just no lines
We could add an option to switch the graph type for [Sub]Split graphs (to have bars, maybe line with no point, point with no line, etc.) because when there are many attempts plots are hard to read
When the website initially loads we could check if a URL parameter is set (like https://webcretaire.github.io/LiveSplitAnalyzer?splitsio=9axe for example) and load the corresponding splitfile if it's present, which would make sharing easier (you could just send a like to someone and have the page display the corresponding split)
This also means that we should rewrite the URL when manually loading a splits.io file from the form (again, to facilitate sharing)
The toolbox doesn't really fit into one tab specifically, maybe we could add the options to settings or add another floating button for it.
Thanks Gwonkee for the idea
Sometimes the hardcoded AttemptCount doesn't match the actual number of attempts, we could add a button in the toolbox to fix it
Big split files (thousands of attempts) cause the whole page to lag for a long time, to the point where the browser might think that the whole thing is hanging (even though it's not). I don't know how we could optimize the processing but we should definitely have a look at our options (I thought about offloading some of the processing to webassembly functions which would probably have a better performance, but this seems very complex and it wouldn't allow us to offload any of the re-rendering that Vue is doing automatically)
Add a new tab with synthetic details for each attempt. Currently the attempt selector isn't that useful because people probably don't know attempt IDs from the top of their head, so having a tab with basic info about each attempt (date and time, if the run finished or reset, what time it got, etc.) could help find a specific run
Thanks Lep for the idea:
Add filters to ignore runs that are slower than some amount of time. Would be useful in particular for full runs data (see #8) but it could potentially be extended to more things? We could also add an option to filter out unfinished runs for any graph (that would combine well with the other filter)
LiveSplit stores the date and wall-clock time at which attempts are started, but currently we're not using this info, which is sad because plotting stuff according to this data could highlights different periods (before and after some IRL breaks) in a splitfile.
What we could do is add an option to replace the X-axis for every run that is currently plotted according to the attempt number, and replace that by the date. It should be a simple lookup in the AttemptHistory to fetch the date instead of @_id, with a bit of formatting in the layout maybe.
The only potential difficulty is if data is not coherent: for example if we have split times for a run that is not present in the attempt history (which shouldn't happen technically but I'm sure we can find splitfiles like that). I'm not sure it's worth trying to do anything clever with such attempts but the case should at least be handled so that the whole website doesn't crash when it happens
Thanks Fabio for the idea
We could add a filter on runs similar to the one in attempts stats but that are based on the time of a specific split : for example in Hollow Knight "only display time of runs that have a sub 3:35 Vengeful Spirit". This filter could apply to any of the tabs I guess, and maybe be combined if used on several splits ? If we apply it to several tabs then we would need a way to show it visually from any tab, maybe as a floating thing somewhere, to remind users that there is a filter active
Currently the "download splits" button is in the scary "Experimental toolbox" card, which made sense when this toolbox was the only thing that actually modified the splits, but now that a lots of features can make changes to the data it would be great if this button was more visible (also we should warn people that try to exit the website if they have unsaved modifications in their splits)
Not the most useful feature, but since we can create / delete comparisons we might as well be able to fully edit them. So add a button near the "main comparison select" to be able to rename it (probably in a modal or something)
Thanks Lep for the idea:
Right now we have detailed line graphs for each split, but for some reason we forgot to make one for the whole run. There are 2 ways we could add this:
Second option would be way harder to program probably, but it would be more powerful because it would also allow people to see their best pace at any point in the run, which is nice. Maybe start with the first one and I'll think about the other one later
To make subsplits work properly I duplicated most of SplitDisplay
into a new component SubsplitsDisplay
(which I should have cleaned before pushing but I didn't stop bullying me)
What we should do is extract everything that's in common (mostly all the Plotly things, and data processing to make the graphs work) into a separate component and instanciate that twice, which will make the code way easier to understand and will also greatly please Sonar
Thanks fabio for suggestion
Add a line or something showing the average or median time for each split on individual graphs.
Thanks @cerpintext for the idea
Allow users to specify some amount of time they want to move from one split to the next (or previous maybe, not sure it's useful), maybe for some range of attempts
The idea is if you start implementing a strat at the end of a split (like early control quitout at Claw in Hollow Knight), it is going to lose a bit of time in claw but save more time in the next split, so moving some amount of time between splits will prevent fake golds and stuff
Currently split icons are only extracted and displayed if they are PNG, but LiveSplit also supports JPEG and GIF for example, so we could make several "image extractors" and try them all. It's not an extremely important feature because the vast majority of speedrunners use PNG icons or no icons at all, but it would be nice just for completeness (also looking at how image formats work is fun)
Add integration/E2E tests using Cypress: as we add more and more features, and options that affect the whole page, it becomes harder to track if something is broken somewhere, so tests could help with that (and run in CI before the automated deployment)
Currently we only know how to read files from local filesystem or split.io, and we can only save them to local filesystem. What we could do is use splits.io's API to save splits (it's probably impossible to update them but we could make a new upload and possibly delete the old one), and we could also add more "adapters", especially to more standard file storage services (Dropbox, Google Drive, etc.)
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.