Skip to content
Docs

Current limits

Every limit of format 1: package sizes, pieces per scene, script time per frame, interface, sound and saving, each with its key and its value.

DescribesFormato 1, API 1 For those who write code This page is generated from the SDK sources.

On this page

The validator applies these limits to the package and the room applies them while the game runs. A game over a package limit cannot be packaged; one that goes over a room limit while running fails in greengames probar.

Table of limits#

LimitValueKeyDetail
.ggx file5 MBpaqueteBytesMaximum size of the .ggx file (compressed), in bytes.
Uncompressed package20 MBpaqueteDescomprimidoBytesMaximum size of the uncompressed package (JSON), in bytes.
Bundled script512 KBscriptBytesMaximum size of the bundled script, in bytes.
One resource2 MBrecursoBytesMaximum size of one resource, in bytes.
Scenes16escenas
Pieces declared per scene2000piezasPorEscena
Pieces alive at once2500piezasVivasPieces alive at once (declared plus created by script).
Live dynamic pieces150piezasDinamicas
Zones per scene200zonasPorEscena
Spawn points per scene64aparicionesPorEscena
Lights per scene8lucesPorEscena
Coordinatesfrom -2000 to 2000coordenada
Size of a piecefrom 0.05 to 500tamanoMinimo, tamanoMaximo
Players16jugadores
Script time, average per frame4 ms (windows of 120 frames; three in a row stop the match)scriptMsPromedioMaximum average script milliseconds per frame, measured over windows of 120 frames.
Script time in one frame100 ms (five times stops the match)scriptMsCuadroA single frame cannot spend more than this on scripts, in milliseconds.
Unresponsive room3 s (the player closes it)bloqueoMsWith no sign of life from the room for this long, in milliseconds, the player treats it as hung and closes it.
Changes emitted in one frame600 (after the first frame)eventosPorCuadroReplicated changes (pieces, interface, sounds) the room may emit in one frame.
Active timers500temporizadores
HUD items16hudHUD items visible per player.
Interface text240 characterstextoInterfazMaximum length of any interface text.
Options in a menu8opcionesMenu
Scoreboard rows16filasMarcador
Sounds per second30sonidosPorSegundo
Notes per sequence128notasPorSecuencia
Saved progress64 KBprogresoBytesBytes of saved progress per game and player (JSON).
Score tables8, with 10 entries eachtablasPuntajes, entradasPorTabla
Tags per piece16etiquetasPorPieza
Bot script steps500pasosBot
Live actors64actoresActors (script characters) alive at once.
Labels in the world64rotulosLabels and bars in the world, per player.
Live zones (declared plus created)300zonasVivas
Live lights8lucesVivas
Sprites per game128, of up to 64 x 64 pixels and 64 frameslaminas, laminaLado, cuadrosPorLaminaSprites per package and the maximum size of each one.
Live pieces with the lamina shape400piezasLamina
Maps per scene8, of up to 8 layers and 512 x 512 cellsmapasPorEscena, capasPorMapa, mapaLadoTile maps per scene, layers per map and cells per side.
Tiles per scene200 000celdasPorEscenaOccupied (non-empty) cells per scene, adding up every map.
Cube terrain: block types, biomes and structures per scene200, 24 and 16bloquesDeTerreno, biomasDeTerreno, estructurasDeTerreno
Terrain: height of the world and limit on X and Z64 blocks; from 64 to 2000
Terrain: draw distancefrom 2 to 12 chunks of 16 blocksterrenoDistanciaMaximum draw distance, in chunks.
Terrain: changed blocks remembered at a time60 000terrenoCambiosBlocks changed from the generated world that the room remembers (and saves) at a time.
Terrain: cells per call to llenar4096terrenoLlenarBlocks a single call to terreno.llenar can change.
Terrain: saved changes320 KB (apart from progress)terrenoGuardadoBytesBytes of the terrain changes saved per game (apart from progresoBytes).
Terrain: chunks in memory in the room400terrenoTrozosSalaTerrain chunks with collision that the room keeps loaded.
Hotbar slots9ranuras
Models per game and size of a .glb (1.2)64, of 2 MBmodelos, modeloBytesModels per package and maximum size of a .glb, in bytes.
Triangles per model and per scene (adding up every piece with a model)20,000 and 150,000triangulosPorModelo, triangulosPorEscena
Bones per skeleton, clips per model and length of a clip64, 32 and 30 shuesosPorModelo, clipsPorModelo, clipSegundosMaximum length of a clip, in seconds.
Textures inside a model and maximum side of any image8, of 1024 pixelstexturasPorModelo, texturaLado
Live pieces with shape modelo300piezasModelo
Loose textures per game64, of 1 MBtexturas, texturaBytesLoose textures per package and maximum size of each, in bytes.
Recorded sounds per game32, of 1 MBsonidos, sonidoBytesRecorded sounds per package and maximum size of each, in bytes.
Models, textures and sounds of a game, in total12 MBbinariosBytesModels, textures and sounds of a package, added up (bytes before encoding).
Texts per language500textosPorIdioma
Skeletons per model4esqueletosPorModelo
Nodes per model256nodosPorModelo
Primitives per model32primitivasPorModelo
Materials per model16materialesPorModelo
Points of a hull collision32puntosDeEnvolvente
Minimum side of a model’s box0.001modeloLadoMinimoA model’s box cannot measure less than this on its largest side.
Credits per game200creditos

Seeing them from the CLI#

greengames limites prints each key with its value, in the units of the code: sizes in bytes and times in milliseconds. With --json it writes the whole object.

sh
greengames limites
greengames limites --json

The "Key" column is the name of the limit in that output and in LIMITES from @greengames/sdk.

Next#