RoyaleAPI

by See-ming Lee
What I’m doing now, and how it happened.

Story of RoyaleAPI

RoyaleAPI

What I’m doing now, and how it happened.

Scotland, 2016

In 2016, while on vacation in Scotland, I got really bored looking at the lake, and I went to the App Store to look for a strategy game — my favorite genre.

Kyle - Dornie / SML.20160516.IPH5.03676.RAW
Kyle - Dornie / SML.20160516.IPH5.03676.RAW

Clash Royale

I must’ve downloaded at least 20 strategy games, and within it is a game called Clash Royale.

Screenshot of my Clash Royale deck when I started playing the game. It made no sense, but it’s a good reminder that we all started playing the game as n00bs.
Screenshot of my Clash Royale deck when I started playing the game. It made no sense, but it’s a good reminder that we all started playing the game as n00bs.

Strategy + Data analytics

In order to play the game better, I decided to figure out how I could find the best strategy for it using data analytics.

With no official API available at the time, I initiated a partnership with a contact I made on Discord, and we rolled out a public API. That was the genesis of RoyaleAPI.

First git commit of the RoyaleAPI website, which was originally made as a proof-of-concept of our API.
First git commit of the RoyaleAPI website, which was originally made as a proof-of-concept of our API.

Clash Royale Public API

We opted to make the API accessible for public use, to allow more developers who don’t have the know-how to reverse-engineer the game to also be able to create apps and tools for the game.

Documentation for developers of our original public API.
Documentation for developers of our original public API.

Screenshot: RoyaleAPI Documentations for Developers

Sunsetting the API, keeping the name, 2020

Supercell — the game developer of Clash Royale — released an official API in 2018, and eventually we concluded the API element of our business was no longer sustainable. We discontinued that aspect of our site but retained the name due to its existing brand equity.

Sunsetting API service on 2020-03-01
Sunsetting API service on 2020-03-01

Screenshot: RoyaleAPI Blog: Discontinuing API service for developers, will not affect website, published on January 24, 2020.

Website as proof-of-concept

Our user-facing website was originally just a proof-of-concept, mainly developed to show what developers can do with the API that we published.

RoyaleAPI indexes millions of battles everyday to find the best decks.
RoyaleAPI indexes millions of battles everyday to find the best decks.

Screenshot: RoyaleAPI Decks

Attraction to Esports Players

But its deep data analytics capabilities have attracted the advanced users — particularly the professional players and their analysts who are involved in esports — where winning/losing each game could be a difference of $50k prize fund — all within 5 minutes.

RoyaleAPI Battle Replay visualizes a battle as a timeline and a placement map.
RoyaleAPI Battle Replay visualizes a battle as a timeline and a placement map.

Screenshot: RoyaleAPI Battle Replay

From 1 user to millions

RoyaleAPI started out as a personal project that’s only used by myself and a few small circle of friends. Little did I know, it would evolve into my full-time commitment with millions of monthly active users.

Google Analytics 4: RoyaleAPI: Global Coverage / 2024-01-21
Google Analytics 4: RoyaleAPI: Global Coverage / 2024-01-21

Synergy

Because of this project, I have come full circle back to what I have always loved — combining design and technology at the same time. This way of working is unique to me. I call it synergy, and it represents a step toward realizing my childhood aspiration of becoming a Renaissance man.

Source: SML Identity

Notes

Anatomy of the RoyaleAPI logo.
Anatomy of the RoyaleAPI logo.

The RoyaleAPI logo was designed over a weekend. I needed a visual identity of the product quickly, such that we could create a consistent identity on the Discord server for developers. It was intended originally mainly as an FPO (for placement only) logo, but I never changed it.

Even with the intention of changing it, I never really have time to truly reimagine it. The font I picked for the brand, which you could see on the RoyaleAPI brand guide is Whitney, but I made the logo with Base 9, designed by Zuzana Licko at Emigre (Wikipedia).

I used Base 9 because it’s technically a monospaced font, designed at a time with Zuzana experimented with monospace, and as a result, suggests the idea of a computer terminal, or really the tools that developers use, thus fitting. See Base 9 & 12 on Emigre

This logo kind of stuck. I have always wanted to change it, but we’ve been using it for so long that I eventually just registered it as a trademark, and so now I really don’t want to change it anymore because it took two years to get the trademark registered. See Twitter 1, Twitter 2, Twitter 3.

There are several parts of this identity that may be interesting:

  • Shape. The shape of the logo references the clan emblem in Clash Royale.
  • Colors: Blue, Red. The colors were chosen for the two sides of a Clash Royale battle — blue vs red.
  • Color Yellow. The yellow outline references the Royale in Clash Royale. It‘s designed to be visually similar in weight to the typographic forms inside the logo. It’s not the exact thickness, but it’s designed to be visually encompassing the thickness so that it would encapsulate it.
  • Split. The logo is split down in the middle so it will suggest the two sides of a battle.
  • API. It is additionally type-as-image — it hints on the face of a king. Most people don’t see it at first, because my idea is to simply give this a-ha moment, to give this feeling of something being subliminal but not really there.

I usually put a lot of thought in my designs, but I understand that visually it could feel somewhat garish. There are parts of it that I don’t really like.

Specifically, this is the only logo that I have ever designed where there are no mathematical proportion to anything. That is, I literally just drew it by hand with gut feeling.

Usually, for any logos that I would design, after having a semi-finalized form, I would then “unify” and “finalize” the design with math, such that I could describe the proportions of the different parts in a more logical way. This is common practice. The idea is so that even designers without access to the source files would be able to construct the logo again by measuring the proportions.

But I didn’t do any of that to this logo. I just kept using it. I actually tried to do a bit of that, but alas.

I will write more about this in the future.

RoyaleAPI Website Design

RoyaleAPI indexes millions of battles everyday to find the best decks.
RoyaleAPI indexes millions of battles everyday to find the best decks.

This site was never intended to be one used by millions of players, and as with all of my personal projects, I utilized it as an opportunity to test out frameworks and technologies that I’m interested in. So it’s built with a lot of things that might not even be ideally suited for the task.

I learned a lot about the different technologies that were relatively new at the time, and based on my dependency on several Python libraries, I found myself being involved and became part of the core team of a Python async web framework. Sanic used to be a tiny library, but through the dedication of the team lead Adam Hopkins, it has since grown to become one of the most popular async framework available.

As a single team of one, doing design, technology, marketing, and all the social media, video animation, of this brand, it’s my baby in every sense — but I also had to make lots of compromises in terms of fully realizing my vision of what could be. One of the regrets is that I don’t know how to write mobile apps from scratch, so while I recognize the need for it, I can’t very easily create one without hiring someone to develop it.

For many years, per the Supercell fan content policy, third-pary sites were not allowed to derive revenue other than display ads, which greatly diminished the potential to offer premium services to offset the costs. This part has now greatly changed, thankfully after I raised this issue with Supercell when they invited me to look at some new games in development in June 2023.

But not being able to monetize easily means that hiring a developer for a mobile app just doesn’t seem like a wise business decision. It’s very hard for me to justify the cost. I take zero salary from RoyaleAPI, so for me, the spend is 0. As soon as I hire a developer, that adds tremendous financial pressure to the company that doesn’t make any business sense.

There are many other aspects of the site that I plan to write about — such as the gift of being able to chat with the end users on a daily basis, and the gift of being able to chat with kids and young adults in the 16-25yo demographic.

I know that I will never have kids on my own, so this sudden availability to interact with young people has been one of the greatest gifts of all — not all of them are very pleasant, but I really appreciate the opportunity to talk to them when I want to — not because I have to.

Some of them would send me questions when they’re applying for universities, their first jobs, etc. Many of them have such talented and kind souls that I truly feel blessed that they would seek me out to ask for advice. I plan on writing more about this aspect in the future.

We all start the game as n00bs

Screenshot of my Clash Royale deck when I started playing the game. It made no sense, but it’s a good reminder that we all started playing the game as n00bs.
Screenshot of my Clash Royale deck when I started playing the game. It made no sense, but it’s a good reminder that we all started playing the game as n00bs.

I posted this to remind myself that everyone starts as a n00b. Because I look at decks so often now, I can tell if a deck would work purely through pattern recognition. And looking at this deck, I was reminded how ridiculous it is, that I would even try to play this.

Often, I see pro players commenting on new players and judging other people’s deck choices as being dumb. I wish that they would also look at the decks that they played when they were just a beginner.

It’s not really helpful to new players if all you do is tell them how n00b they are, or how “classic challenges” have no intrinsic values because they are “dumb”.

The reality is that everyone starts with something. Even the most seasoned players playing at the CRL World Finals started playing the game with a deck that didn’t make any sense.

I hope that you would appreciate how far you have come along, and to inspire the beginner players of how far you’re able to evolve, instead of giving them the criticisms they don’t deserve.

Everyone can be as good as everyone else — but they need encouragement and support from the people that surround them. Your n00b friends will be thankful for the support you have given them if you only had the humanity to care.

Your positive reactions could have inspired so many new players to continue to play the game, in such way that — guess what — new players usually mean more opportunities and incentives for Clash Royale to add new content.

Win-win — you’d be indirectly helping yourself for new exciting features in the game, just by being nice. How wonderful is that?

Image Index