How we score game genres before writing any code
Choosing what to build is the highest-leverage decision a small studio makes. It is also, nearly always, made on instinct. We replaced instinct with a scoring model, and then had to add three rules that override the score, because the score kept being wrong in the same three ways and we got tired of arguing with it.
The instinct problem
Ask anyone making small games why they picked a genre. The honest answer is usually some combination of “it looks fun” and “I saw one do well”. Both are real signals. Both are badly biased. “I saw one do well” is a sample of one, drawn from the games that were visible enough to be seen, and by construction the games visible enough to be seen are the ones with marketing money behind them. What that signal really reports is whatever was loudest this month.
The specific failure I wanted to avoid has a shape: building something technically fine into a market somebody had already bought. A solo developer cannot win a spending war. So the question is not “is this genre popular”. It is “is this genre popular somewhere I can actually be seen without paying for it”. Those two questions give opposite answers more often than you would guess, and the second one is the one that matters.
I will admit the whole exercise feels slightly absurd. We are putting single-digit numbers on creative work. The alternative was worse, though, which was arguing from vibes and then discovering weeks later that the vibes were about a category that had filled up while we were still talking.
The core idea
The framing we use is a gap: a mechanic already proven on one platform, against supply that has not saturated on another. Demand is expensive to estimate from the outside. Supply is not. So we spend our effort on the half we can actually observe.
Concretely, we track which casual mechanics hold positions on the Chinese mini-game charts, where WeChat and Douyin publish enough ranking data to see it, and then ask how crowded the equivalent category is on the platforms we could actually ship to: TikTok Minis, HTML5 portals, mobile app stores, and Steam. The interesting cases are where something is demonstrably popular in one place and thinly supplied in another. There are fewer of those than I would like.
Five dimensions
Each genre gets five scores from 1 to 10. They are subjective. Each one has a defined basis anyway, so that a number can be argued with later instead of merely defended.
| Dimension | Meaning | Basis for the number |
|---|---|---|
| V: Validated | Strength of the genre on the domestic charts | A product permanently in the top ten is 9–10; mid-table is 5–7; not mainstream domestically is under 4 |
| S: Supply crowding | How crowded it is where we would ship | Higher means more crowded. A publisher in the top ten of ad-spend rankings means 8–10 |
| D: Difficulty | Cost for one person to ship a version | Real-time multiplayer or enormous content volume is 8–10 |
| L: Localisation sensitivity | How much it depends on language or culture | Jokes built on specific folklore is 9; pure physics is 1 |
| R | Regulatory risk in the domestic market | Horror, or anything adjacent to gambling, is 8+ |
The composite is a weighted sum of the four "good" dimensions and the inverse of the one "bad" dimension, which we later audited and found to behave like three separate scores “good” dimensions and the inverse of the one “bad” dimension:
O = 0.32·V + 0.28·(10−S) + 0.20·(10−D) + 0.12·(10−L) + 0.08·(10−R)
We want to be clear about what this is. The weights are our judgement. They are not fitted to anything. The output is an ordering aid, not a revenue forecast, and anyone copying the formula should re-derive the weights for their own situation. Please do not treat the second decimal place as information. I have watched people do exactly that with models far better than this one.
Three rules that beat the score
This is the part that matters. It exists because the score kept making the same three mistakes, and at some point it was easier to write down three rules than to keep re-litigating them every time a number looked appealing.
1. If D is 8 or higher, stop
Party and social-competition games score well on our model. They are heavily validated domestically and not especially crowded overseas. They also require real-time netcode and an endless supply of levels. For one person, that is not a project. That is a company. The genre scored in our top six and we rejected it outright, because no amount of attractiveness survives “this cannot be built by the people building it”.
Survival strategy games fail the same test from both directions at once: maximum domestic validation, maximum overseas crowding, and a difficulty score of 9. Attractive numbers. Impossible project. I still find them the most tempting thing on the whole list, which is precisely why the rule is written down instead of left to my judgement.
2. If S is 8 or higher, do not enter
A high supply score means the publishing machines have arrived, and the evidence for this is unusually concrete because ad libraries expose it. In merge-tower-defence we found a single title running 8,493 distinct ad creatives in thirty days, alongside a major studio reporting 42 percent month-on-month revenue growth in the category.
That is not a market with room in it. An individual entering there is not competing on quality. They are competing on cost per install against a budget they cannot see, and they lose slowly and confusingly, because the feedback loop on a losing ad campaign is far slower than the feedback loop on a bad game. The genre is proven. That is exactly why it is gone.
The same rule eliminates running games, where an established IP holds over a billion sessions on a single portal, and merge-with-story, where one title held the top of the overseas revenue chart for eight consecutive months.
3. A gap is not automatically an opportunity
The most common way to misread a scan like this is to notice that something is missing and conclude that you have found room. Most empty cells are empty for a reason. The reason decides everything.
- Missing because of a capability, information or compliance barrier. That is a genuine gap. Light horror is nearly absent from Chinese platforms because the themes are hard to clear, which means the overseas market is thin for a reason that does not apply to us. Same category. Completely different read.
- Missing because demand does not exist, or the platform does not surface it. That is a false gap. Line-drawing puzzle games are essentially absent on Steam, and the reason is that Steam players do not buy that kind of thing. The empty cell is information about the platform, not an opening, and reading it as an opening is the most expensive mistake available in this method.
Always ask why the cell is empty before writing anything down. We have rejected more gaps than we have pursued, which sounds cautious and is really just arithmetic.
Checking whether the ranking is real
Any weighted sum can be made to produce any order by moving the weights, so we run the ranking under four different weight sets and compare: a balanced set, an export-prioritised set that zeroes domestic regulatory risk, a domestic-prioritised set that weights it heavily, and a volume-prioritised set that rewards speed of reproduction.
If a genre leads under all four, we treat that as a real result. If positions two to five shuffle, we treat the difference as noise and refuse to rank them against each other at all. This is the discipline that stops the model becoming a machine for rationalising whatever we already wanted to do. It is also why we do not publish fine-grained rankings of our own. A list that precise would be lying about its own resolution.
What the model cannot do
It says nothing about whether a game is good. Every dimension here describes market structure, and a perfectly chosen genre still produces a bad game if the execution is bad. It also cannot see the future: the scores are a photograph of public chart data, and the parts of that data which move fastest are the parts most likely to be stale by the time a game ships.
The data itself has a specific limitation worth stating plainly. Most public rankings in this space measure advertising volume or creative count. Not revenue. Not active users. Top of the ad-spend chart means someone is spending, not that they are earning. We use these numbers to infer crowding, which is what they actually measure, and not as a proxy for success.
Finally, the scores are ours and they are subjective. We write down the evidence behind each one so that a later reader, usually us, months later, having forgotten everything, can see whether a number was measured or merely asserted. When we cannot find current data for a category, the rule is to say so and leave the score alone rather than let it drift on assumption. That rule exists because I have drifted a score on assumption before, and it moved in the direction I secretly wanted it to move.