All Projects → milankarman → Unload

milankarman / Unload

Licence: GPL-3.0 license
An advanced automatic speedrun load time remover for community verifiers.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to Unload

LiveSplitOne
A version of LiveSplit that works on a lot of platforms.
Stars: ✭ 172 (+760%)
Mutual labels:  speedrun, speedrunning
Splitter
A speedrunning timer for macOS
Stars: ✭ 34 (+70%)
Mutual labels:  speedrun, speedrunning
flitter
A Livesplit-inspired speedrunning split timer for Linux/macOS terminal. Supports global hotkeys.
Stars: ✭ 112 (+460%)
Mutual labels:  speedrun, speedrunning
go-journal
Verified, concurrent, crash-safe transaction system
Stars: ✭ 28 (+40%)
Mutual labels:  verification
munta
Fully verified model checker for realtime systems
Stars: ✭ 14 (-30%)
Mutual labels:  verification
flutter verification code input
Verify code input. You can create a verify code input.
Stars: ✭ 48 (+140%)
Mutual labels:  verification
kokkos-tools
Kokkos C++ Performance Portability Programming EcoSystem: Profiling and Debugging Tools
Stars: ✭ 52 (+160%)
Mutual labels:  timing
discord-js-bot
A cool multipurpose discord bot built using discord.js v13 with moderation, music, ticketing, translation, and much more
Stars: ✭ 135 (+575%)
Mutual labels:  moderation
Hourai
The world's most advanced security and moderation bot for Discord.
Stars: ✭ 37 (+85%)
Mutual labels:  moderation
move
Home of the Move programming language
Stars: ✭ 125 (+525%)
Mutual labels:  verification
fastapi-cloudauth
Simple integration between FastAPI and cloud authentication services (AWS Cognito, Auth0, Firebase Authentication).
Stars: ✭ 221 (+1005%)
Mutual labels:  verification
elapsedMillis
Arduino 'port' of the elapsedMillis library
Stars: ✭ 67 (+235%)
Mutual labels:  timing
nypsi
the best discord bot
Stars: ✭ 41 (+105%)
Mutual labels:  moderation
in3-legacy
[Deprecated] Typescript-version of the IN3 client.
Stars: ✭ 69 (+245%)
Mutual labels:  verification
nnv
Neural Network Verification Software Tool
Stars: ✭ 71 (+255%)
Mutual labels:  verification
about-time
A cool helper for tracking time and throughput of code blocks, with beautiful human friendly renditions.
Stars: ✭ 36 (+80%)
Mutual labels:  timing
cafeobj
Development of the CafeOBJ interpreter
Stars: ✭ 25 (+25%)
Mutual labels:  verification
hellsnakebot
🤖About A fully customizable bot built with discord.js
Stars: ✭ 14 (-30%)
Mutual labels:  moderation
IDVerification
"Very simple but works well" Computer Vision based ID verification solution provided by LibraX.
Stars: ✭ 44 (+120%)
Mutual labels:  verification
HifumiOld
🛠️ A Discord bot that focuses on managing large servers
Stars: ✭ 27 (+35%)
Mutual labels:  moderation

Logo

Unload

An automatic speedrun load time remover for community verifiers.
Report Issue - Request Feature - Video Guide

Table of Contents

About

Speedrun timing is a tricky subject. A community doesn't want to give anyone an unfair advantage but you also don't want the timing and verification process of new runs to take too long. Unload is made to help with those speedruns that choose loadless timing yet require a lot of verification work. I ran into this problem with speedruns of the game "The Hobbit" which I verify - and thus Unload was born.

If the game you verify has consistent recognizable loading screens then Unload should be able to detect them all and give accurate loadless timing.

Unsure if your speedrun videos will work with Unload? Read this!

Triangulation view

Features

  • Pick one or more loading screens and detect them everywhere.
  • Loads are picked from the video you're verifying, so even bad video quality load screens can be recognized.
  • Quickly check and adjust load frames with the dedicated load checking window.
  • Unload can work with most video formats.
  • Option to export framecounts to keep a clean log of verifications.
  • Options to crop and change VODs for fast processing

Usage

If you would rather watch a video guide then go here. Note that this is slightly outdated by now but the workflow remains mostly the same.

  1. When starting Unload you'll be welcomed with the start menu. Here choose "Convert" and pick the video you'd like to frame count.
  2. You'll be met with the conversion window, here you can choose to cut to the part of the video where the run actually takes place. If the game you're is locked at a lower framerate than the video then you want to change the FPS setting to match that (Example: a game runs at 30fps while the video is recorded at 60fps). Hit convert when you're happy with your settings.
  3. After converting you'll be met with the main window. Find the frame where the speedrun starts using the navigation down at the bottom, then hit "Set Start". Do the same for the frame where the speedrun ends (the last frame of gameplay) and hit "Set End".
  4. Now use the video navigation to find a loading frame, then hit the "+" button in the load picking group in the top left. You should see your load screen show up in that group.
  5. Then we want to crop to the distinct part of the loading screen, this will differ from game to game but the more distinct the better. You can click to draw a rectangle over the load screen preview to crop quickly, or by adjusting the sliders in the load picking sections (Drawing your cropping is only possible when the sliders aren't changed).
  6. Once you're happy with that we can go over to the top right load detection group and hit "prepare frames", note that this might take a bit of time and needs to be re-done if you want to change your cropping, so ensure that your cropping is correct.
  7. Now you're ready to hit "detect load frames" in the load detection group. You should then see a list of detected load frames as well as the calculated times in the bottom left frame count group.

Now you can export your frame count to a file using the "export times" button, however it's recommended that you double check the detected loads using the steps below.

  1. Hit "open load checking window" below the detected load list. You'll be met with a window showing the start frame of a loading screen, ending frame of a loading screen and the frames surrounding those.
  2. Use the load navigation buttons and slider to check if there are any incorrect loads or missing loads.
  3. If you notice missing loads, return to the main menu and try lowering the minimum similarity and hitting "detect load frames again". If you notice a lot of false positives try raising the minimum similarity and detecting load frames again.
  4. Finally you can adjust slight mistakes using the load check window, I recommend just playing around with this.

And that's all you need to get started. There are more options for more specific use cases which aren't described here that you can feel free to mess around with.

Download

You will need to have the .NET 5.0 runtime installed. Download the most recent release here. Download the .zip file and extract the full "Unload" folder into the location where you want to keep it. Then you can run the Unload.exe file inside and you're up and running!

Unload is only available for Windows, there hasn't been demand to port it and it will likely take a large amount of effort..

Will my game work with Unload?

To answer this you'll have to look at how your game looks when it loads:

  • If your loading screens contain a logo, image or anything that's distinct on every load screen then there's a great chance Unload can detect it.

  • If you have a set of different looking loading screens and all are clearly different from gameplay then there's a great chance you can choose them all and Unload can detect them.

  • If your loading screens are pure black screens, Unload might work but you would have to be careful that no non-loading black screens get picked up.

Note that loading screens that fade in or out would require some extra adjustment to get the timing just right, but they will likely work if they match what's written above.

And if you're still not sure there's never harm in trying.

Loading screen example An easy to detect load screen in the game "The Hobbit."

Extra Info

Here I'll answer some things you might be wondering in a questions-and-answers format.

How does Unload work behind the scenes?

Unload calculates something callled a Perceptual Hash (PHash) for every video frame as well as the picked loading frames. Using this PHash it can compare how similar the video frames are to the picked loading frames and if they are similar enough they can be confidently counted as load frames. From there it's simple math to subtract the load frames from real time.

How can I speed up conversion?

The best way to go about speeding up conversion is to work with less video data. You can set the start and end time to be closer to the start and end of the run where applicable to avoid converting as many frames.
You might also be able to lower the framerate if, for example, the game has a locked framerate at 30 FPS but the video is recorded at 60.
Last but not least you can lower the export width and height, but know that this won't speed up conversion a lot and if the quality gets too low then loading frames might be harder to recognize.

Why does every loading screen need the same cropping?

This is because Unload applies the same loading frame cropping to every video frame before PHashing it. If there are multiple different croppings that would mean all video frames would have to be PHashed multiple times, multiplying processing time for every new load frame.

How can I speed up frame preperation?

Frame preparation is very dependent on the size of your loading screen cropping. If you hardly crop at all, then the process will likely take a long time. Thus try to find something smaller yet distinct on your loading screens to be recognized and crop to that when possible.

Does Unload support alpha masks for loading frames?

No, this is not supported yet. But it's something I would like to add eventually.

Can unload work on live runs together with my timer?

No, Unload is purely designed for verification purposes.

What does it mean when Unload tells me "Fewer converted frames are found than expected"?

When Unload loads in your video file it checks how many frames it expects there to be in the video. It then checks how many frames it finds in your converted "_frames" folder. If this is less than it expects then there's a chance some frames might be missing, possibly due to a conversion error. The warning is just to make you aware of this, as there's a chance that might lead to innacurate load time calculation.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].