Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add RTA Speedrun Mode #114

Draft
wants to merge 27 commits into
base: dev
Choose a base branch
from
Draft

Add RTA Speedrun Mode #114

wants to merge 27 commits into from

Conversation

thearst3rd
Copy link
Member

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:

  • 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.

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

  • 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
  • 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)
  • 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

@thearst3rd thearst3rd mentioned this pull request Apr 28, 2023
12 tasks
@TheGreatAutismo TheGreatAutismo added the enhancement New feature or request label May 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants