Get the pixel ratio currently applied to the canvas backing store
- Resolves canvasPixelRatio, falling back to devicePixelRatio when it is undefined
- Game code works in css pixels so this is rarely needed, it is for sizing
render targets and viewports that must match the backing store
Set angle of camera in world space
angle number
Set position of camera in world space
pos Vector2
Set scale of camera in world space
scale number
Set how far a full camera shake turns the view, in radians
angle number
Set how much camera shake fades each second
decay number
Set how far a full camera shake moves the view, in world units
distance number
Set color to clear the canvas to before render, does not clear if alpha is 0
color Color
Set if tiles should be colorized when using canvas2d
This can be slower but results should look nearly identical to WebGL rendering
It can be enabled/disabled at any time
Optimized for performance, and will use faster method if color is white or untextured
colorTiles boolean
Set fixed size of the canvas
size Vector2
Set maximum aspect ratio of the canvas (width/height), unused if 0
aspect number
Set max size of the canvas
size Vector2
Set minimum aspect ratio of the canvas (width/height), unused if 0
aspect number
Use nearest scaling algorithm for canvas for more pixelated look
pixelated boolean
Set the canvas pixel ratio, scales the render resolution for sharper output
Pass a number for an explicit ratio, or call with no argument to track devicePixelRatio each frame.
- The canvas stays the same size on screen and everything draws the same
size, it just renders at a higher resolution so nothing looks blurry
- Game code is unaffected, it always works in css pixels
pixelRatio number optional
// render at native resolution, capped so phones don't pay for 3x
setCanvasPixelRatio(min(devicePixelRatio, 2));
Set whether the draw and debug functions draw in screen space when a call leaves screenSpace out
screenSpace boolean
Set if collisions are enabled, between objects and with tiles
enable boolean
Set if the engine only advances when engineStep is called
Set before engineInit for a test or a server; turned on in a running game it stops the loop, and turned off
again it starts the loop from real time
enable boolean optional, default true
Set if the engine runs one update per display frame with timeDelta the time it covers
Can be set before engineInit or while running; turned off it goes back to fixed updates at frameRate
enable boolean optional, default true
Set default font used for text rendering
- A family name with spaces or digits goes in quotes, as "'Press Start 2P'", or the canvas does not take it
font string
Set if axes that do not rest near center are ignored on non-standard gamepads
enable boolean
Set if the dpad input is also routed to the left analog stick
enable boolean
Set if gamepads are enabled
enable boolean
Set how many sided polygons to use when drawing circles and ellipses with WebGL
sides number
Set if WebGL rendering is enabled
enable boolean
Set how much gravity to apply to objects
newGravity Vector2
Set to disable rendering, audio, and input for servers, must be set before engineInit
headless boolean
Set the loading screen, drawn after the splash while the game loads, once that takes more than half a second
callback LoadingScreenCallback optionalDraws on mainContext given the part done, 0 to 1; undefined for none
Set size of medal display
size Vector2
Set how quickly to slide on/off medals in seconds
time number
Set how long to show medals for in seconds
time number
Set to stop medals from being unlockable
preventUnlock boolean
Set the fraction of angular velocity objects keep each frame, 1 keeps all of it, 0 stops at once
damp number
Set the fraction of velocity objects keep each frame, 1 keeps all of it, 0 stops at once
damp number
Set the fraction of sliding speed objects keep each frame on the ground, 1 is no friction, 0 stops at once
friction number
Set default object mass for collision calculations
mass number
Set how much to bounce when a collision occurs
restitution number
Set max speed to avoid fast objects missing collisions
speed number
Set the scale for the emit rate of particles, 0 disables particle emitters
scale number
Set if the LittleJS splash screen should be shown on startup, must be set before engineInit
show boolean
Set default range where sound no longer plays
range number
Set default range percent to start tapering off sound
taper number
Set if audio is enabled, false turns all sound off; a setting for before sounds are made, since a sound made
while it is off has nothing to play and one already playing goes on; to mute while the game runs, setSoundVolume(0)
enable boolean
Set if sound plays with an iPhone's silent switch on, as media does, which also pauses the player's own music
ignore boolean
Set if all sound pauses while the page is hidden
pause boolean
Set volume scale to apply to all sound, music and speech
volume number
Set default padding pixels around each frame packed by loadSprite
padding number
Set width and height in pixels of texture sheets created by loadSprite
size number
Default amount of pixels smaller to draw tiles to prevent neighbor bleeding
bleed number
Default padding pixels around tiles
padding number
Set default size of tiles in pixels
size Vector2
Disables texture filtering for crisper pixel art
- Leave true for pixel art; set false for smooth/high-resolution art
- Set it before engineInit, a texture already loaded keeps the filtering it was made with
pixelated boolean
Set scale applied to engine time
- 0 freezes the game like a pause, gameUpdatePost and input still run so the game can set it back
- Above 1 the fixed step runs that many updates each frame, so a large scale costs as many updates
scale number0 or more
Set transparency of touch gamepad overlay
alpha number
Set if touch gamepad should be analog stick or 8 way dpad
analog boolean
Set how long to display the touch gamepad on screen in seconds, set to 0 to always display
time number
Set if touch gamepad should appear on mobile devices
enable boolean
Set if touch gamepad directional controls should float to where you press
floating boolean
Set if the touch gamepad should have a left analog stick (or dpad)
enable boolean
Set if touches outside the gamepad controls should still drive mouse/touch input
passthrough boolean
Set if the touch gamepad right side is an analog stick (or dpad) instead of face buttons
rightStick boolean
Set size of virtual gamepad for touch devices in viewport CSS pixels
size number
Set duration in ms to vibrate when a touch gamepad face or start button is pressed (0 disables)
ms number
Set if a pinch of two fingers turns the mouse wheel
enable boolean
Set to allow vibration hardware if it exists
enable boolean
Rotation angle of camera in world space
Position of camera in world space
Scale of camera in world space
How far a full camera shake turns the view, in radians, see cameraShake
How much camera shake fades each second, 1 takes a full shake to nothing in a second, see cameraShake
How far a full camera shake moves the view, in world units, see cameraShake
Color to clear the canvas to before render, does not clear if alpha is 0
Enable applying color to tiles when using canvas2d
- This is slower but should be the same as WebGL rendering
Fixed size of the canvas in css pixels, if enabled canvas size never changes
- canvasPixelRatio still applies, it only scales the backing store
Maximum aspect ratio of the canvas (width/height), unused if 0
Can be used with canvasMinAspect to limit aspect ratio
The max size of the canvas in css pixels, centered if window is larger
- Not affected by canvasPixelRatio, the backing store may be larger than this
Minimum aspect ratio of the canvas (width/height), unused if 0
Can be used with canvasMaxAspect to limit aspect ratio
Use nearest canvas scaling for more pixelated look
- If enabled sets css image-rendering:pixelated
Scale factor applied to the canvas resolution for sharper rendering
Pass 1 for no scaling, a number for an explicit ratio, or undefined to track devicePixelRatio each frame.
- Only the backing store scales, so this changes sharpness and nothing else
- mainCanvasSize, cameraScale, mousePos and screen space stay in css pixels,
so the same code draws the same size at any ratio
- Pixel art usually looks best left at 1 or set to whole numbers,
a fractional ratio samples texels unevenly
Draw in screen space by default: what the screenSpace parameter of the draw and debug functions defaults to, so a
heads up display, or a 3D game that only draws 2D on the screen, can turn it on and leave the flag out
- The engine says its own space when it draws, so objects, tile layers and particles stay in world space, but a
game's own draws follow it, a render() override included: turn it on around the hud, or pass false there
- Sizes and widths keep their defaults, which are world sized, so pass them in pixels
- drawText has no screenSpace and stays in world space, drawTextScreen is the one for the screen
Enable physics solver for collisions, between objects and with tiles
Disables the automatic requestAnimationFrame loop so the engine only
advances when engineStep is called, for tests and frame-stepping tools
Run one update per display frame with timeDelta the time it covers, in place of fixed updates at frameRate
- Per-frame values are not scaled: velocity, gravity, damping and particle speeds act once per update, so a
game that turns this on scales its own movement by timeDelta
- Values in seconds follow real time as they are: time, timers, particle emit rate and life, animation, Box2D
Default font used for text rendering
If true, axes that do not rest near center are ignored on gamepads without
standard mapping. Steering wheels and flight sticks report pedal and throttle
axes that rest at full deflection, which otherwise reads as a stick held down.
If true, the dpad input is also routed to the left analog stick (for better accessibility)
Should gamepads be allowed
How many sided poly to use when drawing circles and ellipses with WebGL
Enable WebGL accelerated rendering
How much gravity to apply to objects, negative Y is down, in world units per frame per frame
Disables all rendering, audio, and input for servers, must be set before engineInit
The loading screen, drawn after the splash while the images, gameInit and what they load are loading, once that
takes more than half a second: a function given the part done, 0 to 1, or undefined for none, which leaves the
screen blank; the default says Loading over a bar
How quickly to slide on/off medals in seconds
How long to show medals for in seconds
Set to stop medals from being unlockable (like if cheats are enabled)
Fraction of angular velocity objects keep each frame, 1 keeps all of it, 0 stops at once
Fraction of velocity objects keep each frame, 1 keeps all of it, 0 stops at once
Fraction of sliding speed objects keep each frame on the ground, 1 is no friction, 0 stops at once
- The more slippery of an object and its ground is used
Default object mass for collision calculations (how heavy objects are)
How much to bounce when a collision occurs (0-1)
Clamp max speed to avoid fast objects missing collisions, in world units per frame on each axis
Scales emit rate of particles, useful for low graphics mode (0 disables particle emitters)
Enable to show the LittleJS splash screen on startup, must be set before engineInit
Default range where sound no longer plays
Default range percent to start tapering off sound (0-1)
All audio code can be disabled and removed from build
Play sound with an iPhone's silent switch on, as media does; off by default, so the switch mutes the game as it
does a ringtone, and the player's own music keeps playing beside it; Safari 16.4 and up, elsewhere it does nothing
Pause all sound while the page is hidden, and pick up where it was when it shows again
- A hidden page stops the game, so without this a looping sound plays on over a frozen game
- Turn it off to keep music playing in a background tab
Volume scale to apply to all sound, music and speech
Use setSoundVolume to also update the audio master gain immediately
Default padding pixels around each frame packed by loadSprite
Width and height in pixels of texture sheets created by loadSprite
Default amount of pixels smaller to draw tiles to prevent neighbor bleeding
Default padding pixels around tiles
Default size of tiles in pixels
Disables texture filtering for crisper pixel art
- Leave true for pixel art so sprites stay sharp when scaled (uses NEAREST filtering)
- Set false for smooth/high-resolution art to enable bilinear filtering and mipmaps; those textures upload
premultiplied, so filtering does not pull dark from see through texels into the edges
Scale applied to engine time, can be used for slow motion or fast forward
- 1 is normal speed, 2 is double speed, 0.5 is half speed
- 0 freezes the game like a pause without setting the paused flag, gameUpdatePost and input still run
- Should be >= 0; stacks multiplicatively with the debug +/- shortcut
Transparency of touch gamepad overlay
True if touch gamepad should be analog stick or false to use if 8 way dpad
How long to display the touch gamepad on screen in seconds, set to 0 to always display
True if touch gamepad should appear on mobile devices
- Supports left analog stick, 4 face buttons and start button (button 9)
- setTouchGamepadRightStick(true) for a right analog stick in place of the face buttons
- Analog stick buttons 10 and 11 are also activated when virtual sticks are touched
- Rendered as a full-viewport HTML/SVG overlay, so controls may sit outside the game canvas
- It is gamepad 0 once touched; a real gamepad being used takes over and hides it until the screen is touched again
True if touch gamepad directional controls should float to where you press
- Only affects analog sticks and dpads, not face buttons
- Directional controls re-anchor to where you press within the bottom ~60% of their screen half; the top ~40% passes through to the game
- The right side floats only when it acts as the right analog stick (touchGamepadRightStick is set)
- A center button (touchGamepadCenterButtonSize) still works since it ignores touches near the sticks
True if the touch gamepad should have a left analog stick (or dpad)
- When false, the left side is face buttons (touchGamepadLeftButtonCount) or nothing
True if touches outside the gamepad controls should still drive mouse/touch input
- When false (the default), enabling the touch gamepad suppresses touch-to-mouse input entirely
- Set true to also pass touches outside the controls through to the game as mouse/touch input
- Touches on the gamepad controls never drive the mouse regardless of this setting
True if the touch gamepad right side should be an analog stick (or dpad) instead of face buttons
- When set, touchGamepadButtonCount is ignored and the right side is a stick
- Uses an analog stick when touchGamepadAnalog is true, otherwise an 8 way dpad
Size of virtual gamepad for touch devices in viewport CSS pixels
Duration in ms to vibrate when a touch gamepad face button or start button is pressed
- Set to 0 to disable, also requires vibrateEnable and hardware support (ignored on iOS)
True if a pinch of two fingers turns the mouse wheel: touchPinch is added to mouseWheel, so what zooms with
the wheel zooms with a pinch, the mouse is between the two fingers, and a second finger lets go of the button
the first pressed, since a pinch is not a drag; turn it off for a game with its own use for two fingers, the
first finger stays the mouse and touchPinch can still be read
Allow vibration hardware if it exists