GUIDE6 min readBy Xavier Eric Francois Guiter

How GAMEFREEX Leaderboards Work and Why Scores Are Checked

What a run must look like to reach a GAMEFREEX leaderboard: score caps, pace limits, offline runs within 7 days, and what the server never stores.

The short version

A score reaches a leaderboard only if you are signed in to a free account and the server accepts the run. Every run is checked against a few rules: when it was played, how fast you have been playing, and whether the score is believable for that game. A run that breaks a rule is dropped. A run that passes updates your best score for that game, and the board shows your best, not your latest.

Below are those rules with their real numbers, so you know what counts and what does not.

Why scores are checked at all

Every GAMEFREEX game runs in your browser, so the score is calculated on your device. Before the change, a signed-in player could write a score straight into the leaderboard table with a single request, and nothing stopped a made-up number. Now the boards can only be written by one function on the server, which runs each time a game ends. Players can read the boards, but they cannot write to them, and they cannot edit the totals on their own profile either.

Your best score as a guest is still kept in your browser and shown on the game page. It is never copied to the global boards, because anyone can edit what a browser stores. When you sign in, it goes the other way: the best scores saved on your account are copied down to the device.

What a run must look like

When a game ends, the run is sent with five pieces of information: the game, the score, the length of the run in seconds, the time it was played, and a random run id created on your device. The server then checks, in this order:

  • You are signed in. The run is saved on your own account and nowhere else.
  • The values make sense. The score cannot be negative, and the duration must be between 0 seconds and 24 hours.
  • The play time is plausible. It can be at most 5 minutes in the future, to allow for a device clock that is a little off, and no more than 7 days in the past.
  • It is new. If a run id arrives a second time, the copy is accepted quietly and changes nothing. A run always counts once.
  • Your pace of play. The server counts your runs played within 1 minute of this one, all games together. At 6, the next one is refused. The same goes for 240 runs within an hour.
  • Your pace of sending. At most 60 runs can arrive per minute, and at most 100 runs a day can arrive more than 2 minutes after they were played.
  • The score fits the game. Some games have their own limits, listed below. Every other game is capped at 10 million points.

Limits for specific games

A game can have three limits: a maximum score, a maximum average of points per second over the whole run, and a minimum run length for any score above zero. Two games have them today:

  • Subway Warriors: 500,000 points at most, no more than 4,000 points per second on average, and at least 30 seconds of play. The best result seen in tests against computer gangs was about 151,000, so the cap leaves plenty of room.
  • Nation Simulation: the score is the recovery index, from 0 to 100, so the cap is 100. A run must last at least 20 seconds. A script that clicked through all 40 quarters as fast as it could took 22 seconds.

These limits sit well above what a strong player reaches. They are there to stop numbers nobody could play, not to cap good runs.

Games with their own menus

Most games end on the site's game over screen, and that screen sends the run. A few games have their own menus and report each finished match themselves. In Subway Warriors, wins in the campaign, in skirmish and in the daily challenge are sent. Local versus on one screen and the tutorial never count. In Nation Simulation, only a completed ten-year term is sent: if your government falls early, that game has no score.

The rule you are most likely to meet

The limit of 6 runs within a minute is the only one a normal player can hit. In games where a run can end in a few seconds, like Block Freex or Memory Freex, restarting fast after a string of short runs can trigger it. The game plays the same, but that run is left off the board. Your other runs are not affected.

Runs played offline

A finished run is first stored on your device, then sent. With a connection, it leaves straight away. Without one, it waits, and goes out when the connection comes back or the next time you open GAMEFREEX, in batches of 20, in the order you played them. The device keeps up to 300 waiting runs; past that, the oldest one is dropped.

The pace rules use the time you played, not the time the run arrived. So 20 runs played on a train over an hour go through together, while 20 runs that claim to have been played in the same minute do not. A run that arrives more than 7 days after it was played is refused, so connect at least once a week if you play offline a lot. The offline guide covers the rest.

The run id is what makes this safe. If a send is cut halfway, the device sends the same runs again, and the server recognises the ones it already has.

What you see on screen

  • A small badge at the bottom right says how many scores are waiting to be sent, with "(offline)" added when you have no connection.
  • Once they go through, it changes to "3 scores sent to the leaderboards" (or however many there were) for a few seconds.
  • When the connection comes back, a note at the top says "Back online. Scores waiting on this device are being sent."

A run the server refuses is removed from the queue without a message. The game page may still show it as your best, because that number is saved on the device before the run is sent. The board only shows what the server accepted.

Reading the boards

The leaderboard page shows the 50 highest best scores from all games together, and each game has its own table of 50. A row shows the rank, the username, the pixel character and the best score. If you never picked a character on the pixel character page, one is drawn from your account so every row has a face. Your email address never appears on a board.

Each accepted run also adds to the total score and the number of games played on your profile. Those totals are computed by the server, not by your browser.

Getting on a board

Create a free account with a username, an email address and a password, confirm the email, and play while signed in. That is all. Playing never requires an account, but runs you finish as a guest stay on your device, including the ones you played before signing up.

If you change your mind later, the Delete Account button in Settings removes your runs and your leaderboard rows along with your profile.

What is never stored

For each accepted run the server keeps your account id, the game, the score, the duration, the time it was played, the time it arrived and the run id. Nothing else about the run is sent: no replay, no keystrokes or taps, no position. Guest scores are never uploaded, and the boards never show your email.

What the checks cannot do

The score is still calculated in your browser. The checks remove impossible values and bursts of fake runs, but a patient cheater could still send a score that looks plausible. For Subway Warriors a complete fix is possible, because its simulation is deterministic: the server could replay a match from its starting seed and its list of orders. That is not built yet.