Twitter Argument and 10k Ninjas in Halo Infinite
This post starts with a Tweet that I stumbled upon. I spotted the tweet posted in a Discord channel I was in and the unraveled image was the one above.
I was curious because I built the website shown in the interface. That was the Halo Infinite Ninja Leaderboard on Leaf.
I then looked at the comments and was instantly deflated. One comment reading:
No, and I can only imagine stat boosters such as yourself are the sole reason why 343 won't let 3rd parties use their API.
https://twitter.com/FRiCTiON_just/status/1550084873699876873
So yeah I don't think you get anything for hitting 10k medals in a game, so his first 2 characters are right. However, then he immediately suggests that a stat booster is the reason 343 won't let people use their API.
Boy that is a lot to unpack.
First off, HaloDotAPI is the service Leaf uses (the stat site above) and that API works by talking to the same exact internal APIs that the game uses.
When 343 built Halo 5 - they produced a public API that also acted as the internal API for some selection of calls. This was documented, rate-limited and given to any who asked. The API was full of properties marked "internal" so it was believed that 343 used the same stat endpoints that they handed out to the community.
When Halo Infinite launched - there was no public facing API. So engineers went peeking around the network of the game to find the internal calls it made. These calls are less friendly for clients/users outside the game, but have the same amount of information needed.
So if we loop this back to the Twitter argument - a user visiting a website that utilizes HaloDotAPI which talks to the internal game API has nothing to do why 343 won't support this API project.
343 probably cannot fund this 3rd party service because the data is obtained and researched via some "gray" methods. The APIs are internal and could change on a whim with a new patch release. So if 343 funded a project that was built on reverse engineering an internal API and they funded it - I think the precedence set would be odd.
They would be funding a company for reversing an API and building on top of it. I think the expected thing they can do is what they are doing: They are not shutting the internal API access down for unofficial clients.
I have more respect for the complications that arise when wanting to partner with an organization and help run a "chunk" of their business after now hitting 7 years building software professionally. I can see all the compliance, legal and devops nightmares that arise when these conversations begin happening.
So I decided to respond to the tweet and go to work.
playing game for medal(s) somehow affects api usage? I've had enough internet for today and I just woke up.
https://twitter.com/iBotPeaches/status/1550095734611001345
Of course I made a mistake even responding to someone on the Internet. When I came home from work and saw I had 15 notifications. A ton more tweets came in:
You think 10k ninja's in 425 hours played is a legitimate stat? Yes, you should get the eye boogers off & realize the boost.
Watch out for ninja warrior here. 425 hours total and only 23 in ranked. 10k ninjas sounds like you ninjad a bunch of 343 bots.
10,000 and 9,999 of them were against “343 Meowlnir”
So it seems folks believe this user is boosting and/or playing against bots. Thankfully as the engineer who built the stat site used in the original tweet. I can invalidate two of the responses above with 1 simple phrase.
Leaf does not track stats from Bot Playlists in leaderboards or service records. This means if you head into "Bot Bootcamp" where you play dumb bots - those stats do not count towards any leaderboard on Leaf.
Not to mention, this is a default supported feature by the API itself.
Bot Bootcamp stats are omitted by default but could be fetched separately using the right "playlist_id".
So now we have two more claims to investigate:
- The user does not play Ranked.
- The user "boosts" medals.
If we look at the first one - someone is upset that the user does not play Ranked playlists. My guess is this is an easy answer. As of this post the only Ranked playlist is 4v4.
So if you want to play the game 4v4 while attempting to maximize a specific medal - you would be probably not contributing to a win in a team game. However, you can drop into "Social" (not ranked) and play in Lone Wolves - a playlist designed to be a Free For All (FFA) and specifically focus a medal.
So I think we should design a query since we have all this data and see the hour breakdown of every playlist played for this user.
So a quick query for this user.
SELECT
playlists.name,
SUM(
games.duration_seconds / 60 / 60
) AS duration_in_hours
FROM
games
JOIN playlists ON playlists.id = games.playlist_id
WHERE
games.id IN(
SELECT
game_id
FROM
game_players
WHERE
game_players.player_id = 43667
)
GROUP BY
games.playlist_id
ORDER BY
duration_in_hours
DESC
We are just grabbing this user history and ordering by most played in hours.
Playlist | Hours |
---|---|
FFA Slayer | 132.01666658 |
Rumble Pit | 131.49111112 |
Team Slayer | 110.68166670 |
Quick Play | 57.79861112 |
Ranked Arena | 26.83194448 |
Big Team Battle | 13.45888888 |
Fiesta | 11.41666667 |
Entrenched | 3.20444445 |
King of the Hill | 3.13027779 |
Fracture: Tenrai - Fiesta | 2.30500001 |
Tactical Slayer | 1.81444442 |
Team Snipers | 1.77111111 |
Ranked Arena | 1.60083334 |
Land Grab | 0.95500000 |
Bot Bootcamp | 0.67111111 |
Cyber Showdown - Attrition | 0.37888889 |
Tactical Slayer | 0.17805555 |
So as I thought - best playlist to obtain Ninja's is a FFA playlist and that accounts for the top two playlists for nearly 263 hours played.
So sure - the user does not play ranked. The last point now is the user is a "booster", which the name suggests boosts a specific stat normally against partner(s) supporting the effort or bots instead of naturally obtaining the medal against random players.
We know its not bots, but could this user be playing against the same person as they trade Ninja's? Well not in FFA, as the max party size is one.
So I think I should query all games this user has done, cross reference to the players in that match and find the results. I am expecting due to Halo Infinite crash from extremely powerful to hurting to survive that we might expect some heavy duplicates, but we are making sure they are no outliers.
Gamertag | Cccurrences |
---|---|
Forcagious | 3546 |
LoveMeSomeCake | 289 |
CoppertheViking | 162 |
Maneyax | 141 |
Kaemn | 108 |
A Smelly Jar | 104 |
NoGuish | 85 |
EmperorWilbur | 55 |
Ston3dNinjaZ | 55 |
IQ Ninja pro | 54 |
So we can see we pulled 3,546 games and "LoveMeSomeCake" was in 289 of them or roughly 8% of matches and since I was curious most of those matches were Team Slayer.
So now I think should check which playlists all these medals were obtained.
Ninjas | Playlist | |
---|---|---|
2323 | FFA Slayer | |
525 | Rumble Pit | |
462 | Team Slayer | |
83 | Quick Play | |
21 | Fiesta | |
19 | Fracture: Tenrai - Fiesta | |
5 | Ranked Arena | |
2 | Big Team Battle | |
1 | Cyber Showdown - Attrition |
So with nearly 3000 medals obtained in FFA type playlists which restrict the playlist to 1 player in the party - we know this user cannot be boosting with a player.
So I look back at this post and wonder why I just did all this research to prove some comments wrong on the Internet.