No description
Find a file
2026-02-17 14:58:38 +00:00
include init 2026-02-17 14:58:38 +00:00
src init 2026-02-17 14:58:38 +00:00
.gitignore init 2026-02-17 14:58:38 +00:00
CMakeLists.txt init 2026-02-17 14:58:38 +00:00
compile_commands.json init 2026-02-17 14:58:38 +00:00
README.md init 2026-02-17 14:58:38 +00:00
schema.sql init 2026-02-17 14:58:38 +00:00
setup.sh init 2026-02-17 14:58:38 +00:00

📊 LoL Bio-Rhythm Analytics

1. Overview

A high-performance data analysis engine built with C++ to identify Champion Bio-Rhythms—specific hours of the day when a League of Legends champion's win rate peaks.

This project analyzes whether timing (e.g., 3:00 PM vs. 3:00 AM) significantly impacts win rates for specific champions by processing large-scale match data from the Riot Games API.

2. Architecture

  • C++ + Boost(Asio, Beast)
  • MySQL (might be changed to another one)
sequenceDiagram
    participant Admin as User/Admin
    participant Sys as lol_analytics
    participant Riot as Riot API
    participant DB as DB

    %% ==========================================
    %% API 1: Sync All Users by League
    %% ==========================================
    rect rgb(240, 248, 255)
    Note over Admin, DB: [API 1] Fetch all users by league
    Admin->>Sys: Request: Sync League Users (League ID)
    
    loop Page 1 to End (Until empty)
        Sys->>Riot: GET /lol/league/v4/entries/... (page=N)
        Riot-->>Sys: User List Data
        Sys->>DB: Save/Update Users (Summoner ID, PUUID, etc.)
    end
    Sys-->>Admin: User Sync Completed
    end

    %% ==========================================
    %% API 2: Sync Matches within Time X ~ Y
    %% ==========================================
    rect rgb(255, 245, 238)
    Note over Admin, DB: [API 2] Fetch matches within time X ~ Y
    Admin->>Sys: Request: Fetch Matches (Time X ~ Y)
    
    Sys->>DB: Query User IDs (PUUIDs)
    DB-->>Sys: PUUID List

    loop For each User
        Sys->>Riot: GET /lol/match/v5/matches/by-puuid/{puuid}?startTime=X&endTime=Y
        Riot-->>Sys: Match ID List
        
        loop For each Match ID
            Sys->>Riot: GET /lol/match/v5/matches/{matchId}
            Riot-->>Sys: Match Detail Data
            Sys->>DB: Save Match Result (win/loss, timestamp, champion)
        end
    end
    Sys-->>Admin: Match Sync Completed
    end