June 8, 2024 in OpenSpartan Workshop by Den Delimarsky9 minutes
A new version of OpenSpartan Workshop is released, adding support for The Exchange, ranked tier counterfactuals, comprehensive event tracking, a faster match search, and more.
You can catch up with the latest release notes on GitHub. You can also download the latest release right away.
You can also watch the video overview of the tool!
If you thought that OpenSpartan Workshop hasn’t had updates in a few months, you thought wrong! This one is packed with a few new features that I am really excited about. As with all other releases, this software is, in my eyes, always somewhat experimental - things might be a bit wonky as I stabilize the application (a bit on that later), but it’s already working pretty well for some core scenarios.
But, first things first - why the jump from 1.0.3
to 1.0.6
? Thanks to some post-release testing, there were a few problems that bubbled up in 1.0.4
that had to be hotfixed over several releases. This also helped me fine-tune the release pipeline to catch some of the regressions early. Hence, the currently supported release is 1.0.6
.
So, long story longer - what’s new?
When I first implemented the support for battle pass data I missed one critical step, and that is the ability to see details about a specific item. Now, when you click on an item, you will get its name and description, and for currency you will see the currency amount.
There is some data still missing, like listing the item type that I want to add in a future update.
One piece of data that I found lacking in existing experiences that does exist in the Halo Infinite API is tier counterfactuals - the expectations of performance for a given match for a specific tier. Say, you complete a Ranked Arena match and go “Wow, I performed like I am an Onyx, but I am still in Platinum.” Well, if you look inside the Tier Counterfactuals section in the match overview, you can now see what was expected of someone in the Onyx rank (among other ranks) in a given match.
If you are a fan of ranked game modes, this is where you can now go to see your standing across all ranked playlists. The data includes your rank, progression in that rank, maximum rank achieved this season, and maximum rank achieved in the player’s lifetime.
I am constantly in Platinum, but ventured into Diamond with the Tactical Slayer playlist. Go figure, I guess my one-click reactions are better than my ability to strafe against a Bandit.
In previous releases, every time you restarted the app or asked for a match data refresh, OpenSpartan Workshop would try to check against the Halo Infinite API every single match that you played and whether it already exists in the local SQLite database. There is just one slight problem with that - it can take a really long time if you have thousands of matches played (I would know). To mitigate this problem, I now introduced a Loose Match Search
mode. It’s disabled by default, but can be flipped on in application settings.
I am keeping it off by default for now because it’s experimental - I want to see where it fails and whether it’s robust enough to pick up many recent matches at once. One thing you should know about the current (full) match search is that it aggregates all match, map, and playlist metadata on every pass. This is done through a combination of using the Halo Infinite API match search endpoint and then querying for additional information on every entity. The search starts with the most recent matches and moves down the history of matches you played. So, if, for example, you decide to start scanning for matches on the first run and then abandon half-way, and then enable Loose Match Search
, those matches at the tail end that never were processed won’t be picked up.
That’s mainly because Loose Match Search
has a threshold of successfully stored matches - it pulls a batch of 25 matches at a time and tries to check if those matches are already in the database. If it hits 100 continuous matches that are already in the database, it assumes that there is no need to search for more because we only want to pick up the latest matches that are not in the database.
You can see why I want to test this thoroughly before it becomes the default
On the topic of settings, the actual user interface (UI) for settings now matches that of the Windows Settings app and not some half-baked monstrosity that I put together as a hacky band-aid.
If you used OpenSpartan Workshop before, you knew that it defaults to using the Windows authentication broker, which in turn connected your personal Microsoft account to Windows (if you haven’t already). There were a few customers that didn’t want to do that, so to enable this scenario you can now disable authentication with the broker and instead use the web browser.
This setting is not enabled by default, but you can control it from the settings view (you will need to log out first) or by modifying the settings.json
file (you can find it in %LOCALAPPDATA%\OpenSpartan.Workshop
) - set usebroker
to false
.
You can go to OpenSpartan Workshop to see both the expiration date of the current Exchange offering, as well as all of the items currently available for purchase (along with their prices in Spartan Points).
In the future, I am looking at adding the ability to purchase items through the app.
Remember how before the current battle pass model (that involves operations) we had events like Cyber Showdown, Noble Intention (although in the API metadata it’s listed as Noble Intentions), Interference, and others? Did you ever want to go back and see what items you missed out from those?
You now can:
Last, but most definitely not least, another experimental feature that I added (and will continue working on) is the season calendar.
It allows you to conveniently track operations, events, and most importantly - ranked seasons (also known as CSR seasons). The latter can help you understand when the next rank reset will happen (and when previous ones happened, too). The UI is a bit rough, but I am working on cleaning it up more in future releases.
Perfection
medal in a custom game, that medal won’t show up in the broader medal collection. That also meant that it won’t show up when you looked at match details in the match table. Not anymore. I now download all medal images properly ahead of time, so there won’t be any missing match achievements.Medals
in the match overview. It’s now gone.42
) rendered in the match table. That is no longer the case - you can now see the proper game type.That’s it for this release! Go to the docs to get started and download the latest version. If you have any feedback, such as bug reports or feature requests, open an issue!