Skip to content

Releases: roninpawn/splitRP

Bug Patch (VMT-1.02.24a) w/ Magic Button!

24 Feb 17:26

Choose a tag to compare

This release closes issue #17. A bug in which all but the first of multiple matches in the POI_List on the same frame could be ignored, causing extra splits. It doesn't relate to the MAGIC Button. Which seems to be working marvelously. And since that's the last big update, I'm copy-pasting the description from that one below.

The MAGIC Button (+bug patch) - VMT-1.02.24a

SplitRP, now with moar MAGIKS!

Finding "Nested" Gameplay

So, you've got a run to moderate sitting in front of you. But it's from one of them-there Twitch livestreamers who scale the gameplay into a smaller area in the footage, nesting it within a larger overlay. The gameplay is at a semi-random scale, translated somewhere off to the right of footage. How are you gonna get SplitRP to analyze this scaled, non-fullscreen footage?

Well, you could:

- Take a screenshot
- Paste it into MS-Paint or whatever
- Collect the x and y coordinates from the top left of the game
- Figure out the width and height the gameplay occupies.
- Then edit the clustertruck.rp file, uncommenting and adding all that to the "Translate=" and "ReScale=" values.

Sure, you could do all that. (Srly? Come on! That's been a feature for a WHILE now. phhhh... You're welcome, anyway.)
Or you could PRESS THE MAGIC BUTTON!

Using the MAGIC Button (no unicorns included)

Open the video as usual, then grab one of the handles on the timeline and find a frame in the video that shows either, say, the Level Select screen. Or maybe a Level Complete screen. Whatever you can get. With that frame visible, click the Magic Button. It will prompt you to select an image-file you want it to try to find in the current frame. Navigate to the 'Clustertruck' directory under images and pick an image of whatever screen you're trying to match.

Then WAIT. It'll take about 5 seconds, and everything will be frozen while it's working. (because I'm truly just banging code in here like a madman, knowing the whole UI needs to be burned to the ground sooner or later)

When it's done, it'll draw a box on the frame of video showing where it thinks the gameplay is. If you agree, carry on as usual... Mark in, mark out, hit analyze. And the coordinates found by the MAGIC BUTTON will be used to rescale and translate the video for analysis. If you DON'T agree with the box it just drew, try again with another image. The 'Level Complete' images, especially, can result in significantly different results. One of them will be the best match you can get.

Still not happy? Make your own image to test against! Take a screenshot from your own game, (on the screen you're trying to match) save it to disk and see if the MAGIC BUTTON gives you what you need.

Limitations, and Capitulations

I started writing this image_search function about 72 hours ago. Is it optimized? No. Could it be better? Sure. Could I probably have just downloading someone else's Python script / library that already does this a whole lot better? Shut up.

It's a basic proof of concept that is potentially so helpful to Clustertruck's team of verifiers that I whanged it in here with blatant disregard for the human species in general. (guh, humans -- so puny... and moist) So don't expect it to make a perfect match every time. And if it happens to give you a really good match on footage that's both nested AND has a livesplit timer ON TOP of the gameplay, consider yourself fortunate! And consider sending me some of your fortunes over Patreon, you freeloading mooch.

VMT-1.02.23a

23 Feb 22:52

Choose a tag to compare

VMT-1.02.23a Pre-release
Pre-release

The MAGIC Button Update - VMT-1.02.23a

SplitRP, now with moar MAGIKS!

Finding "Nested" Gameplay

So, you've got a run to moderate sitting in front of you. But it's from one of them-there Twitch livestreamers who scale the gameplay into a smaller area in the footage, nesting it within a larger overlay. The gameplay is at a semi-random scale, translated somewhere off to the right of footage. How are you gonna get SplitRP to analyze this scaled, non-fullscreen footage?

Well, you could:

- Take a screenshot
- Paste it into MS-Paint or whatever
- Collect the x and y coordinates from the top left of the game
- Figure out the width and height the gameplay occupies.
- Then edit the clustertruck.rp file, uncommenting and adding all that to the "Translate=" and "ReScale=" values.

Sure, you could do all that. (Srly? Come on! That's been a feature for a WHILE now. phhhh... You're welcome, anyway.)
Or you could PRESS THE MAGIC BUTTON!

Using the MAGIC Button (no unicorns included)

Open the video as usual, then grab one of the handles on the timeline and find a frame in the video that shows either, say, the Level Select screen. Or maybe a Level Complete screen. Whatever you can get. With that frame visible, click the Magic Button. It will prompt you to select an image-file you want it to try to find in the current frame. Navigate to the 'Clustertruck' directory under images and pick an image of whatever screen you're trying to match.

Then WAIT. It'll take about 5 seconds, and everything will be frozen while it's working. (because I'm truly just banging code in here like a madman, knowing the whole UI needs to be burned to the ground sooner or later)

When it's done, it'll draw a box on the frame of video showing where it thinks the gameplay is. If you agree, carry on as usual... Mark in, mark out, hit analyze. And the coordinates found by the MAGIC BUTTON will be used to rescale and translate the video for analysis. If you DON'T agree with the box it just drew, try again with another image. The 'Level Complete' images, especially, can result in significantly different results. One of them will be the best match you can get.

Still not happy? Make your own image to test against! Take a screenshot from your own game, (on the screen you're trying to match) save it to disk and see if the MAGIC BUTTON gives you what you need.

Limitations, and Capitulations

I started writing this image_search function about 72 hours ago. Is it optimized? No. Could it be better? Sure. Could I probably have just downloading someone else's Python script / library that already does this a whole lot better? Shut up.

It's a basic proof of concept that is potentially so helpful to Clustertruck's team of verifiers that I whanged it in here with blatant disregard for the human species in general. (guh, humans -- so puny... and moist) So don't expect it to make a perfect match every time. And if it happens to give you a really good match on footage that's both nested AND has a livesplit timer ON TOP of the gameplay, consider yourself fortunate! And consider sending me some of your fortunes over Patreon, you freeloading mooch.

VMT-1.02.16a

16 Feb 16:06

Choose a tag to compare

VMT-1.02.16a Pre-release
Pre-release

The Verifiers' Update - VMT-1.02.16a

This release brings a lot of under-the-hood restructuring and slightly more elegant error-handling, intended to provide Verifiers with the absolute latest version of SplitRP.

Error Handling

In the previous release, analyses that returned 0 splits threw a generic runtime error in the console. This release throws no error and generates a '0 Splits' log report that should better communicate that - for whatever reason - SplitRP either never found a starting frame, or never matched a split after timing initialized.

Under the Hood

Under the hood, there's been a significant restructuring of the POI List, and how POIs (points of interest) are stored. The number of reference images held in memory has been reduced and performance slightly optimized. Unmatch percentage values, which were a hold-over from previous incarnations of the project, are gone. And the 'Level Complete' pattern specification in clustertruck.rp has been modified to support Twitch% runs.

For the new Verification Crew, with Love

This release exists mainly to provide our new team of SRC Verifiers, joining the Clustertruck Leaderboard staff this week, with the latest version of the software available. As clunky as the UI still is, this is the best I've got to give right now. If we're lucky, the next release of SplitRP will come with a massive, game-changing overhaul to the UI that will make SplitRP universally indispensable in speedrun timing; a breeze to re-configure without needing to dig through text files; and roundly speaking the best thing since the best thing since sliced bread.

Patched re-release of VMT-0.11.25a.

26 Nov 19:33

Choose a tag to compare

Pre-release

Patched Release to address FMOD() sanity check bug between Numpy and Windows 10

SplitRP Video Moderation Tool (VMT-0.11.25a-patch.1)

Automated Video Analysis Tool for Speedrun Moderation
(RTA and IGT timing supported)

SplitRP is now 10x FASTER!

-This branch has deprecated live autosplitting to focus entirely on video analysis.
-UI activity is suspended during analysis for maximum speed in this first release.
-Using FFmpeg, SplitRP now analyzes video at a rate of up to 34 seconds per second.

   -MULTIPROCESSING IS DEAD! --- LONG LIVE FFmpeg!
      : 2x faster than the multiprocessing build.
      : Consumes less than 0.2Gb's of memory while processing.
      : Uses just 50-70% CPU (on my AMD Ryzen 5 3600, anyway)
      : Processes ~7  seconds of 1080p/60fps video per second.
      : Processes ~13 seconds of 1080p/30fps video per second.
      : Processes ~17 seconds of 720p/60fps video per second.
      : Processes ~34 seconds of 720p/30fps video per second.

HTML Run Logging

VMT-0.11.25a now includes - and puts front and center - the first implementation of HTML run logging.

  • When an analysis is complete, SplitRP now generates an HTML log of it's analysis, including video file information, analysis information, a splits table, and verbose reproductions of both the console log and the .rp file used.
    • Thumbnail images of split-start and split-end frames are written directly to the HTML file in Base64 encoding. This means that the log itself is a standalone file that can be stored or transferred to another moderator without losing the relevant image-logging.
    • Full images are still stored under the /runlog directory for reference and will be overwritten when the next analysis is run. If full preservation is required, copy the 'log_out.html' file AND the entire /runlog directory (preserving the directory itself) to a new location.

Open Issues Resolved

This release closes #14 and #15 .

Try SplitRP Today!*

*No warranties stated or implied. Use at your own risk. Choking hazard for children under 3.
Allow 8 to 12 weeks shipping and handling. Action jetpack sold seperately.

All Hail Proper SPLITS Data

22 May 21:46

Choose a tag to compare

Pre-release

May 21st, 2020 - Proper SPLITS

[CHANGES]

  • Both in console and in video analysis UI, split times are generated and presented in the form of RTA, IGT, and WASTE. Including running tallies of those times throughout the run.
  • This also marks my first serious effort to tidy up my code, refactor functions and classes that were redundant, and generally not have to cringe when I look at my class structures. Number of lines has been reduced by the hundreds. The main splitrp.py file is back down to less than 600 lines of code.

[WRAP UP]

This relatively minor, interim update should make run moderation and video analysis a lot easier in the alpha build. And for live running, provide an easily referenced backup of the timing events sent to livesplit during the run.

The FIRST UI - Video Moderation Tool

09 Apr 00:12

Choose a tag to compare

Pre-release

April 8th, 2020 - Video Analysis gets a UI

[NEW FEATURES]

  • MP4 Analysis

    • Pressing ALT+v in the console window will halt screen monitoring and open a video moderation UI.
    • Load a file by selecting File>Open from the top menu.
    • Drag 'in' and 'out' handles to the beginning and end of the where you want the video to be analyzed.
    • Click the 'Analyze' button to begin analysis.
    • Events like 'start, split, pause, unpause' will be marked on the timeline as analysis continues.
    • When complete, the run log will be outputted to the console window as in past releases.
  • Notes

    • 1080p is the highest resolution to expect correct results from right now.
    • Supports any constant frame rate, 60/30/29.9... its all fine.
    • Some non-mp4 video formats may work as well. (but I'm not trying to support them)

[WRAP UP]

This is the first bit of UI built for the Rebuild branch. It makes the video analysis end of things much easier to engage with, but it's visually ALL placeholder for now. In future releases, graphics will be added to the untextured buttons and widgets, the timeline will be zoomable for precise selections, marked 'events' on the timeline will be selectable post-analysis for detailed info, performance will hopefully be less ass, and all the run-log information spat out in the console window will be presented within the UI space.

That said, getting some UI involved - especially with this kind of support for video scrubbing - is a big step forward. And it makes using splitRP for confirmation / moderation reasonably viable... Without it feeling like you're pulling teeth to make it work.

MP4 Analysis for Moderation

24 Feb 03:40

Choose a tag to compare

Pre-release

Feb 23rd, 2020 - MP4 Analysis Added

This build is "experimental."
I recommend v0.2.10 for a more tested and stable build. (still alpha tho, don't @ me!)

[NEW FEATURES]

  • MP4 Analysis

    • Pressing ALT+v in the console window will halt screen monitoring and ask for video location.
    • Enter a valid path to a valid file (optional start and stop frames), and analysis begins.
    • Bad path, or non-number start/stop frames will just crash the program and it will close. ("experimental")
    • Analysis will report activity as it goes, confirming each 10% on its way to completion.
    • 1080p is the highest resolution to expect correct results from right now.
    • Supports any constant frame rate, 60/30/29.9... its all fine.
    • Some non-mp4 video formats may work as well. (but I'm not trying to support them)
  • Settings.cfg added

    • You can now change the reset key, and the video-analysis key in the settings.cfg file.
    • You can also enable per-second logging by setting PerSecondLog = True.
  • 'Runlog' updated

    • The /runlog directory is where confirmation images of the last run are stored when reset key is pressed.
    • The images are now a:'last shot,' b:'event shot,' c:'processed shot,' for each recorded event.
    • To confirm correct timing, images across splits should go from in-level, to level-complete, and back.
  • Verbose logging

    • SplitRP will now generate a run-log each time the reset key is pressed.
    • It will tally the frames it counted between events and output what those represent in seconds.
    • Format is SPLIT: [RTA secs] (IGT | WASTE frame counts) on FRAME OF EVENT, etc...
    • FINAL: provides a total RTA time, total frame count, then IGT and WASTE values.
    • Probably don't use these figures for timing. They're hard to read and understand. Do use them for bug reporting, though!

[WRAP UP]

Lots of big changes here, and the code's starting to get a bit spaghetti-fied. So there's lots of chances for previously functioning features to be bugged in this version. Feel free to try it - especially the video analysis - and give me feedback, but I'm labeling this one 'experimental' for a reason. Bear that in mind.

v0.2.10-alpha

11 Feb 02:19

Choose a tag to compare

v0.2.10-alpha Pre-release
Pre-release

Feb 10th, 2020 - Update: More optimized than ever.

[Change log]
    -Grayscale method modified to luminance based on XYZ image format.
    -Clustertruck.rp tests rewritten from square one
    -'Level Select' reduced to 6 images
    -'Level Complete' refined to over 97% accuracy (96% set in file for flexibility)
    -Unused images have been discarded -- 10Mb's worth of pngs deleted

So...

...this is a minimum-viable alpha. No user interface. Raw console output. Lean, mean, and hopefully functional. The goal here is to support IGT timing; To remove level load times and next-level clicks from the measurement of our speedruns; To judge a run by the run... not the throughput of the SSD the game is loaded on; Not the speed with which we click a violently shaking, half-borked button.

Here's what SHOULD work...

  • 16:9 screen resolutions -- Everything's been developed at 1920x1080, but splitRP should handle scaling to other resolutions of the same aspect ratio. Outside of the aspect ratio, don't expect much.
  • Run start on first-frame of entering a level.
  • IGT timing pauses while on Level Complete screen. RTA timing continues throughout.
    • (rt click Livesplit>Compare Against>Real/Game Time)
  • Automatic run start from Level Select menu.
  • Automatic run start from Pause Menu within level.
  • Exiting to Main Menu or Level Select from having PAUSED on a Level Complete screen, should keep IGT timing stopped until you re-enter a level.
  • Pressing numpad-3 should reset the autosplitter and output 'runlog' images to the /runlog directory.

[INSTRUCTIONS]

1. Add the 'Livesplit Server' component to your Livesplit "Layout."

  • RT CLICK LIVESPLIT> EDIT LAYOUT> CLICK DA BIG PLUS BUTTON> CONTROL> LIVESPLIT SERVER
  • Port should be 16834. (you shouldn't have to change this. 16834 is the default)

2. Turn on Livesplit's server.

  • RT CLICK LIVESPLIT>CONTROL>START SERVER
    • You'll have to start it EVERY time you open Livesplit, or change to a different layout!
    • Yep. Go talk to the developers of Livesplit about that convenient implementation choice.

3. Open splitRP.

  • Step 2 comes BEFORE step 3. Yay, maths! Start Livesplit's server, THEN open splitRP.
    • Connection attempt happens precisely ONCE at startup. If Livesplit's server isn't already running, it will not connect. Have I mentioned it's a barebones technical alpha build, yet? Pretty sure I did.

[BUGS, FEATURE REQUESTS, AND ISSUES]

Please use the Issues page to submit bugs. As to feature requests: Understand that this is a minimum-viable alpha... there are dozens of convenience features and user controls - not to mention a proper UI - that are intended for the final build that you WILL NOT FIND HERE. Do not test my sanity by complaining that the alpha isn't finished. I WILL DESTROY YOU. SO HELP ME GAHD!

That said, enjoy the splitter. If everything's working as intended, you basically just open it, leave it running in the background, and go about your speedruns.

For direct support, meet me in the #splitRP channel on http://discord.roninpawn.com
Peace, bitches.

[F.A.Q.]

What? Seriously? Does no one get what "minimum viable Alpha" means? It means I'm not hand-holding, writing FAQ's, and providing thorough documentation at this point, you numpty! Hey, hey! Here's a thought! How about reading what I wrote above. Huh? What if the answer you seek is in the words I shouldn't have bothered to type because YOU CAN'T BE BOTHERED TO FUH....

Hey! No, no! ...let go of me!
I'm not finished, here!
I got more to say!
You can't just DECIDE I'm drunk!

splitRP Rebuild - The First Alpha (v0.2.8-alpha)

08 Feb 22:30

Choose a tag to compare

Here we go people!

So... this is a minimum-viable alpha. No user interface. Raw console output. Lean, mean, and hopefully functional. The goal here is to support IGT timing; To remove level load times and next-level clicks from the measurement of our speedruns; To judge a run by the run... not the throughput of the SSD the game is loaded on; Not the speed with which we click a violently shaking, half-borked button.

Here's what SHOULD work...

  • 16:9 screen resolutions -- Everything's been developed at 1920x1080, but splitRP should handle scaling to other resolutions of the same aspect ratio. Outside of the aspect ratio, don't expect much.
  • Run start on first-frame of entering a level.
  • IGT timing pauses while on Level Complete screen. RTA timing continues throughout.
    • (rt click Livesplit>Compare Against>Real/Game Time)
  • Automatic run start from Level Select menu.
  • Automatic run start from Pause Menu within level.
  • Exiting to Main Menu or Level Select from having PAUSED on a Level Complete screen, should keep IGT timing stopped until you re-enter a level.
  • Pressing numpad-3 should reset the autosplitter and output 'runlog' images to the /runlog directory.

[INSTRUCTIONS]

(imagine providing instructions on a technical alpha... ffs.)

1. Add the 'Livesplit Server' component to your Livesplit "Layout."

  • RT CLICK LIVESPLIT> EDIT LAYOUT> CLICK DA BIG PLUS BUTTON> CONTROL> LIVESPLIT SERVER
  • Port should be 16834. (you shouldn't have to change this. 16834 is the default)

2. Turn on Livesplit's server.

  • RT CLICK LIVESPLIT>CONTROL>START SERVER
    • You'll have to start it EVERY time you open Livesplit, or change to a different layout!
    • Yep. Go talk to the developers of Livesplit about that convenient implementation choice.

3. Open splitRP.

  • Step 2 comes BEFORE step 3. Yay, maths! Start Livesplit's server, THEN open splitRP.
    • Connection attempt happens precisely ONCE at startup. If Livesplit's server isn't already running, it will not connect. Have I mentioned it's a barebones technical alpha build, yet? Pretty sure I did.

[BUGS, FEATURE REQUESTS, AND ISSUES]

Please use the Issues page to submit bugs. As to feature requests: Understand that this is a minimum-viable alpha... there are dozens of convenience features and user controls - not to mention a proper UI - that are intended for the final build that you WILL NOT FIND HERE. Do not test my sanity by complaining that the alpha isn't finished. I WILL DESTROY YOU. SO HELP ME GAHD!

That said, enjoy the splitter. If everything's working as intended, you basically just open it, leave it running in the background, and go about your speedruns.

For direct support, meet me in the #splitRP channel on http://discord.roninpawn.com
Peace, bitches.

[F.A.Q.]

What? Seriously? Does no one get what "minimum viable Alpha" means? Fine, I'll a'splain: It means I'm not hand-holding, writing FAQ's, and providing thorough documentation at this point, you numpty! Hey, hey! Here's a thought! How about reading what I wrote above. Huh? What if the answer you seek is in the words I shouldn't have bothered to type because YOU CAN'T BE BOTHERED TO FUH....

Hey! No, no! ...let go of me!
I'm not finished, here!
I got more to say!
You can't just DECIDE I'm drunk!

Pre-Release 1.0 (for beta testers)

23 May 16:31
10aed1b

Choose a tag to compare

Pre-release

The compiled version of this release manifests a terminal window where beta testers can confirm operation and see what was going on during any non-fatal errors or inconsistencies that might arise.

The console window will not be present in the proper 1.0 release.