When developing client-side solutions, it's important to consider latency. During gameplay, server lag is unavoidable and always exceeds 0ms. The system must remain responsive to ensure a smooth player experience, especially when casting spells. This is when you take advantage of the existing “defer queue” system on the server side, which allows you to start sending spellcast packets a few seconds before the cooldown reaches 0. Spellcasting remains pending on the client even though it is technically unavailable. On the side, it looks as if a spell was cast right away. This is beneficial in high-latency situations because it can offset the precision lost due to delay.
During the development process, I worked closely with the designers to ensure that this precast buffer met gameplay requirements. It provided configurable intervals to fine-tune the balance of the system, ensuring the charging process was responsive and fair across different scenarios.
If you want to learn more about the spellcasting system, my teammates Luke and Cliff have written a great article about it.
These projects taught us a lot about problem solving and collaboration in game development, especially about balancing new solutions with existing systems. Seeing the spirits smoothly heading towards the aurora in the game gives me a sense of accomplishment, and I am proud that we were able to contribute to improving the player experience. I would also like to thank my teammates, designers, and QA for their support throughout the journey, as I couldn't have done it without them.
Name: Vera Liu
school: carnegie mellon university
Selection subjects: Master of Entertainment Technology
Riot team: Technical art of tools and pipelines
I've always loved the worlds that games create, and I played a lot of The Sims and Assassin's Creed titles growing up. But I never thought I'd end up working in games until I was exposed to it in a graduate program, focusing on technical art and computer graphics.
The application process for this internship was an experience in itself. This was my first time formally applying for a job or internship, and I had to create a resume from scratch. Technical artist job descriptions are often vague and vary widely depending on the job title and company, so I spent a lot of time customizing my resume for different roles and perfecting my personal portfolio.
My manager told me that when looking for these internships, they are looking for a CS degree with a strong arts background. These internships are difficult to get into. That makes it even more important to make sure your application truly matches the role you're applying for.
At Riot, I work as a Tools and Pipeline Technical Artist on the PIE team for League PC, a role that fits my skillset perfectly. My main project this summer is modernizing an old Maya internal tool used by animators and riggers called the Animation Picker tool. This tool displays all the controls for a character in the current 3D scene in a 2D layout, making it easy to select rig controls for animation.
My project had two main components. First, we redesigned the UI and UX to make the tool more intuitive and easier to use. Older versions required users to click through multiple menus just to create or edit a control, which was tedious and inefficient. My goal was to streamline this process and develop a prototype that was simpler but a much improved experience than the final product.
The second part of my project involved integrating the tool into Riot's existing source art metadata management system. Previously, the Picker tool was a standalone tool, but with the integration, the “picker page” can now be managed through a source art management system, making it easier to adapt to different champions and skins.
One of the biggest challenges I faced was navigating Riot's extensive and complex codebase. As a student, my projects were always self-contained, so working within such a large and interconnected system was a new experience. Before writing a single line of code, we had to understand how everything worked together and communicate with various teams to ensure the tool met everyone's needs.
This internship helped me understand the importance of interdisciplinary communication and how different roles within a team contribute to the final product.
Name: John Lee
school: University of Texas at Austin
Selection subjects: computer science
Riot team: Valorant
Growing up, I always loved playing video games. I've been playing League off and on since Season 3 and recently started playing VALORANT. Working at Riot is definitely a dream come true for me!
This is my second year as an intern at Riot, and both internships have been unique learning experiences. During my first internship at Riot, I worked on a league team and learned a lot of fundamentals, including the importance of asking questions, getting answers from Slack channels, and working as part of a larger team in a live game. These first year experiences laid the foundation for my success this summer. From a technical perspective, my work this year was completely different from the first year. During my first year, I worked on League's internal systems, mainly using Python and Jenkins. This year I worked directly with VALORANT's client on console, using C++, Go, and Unreal.
In a recent internship, my main project focused on VALORANT objective cards on the console's progression hub. I created Agent Gear Objective Cards based on existing Basic Training, Battle Pass, and Event Pass cards that display dynamically and show player progress in various Agent Gears. Before I could create new cards and integrate them into my workflow, I needed to refactor the existing code to centralize the visibility logic. In addition to this project, I also worked on backend services for VALORANT.
I really liked the work my team was doing, and it's great to be able to work directly with clients and ship what players see. You can point to your Agent Gear objective card and tell your friends, “Oh, I did this.” Getting something actually up and running like this is a really rewarding and motivating experience.