Code Monkey home page Code Monkey logo

leafapp_infinite's Introduction

Leaf (Infinite)

Laravel

Another hobby stat site for another Halo game

Branches

  • master - Branch off it. Must be stable.

Setup (Docker)

A docker-based infrastructure is available for development. If you wish to run directly on host, see Setup below.

  1. cp .env.example .env
  2. Set the database hostname in .env like DB_HOST=leaf-db
  3. HOST_UID=$(id -u) docker compose --env-file .env -p leaf -f docker/docker-compose.yml up -d
  4. docker exec -it leaf-php composer install
  5. docker exec -it leaf-php npm ci
  6. docker exec -it leaf-php php artisan key:generate
  7. docker exec -it leaf-php php artisan migrate
  8. docker exec -it leaf-php npm run dev
  • Nginx listens at your local IP address, port 8080, e.g. http://localhost:8080
  • MariaDB container's port 3306 is mapped to the host.
  • Xdebug is configured to make connections to port 9003 on the host. Path mappings should be set up so the root of the project is mapped to /var/www on the server.

Setup

  1. PHP8.2
  2. Node + NPM installed
  3. MariaDB 10.6+
  4. Composer installed.
  5. cp .env.example .env
  6. composer install
  7. npm ci
  8. php artisan key:generate
  9. php artisan migrate
  10. npm run build
  11. php artisan serve

Contributions

  • Code must pass phpcs. (./vendor/bin/phpcs)
  • Code must pass phpstan. (./vendor/bin/phpstan analyse)
  • Code must have 100% test coverage. (composer coverage)

Configuration

DotAPI

Used for the API for Infinite information, an amazing service that proxies some internal HaloWaypoint/Live calls.

  • DOTAPI_DISABLED - Defaults to false, if toggled disables all Autocode API calls.
  • DOTAPI_XUID_DISABLED - Defaults to false, if toggled disables XUID resolution.
  • DOTAPI_KEY - The API key given dotapi.gg
  • DOTAPI_DOMAIN - The base domain for Autocode
  • DOTAPI_VERSION - The version of the Autocode to use
  • DOTAPI_COOLDOWN - The amount of time to wait between refreshing profiles automatically.
  • DOTAPI_CURRENT_SEASON - Current Halo Infinite Season
  • DOTAPI_CURRENT_SEASON_VERSION - Current Halo Infinite Season Version
  • DOTAPI_WARNING_MESSAGE - If populated, puts site into warning mode.

FaceIt

Used for HCS features for listing championships.

  • FACEIT_KEY - The API key given from Developer Portal
  • FACEIT_DOMAIN - The base domain for FaceIt
  • FACEIT_WEBHOOK_SECRET - The exchanged secret for validating Webhook messages.

Additionally, register webhooks for the following events:

  • match_status_finished
  • championship_finished

Finally, create a security header called X-Cat-Dog and set it to a random value that you add to env.

Google OAuth

Used for marking an account as "you" and supporting making "scrims".

  • GOOGLE_CLIENT_ID - The clientId
  • GOOGLE_CLIENT_SECRET - The clientSecret
  • GOOGLE_REDIRECT - The URL to redirect to

Tinify

Used for optimizing images that come from backdrops and emblems.

  • IMAGE_OPTIMIZE_KEY - The key for API use.
  • IMAGE_DOMAIN - The domain for API Service

Dependencies

Node

  1. Bulma - https://github.com/jgthms/bulma - MIT
  2. FontAwesome - https://github.com/FortAwesome/Font-Awesome - Font Awesome Free License
  3. Bulma-Dividers - https://github.com/CreativeBulma/bulma-divider - MIT
  4. Bulma-Tooltip - https://github.com/CreativeBulma/bulma-tooltip - MIT
  5. Bulma-Ribbon - https://github.com/Wikiki/bulma-ribbon - MIT

PHP

  1. PHP CodeSniffer - https://github.com/squizlabs/PHP_CodeSniffer - BSD-3-Clause
  2. Larastan - https://github.com/nunomaduro/larastan - MIT
  3. Guzzle - https://github.com/guzzle/guzzle - MIT
  4. Livewire - https://github.com/livewire/livewire - MIT
  5. Enum - https://github.com/BenSampo/laravel-enum - MIT
  6. DBAL - https://github.com/doctrine/dbal - MIT
  7. SEOTools - https://github.com/artesaos/seotools - MIT
  8. TheLeague/CSV - https://github.com/thephpleague/csv - MIT
  9. Socialite - https://github.com/laravel/socialite - MIT
  10. Sitemap - https://github.com/spatie/laravel-sitemap - MIT
  11. Horizon - https://github.com/laravel/horizon - MIT
  12. Markdown - https://github.com/spatie/laravel-markdown - MIT
  13. Sentry - https://github.com/getsentry/sentry-laravel - MIT
  14. Crawler Detect - https://github.com/JayBizzle/Laravel-Crawler-Detect - MIT

leafapp_infinite's People

Contributors

alexis-bize avatar brianangulo avatar chase-patterson avatar dependabot[bot] avatar ibotpeaches avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

leafapp_infinite's Issues

"Scrim" Support

A few folks have asked for the following summation of features.

  • select games that make up a "scrim"
  • tabulate averages of stats for that scrim for player
  • tabulate average of map/gametype for team a vs team b

Endpoint - /decks

https://halostats.svc.halowaypoint.com/hi/players/xuid(2533274960246448)/decks
{
  "AssignedDecks": [
    {
      "Id": "Player_Deck_8585639200854775807_f716ccc1-bbb5-407a-93b0-70c94460c056",
      "Path": "ChallengeContent/ClientChallengeDeckDefinitions/S1VanillaWeeklyDeck1.json",
      "ActiveChallenges": [
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/ModeChallenges/Normal/NFlagCapture.json",
          "Progress": 0,
          "Id": "b1b93506-8c41-4bfb-8e6f-5b1710c4687a",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/VehicleChallenges/Normal/NDestroyChopper.json",
          "Progress": 0,
          "Id": "286fdd3f-a569-4a47-8346-05634a5887b2",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Heroic/HKillChaingunTurret.json",
          "Progress": 0,
          "Id": "2cb8c9c9-a4c1-4170-90a5-6809d232ae4c",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/GeneralChallenges/Heroic/HMedalTagAndBag.json",
          "Progress": 0,
          "Id": "89c203c0-e557-45be-9a6c-7892576a71c0",
          "CanReroll": true
        }
      ],
      "UpcomingChallenges": [
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Heroic/HKillNeedler.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Heroic/HKillAssaultRifle.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/GeneralChallenges/Heroic/HWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Heroic/HKillSidearmPistol.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/ModeChallenges/Heroic/HSlayerKill.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/VehicleChallenges/Heroic/HDestroyWasp.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Legendary/LKillSkewer.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/ModeChallenges/Legendary/LArenaRankedPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/GeneralChallenges/Legendary/LMedalMindTheGap.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/VehicleChallenges/Legendary/LMedalDogfight.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        }
      ],
      "Expiration": {
        "ISO8601Date": "2021-11-23T17:00:00Z"
      },
      "CompletedChallenges": [
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Normal/NKillBattleRifle.json",
          "Progress": 8,
          "Id": "7abc64d5-a844-465e-b903-df421314618b",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/ModeChallenges/Normal/NFlagPlay.json",
          "Progress": 1,
          "Id": "47f4cbcf-02c9-468b-9cf1-01b05070a61c",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/GeneralChallenges/Normal/NAssist.json",
          "Progress": 13,
          "Id": "05397812-8fe1-4ec4-bd8a-3f2a61669315",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Normal/NKillAssaultRifle.json",
          "Progress": 7,
          "Id": "94a924bf-61d5-4e9f-95ae-8ed7b4fd415c",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/ModeChallenges/Normal/NStockpilePlay.json",
          "Progress": 1,
          "Id": "9dd0e35b-cd39-4130-8f1e-144a8016f724",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/WeaponChallenges/Normal/NKillShotgun.json",
          "Progress": 1,
          "Id": "2de2f635-abc4-41ce-ab5a-61806d22e407",
          "CanReroll": true
        }
      ]
    },
    {
      "Id": "Player_Deck_8585644384854775807_215639df-4d90-4e3e-8e20-0c5bd38a4ff6",
      "Path": "ChallengeContent/ClientChallengeDeckDefinitions/DailyPlayNewDeck.json",
      "ActiveChallenges": [
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d5NPlay.json",
          "Progress": 0,
          "Id": "c8e38088-9c44-4ff1-8714-a3ec04b075e8",
          "CanReroll": false
        }
      ],
      "UpcomingChallenges": [
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d6NPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d7HPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d8HPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d9HPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d10HPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d11HPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d12HPlay.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d13LWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d14LWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d15LWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d16LWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d17LWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d18LWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d19MWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        },
        {
          "Difficulty": null,
          "TypeIconPath": null,
          "IsUserEvent": null,
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d20MWin.json",
          "Progress": 0,
          "Id": "00000000-0000-0000-0000-000000000000",
          "CanReroll": true
        }
      ],
      "Expiration": {
        "ISO8601Date": "2021-11-17T17:00:00Z"
      },
      "CompletedChallenges": [
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d1NPlay.json",
          "Progress": 1,
          "Id": "280fb2b9-3be4-40c9-9390-ee4e1049c4cd",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d2NPlay.json",
          "Progress": 1,
          "Id": "c6740d43-df47-421b-9c61-a949a95cb2dc",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d3NPlay.json",
          "Progress": 1,
          "Id": "5c3fa9fb-5aa0-4481-adb6-bc66fb70c109",
          "CanReroll": true
        },
        {
          "Path": "ChallengeContent/ClientChallengeDefinitions/DailyChallenges/PlayNew/d4NPlay.json",
          "Progress": 2,
          "Id": "25048ef4-c163-47ab-9dba-d5549e27804b",
          "CanReroll": true
        }
      ]
    }
  ],
  "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031"
}

Swap to Redis

We hit #1 on r/halo and r/competitivehalo and it blew up the system. We have 15,000 pending jobs. The DB is not meant for this thrashing, I should have put it on redis on day1.

PGCR - Part 2

  • show final score for slayer
  • show final score for oddball
  • show final score for ctf
  • show final score for strongholds
  • show context related scoring for oddball in table (time held, balls killed)
  • show context related scoring for ctf in table (flags killed, flags capped)
  • show context related scoring for strongholds in table (points taken)

Optimize hammering XUID Api

  • Cache invalid responses for 7 days (so we don't query again)
  • Add proper user agent w/ version of software
  • Move to own queue so it can be artificially slowed

Give MatchHistory Job more time

[2022-01-16 10:27:25] production.ERROR: App\Jobs\PullMatchHistory has been attempted too many times or run too long. The job may have previously timed out. {"exception":"[object] (Illuminate\\Queue\\MaxAttemptsExceededException(code: 0): App\\Jobs\\PullMatchHistory has been attempted too many times or run too long. The job may have previously timed out. at /home/leafapp/deploy/releases/41/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:750)

HCS Open Support

  • API Against FaceIt, to pull Championship Information
  • Console job to register a new challenge
  • /hcs page that lists all championships
  • /hcs/{championship}/bracket to see bracket
  • custom game API support searching all 8 gamertags in each match to find game

Division by zero

[previous exception] [object] (ErrorException(code: 0): Division by zero at /home/leafapp/deploy/releases/13/app/Models/ServiceRecord.php:59)

Looking up iiDeathKiller

Missing XUID

Some accounts don't have an XUID, its only attached to the player creation. So we should place it elsewhere (maybe during the update)

Enums

Experience

  • btb
  • arena

Outcome

  • win
  • loss
  • left

Fix History Loading

With PCGR now, if we load a player in a match then load their history. We give up looking at game history since we already found a parsed game. I think we have to move to a model where we keep last date history pulled and go into we find that date.

Compare Feature

We should allow comparing accounts.

I believe the following stats

  • KDA
  • KDR
  • Accuracy
  • Average Score
  • Average Rank
  • Headshots per game
  • Assists / Kills / Deaths per game

Then not compared, but visible to establish context

  • Total Matches
  • Total Playtime

Then obviously

  • Gamertag
  • ServiceTag
  • Icon

Endpoint - /matches

https://halostats.svc.halowaypoint.com/hi/players/xuid(2533274960246448)/matches
{
  "Start": 0,
  "Count": 25,
  "ResultCount": 25,
  "Results": [
    {
      "MatchId": "17c8f61e-49fb-4039-bee5-6e2e06445842",
      "MatchInfo": {
        "StartTime": "2021-11-17T01:20:13.803Z",
        "EndTime": "2021-11-17T01:28:38.298Z",
        "Duration": "PT8M9.24964S",
        "LifecycleMode": 3,
        "GameVariantCategory": 18,
        "LevelId": "c0264785-90c8-4946-bf16-06dbfd056bff",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "8420410b-044d-44d7-80b6-98a766c8c39f",
          "VersionId": "8ed490af-c0e1-4e0a-b610-50aae3dc053c"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "751bcc9d-aace-45a1-8d71-358f0bc89f7e",
          "VersionId": "29f36248-0181-44ba-96a0-3c3b9b924085"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "8b810aa7-ca65-43cb-9037-793b783110c5",
          "VersionId": "238dbe9d-64d3-4471-91e7-0497e153cbdd"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT8M1.703S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 2,
      "Rank": 2,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "a454ae47-aed2-4ee5-802d-29acd8b02e5f",
      "MatchInfo": {
        "StartTime": "2021-11-17T01:07:16.306Z",
        "EndTime": "2021-11-17T01:19:19.66Z",
        "Duration": "PT10M57.9873562S",
        "LifecycleMode": 3,
        "GameVariantCategory": 11,
        "LevelId": "19dfcede-dcd1-45a8-8a77-2b58ce65484f",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "f0a1760f-0d4a-4bcc-ac7a-e8f9aee331dc",
          "VersionId": "89c80a8b-0eac-4f25-a4b0-fcd17222475d"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "22b8a0eb-0d02-4eb3-8f56-5f63fc254f83",
          "VersionId": "2cdb80b0-2a02-4934-a649-2911368d49e1"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "40b19c6b-0355-454e-98b4-21f07771e3ab",
          "VersionId": "4a484a5b-9073-41c9-8a70-7cc1a365edb0"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT10M57.985S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "21989544-eac9-4387-998c-ddc1304664ca",
      "MatchInfo": {
        "StartTime": "2021-11-17T00:56:43.875Z",
        "EndTime": "2021-11-17T01:06:24.913Z",
        "Duration": "PT8M44.0109118S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "c0264785-90c8-4946-bf16-06dbfd056bff",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "8420410b-044d-44d7-80b6-98a766c8c39f",
          "VersionId": "8ed490af-c0e1-4e0a-b610-50aae3dc053c"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "c2d20d44-8606-4669-b894-afae15b3524f",
          "VersionId": "9eee25fe-39db-493f-ab0d-d95403df66b8"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "4376e40e-8841-4957-8596-506a626a2a96",
          "VersionId": "ea443da4-bdb7-4365-b726-57685fef8cf1"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT8M43.984S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 3,
      "Rank": 6,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "0ef559ae-5c8f-48ee-a49f-14ab5a28536a",
      "MatchInfo": {
        "StartTime": "2021-11-17T00:42:57.847Z",
        "EndTime": "2021-11-17T00:56:14.691Z",
        "Duration": "PT12M26.9320171S",
        "LifecycleMode": 3,
        "GameVariantCategory": 15,
        "LevelId": "fc878857-e778-4daf-b0ef-5d826b922f3f",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "33c0766c-ef15-48f8-b298-34aba5bff3b4",
          "VersionId": "1981275f-d570-4d04-ab3b-980e3591a0b5"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "507191c6-a492-4331-b2ae-a172101eb23e",
          "VersionId": "ee8c890b-a95f-4154-bac6-0009992d74f6"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "dd6688c8-1dce-4772-a51d-cbf0301b5f1c",
          "VersionId": "9ffb41a3-be84-49e2-beed-0ecb1a76ed4e"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT12M26.906S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 2,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "bed1c085-45b8-4a8a-9c05-de102a44c167",
      "MatchInfo": {
        "StartTime": "2021-11-17T00:32:47.719Z",
        "EndTime": "2021-11-17T00:40:32.393Z",
        "Duration": "PT6M45.0741585S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "1ddfa173-a544-46e6-9dae-671e7e369a0c",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "298d5036-cd43-47b3-a4bd-31e127566593",
          "VersionId": "bca803f0-4447-4a5a-aef4-b31e4be77076"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "c2d20d44-8606-4669-b894-afae15b3524f",
          "VersionId": "9eee25fe-39db-493f-ab0d-d95403df66b8"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "2f44f0f1-f5a1-4b17-81e6-0b2f197c74ca",
          "VersionId": "eb5e79b9-84e8-43f0-95e0-572b639f4738"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT6M45.063S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "55e06ddd-a011-476f-892a-2587a2b118ae",
      "MatchInfo": {
        "StartTime": "2021-11-16T11:43:49.35Z",
        "EndTime": "2021-11-16T11:55:04.456Z",
        "Duration": "PT10M38.2632964S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "c0264785-90c8-4946-bf16-06dbfd056bff",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "8420410b-044d-44d7-80b6-98a766c8c39f",
          "VersionId": "8ed490af-c0e1-4e0a-b610-50aae3dc053c"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "c2d20d44-8606-4669-b894-afae15b3524f",
          "VersionId": "9eee25fe-39db-493f-ab0d-d95403df66b8"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "f7eb8c71-fedb-4696-8c0f-96025e285ffd",
          "VersionId": "7e86e77a-d0e7-469a-bf06-262fded34364"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "e76fcca5-d0b7-4635-be87-b9cf82daacd9",
          "VersionId": "402e5d2e-4d3b-42d8-b684-1c487ef96f63"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT10M38.25S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "5c6d687f-d573-4cfd-a05d-cebd26895eac",
      "MatchInfo": {
        "StartTime": "2021-11-16T11:23:07.682Z",
        "EndTime": "2021-11-16T11:39:50.122Z",
        "Duration": "PT16M11.5205048S",
        "LifecycleMode": 3,
        "GameVariantCategory": 11,
        "LevelId": "19dfcede-dcd1-45a8-8a77-2b58ce65484f",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "f0a1760f-0d4a-4bcc-ac7a-e8f9aee331dc",
          "VersionId": "89c80a8b-0eac-4f25-a4b0-fcd17222475d"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "22b8a0eb-0d02-4eb3-8f56-5f63fc254f83",
          "VersionId": "2cdb80b0-2a02-4934-a649-2911368d49e1"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "f7eb8c71-fedb-4696-8c0f-96025e285ffd",
          "VersionId": "7e86e77a-d0e7-469a-bf06-262fded34364"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "e681e8b2-18a0-420f-b388-7d5a4d0f1c21",
          "VersionId": "349d20ed-ac0c-4419-87fa-4570b5fae8b1"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT16M11.453S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "5ece02aa-d3bc-4024-b168-b09b0b93f82d",
      "MatchInfo": {
        "StartTime": "2021-11-16T05:08:36.189Z",
        "EndTime": "2021-11-16T05:15:48.856Z",
        "Duration": "PT6M29.8750449S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "19dfcede-dcd1-45a8-8a77-2b58ce65484f",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "f0a1760f-0d4a-4bcc-ac7a-e8f9aee331dc",
          "VersionId": "89c80a8b-0eac-4f25-a4b0-fcd17222475d"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "c2d20d44-8606-4669-b894-afae15b3524f",
          "VersionId": "9eee25fe-39db-493f-ab0d-d95403df66b8"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "892a4ca3-a682-40d6-850e-2addb57b0473",
          "VersionId": "627f329d-344b-4ce8-a504-580b4f7eb954"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT6M29.844S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 3,
      "Rank": 7,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "9e84596c-c2ec-4ea4-a108-4085ae471b9f",
      "MatchInfo": {
        "StartTime": "2021-11-16T04:52:50.41Z",
        "EndTime": "2021-11-16T05:07:22.289Z",
        "Duration": "PT14M13.339319S",
        "LifecycleMode": 3,
        "GameVariantCategory": 18,
        "LevelId": "c0264785-90c8-4946-bf16-06dbfd056bff",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "8420410b-044d-44d7-80b6-98a766c8c39f",
          "VersionId": "8ed490af-c0e1-4e0a-b610-50aae3dc053c"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "751bcc9d-aace-45a1-8d71-358f0bc89f7e",
          "VersionId": "29f36248-0181-44ba-96a0-3c3b9b924085"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "8b810aa7-ca65-43cb-9037-793b783110c5",
          "VersionId": "238dbe9d-64d3-4471-91e7-0497e153cbdd"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT13M58.25S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 4,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "9f838810-9555-4e08-9def-e51340e4f06d",
      "MatchInfo": {
        "StartTime": "2021-11-16T04:42:06.279Z",
        "EndTime": "2021-11-16T04:51:26.368Z",
        "Duration": "PT8M26.5910653S",
        "LifecycleMode": 3,
        "GameVariantCategory": 18,
        "LevelId": "19dfcede-dcd1-45a8-8a77-2b58ce65484f",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "f0a1760f-0d4a-4bcc-ac7a-e8f9aee331dc",
          "VersionId": "89c80a8b-0eac-4f25-a4b0-fcd17222475d"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "751bcc9d-aace-45a1-8d71-358f0bc89f7e",
          "VersionId": "29f36248-0181-44ba-96a0-3c3b9b924085"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "3eeeba49-302d-4fef-af88-46b266bceecd",
          "VersionId": "315ce3bd-8f2b-4b5c-9569-e1c1a4bb87ee"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT8M19.031S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 2,
      "Rank": 4,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "4f5d4331-4c41-4eff-bb05-51708fdb5663",
      "MatchInfo": {
        "StartTime": "2021-11-16T04:27:51.004Z",
        "EndTime": "2021-11-16T04:40:49.76Z",
        "Duration": "PT12M37.301217S",
        "LifecycleMode": 3,
        "GameVariantCategory": 15,
        "LevelId": "6cb0eb90-2819-4b6f-a38a-8913a8b91c3e",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "53136ad9-0fd6-4271-8752-31d114b9561e",
          "VersionId": "4a58400f-1893-4078-959b-c45016afc31f"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "507191c6-a492-4331-b2ae-a172101eb23e",
          "VersionId": "ee8c890b-a95f-4154-bac6-0009992d74f6"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "aad6bd4f-85a5-480e-8cbb-2b149a6de291",
          "VersionId": "4498cb88-edda-446c-94ea-a9e301a29586"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT12M37.281S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 2,
      "Rank": 3,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "d4ed7678-fdfb-4a11-a536-e19cd307cb31",
      "MatchInfo": {
        "StartTime": "2021-11-16T04:21:42.949Z",
        "EndTime": "2021-11-16T04:26:55.047Z",
        "Duration": "PT4M48.3102115S",
        "LifecycleMode": 3,
        "GameVariantCategory": 11,
        "LevelId": "c0264785-90c8-4946-bf16-06dbfd056bff",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "8420410b-044d-44d7-80b6-98a766c8c39f",
          "VersionId": "8ed490af-c0e1-4e0a-b610-50aae3dc053c"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "22b8a0eb-0d02-4eb3-8f56-5f63fc254f83",
          "VersionId": "2cdb80b0-2a02-4934-a649-2911368d49e1"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "9cdc376a-dcc2-42c1-bc91-df5fb75e6da9",
          "VersionId": "ebe95aab-939b-4f5f-b84c-db620c564ba5"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT4M48.313S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "4178e791-d2fe-410d-b489-9e700fa27b78",
      "MatchInfo": {
        "StartTime": "2021-11-16T04:11:32.285Z",
        "EndTime": "2021-11-16T04:20:31.262Z",
        "Duration": "PT8M32.2875899S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "fc878857-e778-4daf-b0ef-5d826b922f3f",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "33c0766c-ef15-48f8-b298-34aba5bff3b4",
          "VersionId": "1981275f-d570-4d04-ab3b-980e3591a0b5"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "c2d20d44-8606-4669-b894-afae15b3524f",
          "VersionId": "9eee25fe-39db-493f-ab0d-d95403df66b8"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "f5f1e083-0739-4077-96ea-1de428de2249",
          "VersionId": "4debc1d2-3ddc-4d89-b234-f71c3400135a"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT8M32.266S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 3,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "175d921c-e81a-416e-970a-3a121bcec33c",
      "MatchInfo": {
        "StartTime": "2021-11-16T04:03:46.212Z",
        "EndTime": "2021-11-16T04:10:47.825Z",
        "Duration": "PT6M42.3213291S",
        "LifecycleMode": 3,
        "GameVariantCategory": 11,
        "LevelId": "c0264785-90c8-4946-bf16-06dbfd056bff",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "8420410b-044d-44d7-80b6-98a766c8c39f",
          "VersionId": "8ed490af-c0e1-4e0a-b610-50aae3dc053c"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "22b8a0eb-0d02-4eb3-8f56-5f63fc254f83",
          "VersionId": "2cdb80b0-2a02-4934-a649-2911368d49e1"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "9cdc376a-dcc2-42c1-bc91-df5fb75e6da9",
          "VersionId": "ebe95aab-939b-4f5f-b84c-db620c564ba5"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT6M42.312S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 3,
      "Rank": 5,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "872cec1b-52f2-4272-b0e7-928dde5f0428",
      "MatchInfo": {
        "StartTime": "2021-11-16T03:55:01.99Z",
        "EndTime": "2021-11-16T04:03:00.897Z",
        "Duration": "PT7M30.3675348S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "fc878857-e778-4daf-b0ef-5d826b922f3f",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "33c0766c-ef15-48f8-b298-34aba5bff3b4",
          "VersionId": "1981275f-d570-4d04-ab3b-980e3591a0b5"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "c2d20d44-8606-4669-b894-afae15b3524f",
          "VersionId": "9eee25fe-39db-493f-ab0d-d95403df66b8"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "f5f1e083-0739-4077-96ea-1de428de2249",
          "VersionId": "4debc1d2-3ddc-4d89-b234-f71c3400135a"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT7M30.359S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 3,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "6ddf1820-4719-44f4-9125-7dbe7c2c640a",
      "MatchInfo": {
        "StartTime": "2021-11-16T03:30:27.164Z",
        "EndTime": "2021-11-16T03:47:39.223Z",
        "Duration": "PT16M30.4386335S",
        "LifecycleMode": 3,
        "GameVariantCategory": 15,
        "LevelId": "bead4838-0cff-4837-bcf4-5e516d56d837",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "4f196016-0101-4844-8358-2504f7c44656",
          "VersionId": "b7a5f610-4a9c-49de-85f0-2e9aa81193a3"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "1519c0cb-759d-424e-a68e-b9cb870b1e14",
          "VersionId": "bb4138ae-465d-4a61-b175-3a0e82e3f272"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "21e31d7f-5425-413b-b16c-0a72470bb7b6",
          "VersionId": "89dd8dd0-cff9-4132-8f9c-2028c8ab1db0"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT16M30.375S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 3,
      "Rank": 13,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "d2d087b7-6e78-403b-94a5-33d7d26e59b2",
      "MatchInfo": {
        "StartTime": "2021-11-16T03:18:52.13Z",
        "EndTime": "2021-11-16T03:29:15.307Z",
        "Duration": "PT9M22.3566153S",
        "LifecycleMode": 3,
        "GameVariantCategory": 19,
        "LevelId": "bead4838-0cff-4837-bcf4-5e516d56d837",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "4f196016-0101-4844-8358-2504f7c44656",
          "VersionId": "b7a5f610-4a9c-49de-85f0-2e9aa81193a3"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "3d614e5f-0787-405c-844e-e34c7301e750",
          "VersionId": "41e85111-e012-48ab-a128-fac471f544dc"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "409cc2ac-a337-4067-899c-37b92f952d41",
          "VersionId": "4a275b34-0826-4c84-85a3-7316cdf481e7"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT9M22.343S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 3,
      "Rank": 13,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "4040cd42-3605-4d2f-a0fc-56db869f4dee",
      "MatchInfo": {
        "StartTime": "2021-11-16T03:09:38.564Z",
        "EndTime": "2021-11-16T03:17:46.057Z",
        "Duration": "PT7M41.2963925S",
        "LifecycleMode": 3,
        "GameVariantCategory": 19,
        "LevelId": "1a8f0677-7055-4358-8c1e-934db988597d",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "08607bf4-6abe-4a5b-9547-290a6cc1433e",
          "VersionId": "0030c1e3-d8b2-4b60-a060-4873d8f4d4a2"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "3d614e5f-0787-405c-844e-e34c7301e750",
          "VersionId": "41e85111-e012-48ab-a128-fac471f544dc"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "3653a5ac-fc1b-4a7b-b92c-c90618c9e7ff",
          "VersionId": "e922f722-ca23-4e18-88cb-dbb02e476043"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT7M41.297S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "489114ba-3143-464f-8bcc-d115a8a257f8",
      "MatchInfo": {
        "StartTime": "2021-11-16T03:01:34.837Z",
        "EndTime": "2021-11-16T03:07:57.79Z",
        "Duration": "PT5M49.6419328S",
        "LifecycleMode": 3,
        "GameVariantCategory": 19,
        "LevelId": "a17d1839-cab3-4477-ac36-8cbbfaed80cb",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "c494ef7c-d203-42a9-9c0f-b3f576334501",
          "VersionId": "e7b22fbf-c768-43db-8fc7-9a5ac5ccc7d6"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "3d614e5f-0787-405c-844e-e34c7301e750",
          "VersionId": "41e85111-e012-48ab-a128-fac471f544dc"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "e91f76aa-3cff-4899-8c25-cdb58f67132a",
          "VersionId": "d0a596a9-bd89-4abe-ae2a-2a233c1be31f"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT5M49.625S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 3,
      "Rank": 13,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "3c5f1a97-09e3-4721-abc4-69aa5021eb56",
      "MatchInfo": {
        "StartTime": "2021-11-16T02:50:01.491Z",
        "EndTime": "2021-11-16T03:00:01.928Z",
        "Duration": "PT9M12.8558162S",
        "LifecycleMode": 3,
        "GameVariantCategory": 14,
        "LevelId": "bead4838-0cff-4837-bcf4-5e516d56d837",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "4f196016-0101-4844-8358-2504f7c44656",
          "VersionId": "b7a5f610-4a9c-49de-85f0-2e9aa81193a3"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "34bac2c7-b6d7-4202-b634-1d770e5247a4",
          "VersionId": "e3577f2c-9e03-4429-8aff-b84f58bd5603"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "de3df8d7-9214-416b-8d46-9147b047e341",
          "VersionId": "eaa329b0-c4c2-4484-8e33-3ca72e8a273a"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT9M12.844S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "25e5d537-a1a5-4303-b0f1-39b602711268",
      "MatchInfo": {
        "StartTime": "2021-11-16T02:32:17.499Z",
        "EndTime": "2021-11-16T02:48:54.722Z",
        "Duration": "PT15M56.7822244S",
        "LifecycleMode": 3,
        "GameVariantCategory": 15,
        "LevelId": "1a8f0677-7055-4358-8c1e-934db988597d",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "08607bf4-6abe-4a5b-9547-290a6cc1433e",
          "VersionId": "0030c1e3-d8b2-4b60-a060-4873d8f4d4a2"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "1519c0cb-759d-424e-a68e-b9cb870b1e14",
          "VersionId": "bb4138ae-465d-4a61-b175-3a0e82e3f272"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "f82268ae-ac1c-42f0-8b81-9a7c040cbbc0",
          "VersionId": "972a5eb5-dcf6-4d36-9c37-b9bc55e75814"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT15M56.781S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 1,
      "Outcome": 3,
      "Rank": 13,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "772335dd-8be3-4410-b1ce-8b981aa9a8a9",
      "MatchInfo": {
        "StartTime": "2021-11-16T02:18:33.904Z",
        "EndTime": "2021-11-16T02:29:57.572Z",
        "Duration": "PT9M55.6969908S",
        "LifecycleMode": 3,
        "GameVariantCategory": 19,
        "LevelId": "bead4838-0cff-4837-bcf4-5e516d56d837",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "4f196016-0101-4844-8358-2504f7c44656",
          "VersionId": "b7a5f610-4a9c-49de-85f0-2e9aa81193a3"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "3d614e5f-0787-405c-844e-e34c7301e750",
          "VersionId": "41e85111-e012-48ab-a128-fac471f544dc"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "409cc2ac-a337-4067-899c-37b92f952d41",
          "VersionId": "4a275b34-0826-4c84-85a3-7316cdf481e7"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT9M55.656S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 3,
      "Rank": 13,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "81010a5a-c7b0-4df1-b1c6-64cd354c18a2",
      "MatchInfo": {
        "StartTime": "2021-11-16T02:04:46.32Z",
        "EndTime": "2021-11-16T02:16:36.22Z",
        "Duration": "PT10M35.0325567S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "a17d1839-cab3-4477-ac36-8cbbfaed80cb",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "c494ef7c-d203-42a9-9c0f-b3f576334501",
          "VersionId": "e7b22fbf-c768-43db-8fc7-9a5ac5ccc7d6"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "920d628c-9eae-47a6-b96c-d141cf36ade2",
          "VersionId": "457cbadd-5650-44fb-b749-88ca50e89746"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "dc4929de-216c-43bc-b207-1702253f4576",
          "VersionId": "ecc94d67-2071-4c61-be4a-ef2c5a3d3cba"
        },
        "PlaylistExperience": 3,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "76670363-b7a9-4b75-ae55-cc89948253ee",
          "VersionId": "ee90fa79-c375-4be2-85b8-13906a70c255"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT10M35.016S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 2,
      "Rank": 5,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "dcc7223e-49e7-4953-b27f-e5dfdf99ce15",
      "MatchInfo": {
        "StartTime": "2021-11-16T01:47:26.542Z",
        "EndTime": "2021-11-16T01:59:08.218Z",
        "Duration": "PT11M2.4382576S",
        "LifecycleMode": 3,
        "GameVariantCategory": 11,
        "LevelId": "dc3a5b2a-180a-4544-8bc1-ee4ea1338900",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "b6aca0c7-8ba7-4066-bf91-693571374c3c",
          "VersionId": "c63ee410-784e-46ae-911e-ab7bc35933b1"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "22b8a0eb-0d02-4eb3-8f56-5f63fc254f83",
          "VersionId": "2cdb80b0-2a02-4934-a649-2911368d49e1"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "53755e77-95ea-4ec1-8585-6f072b55346b",
          "VersionId": "d0590c1f-7a71-4699-a57c-3cff615b6e4e"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT11M2.422S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 2,
      "Rank": 1,
      "PresentAtEndOfMatch": true
    },
    {
      "MatchId": "5e9319f8-2cb6-43a5-b0ea-5f46839ccf8e",
      "MatchInfo": {
        "StartTime": "2021-11-16T01:35:24.593Z",
        "EndTime": "2021-11-16T01:45:44.219Z",
        "Duration": "PT9M30.8897332S",
        "LifecycleMode": 3,
        "GameVariantCategory": 6,
        "LevelId": "1ddfa173-a544-46e6-9dae-671e7e369a0c",
        "MapVariant": {
          "AssetKind": 2,
          "AssetId": "298d5036-cd43-47b3-a4bd-31e127566593",
          "VersionId": "bca803f0-4447-4a5a-aef4-b31e4be77076"
        },
        "UgcGameVariant": {
          "AssetKind": 6,
          "AssetId": "c2d20d44-8606-4669-b894-afae15b3524f",
          "VersionId": "9eee25fe-39db-493f-ab0d-d95403df66b8"
        },
        "ClearanceId": "882db6e3-e608-4be2-a7ed-ff4e4ff6c031",
        "Playlist": {
          "AssetKind": 3,
          "AssetId": "edfef3ac-9cbe-4fa2-b949-8f29deafd483",
          "VersionId": "812e8daf-a564-4021-92ef-57177817eb46"
        },
        "PlaylistExperience": 2,
        "PlaylistMapModePair": {
          "AssetKind": 7,
          "AssetId": "2f44f0f1-f5a1-4b17-81e6-0b2f197c74ca",
          "VersionId": "eb5e79b9-84e8-43f0-95e0-572b639f4738"
        },
        "SeasonId": "Seasons/Season6.json",
        "PlayableDuration": "PT9M30.875S",
        "TeamsEnabled": true,
        "TeamScoringEnabled": true
      },
      "LastTeamId": 0,
      "Outcome": 3,
      "Rank": 6,
      "PresentAtEndOfMatch": true
    }
  ],
  "Links": {}
}

Fix crash from too much damage

[2022-02-05 02:24:26] production.ERROR: SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column 'damage_dealt' at row 1 (SQL: insert into `game_players` (`game_team_id`, `player_id`, `game_id`, `pre_csr`, `post_csr`, `rank`, `outcome`, `was_at_start`, `was_at_end`, `was_inprogress_join`, `kd`, `kda`, `score`, `kills`, `deaths`, `assists`, `betrayals`, `suicides`, `vehicle_destroys`, `vehicle_hijacks`, `medal_count`, `damage_taken`, `damage_dealt`, `shots_fired`, `shots_landed`, `shots_missed`, `accuracy`, `rounds_won`, `rounds_lost`, `rounds_tied`, `kills_melee`, `kills_grenade`, `kills_headshot`, `kills_power`, `assists_emp`, `assists_driver`, `assists_callout`, `medals`) values (4837, 23180, 248974, ?, ?, 5, 3, 1, 0, 0, 1.6869565217391, 92.66, 22270, 194, 115, 41, 0, 0, 36, 4, 112, 35230, 122061, 4759, 2041, 2718, 42.887161168313, 0, 0, 0, 20, 4, 30, 37, 0, 0, 0, {"622331684":20,"2602963073":8,"1283796619":1,"2780740615":10,"4229934157":5,"1176569867":19,"2758320809":1,"1284032216":1,"3334154676":2,"2123530881":4,"3233952928":2,"1146876011":1,"555849395":1,"2625820422":2,"2861418269":2,"4277328263":1,"221693153":3,"2278023431":1,"4261842076":3,"20397755":1,"2063152177":4,"269174970":1,"548533137":2,"418532952":1,"1486797009":1,"710323196":1,"1720896992":1,"2567026752":1,"731054446":1,"651256911":1,"1623236079":1,"1210678802":1,"3347922939":1,"1512363953":2,"1172766553":1,"690125105":3,"3027762381":1}))  

Crash - CSR Pull

[2021-11-29 01:50:25] production.ERROR: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58-0-0-1' for key 'csrs_player_id_queue_input_season_unique' (SQL: insert into `csrs` (`player_id`, `season`, `queue`, `input`, `csr`, `matches_remaining`, `tier`, `tier_start_csr`, `tier_image_url`, `sub_tier`, `next_tier`, `next_sub_tier`, `next_csr`, `season_tier`, `season_sub_tier`, `updated_at`, `created_at`) values (58, 1, 0, 0, 955, 0, Platinum, 950, https://avtqvzpooapfgoykpwxd.supabase.in/storage/v1/object/public/infinite-assets/playlist-csrs/platinum-small.png, 1, Platinum, 2, 1000, Platinum, 1, 2021-11-29 01:50:16, 2021-11-29 01:50:16))  
[2021-11-29 01:50:25] production.ERROR: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58-0-0-1' for key 'csrs_player_id_queue_input_season_unique' (SQL: insert into `csrs` (`player_id`, `season`, `queue`, `input`, `csr`, `matches_remaining`, `tier`, `tier_start_csr`, `tier_image_url`, `sub_tier`, `next_tier`, `next_sub_tier`, `next_csr`, `season_tier`, `season_sub_tier`, `updated_at`, `created_at`) values (58, 1, 0, 0, 955, 0, Platinum, 950, https://avtqvzpooapfgoykpwxd.supabase.in/storage/v1/object/public/infinite-assets/playlist-csrs/platinum-small.png, 1, Platinum, 2, 1000, Platinum, 1, 2021-11-29 01:50:23, 2021-11-29 01:50:23))  

Deploy Passes, but fails

Run deployphp/action@v1
Downloading "https://github.com/deployphp/deployer/releases/download/v7.0.0-rc.3/deployer.phar".
<?xml version="1.0" encoding="utf-8"?><Error><Code>ServerBusy</Code><Message>Egress is over the account limit.
RequestId:8d55cc58-a01e-0002-4b30-ec9cdd000000
Time:2021-12-08T12:36:34.5427639Z</Message></Error>

Yet the build passed....

Autocode 0.2.0

  • Adds support for specific service record (swap to ranked)
  • Adds quit/joined/etc to matches
  • Adds playlist information to matches

Improvements with HaloDotApi

  • Background and Emblem are just a user specific URL, making queries difficult since no key to determine unique of them.
  • Endpoints return gamertag, but no xuid making uniqueness tough
  • History endpoint has no method to differentiate ranked vs quickplay in arena (mode added)
  • Unknown how id/version are referenced for categories/maps
  • CSR endpoint does not differentiate between duo/open and cross-play (queue added)

Game History to ASYNC

We should make the game history async, only make it sync if you are looking at game history page.

Support XBL Renames

[2022-01-20 23:41:12] production.ERROR: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2533274823559638' for key 'players_xuid_unique' (SQL: update `players` set `xuid` = 2533274823559638, `players`.`updated_at` = 2022-01-20 23:41:12 where `id` = 2750) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 23000): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2533274823559638' for key 'players_xuid_unique' (SQL: update `players` set `xuid` = 2533274823559638, `players`.`updated_at` = 2022-01-20 23:41:12 where `id` = 2750) at /home/leafapp/deploy/releases/44/vendor/laravel/framework/src/Illuminate/Database/Connection.php:712)

Post Game Carnage Report

While we could build these partially now reversing game_players. I believe HaloDotAPI will have an endpoint for this in future.

Locking

I think folks normally on initial load click a different tab immediately, while the background initial data pull is still going. This leads to one of the connections failing with DB collision.

We could setup mutex here to hold them waiting till first is done.

Livewire Corruption since 2.9.0

[2022-01-16 11:09:02] production.ERROR: Livewire encountered corrupt data when trying to hydrate the [game-page] component. 
Ensure that the [name, id, data] of the Livewire component wasn't tampered with between requests. {"exception":"[object] (Livewire\\Exceptions\\CorruptComponentPayloadException(code: 0): Livewire encountered corrupt data when trying to hydrate the [game-page] component. 
Ensure that the [name, id, data] of the Livewire component wasn't tampered with between requests. at /home/leafapp/deploy/releases/41/vendor/livewire/livewire/src/HydrationMiddleware/SecureHydrationWithChecksum.php:21)

Stop Bots triggering refreshes.

Spiders/Bots etc are hitting pages and causing a data refresh, leading to rate limits. Lets have those accounts view, but not refresh data.

Automate full parse of Tourney at end

{
    "transaction_id": "4941e2d4-9980-4a96-b0eb-d3c86363be27",
    "event": "championship_finished",
    "event_id": "ea0f1ab3-6d8f-462b-8653-289b68be7c05",
    "third_party_id": "7913f824-5786-404c-a2c0-6e3859eed0c1",
    "app_id": "06ada0e0-2e08-48f0-98b8-a7bb692134df",
    "timestamp": "2022-01-31T00:03:36Z",
    "retry_count": 0,
    "version": 1,
    "payload": {
        "id": "5eca0b9f-cab8-44e1-82ef-86337915053c",
        "game": "halo_infinite",
        "organizer_id": "c96b93cb-c3cc-4956-8394-9ca9b4604e4b"
    }
}

Webhook from FaceIt.

Crash - PVE-Bots

[email protected] [~/deploy/current]# php artisan app:pull-match-history 4

In Game.php line 56:
                                      
  Invalid Experience Enum (pve-bots)  

Crashed pulling grant.

CSR into PCGR

Bronze 1 - 0
Bronze 2 - 50
Bronze 3 - 100
Bronze 4 - 150
Bronze 5 - 200
Bronze 6 - 250
Silver 1 - 300
Silver 2 - 350
Silver 3 - 400
Silver 4 - 450
Silver 5 - 500
Silver 6 - 550
Gold 1 - 600
Gold 2 - 650
Gold 3 - 700
Gold 4 - 750
Gold 5 - 800
Gold 6 - 850
Platinum 1 - 900
Platinum 2 - 950
Platinum 3 - 1000
Platinum 4 - 1050
Platinum 5 - 1100
Platinum 6 - 1150
Diamond 1 - 1200
Diamond 2 - 1250
Diamond 3 - 1300
Diamond 4 - 1350
Diamond 5 - 1400
Diamond 6 - 1450
Onyx 1500

So we don't have to store too much, just keep the csr values.

Support Bots

Need to think about this. Have a few options:

  1. Force a Player that is a Bot for all bots (seeded)
  2. Redesign Game to support GamePlayers and GameBot and use a polymorphic relation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.