Skip to content
Docs

Measured performance

Frames per second, load times and script time of six games in the portal, measured with and without a graphics card, with the class of machine and the conditions behind each figure.

DescribesPortal, preview release For everyone

On this page

This page has measured figures only. Each table says with which class of browser and of graphics card and under which conditions it was measured, and which file of the Green Games repository it comes from. Where there is no measurement, it says so.

How it was measured#

Both series use the same procedure (pruebas/medir.mjs), on October 13, 2026, on the portal built and served on the same machine:

  1. The page of each game is opened with the bot in control and seed 1.
  2. The time is measured from the moment the page is requested until the match is running.
  3. It is left to play for 25 seconds, or until the match ends if it ends sooner.
  4. The game player's statistics are read.
ColumnWhat it measures
Frames per secondAverage of frames drawn per second during the run.
Slow frame (p99)Milliseconds a frame takes at the 99th percentile: out of every 100 frames, 99 take that or less.
Time to playMilliseconds from the moment the page is requested until the match runs.
Room loadMilliseconds it takes for the room (the simulation of the game) to be ready.
ScriptMilliseconds of the game's script per frame, on average.
PiecesLive pieces in the scene.
ShadowsWhether the game player finished the run with shadows on.

The simulation always runs at 60 frames per second, whatever the screen draws: see Determinism. The frames per second in these tables are those of the drawing.

With a graphics card#

Source: capturas/medidas-gpu/medidas.json. A current desktop browser, with a visible window, on Windows. A high-end dedicated graphics card. Window of 1366 x 768, normal difficulty.

GameFrames per secondSlow frame (p99)Time to playRoom loadScriptPiecesShadows
Circuito Luz Verde237.84.3 ms310 ms396 ms0.048 ms79Yes
Copa de Bloques237.84.3 ms314 ms396 ms0.098 ms184Yes
Defensa del Faro237.44.3 ms322 ms471 ms0.053 ms139Yes
Isla Taller239.34.3 ms356 ms292 ms0.056 ms300Yes
Laberinto de Luces238.04.3 ms324 ms416 ms0.049 ms377Yes
Semáforo237.44.3 ms323 ms281 ms0.055 ms54Yes

On that machine, the six measured games give between 237.4 and 239.3 frames per second, with 54 to 377 pieces. The number of pieces does not move the figure in that range.

Three more runs from the same file, with emulated conditions:

ConditionGameFrames per secondSlow frame (p99)Time to playRoom loadScript
Desktop 1366 x 768, hard difficultyIsla Taller239.44.3 ms302 ms232 ms0.048 ms
Emulated phone 390 x 844 at 3x, CPU 4x slower, hardIsla Taller209.28.4 ms984 ms539 ms0.051 ms
Desktop 1366 x 768, CPU 4x slower, normalDefensa del Faro234.86.0 ms937 ms511 ms0.055 ms

With the processor slowed down four times, what changes most is the wait until you can play: from 322 to 937 ms in Defensa del Faro. On the emulated phone, whose screen is 3x, the game player ended up drawing at a scale of 1.5.

Without a graphics card#

This is the worst case: the browser draws everything with the processor.

Source: capturas/medidas-sin-gpu/medidas.json. A current desktop browser, headless, inside a Linux container. Software drawing: with no graphics card, the processor computes every frame. Window of 1366 x 768, normal difficulty.

GameFrames per secondSlow frame (p99)Time to playRoom loadScriptPiecesShadows
Circuito Luz Verde58.916.8 ms533 ms556 ms0.052 ms79Yes
Copa de Bloques51.450.0 ms573 ms539 ms0.109 ms184No
Defensa del Faro37.266.7 ms497 ms505 ms0.049 ms139No
Isla Taller36.066.8 ms624 ms629 ms0.050 ms300No
Laberinto de Luces54.849.9 ms464 ms426 ms0.049 ms377No
Semáforo59.316.8 ms555 ms488 ms0.062 ms54Yes

In four of the six games, the game player finished the run without shadows: its automatic quality setting turns them off when the drawing cannot keep up. Even so, two games stay at 36 and 37 frames per second, with slow frames of 67 ms.

The same three emulated conditions, without a graphics card:

ConditionGameFrames per secondSlow frame (p99)Time to playRoom loadScriptShadows
Desktop 1366 x 768, hard difficultyIsla Taller33.683.2 ms628 ms594 ms0.054 msNo
Emulated phone 390 x 844 at 3x, CPU 4x slower, hardIsla Taller52.766.6 ms660 ms874 ms0.057 msYes
Desktop 1366 x 768, CPU 4x slower, normalDefensa del Faro35.183.2 ms957 ms791 ms0.055 msNo

What to take away#

  • The games' script weighs almost nothing. In the 18 runs of the two files, the script spends between 0.048 and 0.109 ms per frame. The limit is 4 ms on average: the game that spends the most uses less than 3% of that cap.
  • What decides the frames per second is the drawing, not the simulation. With the same match and the same script, Isla Taller goes from 239.3 frames per second with a graphics card to 36.0 without one.
  • Loading takes fractions of a second on the same machine. Between 310 and 356 ms until you can play with a graphics card; between 464 and 624 ms without one. These figures do not include the download over the internet: the portal was served locally.

What is not measured#

  • A real phone. There is only emulation.
  • A modest desktop computer with an integrated graphics card. The two series are the extremes: a high-end dedicated card and none.
  • The launcher and the editor. The figures are from the portal in a browser. The launcher and the editor use the same game player inside the system's WebView (on Windows, Linux and macOS), and there are no measurements made with this procedure there.
  • The newest game types. The two series measure six games of the catalog, all of them third person. For 2D, isometric, first-person and split-screen games there are no figures with a graphics card yet.
  • The open world. Open Valley, the seventh game of the catalog, is not in these two series: there are no figures here for a game with cube terrain. In those games the game player shortens the draw distance if the machine cannot keep up and lengthens it again: Open world.
  • The download over the internet. The room's file weighs 4.3 MB (1.6 MB compressed with gzip), because it carries the physics engine inside. How long it takes to download depends on your connection.

The script's time limits#

The room measures how long your game's script takes in each frame and cuts it off if it goes over. The values come from packages/sdk/src/limites.ts.

LimitValueWhat happens if it is exceeded
Script time, average per frame4 ms, measured in windows of 120 framesThree windows in a row above it stop the match.
Script time in a single frame100 msThe fifth time, the match stops.
Room not responding3 sThe game player takes it as hung and closes it.
Changes emitted in one frame600, after the first framegreengames probar reports it as an exceeded limit.

A frame lasts 16.7 ms at 60 frames per second. The physics, the script and the sending of changes have to fit in that time.

All the caps for pieces, zones, lights and the rest: Limits.

What is asked of a game#

The Green Games quality checklist asks for two numbers:

RecommendationValueWhere you see it
Script time per frameLess than 1 msOn every line of greengames probar: script 0.022 ms/cuadro (max 0.71)
PiecesFewer than 600, if possibleOn the same line: 12 piezas

The six measured games meet both: the one with the most pieces in these measurements is Laberinto de Luces, with 377, and the one that spends the most script, Copa de Bloques, with 0.109 ms.

To lower the cost of your game:

  • Do not go through all the pieces on every frame. Use events (mundo.alTocar, mundo.alEntrar) and timers (reloj.cada(0.5, ...)) instead of juego.cadaCuadro for what does not change 60 times per second.
  • Decoration with "fisica": "ninguna". What nobody touches needs no collision.
  • Few dynamic pieces. The cap is 150 alive at once.
  • Update the HUD when the data changes, not on every frame.

Next#