Inspiration
The Valorant Esports Team Assistant project was inspired from my passion for Valorant(even if I am Plat) and my interest in using data science and AI. As a Valorant viewer and player, I saw this as an opportunity to learn and build a tool that could assist in scouting and team-building processes for Valorant esports teams. I wanted to create an assistant that could bring data together and provide meaningful insights to support teams in building optimal rosters and strategies.
What it does
The Valorant Esports Team Assistant is an AI-driven tool that helps esports teams and analysts make informed decisions on team compositions, role assignments, and performance evaluations. The assistant processes a game data(player statistics, agent picks, team performances, and historical match data) from VCT International, VCT Challengers, and Game Changers. It can:
- Build balanced teams based on user-defined criteria such as pro players, mixed-gender teams, or cross-regional compositions.
- Provide detailed analysis of individual player performances, including key metrics like kills, ADR (Average Damage per Round), headshot percentages, multi-kill stats, and more.
- Suggest roles for players (e.g., Duelist, Sentinel, Controller, Initiator) based on their preferred agents and performance data.
- Assign an In-Game Leader (IGL) based on player experience and leadership potential.
- Generate insights using Amazon Bedrock's LLM to explain why certain players were selected, analyze team strengths and weaknesses, and provide tactical advice for offensive and defensive scenarios.
How we built it
I built this project by:
- Data Collection & Storage: I began by collecting large volumes of game data from sources like the public S3 bucket, Reddit(r/ValorantCompetitive), and X. However, I was unable to incorporate Reddit and X. The game data included player performances and agent selections. This data was processed in parallel using Python and uploaded to S3 to be used with OpenSearch and RAG for Amazon Bedrock.
- Data Search with OpenSearch: The player and team stats were indexed in OpenSearch, making it possible to efficiently search for players based on performance criteria like kills, ADR, and headshot percentage. I designed custom indices for both players and teams, ensuring that the assistant could quickly query and filter the most relevant data.
- Response Generation with Amazon Bedrock: Using Amazon Bedrock, I integrated the Titan Text LLM to analyzes the input, retrieves relevant data from OpenSearch, and provides insights such as role assignments and team composition suggestions. The LLM also explains the reasoning behind player selections based on performance data.
- Chatbot Interface with Streamlit: I used Streamlit to build a simple chat interface so users can input commands such as "Build a team from VCT International" or ask about specific player stats, and the assistant provides detailed responses based on the available data.
Challenges we ran into
Some challenges were:
- Handling Large Datasets: One of the biggest challenges was efficiently handling and processing the vast amounts of game data due to my computer not being able to handle that much data. I was only able to utilize 2024 data from the public S3 bucket. Keeping track of player stats across multiple games required careful optimization in both data storage and retrieval.
- Attempt to Integrate Multiple Data Sources: Balancing and integrating different types of data like the public S3 bucket, Reddit(r/ValorantCompetitive), and X was a complex task. I wanted to add other data like VCT 2023: Players Dataset (BY @FLYNVAL on Twitter) and VALORANT Champions Tour Global Contract Database but I was only able to use the public S3 bucket. Ensuring that the assistant could pull the right data at the right time was important to providing accurate insights.
- Optimizing Performance: Building a responsive and fast system was a necessity, especially with the size of the datasets. I had to carefully design the system's architecture to ensure that querying OpenSearch for player stats and generating responses from Bedrock would happen efficiently.
- Role Assignment Logic: Assigning roles to players based on their top agents proved to be a tricky challenge. I had lots of trouble querying the OpenSearch indexes and needed lots of trials so that I had a system that could interpret agent preferences, map them to appropriate in-game roles, and ensure balanced team compositions.
Accomplishments that we're proud of
Some of the things I am proud of is:
- Learned a bit of AWS: I pulled large-scale player and team data from the public S3 and stored it efficiently in my own Amazon S3 and OpenSearch for quick querying.
- Building a powerful AI-driven assistant: By leveraging Amazon Bedrock, I built an assistant capable of offering deeper insights by generating meaningful explanations for team compositions and player performance.
- Performance optimization: I tackled the challenge of working with huge datasets by optimizing data processing pipelines and query times using parallelization
- Interactive chatbot with Streamlit: The user interface built with Streamlit allowed me to make the assistant accessible and easy to interact with in a real-time environment.
- Completing the Assistant: I was worried of not being able to complete the assistant due to classes, not being knowledgeable in Amazon Web Services, and working on this alone. But I was so proud of being able to do it all myself.
What we learned
Throughout this project, I gained experience in integrating multiple data sources and technologies into a cohesive system. Some of the key lessons included:
- Data Integration: I learned how to work with various esports data, such as player stats, agent selections, team performances, and community insights from sources like the public S3, Reddit(r/ValorantCompetitive), and fan-based platforms.
- LLM Integration with Amazon Bedrock: I explored how to use language models (LLMs) through Amazon Bedrock to create a chatbot that could assist users in building teams and analyzing player stats in real-time.
- Efficient Data Handling: I implemented strategies for downloading and processing large-scale game data, utilizing S3 for storage and OpenSearch for fast, query-based access to player statistics. This project honed my skills in handling large datasets and optimizing performance.
- Building User Interfaces: I developed a chatbot interface using Streamlit, which was a great opportunity to learn how to build simple, intuitive UIs.
What's next for Allen_VCT_LLM
The next steps for the Allen_VCT_LLM Valorant Esports Team Assistant include:
- Expanding the dataset: In addition to expanding the dataset from 2024 to 2022-2024, I plan to incorporate additional sources of player performance data and community insights from Fandom, Reddit, X, or platforms like VLR.gg, offering even higher quality analysis and team-building options.
- Real-time data integration: Future iterations could possibly include live game data integration utilizing the Riot Games API, allowing users to get real-time updates on matches, players, and team performance during ongoing tournaments.
- More advanced AI capabilities: By improving the logic of the model(logic or even memory) or the AI’s ability to predict player performance based on historical data, we aim to help coaches and teams make forward-looking decisions, such as predicting how players will perform in different maps or agent combinations.
- Advanced strategy recommendations: The assistant could be enhanced to not only analyze individual stats but also recommend team-wide strategies based on opponents’ weaknesses, preferred maps, and agent compositions. This could be done by using a text and vision model to view and make strategies based off of game events in the game.
Built With
- amazon-bedrock
- amazon-opensearch
- amazon-web-services
- api
- boto3
- concurrent.futures
- javascript
- opensearch
- python
- rag
- streamlit
Log in or sign up for Devpost to join the conversation.