This pull requests adds a real-time speedrunning mode into PlatinumQuest, for competing on the MBP, PQ, and MBU (PE) speedrun.com leaderboards.
My goals for this mode:
This mode should time a players run from start to end, automatically starting and stopping at the correct points.
This mode should level the playing field for anyone using any computer to compete fairly. Particularly, this mode will remove loading times.
This mode should largely behave as if it didn't exist, and time runs without doing anything special. Particularly, menuing is still included in the final time and will not be automatically skipped/etc (in contrast to HiGuy's MissionQueue system which changes how menuing works).
An exception that I'd like to implement: The ability to skip needing to enter your name if you get a local top 5 score. This can be done by editing your prefs file and setting all PBs of all levels to 0, but that's annoying to setup and means you can't keep track of if you do end up getting a new PB during the speedrun.
Going along with the above point, it'd be nice to enable recording and automatically save .rrec files in the chance of a PB, without interrupting the run (as if recording was disabled).
This mode should time any sub-categories that are subsets of the current run. So, if you do a full game run of MBP, this mode will also produce final times for Beginner/Intermediate/etc.
This mode should also support multi-game speedruns, for example, a colored name speedrun. In addition to providing the final time for each sub-category, it will provide the final time for each sub-game.
Usage
To perform a speedrun using this mode, do the following steps:
On the PlayMissionGui, navigate to the final level in the speedrun
Open the menu bar and click on the RTA Speedrun button
Click the button "Set Final Level", as well as "Start Speedrun"
Navigate to the first level in the speedrun
Hit play, and timing will start on the first frame of the first level.
Upon completion of the final level, the speedrun will stop and display the final time.
Some of the above goals I laid out have not yet been completed, and there's more left to do.
Priority, must be completed before merge
[ ] Speedrun recovery on crash, so if PQ crashes during a speedrun, it can recover what the timer was and let the player continue the speedrun
[ ] Make a good looking RTA Speedrun button for the PlayMissionGui which looks official
[ ] Polish the RtaSpeedrunDlg to look more official
[ ] Figure out a spot for the button in the first place since right now it's going too far on the lowest resolutions
Nice to have, maybe after the initial merge
[ ] Add an option for splitting/ending the run on egg collection, in case someone wants to do an all eggs category
[x] Add special cases for sub-category game ends, in the case that a game has a "bonus" category that we don't want counted
[ ] Figure out how to make the visual timers update properly when the game is paused. It does correctly time the run when paused, but the visual timer doesn't update until the game is resumed.
[ ] Skip the name entering if you get a top 5 score
[ ] Automatically save .rrec if you're recording and get a PB (no need to enter details in the dialog)
[X] Create LiveSplit autosplitter, possibly creating an MBExtender module which can be easily scanned with LiveSplit to find the needed data and remove the need for manual effort with each new PQ release
[ ] Along with above, maybe even create a LiveSplit One autosplitter opening a websocket directly within PQ, for cross platform autosplitting. That'd be epic
[ ] Give a warning when a player sets the Final Level as an MBG level, letting them know that the MBG leaderboard only accepts runs from vanilla MBG and not PQ
RTA Speedrun Mode for PlatinumQuest
This pull requests adds a real-time speedrunning mode into PlatinumQuest, for competing on the MBP, PQ, and MBU (PE) speedrun.com leaderboards.
My goals for this mode:
Usage
To perform a speedrun using this mode, do the following steps:
A LiveSplit autosplitter can also be used, enabled by the RTA Autosplitter MBExtender module.
Demos
Full run of MBU including bonus levels, showcasing how it calculates the final time of each sub-category: https://www.youtube.com/watch?v=nJ8rg0kLIlo
Run of PQ beginner, showcasing LiveSplit autosplitter: https://www.twitch.tv/videos/1775929418
Future Plans/TODOs
Some of the above goals I laid out have not yet been completed, and there's more left to do.
Priority, must be completed before merge
Nice to have, maybe after the initial merge