Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 2.08 KB

File metadata and controls

53 lines (36 loc) · 2.08 KB

F95Zone++

GreasyFork | Direct

  1. Features
  2. Math

Features

  • Popularity based game card highlighting (Math)
  • Tag based highlighting (WIP 🚧)

The underlying math

In order to score a game and it's popularity, we set some weights for the 3 variables we take into consideration: views, likes and rating. These are used to scale the overall score depending on the user preference, i.e. if the user prefers games with higher ratings and does not care for likes, these variables can be modified to suggest those types of games.

The score is calculated using the following formula

$$views_{w} = log_{10}(views + 1) \cdot views_weight$$ $$likes_{w} = log_{10}(likes + 1) \cdot likes_weight$$ $$rating_{w} = rating \cdot rating_weight$$

$$base_score = views_{w}+likes_{w}+rating_{w}$$ This usually yields a score within the boundry of [0, 35) but on top of this a modifier is applied for specific situations. We get a rating for engagement (likes per view), clickbait penalty (low rating per views), and a final community loved boost.

$$modifiers = engagement = {likes \over views} \Rightarrow 3\pm1$$

flowchart LR
    A[Views] -->|Over 20000| C
    B[Rating] -->|Under 3| C{modifiers - 5}
Loading
flowchart LR
    A[Rating] -->|Over 4.5| C
    B[Likes] -->|Over 50| C{modifiers + 2}
Loading

$$total_score = base_score + modifiers$$

The final score is compressed into 5 different categories with the following conversion table

Score Classifier Name
>= 27 4 High
>= 25 3 Medium
>= 15 2 Low
>= 9 1 Bad
<= 8 0 New

As you can see, a score of 8 or lower is given the name of New since those games usually tend to lack enough community engagement to make a fair assumption. Getting a score this low is usually because of 0 reviews or 0 likes.