Inspiration

Inspired by Arcane and this year’s narrative-driven League season, we wanted to explore a different way of understanding play: not just as performance, but as expression. Around the same time, we encountered Shalom H. Schwartz’s Theory of Basic Human Values, which outlines core motivational dimensions in human behavior (such as Achievement, Benevolence, Self-Direction, etc.). We realized that many of these values are implicitly expressed in how players make decisions in-game: whether they roam to help teammates, take risky all-ins, farm patiently, or secure vision control. So we asked: What if gameplay patterns could tell a story about who you are as a player? Drawing on methods from design research, data storytelling, and journey mapping, we created ArcForge: a system that turns match statistics into personal narrative arcs — combining analytics, values modeling, and visual storytelling. Our team blends backgrounds in design, computer science, and mathematics, and this project is where those strengths meet: turning raw systems data into meaningful reflection and narrative.

What it does

ArcForge takes your League of Legends match history and: 1. Divides your matches into four narrative arcs, mirroring character development. 2. Extracts measurable behavioral signals for each chapter 3. Maps these signals into Schwartz motivational values (such as Achievement, Benevolence, Power, Self-Direction, Stimulation, Tradition, Security, etc.) 4. From key values determines in which region in Runeterra your journey goes through 5. Generates a personalized narrative journey through different regions in Runeterra Beyond storytelling, ArcForge also provides prioritized, actionable insights to help you understand how your playstyle expresses your values — and what concrete adjustments can elevate your performance. Finally, ArcForge includes a comparison mode: Upload your and your friend's data - The system compares your values and if your values harmonize, you become Legendary Allies but if they conflict, you become Arch-Nemeses. Either way, ArcForge generates a shared lore chapter in the world of Runeterra — telling how your destinies intertwine.

How we built it

  1. We use the Riot Games API to fetch a player’s recent matches. A lightweight script (fetch_matches.py) collects match JSON files containing participant stats, timeline events, and metadata. This step runs locally or in the cloud depending on the environment. For the online 2. Pre-processing & Feature Extraction For each match, we isolate the player’s own performance data and extract behavioral signals such as: Gold pacing Damage profile Objective control Vision score Tempo and early game indicators Team coordination and kill participation These signals are grouped into value bundles (Power, Achievement, Benevolence, etc.) based on Schwartz’s Theory of Basic Human Values. This mapping logic lives in stats_inference.py. 3. Quarter Segmentation We model a season as a journey in four chapters. Matches are sorted chronologically and divided into four parts (pertaining to each chapter in the user's lore) 4. Value Scoring & Normalization For each quarter, we compute: Raw value expression scores Z-score normalization to get relative emphasis Top 3 dominant values per chapter This reveals who the player is in each act of their journey. 5. We then map these dominant values into regions in runeterra (e.g. Power, Achievement -> Noxus) and make it so that the lore generation engine takes in the player's selected archetype, their dominant values and the region to generate a lore for that chapter. 6. Through each chapter the player's story progresses and after chapter 4 it reaches a finale.

Challenges we ran into

Learning AWS from scratch None of us had used AWS before, so setting up Amazon SQS, DynamoDB, and deployment pipelines took time. We had to learn queueing, permissions, IAM, triggers, and API infrastructure on the fly.

Mapping gameplay statistics to human values The Riot API exposes hundreds of attributes. Understanding what each meant, testing whether it reflected intentional player behavior, and deciding how it should contribute to values (Achievement, Benevolence, Power, etc.) was a deeply manual and iterative task. We each tried independently, debated, re-mapped, re-weighted, and validated again.

Aligning values with Runeterra regions We re-read lore for Demacia, Noxus, Ionia, Targon, Piltover, etc., and matched each region to motivational clusters. This required both research and careful narrative interpretation.

Prompt engineering for narrative quality Getting the LLM to generate lore that was consistent, not repetitive, and felt like League required multiple prompt templates and tuning. Model choice involved trade-offs between cost, quality, and latency.

Accomplishments that we're proud of

We successfully translated raw match statistics into an abstract identity model using Schwartz’s theory — something that is hard both technically and conceptually.

We built a complete end-to-end pipeline:

Fetch data

Extract behavioral signals

Infer motivational values

Map values to Runeterra regions

Generate story chapters

Present the journey interactively

The final output genuinely felt personal and recognizable — when we viewed our own journeys, we could actually see ourselves in the narrative.

What we learned

Translating raw numeric data into psychological or narrative meaning requires iteration, patience, and interdisciplinary thinking. It’s not just data science — it’s interpretation.

Amazon SQS + DynamoDB is a powerful combination for parallel, scalable processing. Once configured, it handled large player datasets smoothly.

Deployment workflows on AWS are much more straightforward once you understand permissions and environments.

Storytelling makes analytics stick. Players remember who they felt like, not just what their KDA was.

We were surprised by how accurately personality and playstyle emerge from match behavior — and how effectively LLMs can turn those patterns into narrative and actionable reflection.

What’s next for ArcForge

Improved value mappings We want to refine the way we weight gameplay behavior and expand the psychological framework.

Stronger actionable insights Coaching-style recommendations — not just narrative reflection.

Interactive lore experience Dynamic story progression, questions, branching paths, and possibly an RPG-style NPC guide.

Esports / Flex Team Mode Generate shared team identity, synergy patterns, and playstyle role analysis.

Real-time feedback mode Track how your values shift from game to game.

Share this project:

Updates