LUCAS.DEV
Back to projectsBlog post hero image

RL Garage

Introduction

RL Garage is a platform centered around the popular video game, Rocket League. It offers a technologically advanced player-to-player item trading system, custom built to accommodate the needs of its users. The trading system is backed by a comprehensive database of all items available in Rocket League, which is publicly accessible from the RL Garage website and mobile app. More recently, a car designer tool was introduced, helping players customize their in-game vehicles to their heart's content.

These features, together with many others, has enabled the RL Garage platform to reach over 6 million registered users, making it the largest Rocket League network in existence.

My involvement

I co-founded RL Garage with Chris Dolman and Laurids Düllmann back in 2015. My main role was developing the website — from fixing minor bugs to building sophisticated tools that millions of users interact with. I also held an administrative and community manager role, dealing with customers directly and moderating the community.

Technology stack

For the website, we built a custom PHP framework to serve our webpages. The data is stored and managed with Redis and MySQL. We largely use jQuery to handle client interaction and sending HTTP requests.

As this is a very large project, there are too many technologies to describe individually, but here’s a list of ones that I personally worked with on a regular basis:

  • PHP
  • MySQL
  • Redis
  • Cloudflare
  • Bunny CDN
  • Paddle
  • REST APIs & webhooks
  • HTML, SCSS, & JavaScript/jQuery
  • Node.js & NPM
  • Git & GitHub
  • Jira

Notable achievements

  • Over 11,000 paid monthly/yearly subscriptions
  • More than 6,000,000 registered users
  • 80,000,000 peak monthly page views
  • Top result on Google for ‘Rocket League trading,’ ‘Rocket League items,’ ‘Rocket League shop,’ and ‘Rocket League designs’

Live demo

If you’re curious to see the project in action, it’s live on rocket-league.com or you can download the RL Garage app on Apple’s App Store or Google’s Play Store.

Rocket League

Before I can explain what RL Garage is, I must first give a brief introduction to Rocket League. If you’re even remotely interested in video games, you’ve probably heard of Rocket League. It’s one of the world’s most popular video games, with around 100 million active players in 2023, according to activeplayer.io. The game is developed by Psyonix and owned by Epic Games. To summarize the game’s gameplay in a sentence: two teams play against each other in a game of fast-paced and highly competitive vehicular soccer.

An in-game screenshot of a vehicle equipped with various items, including the RL Garage flag

A popular aspect of the game is customizing your car with unlockable items. This can be a stylish set of wheels, a funny hat, or a cool decal — just to name a few. Some items are more desirable than others, and can make you stand out from the crowd. Items can be difficult to acquire through normal gameplay, so the game allows you to trade items with other players. This has created a large market.

What is RL Garage?

RL Garage capitalizes on the popularity of trading in Rocket League by acting as a hub for players around the world, where they can share their trade offers and make deals with other players. So, while Rocket League handles player-to-player trading, RL Garage allows players to find each other to initiate said trades.

Trading is RL Garage’s flagship feature, but it offers many other services as well, such as rank & stats tracking, complete item database, car designer, community discussions, player-to-player live chat, blog section, and so much more. All of this has made RL Garage the number one Rocket League network in the world, reaching over 6 million registered users.

RL Garage is available on the web and on iOS & Android.

Work I’m proud of

Trading

In 2016, I created the initial version of the trading system, which made the project profitable. Since then, my colleagues and I continued to evolve the trading system to become a highly advanced trading platform with active scam prevention and item value assessments. This made RL Garage the go-to place to find and post trades.

A screenshot of the trading home page A screenshot of user trades on the trading page

The system is primarily built in PHP, JavaScript, and MySQL. I put a lot of effort into making the UX great, with plenty of client-side validation, drag-and-drop functionality, “fuzzy” item search with Fuse.js, trade filtering with OpenSearch, and more.

One optimization I’m particularly proud of is on the trade search page. On this page, thousands of items (which each includes an image and CSS gradients) would appear, which could cause sluggish performance on lower-end hardware. To fix this, I developed a system using JavaScript’s Intersection Observer API that would only render the trades actively on-screen, while hiding the rest. This change greatly improved the initial page loading time, scrolling performance, and overall snappiness of the page.

Subscription model

From 2015 - 2020, we relied solely on advertisements to fund the project. When COVID hit, the CPM fell to levels that were unsustainable for us, so we decided to launch a premium subscription service to compensate for that loss. I was in charge of implementing all of the subscription logic. That includes handling payments, renewals, cancelations, refunds, plan switching, and tailored plans for power users. To date, this subscription model has generated over 11,000 paid monthly/yearly subscriptions.

I used Paddle for the web implementation and Apple/Google’s native in-app purchase implementation on mobile. One of the challenges I ran into was ensuring our local data was synchronized with the merchant data. On a technical level, this task consists of a PHP backend that accepts incoming webhooks and verifies the data using Paddle, Apple, or Google APIs.

Additionally, I developed a comprehensive subscription management page for our customers, so they can manage their plan however they like — whether it be upgrade/downgrade to a different plan, cancel their subscription, change payment method, download invoices, etc.

A screenshot of the subscription management page

Item database

Rocket League has nearly 7,000 cosmetic items. In order for the RL Garage trading system to function, we had to catalog each and every item. I developed what we call the “Item Database,” which presents the full collection of items available in the game, in a UX-friendly way, so users can browse and search for specific items. Each item has in-depth descriptions, relevant attribute data, and stats that tie in with our trading system and car designer.

A screenshot of an item's detail page A screenshot of the Item Database page

To create this interface, I used HTML, SCSS, and JavaScript to make the page layout based on a design that was provided by our designer. To display dynamic data, PHP, MySQL, and Redis was used. A lot of relational data was required to highlight all of the relevant item data. With so many active users, it took a toll on our MySQL database, so I used Redis to cache much of this data. Redis stores data in-memory, making the data retrieval significantly faster and less resource intensive — saving us money in the end.

Current status

In October 2023, Epic Games announced that they would be removing trading from Rocket League. This news was heartbreaking for me, but not totally unexpected. It effectively put an end to this project, as trading was our bread and butter. While RL Garage still exists without trading, it is not able to earn enough to support the full-time developers it needs to run.

Lessons learned & closing remarks

When I started this project 10 years ago, I didn’t envision reaching 6 million users, 80 million monthly hits, and 11,000 paying customers. These numbers completely blow my mind, even to this day. With a user base this large, I feel that I have learned what it means to be in charge of a large platform and the responsibility that entails.

My programming skills have grown in ways that a university education simply wouldn’t allow. I have a Bachelor's degree in Web Development, which has certainly taught me the fundamentals and a lot of theory, but through RL Garage, I learned how to apply my skills in a practical way. Watching what I have created being used by real people has been incredibly rewarding.

Working on RL Garage has proven to me that working in a team on a large project can be super fun. I have thoroughly enjoyed my time working on this project and I’m super grateful to have had this opportunity. Work doesn’t have to feel like work — and that is something I will strive for in future projects and jobs.

An illustration of a Rocket League Octane car in RL Garage colors

Continue reading