I am happy to finally share the biggest patch that Herakles has ever had! This Speedrun patch adds so much to the game, including a speedrun mode and leaderboards! See below for a full summary of everything that has been added/changed.
Speedrun:
- 3 game modes, consisting of 5 total leaderboards
- Automatic speedrun route system - routes diverge any time a player enters a level or acquires a new buff. A segment ends and begins when a player leaves a level. If a player chooses to "Stay in Level" to acquire an item or buff, the level will not end until they exit the level.
- Every speedrun attempt is saved in the %USERNAME%\AppData\Local\herakles\userdata Cloud/Attempts folder. These can be used in the future to generate fun statistics. They are never loaded into the game, however, and are safe to delete if you ever wanted to. The game keeps a pruned version of your attempts that only includes your runs that you either had a PB for a unique route or a best split for a unique route.
- A pruned file of your greatest speedrun attempts is stored in the %USERNAME%\AppData\Local\herakles\userdata Cloud folder. This file is what the game loads for you to compare against during a run. This pruned file of your attempts only includes your runs that you either had a PB for a unique route or a best split for a unique route.
- Attempts stored in the Attempts folder and the user's pruned files are in json format. This way any user can create a simple program to read in this data and use it.
- I have implemented a robust anticheat system to prevent hackers and to ensure a fair leaderboard. I will not divulge details of the system, but just know that anyone that attempts to hack the game will be banned from the leaderboards.
- Once the speedrun timer starts, it will not stop for pause menus or anything. The Campaign, however, does automatically unlock the cutscenes so that players can skip them entirely. For the Demo and Classic modes, players can simply press spacebar to skip the cutscenes, as normal.
- The timing method uses a frame based IGT (In-Game-Timer). If too much lag is detected during a run, the run will be invalidated and will not be uploaded to the leaderboards.
- Added Speedrun option on the Arcade popup.
- The game has a speedrun overlay when in Speedrun mode. This overlay is present inside of levels, as well as when on the map screen.
- Edited Speedrun.com to now have Campaign, Classic and Demo categories. Campaign category has Any% Warpless and Any%. Any% Warpless is for Normal and Hermes runs. A variable can be set to show if the player acquired the Boots of Hermes during the run. The Any% category is for Toasty runs. Toasty is still a secret and will be slowly revealed in the future.
- Difficulty in Speedrun mode is fixed to medium. This makes it easier to watch other people's speedruns.
- When completing a speedrun, your run will be submitted to the leaderboards. The Speedrun Results screen will show the details about your run. It will also display if you achieved a Personal Best, discovered a new route or many number of headlines may display.
- When entering the Speedrun Results screen, a screenshot will be taken. If you your run was still in the middle of being submitted to the leaderboards, a 2nd screenshot will be taken once the submission is complete. This way you have the 2nd screenshot that contains the proper headline, such as "New Personal Best!" or "New World Record!".
- Fireworks will display for users that achieve an amazing feat. The colors and firework frequency will be different based on the accomplishment. The fireworks will only play after the run has finished submitting to the Steam leaderboards. This way, no fireworks will display until a final screenshot has been taken of the Results screen.
- If you exit a speedrun before finishing it, the run will still be saved as an attempt. It will use any best times or "gold splits" that you achieved during your unfinished run. Unfinished runs cannot be a PB, of course.
- On the Speedrun screen, you can click on the Leaderboards button to see how you rank against everyone else. The top 3 runs will always be the top 3 on the leaderboard. The next 3 listed will be the 3 runs above you. The next run will be your entry in the leaderboards. Then the last 3 listed will be the 3 runs below you. If you are in the top 7, then the top 10 will simply be displayed. A button labeled "View All" allows you to view the entire leaderbord on Steam.
- During Speedrun mode, lightning charges are limited to 2 columns (10 total lightning charges). The player is able to gain additional lightning charges, but they will not be displayed because they would be in the way of the speedrun's HUD. Lightning weapons are not the most optimal weapons in a Speedrun, anyways.
- After completing a Campaign run, at the bottom of the results screen, you can see any buffs that you acquired during the run.
- Added monitor refresh rate detection. If someone plays the game with a 50hz monitor, for instance, the game will run much slower and be easier for them. Their runs will also be invalidated and not eligible for the leaderboards. The game detects this shortly after the game starts up and alerts the user that they are using a slow monitor. 60hz and higher monitors are recommended.
- Set up Demo to first ask if the player would like to try out the new Speedrun mode. If they choose no, they go to the normal mode. If they choose yes, they begin a speedrun. They do not get to use the speedrun setup screen. And they are limited to the Demo mode. Any run completed in the Demo-client will not be uploaded to the leaderboards until the player buys the full game.
Speedrun Settings/Options
On Speedrun screen:
- Game mode - Allows you to choose which game mode to play: Campaign, Classic or Demo.
- Disable Tutorials - Disables all tutorial systems, regardless of what the settings show on the Settings popup.
- Start game here - Allows you to start the game on the Speedrun screen, to get right into the action!
- TAS - Enables TAS, which disables highscores. This means your runs while TAS is enabled will not be submitted to the leaderboards. You are allowed to use external tools, like Cheat Engine, while TAS is enabled. In order to disable TAS, you will need to uncheck the box, and the game will then require that you restart the game. Restarting the game is the only way to turn off the TAS system.
- Compare Against (Your own times) - Allows you to compare your run against your own times
- Compare Against (Developer) - Allows you to compare your run against my times (the developer)
- Compare Against (World Record) - Allows you to compare your run against the World Record run. This will automatically download the World Record run's data so that you can run
- Compare Against (Custom)
- Route Determined By - When showing which route to go down, you can have the game choose between the route with the fastest PB or the route with the fastest Sum of Best. Your run will still be compared to the PB time, however.
- Default Weapon Choice - For Demo and Classic modes, you can choose what the spacebar will default to choosing. This way you do not need to use your mouse, as you have it pre-determined which weapon you loadout you want to choose.
- Preferred Route - During Campaign mode, this will allow you to only have the game compare your run against certain routes. For instance, you can choose to compare only against runs where in which the Boots of Hermes was attained by only checking "Hermes". You can also compare against runs in which you did not get the Boots of Hermes by checking "Normal". And Toasty is a route that is a secret for now.
On Settings popup:
- Segment Icons - Enables icons to be drawn next to segment names.
- Buff Outlines - Enables buff outlines to be drawn to show you what buffs you attained in your PB run. As you attain the buffs again, the outlines will turn to the normal buff icons.
- Use Steam Username - During speedrun mode, this will replace the "Herakles" text above the player's portrait in-game with your Steam username.
On Speedrun Results screen:
- Absolute Best - This will include your current run's gold splits into your Sum of Best. With it turned off, you can compare your current run to your previous Sum of Best, as well as your previous Segment Best times.
Speedrun HUD
Detailed timer:
- Segment Time - The amount of time since starting the segment
- Segment PB - The amount of time it took you to complete the current segment in your PB run
- Segment Best - The fasterst time it took you to complete the current segment, out of all of your runs.
- Possible Time Save - The difference between your Segment PB and Segment Best
- Best Possible Time - The final run's time if you were to finish all of the remaining segments with your Segment's Best time
- Previous Segment - How much faster or slower you were in your previous segment, compared to its PB Segment time
- Live Segment - Once your Segment Time reaches your Segment Best time, Previous Segment will switch to Live Segment, and Live Segment will display How much faster or slower you are in your current segment, compared to its PB Segment time.
- Sum of Best - A sum of all of your segment's "best" times. This is your theoretical best possible time if you had the perfect run.
Main timer:
- Segment Name - This is the name of the segment.
- Segment Time - Before completing the segment, this is the PB Cumulative Time. PB Cumulative time is the time in the run when you completed the segment in your PB run. After completing the segment, it will be your current run's cumulative time when you completed the segment.
- Segment Time Difference - Before completing the segment, this is the difference between your current run's time and when you completed the segment in your PB run. After completing the segment, this will be how far off of your PB run you are at the moment in completing the segment. If this is positive, you are behind your PB run. If this is negative, you are ahead of your PB run.
Bottom right:
- Compare against - This will show which "Compare Against" setting you chose on the Speedrun screen. Thus, showing whose times you are currently comparing against (yourself, developer, world record, etc)
- Hash - This will display after completing a segment. It can be used to help verify that a run has not been cheated or tampered with. It contains a lot of data about the run.
Speedrun Results
For reading the results:
First, some definitions:
PB = Personal Best = The run that has your lowest final time (for a specific route).
Best = Out of all of your runs, the fastest you've ever done a single segment.
Sum of Best = Combine all the Best segment times you've ever done. This is basically your theoretical best you can possibly achieve. Get gold splits and you lower this :D
From left column to right:
1. Name = This is the segments name
2. Segment = This is the CURRENT run's segment time for that segment/row.
3. PB = This is your Personal Best's run's segment time for that segment/row.
4. Best = This is your the best you've ever run that segment (taking into account the route you took)
5. Time = This is the cumulative time for the CURRENT run, up till that segment/row.
6. PB = This is the cumulative time for your Personal Best's run, up till that segment/row.
7. Sum of Best = this is the cumulative time of all of your best segments, up till that segment/row. (aka this is your theoretical best you can do if you had a perfect run)
Symbols:
1. Plus sign (+) = You are behind the time you are comparing to.
2. Negative sign (-) = You are ahead of the time you are comparing to.
3. "PB segment" and "Best segment" columns compare to the "Segment" column
4. "PB cumulative" and Sum of Best" columns compare to the "Time" column
Colors: (comparing to the segment time and/or cumulative time)
1. Dark red = You are behind the time you are comparing to. AND you are falling further behind.
2. Light red = You are behind the time you are comparing to. BUT you gained some time in your previous segment! (light red is only for cumulative times)
3. Dark green = You are ahead of the time you are comparing to. AND you are gaining an even greater lead!
4. light green = You are ahead of the time you are comparing to. BUT you are starting to fall behind. (light green is only for cumulative times)
5. Gold = You ran this segment faster than you have ever ran it before! This means your "Best" segment for that segment/row has lowered. And this also means your Sum of Best will be lowered, too!
Non-Speedrun related changes:
- Added a Classic Timer to the settings popup, under the Game tab. This allows you to have the game automatically flip between classsic graphics and normal graphics on a set interval. This is, of course, only for Classic mode.
- Using shield to reflect fire back to the dragon now does more damage. This makes the dragon's own fire the best weapon to defeat him.
- Settings.ini has been split into Settings.ini and Options.ini. Both are in the AppData/Local/herakles/users/ folder. But Settings.ini is always in the Local folder, inside of the folder. But Options.ini can be either in the Local folder or the Cloud folder for the user. An option in Settings called "Sync Options.ini" can be enabled, which moves the Options.ini into the Cloud folder, to allow gameplay specific options to sync to the cloud. This way if you make a gameplay option change on one computer, it will change on all of your computers.
- The Demo-client is now a much smaller download for people. I have stripped it down to not include images that are only used in the full game. I can strip it down further in the future.
- Added some Steam stats to track the player's progress. Some of these include how many times the player has completed a speedrun. As well as total speedrun attempts. If a player plays the demo, these will automatically be transferred into the full version if/when the player upgrades. Collecting these stats now will allow me to use them in the future for various things, including achievements. A full list of the game's stats can be viewed here: https://steamdb.info/app/1066010/stats/
- On the map screen, the "Rescuing Telamon" snow mountain had a very large window of where to click to activate it. This is because it is fairly diagonal shaped and I am simply using bounding box collision to detect when it is clicked. For this one level's map icon, I have set it to use precise collision detection. This fixed the problem.
- On the level complete for Demo/Classic modes, the gamepad button was offset. This is because we had centered the text in a previous patch, but didn't reset the position of where the gamepad button would be drawn.
- On the map screen, if you clicked the place button and then used the left or right arrow keys to change level, it would change level even while exiting the map screen. It is not fixed so that once you click play, you cannot change the level.
- On the Pumpkin character in Hades mode. His popup had the word "cant" and this has been fixed to say, "can't".
- You can now use left/right bumper on the gamepad to navigate the levels on the map screen
- You can not use left/right bumper on the gamepad to navigate the tabs on the Settings popup.
- The classic graphic for unlocking poison (tutorial info) was the normal graphic. It is now the classic graphic style.
- Many new players miss the 2/4 pumpkins in the pit on the training level. A green guiding arrow has been added that will appear after the player has reached all checkpoints and has a pumpkin that is offscreen.
- When toggling fullscreen and windowed, interpolation was turning off and not getting turned back to the user's setting. Fixed it so that it now does.
- On the level complete for Demo/Classic modes, the screen would say to press spacebar, but in reality it meant to press the "Weapon Pickup" key. Now it will always accept spacebar, even if a player changes their "Weapon Pickup" key to something other than spacebar.
- Fixed a bug where deleting a saveslot would not delete it. This was because I forgot to change location of the file to be deleted during the Cloud patch. The location has been fixed.
- Fixed bug where if you use left/right arrow keys to change levels, it will change the level/name but not the character's portrait in Chaos/Hades modes. It also wouldn't change the weapons/buffs to the correct character's loadout. It does that now as well.
- Fixed bug where poison arrows shot into a Troy Defender's shield caused the floating arrow's image to not be poisonous
- On King's Tower, the green cliff background near the bottom was about 4 pixels above the HUD. It is now flush.
- The text for rescuing Telamon from the Bandit Lord previously said, "Telamon". It now says, "Telamon!".
- Default Master Volume has been changed from 100% to 50%. This way, it is less likely to be too loud initially.
- Fixed a bug where the function that is supposed to open a website in Chrome for the user, like the discord link, it would add %22 to the beginning of the URL. This was actually a bug that was introduced with a Chrome update. For some reason the built-in "url_open" function did not work correctly after Chrome's update. To fix this, I add a Herakles.dll to the game. This contains a C# function to open a webpage in a browser. This is currently the only thing in the Herakles.dll. The Herakles.dll requires .NET framework 4.6.1 and so with this update, I have added the dependency of that framework. This means Steam will automatically install this framework for you if it isn't already installed on your computer.
- When hitting left/right arrow keys to switch between levels on the map screen, it wouldn't play any sound. It now plays the same sound as if you had clicked on the level.
- For the Demo and Classic mode, the training skip popup didn't re-align its buttons when switching to/from windowed/fullscreen mode.
- You can now use the mouse wheel to scroll the credits up and down.
- You can now use the right arrow key to resume auto-scrolling the credits. You can also now use the left arrow key to autoscroll upwards. You can use left/right to increase/decrease the autoscroll speed.
- For credits, gamepad did not work for scrolling. It now does.
- Fixed capitalization and punctuation in cutscenes.
- Changed default training skip popup button from "No" to "Yes".
- The mouse object is now centered when starting the game.
- For Mount Olympus, the difficulty in the settings now shows as "Very Hard (fixed)", to show that the difficulty for this mode is fixed to very hard.
- Previously, when clicking the classic graphics popup, it would save settings. Now, it will, instead, save settings when the popup closes or when the room/screen ends.
- Created a business card to give to people locally. To see its design, check it out on the game's discord server.
- Herakles T-shirt link on the Shop's Arcade popup now links to the Becker Games page on Amazon. This includes, not only the Premium t-shirt but also the Standard t-shirt. The Premium shirt is $19.99 and has 100% combed ringspun cotton. Very soft. The men's runs a size small. For the Standard shirt, it is $14.99 and is your more traditional 100% cotton shirt. It uses more traditional shirt sizing.
- Updated the marketing images in the credits.
- When playing the Becker Games intro before the game starts, it would then show a message that was intended for me. It told me to add code to a script. I now have it set for the game to go straight to the main menu after the intro plays.
Added shortly after patch:
I did a number of quick patches to fix things after releasing the Speedrun patch.
- For Classic mode, increased spearmen speed from 2 to 4, matching Demo's speed.
- For Classic mode, decreased bowmen speed from 3 to 2, matching Demo's speed.
- Only differences now between Classic and Demo are: - Telamon does not summon people on Demo but he does in Classic - Slashing damage for Bandit Lord's Axe in Demo is "5", in Classic it is "2". This is a nerf to the Bandit Lord's Axe in Classic since the bosses die so quickly to its slashing damage.
- Disabled console during Speedruns. I may add a setting to allow console during speedruns, but I think most people would rather have it be disabled.
- Set Leaderboards to simply show the top 10 for now. I will in the future have it show the top 3 + the top 3 around user + the user's score + the bottom 3 around user.
Will be added very soon:
These were temporarily removed because they didn't work as expected when launching the patch
- Added a new setting called, "Dynamic Fullscreen Exclusive" on the Display tab, on the Settings popup. This is good for people with multiple monitors that are streaming. It allows you to click on another monitor without the game minimizing. With the setting turned on, moving your mouse to another monitor will force the game into a temporary bordered windowed/fullscreen mode. When you bring your mouse back to the game, it will automatically switch back to native/exclusive fullscreen. This gives the benefits of FSE (Fullscreen Exclusive) and also the benefits of allowing the game to always be on the screen/monitor.
