close
close

Yiamastaverna

Trusted News & Timely Insights

The Riot Tech Intern Experience 2024 Part 1 League, VALORANT, TFT
Alabama

The Riot Tech Intern Experience 2024 Part 1 League, VALORANT, TFT

Working this summer has been very different from my last internship at Riot, where I got to work on 2XKO, Riot’s upcoming 2v2 team combat game! My project was implementing the direct challenge flow, which allows players in a lobby to challenge others to a match. With the recent 2XKO Alpha Lab, I’m finally able to see my work from last year live! It’s been incredibly rewarding to see players’ reaction to the feature, especially being able to show it off to my friends.

Both internships at Riot were an incredible learning experience for me. From developing in-game features for 2XKO to developing tools for designers and artists at League, I gained experience in a variety of skills including working with a game engine, improving proprietary tools, automating processes with RPC and AWS, and even some web development. Overall, I am eternally grateful to my team for their tireless support on this journey and to the University Programs for giving me the opportunity to fulfill my dream of working in the games industry!

Dora Su

School: University of Waterloo
Significant: Computer Science
Team at Riot: VALORANT Console Gameplay Team

Growing up, I didn’t play many games except for Pokémon on my DS. It wasn’t until high school that I started playing League of Legends. Many of my friends at the time were into it, and since everything was online during the pandemic, I met most of my college friends through League and TFT. That’s when I was really interested in gaming and knew I wanted to work in the industry.

When I started applying for internships, Riot Games was at the top of my list, and I got my chance with my 2023 internship at Riot on the VALORANT Console Gameplay team.

My first summer at Riot, the work was more experimental, with no strict deadlines, which gave me a lot of freedom to learn and experiment. This year was different. With the VALORANT Console release around the corner, my team was fully focused on launch. I was tasked with building a new system for the gameplay capture team, who needed the ability to toggle the visibility of certain HUD elements on and off while filming gameplay trailers. These trailers are seen by players all over the world, so it was crucial that they looked perfect. My goal was to reduce the amount of post-production required for SFX/Visuals in order to streamline work processes for the gameplay capture team.

To do this, we implemented a new console command called HideWidget that takes a widget enum and a boolean value. We then bound each HUD element to an enum so that the command can detect which widget visibility to toggle. When using the console command, a delegate that each HUD element is bound to sends a broadcast, and from there each widget can determine if its visibility needs to be changed.

Initially, I tried to build the logic for changing visibility based on an existing command that hides all HUD elements by setting the visibility of the underlying Slate widget to “hidden”. However, this approach was problematic – the game logic would sometimes override our settings by calling “SetVisibility”, which would override the visibility of the Slate widget, causing elements like health bars or Viper’s ultimate fuel gauge to reappear when they shouldn’t. This made the system unusable for the capture team, especially during intense moments like gunfights or when using skills.

To solve this problem, instead of changing the underlying visibility of the Slate widget when the command was called, we decided to create a new widget class that overrides the standard SetVisibility function in Unreal Engine. This overridden function allowed our system to check whether the element should be shown or hidden based on saved visibility states from previous console command inputs. If the widget should be hidden, the Slate widget’s visibility would be set to Hidden, otherwise we would call the parent SetVisibility function. This change allowed us to maintain control over the visibility of the HUD elements. Even when game logic tried to interfere with SetVisibility calls, the new SetVisibility logic ensured that visibility was as expected.

There were so many small but important details to take care of – like removing pings when an ally dies, hiding the voice comms halo over agents, and even making sure the kill feed was correctly localized in different languages. The tight deadline made it stressful at times, but it was an incredibly rewarding experience.

This internship taught me a lot about how to work under pressure and adapt to change quickly. It was exciting to be part of such an important product launch and I’m proud of my work. Knowing that something I worked on will be seen by gamers around the world is an incredible feeling and it’s moments like these that remind me why I wanted to work in game development in the first place.

Sophie Lan

School: University of Waterloo
Significant: Computer Science
Team at Riot: TFT tools and pipelines

I’ve always been interested in games. I’m a huge Pokémon fan and have been playing Nintendo games for a long time. I started playing League in high school and became a huge fan of the LCS. I also enjoy playing ARAM with friends, so interning at Riot was my dream. I work in the games industry while also being at a company whose games I have a strong personal connection to.

During my internship, I work with the TFT Tools and Pipeline team, who work on the internal tools that help TFT developers and artists create the game. I help with an internal asset browser that helps VFX artists find assets from existing particles to use in their workflow.

At the moment the current system is not ideal. Often you have to use Windows File Explorer and open a bunch of files individually to even see what the particle animation looks like. There are a lot of features planned for the Asset Browser and a big one I’ve been working on is automatic thumbnail generation for particles, which has been challenging because you have to represent the entire animation with one image. A lot of my work has been around figuring out how to generate good thumbnails algorithmically, make them run faster and work as a batch process.

During this internship, I learned that unexpected problems can crop up and that when that happens, you just need to talk to your manager about what’s going on. When we switched to batch generation of thumbnails, it took a lot longer than expected – about 90 minutes per champion – so I had to do some optimization work. We extended the deadline a bit to make that possible. There will always be obstacles, but as long as you communicate, everything will work out!

If you’re interested in working on projects like these, our internships start September 1st. Check out our internship page to learn more about this internship program at our Los Angeles headquarters and other internship opportunities at Riot offices around the world.

LEAVE A RESPONSE

Your email address will not be published. Required fields are marked *