Ramblings of a Tampa engineer
Original Tweet, Quoted Tweet

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.

HaloDotAPI (Autocode)
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.

You’ve successfully subscribed to Connor Tumbleson
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.