Settings

LittleJS Engine Settings

  • All settings for the engine are here

Members

(static) cameraAngle :number

Rotation angle of camera in world space

Type:
  • number

(static) cameraPos :Vector2

Position of camera in world space

Type:
  • Vector2
Default Value
  • Vector2()

(static) cameraScale :number

Scale of camera in world space

Type:
  • number
Default Value
  • 32

(static) canvasClearColor :Color

Color to clear the canvas to before render, does not clear if alpha is 0

Type:
  • Color

(static) canvasColorTiles :boolean

Enable applying color to tiles when using canvas2d

  • This is slower but should be the same as WebGL rendering
Type:
  • boolean
Default Value
  • true

(static) canvasFixedSize :Vector2

Fixed size of the canvas in css pixels, if enabled canvas size never changes

  • canvasPixelRatio still applies, it only scales the backing store
Type:
  • Vector2
Default Value
  • Vector2()

(static) canvasMaxAspect :number

Maximum aspect ratio of the canvas (width/height), unused if 0 Can be used with canvasMinAspect to limit aspect ratio

Type:
  • number

(static) canvasMaxSize :Vector2

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
Type:
  • Vector2
Default Value
  • Vector2(3840,2160)

(static) canvasMinAspect :number

Minimum aspect ratio of the canvas (width/height), unused if 0 Can be used with canvasMaxAspect to limit aspect ratio

Type:
  • number

(static) canvasPixelRatio :number|undefined

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
Type:
  • number | undefined
Default Value
  • 1

(static) canvasPixelated :boolean

Use nearest canvas scaling for more pixelated look

  • If enabled sets css image-rendering:pixelated
Type:
  • boolean

(static) drawScreenSpace :boolean

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
Type:
  • boolean

(static) enablePhysicsSolver :boolean

Enable physics solver for collisions, between objects and with tiles

Type:
  • boolean
Default Value
  • true

(static) engineManualStep :boolean

Disables the automatic requestAnimationFrame loop so the engine only advances when engineStep is called, for tests and frame-stepping tools

Type:
  • boolean

(static) engineVariableStep :boolean

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
Type:
  • boolean

(static) fontDefault :string

Default font used for text rendering

Type:
  • string
Default Value
  • arial

(static) gamepadAxisFilterEnable :boolean

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.

Type:
  • boolean
Default Value
  • true

(static) gamepadDirectionEmulateStick :boolean

If true, the dpad input is also routed to the left analog stick (for better accessibility)

Type:
  • boolean
Default Value
  • true

(static) gamepadsEnable :boolean

Should gamepads be allowed

Type:
  • boolean
Default Value
  • true

(static) glCircleSides :number

How many sided poly to use when drawing circles and ellipses with WebGL

Type:
  • number
Default Value
  • 32

(static) glEnable :boolean

Enable WebGL accelerated rendering

Type:
  • boolean
Default Value
  • true

(static) gravity :Vector2

How much gravity to apply to objects, negative Y is down, in world units per frame per frame

Type:
  • Vector2

(static) headlessMode :boolean

Disables all rendering, audio, and input for servers, must be set before engineInit

Type:
  • boolean

(static) inputWASDEmulateDirection :boolean

If true the WASD keys are also routed to the direction keys (for better accessibility)

  • Turn it off for a game with two players on one keyboard, one on WASD and one on the arrows
Type:
  • boolean
Default Value
  • true

(static) loadingScreen :LoadingScreenCallback|undefined

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

Type:
  • LoadingScreenCallback | undefined

(static) medalDisplaySize :Vector2

Size of medal display

Type:
  • Vector2
Default Value
  • Vector2(640,80)

(static) medalDisplaySlideTime :number

How quickly to slide on/off medals in seconds

Type:
  • number
Default Value
  • 0.5

(static) medalDisplayTime :number

How long to show medals for in seconds

Type:
  • number
Default Value
  • 5

(static) medalsPreventUnlock :boolean

Set to stop medals from being unlockable (like if cheats are enabled)

Type:
  • boolean

(static) objectDefaultAngleDamping :number

Fraction of angular velocity objects keep each frame, 1 keeps all of it, 0 stops at once

Type:
  • number
Default Value
  • 1

(static) objectDefaultDamping :number

Fraction of velocity objects keep each frame, 1 keeps all of it, 0 stops at once

Type:
  • number
Default Value
  • 1

(static) objectDefaultFriction :number

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
Type:
  • number
Default Value
  • 0.8

(static) objectDefaultMass :number

Default object mass for collision calculations (how heavy objects are)

Type:
  • number
Default Value
  • 1

(static) objectDefaultRestitution :number

How much to bounce when a collision occurs (0-1)

Type:
  • number

(static) objectMaxSpeed :number

Clamp max speed to avoid fast objects missing collisions, in world units per frame on each axis

Type:
  • number
Default Value
  • 1

(static) particleEmitRateScale :number

Scales emit rate of particles, useful for low graphics mode (0 disables particle emitters)

Type:
  • number
Default Value
  • 1

(static) showSplashScreen :boolean

Enable to show the LittleJS splash screen on startup, must be set before engineInit

Type:
  • boolean

(static) soundDefaultRange :number

Default range where sound no longer plays

Type:
  • number
Default Value
  • 40

(static) soundDefaultTaper :number

Default range percent to start tapering off sound (0-1)

Type:
  • number
Default Value
  • 0.7

(static) soundEnable :boolean

All audio code can be disabled and removed from build

Type:
  • boolean
Default Value
  • true

(static) soundPauseWhenHidden :boolean

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
Type:
  • boolean
Default Value
  • true

(static) soundVolume :number

Volume scale to apply to all sound, music and speech Use setSoundVolume to also update the audio master gain immediately

Type:
  • number
Default Value
  • 0.3

(static) textureSheetPadding :number

Default padding pixels around each frame packed by loadSprite

Type:
  • number
Default Value
  • 1

(static) textureSheetSize :number

Width and height in pixels of texture sheets created by loadSprite

Type:
  • number
Default Value
  • 2048

(static) tileDefaultBleed :number

Default amount of pixels smaller to draw tiles to prevent neighbor bleeding

Type:
  • number

(static) tileDefaultPadding :number

Default padding pixels around tiles

Type:
  • number

(static) tileDefaultSize :Vector2

Default size of tiles in pixels

Type:
  • Vector2
Default Value
  • Vector2(16,16)

(static) tilesPixelated :boolean

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
Type:
  • boolean
Default Value
  • true

(static) timeScale :number

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
Type:
  • number
Default Value
  • 1

(static) touchGamepadAlpha :number

Transparency of touch gamepad overlay

Type:
  • number
Default Value
  • 0.3

(static) touchGamepadAnalog :boolean

True if touch gamepad should be analog stick or false to use if 8 way dpad

Type:
  • boolean
Default Value
  • true

(static) touchGamepadButtonCount :number

Number of buttons on the right side of the touch gamepad (0-4), using gamepad buttons 0-3

  • A count of 1 is a single large button (the size of a stick)
  • Ignored when touchGamepadRightStick is set (the right side is a stick instead)
Type:
  • number
Default Value
  • 4

(static) touchGamepadCenterButtonSize :number

Size of center button if touch gamepad should have start button in the center

  • Prevents activating when pressed near virtual stick or face buttons
  • When the game is paused, any touch will press the button
  • Measured in viewport CSS pixels
Type:
  • number

(static) touchGamepadDisplayTime :number

How long to display the touch gamepad on screen in seconds, set to 0 to always display

Type:
  • number
Default Value
  • 3

(static) touchGamepadEnable :boolean

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
Type:
  • boolean

(static) touchGamepadFloating :boolean

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
Type:
  • boolean

(static) touchGamepadLeftButtonCount :number

Number of buttons on the left side of the touch gamepad (0-4), using gamepad buttons 4-7

  • Only used when touchGamepadLeftStick is false (otherwise the left side is a stick)
  • A count of 1 is a single large button (the size of a stick)
Type:
  • number

(static) touchGamepadLeftStick :boolean

True if the touch gamepad should have a left analog stick (or dpad)

  • When false, the left side is face buttons (touchGamepadLeftButtonCount) or nothing
Type:
  • boolean
Default Value
  • true

(static) touchGamepadPassthrough :boolean

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
Type:
  • boolean

(static) touchGamepadRightStick :boolean

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
Type:
  • boolean

(static) touchGamepadSize :number

Size of virtual gamepad for touch devices in viewport CSS pixels

Type:
  • number
Default Value
  • 100

(static) touchGamepadVibration :number

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)
Type:
  • number

(static) touchInputEnable :boolean

True if touch input is enabled for mobile devices

  • Touch events will be routed to mouse events
Type:
  • boolean
Default Value
  • true

(static) vibrateEnable :boolean

Allow vibration hardware if it exists

Type:
  • boolean
Default Value
  • true

Methods

(static) getCanvasPixelRatio() → {number}

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
Returns:
Type: 
number

(static) setCameraAngle(angle)

Set angle of camera in world space

Parameters:
NameTypeDescription
anglenumber

(static) setCameraPos(pos)

Set position of camera in world space

Parameters:
NameTypeDescription
posVector2

(static) setCameraScale(scale)

Set scale of camera in world space

Parameters:
NameTypeDescription
scalenumber

(static) setCanvasClearColor(color)

Set color to clear the canvas to before render, does not clear if alpha is 0

Parameters:
NameTypeDescription
colorColor

(static) setCanvasColorTiles(colorTiles)

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

Parameters:
NameTypeDescription
colorTilesboolean

(static) setCanvasFixedSize(size)

Set fixed size of the canvas

Parameters:
NameTypeDescription
sizeVector2

(static) setCanvasMaxAspect(aspect)

Set maximum aspect ratio of the canvas (width/height), unused if 0

Parameters:
NameTypeDescription
aspectnumber

(static) setCanvasMaxSize(size)

Set max size of the canvas

Parameters:
NameTypeDescription
sizeVector2

(static) setCanvasMinAspect(aspect)

Set minimum aspect ratio of the canvas (width/height), unused if 0

Parameters:
NameTypeDescription
aspectnumber

(static) setCanvasPixelRatio(pixelRatioopt)

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
Parameters:
NameTypeAttributesDescription
pixelRationumber<optional>
Example
// render at native resolution, capped so phones don't pay for 3x
 setCanvasPixelRatio(min(devicePixelRatio, 2));
 

(static) setCanvasPixelated(pixelated)

Use nearest scaling algorithm for canvas for more pixelated look

Parameters:
NameTypeDescription
pixelatedboolean

(static) setDrawScreenSpace(screenSpace)

Set whether the draw and debug functions draw in screen space when a call leaves screenSpace out

Parameters:
NameTypeDescription
screenSpaceboolean

(static) setEnablePhysicsSolver(enable)

Set if collisions are enabled, between objects and with tiles

Parameters:
NameTypeDescription
enableboolean

(static) setEngineManualStep(enableopt)

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

Parameters:
NameTypeAttributesDefaultDescription
enableboolean<optional>
true

(static) setEngineVariableStep(enableopt)

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

Parameters:
NameTypeAttributesDefaultDescription
enableboolean<optional>
true

(static) setFontDefault(font)

Set default font used for text rendering

Parameters:
NameTypeDescription
fontstring

(static) setGLCircleSides(sides)

Set how many sided polygons to use when drawing circles and ellipses with WebGL

Parameters:
NameTypeDescription
sidesnumber

(static) setGLEnable(enable)

Set if WebGL rendering is enabled

Parameters:
NameTypeDescription
enableboolean

(static) setGamepadAxisFilterEnable(enable)

Set if axes that do not rest near center are ignored on non-standard gamepads

Parameters:
NameTypeDescription
enableboolean

(static) setGamepadDirectionEmulateStick(enable)

Set if the dpad input is also routed to the left analog stick

Parameters:
NameTypeDescription
enableboolean

(static) setGamepadsEnable(enable)

Set if gamepads are enabled

Parameters:
NameTypeDescription
enableboolean

(static) setGravity(newGravity)

Set how much gravity to apply to objects

Parameters:
NameTypeDescription
newGravityVector2

(static) setHeadlessMode(headless)

Set to disable rendering, audio, and input for servers, must be set before engineInit

Parameters:
NameTypeDescription
headlessboolean

(static) setInputWASDEmulateDirection(enable)

Set if the WASD keys are also routed to the direction keys

Parameters:
NameTypeDescription
enableboolean

(static) setLoadingScreen(callbackopt)

Set the loading screen, drawn after the splash while the game loads, once that takes more than half a second

Parameters:
NameTypeAttributesDescription
callbackLoadingScreenCallback<optional>

Draws on mainContext given the part done, 0 to 1; undefined for none

(static) setMedalDisplaySize(size)

Set size of medal display

Parameters:
NameTypeDescription
sizeVector2

(static) setMedalDisplaySlideTime(time)

Set how quickly to slide on/off medals in seconds

Parameters:
NameTypeDescription
timenumber

(static) setMedalDisplayTime(time)

Set how long to show medals for in seconds

Parameters:
NameTypeDescription
timenumber

(static) setMedalsPreventUnlock(preventUnlock)

Set to stop medals from being unlockable

Parameters:
NameTypeDescription
preventUnlockboolean

(static) setObjectDefaultAngleDamping(damp)

Set the fraction of angular velocity objects keep each frame, 1 keeps all of it, 0 stops at once

Parameters:
NameTypeDescription
dampnumber

(static) setObjectDefaultDamping(damp)

Set the fraction of velocity objects keep each frame, 1 keeps all of it, 0 stops at once

Parameters:
NameTypeDescription
dampnumber

(static) setObjectDefaultFriction(friction)

Set the fraction of sliding speed objects keep each frame on the ground, 1 is no friction, 0 stops at once

Parameters:
NameTypeDescription
frictionnumber

(static) setObjectDefaultMass(mass)

Set default object mass for collision calculations

Parameters:
NameTypeDescription
massnumber

(static) setObjectDefaultRestitution(restitution)

Set how much to bounce when a collision occurs

Parameters:
NameTypeDescription
restitutionnumber

(static) setObjectMaxSpeed(speed)

Set max speed to avoid fast objects missing collisions

Parameters:
NameTypeDescription
speednumber

(static) setParticleEmitRateScale(scale)

Set the scale for the emit rate of particles, 0 disables particle emitters

Parameters:
NameTypeDescription
scalenumber

(static) setShowSplashScreen(show)

Set if the LittleJS splash screen should be shown on startup, must be set before engineInit

Parameters:
NameTypeDescription
showboolean

(static) setSoundDefaultRange(range)

Set default range where sound no longer plays

Parameters:
NameTypeDescription
rangenumber

(static) setSoundDefaultTaper(taper)

Set default range percent to start tapering off sound

Parameters:
NameTypeDescription
tapernumber

(static) setSoundEnable(enable)

Set if audio is enabled, false turns all sound off

Parameters:
NameTypeDescription
enableboolean

(static) setSoundPauseWhenHidden(pause)

Set if all sound pauses while the page is hidden

Parameters:
NameTypeDescription
pauseboolean

(static) setSoundVolume(volume)

Set volume scale to apply to all sound, music and speech

Parameters:
NameTypeDescription
volumenumber

(static) setTextureSheetPadding(padding)

Set default padding pixels around each frame packed by loadSprite

Parameters:
NameTypeDescription
paddingnumber

(static) setTextureSheetSize(size)

Set width and height in pixels of texture sheets created by loadSprite

Parameters:
NameTypeDescription
sizenumber

(static) setTileDefaultBleed(bleed)

Default amount of pixels smaller to draw tiles to prevent neighbor bleeding

Parameters:
NameTypeDescription
bleednumber

(static) setTileDefaultPadding(padding)

Default padding pixels around tiles

Parameters:
NameTypeDescription
paddingnumber

(static) setTileDefaultSize(size)

Set default size of tiles in pixels

Parameters:
NameTypeDescription
sizeVector2

(static) setTilesPixelated(pixelated)

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
Parameters:
NameTypeDescription
pixelatedboolean

(static) setTimeScale(scale)

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
Parameters:
NameTypeDescription
scalenumber

0 or more

(static) setTouchGamepadAlpha(alpha)

Set transparency of touch gamepad overlay

Parameters:
NameTypeDescription
alphanumber

(static) setTouchGamepadAnalog(analog)

Set if touch gamepad should be analog stick or 8 way dpad

Parameters:
NameTypeDescription
analogboolean

(static) setTouchGamepadButtonCount(count)

Set number of buttons on the right side of the touch gamepad (0-4, gamepad buttons 0-3)

Parameters:
NameTypeDescription
countnumber

(static) setTouchGamepadCenterButtonSize(size)

Set if touch gamepad should have start button in the center

  • Set size to enable the center button
  • When the game is paused, any touch will press the button
Parameters:
NameTypeDescription
sizenumber

(static) setTouchGamepadDisplayTime(time)

Set how long to display the touch gamepad on screen in seconds, set to 0 to always display

Parameters:
NameTypeDescription
timenumber

(static) setTouchGamepadEnable(enable)

Set if touch gamepad should appear on mobile devices

Parameters:
NameTypeDescription
enableboolean

(static) setTouchGamepadFloating(floating)

Set if touch gamepad directional controls should float to where you press

Parameters:
NameTypeDescription
floatingboolean

(static) setTouchGamepadLeftButtonCount(count)

Set number of buttons on the left side of the touch gamepad (0-4, gamepad buttons 4-7)

  • Only used when touchGamepadLeftStick is false
Parameters:
NameTypeDescription
countnumber

(static) setTouchGamepadLeftStick(enable)

Set if the touch gamepad should have a left analog stick (or dpad)

Parameters:
NameTypeDescription
enableboolean

(static) setTouchGamepadPassthrough(passthrough)

Set if touches outside the gamepad controls should still drive mouse/touch input

Parameters:
NameTypeDescription
passthroughboolean

(static) setTouchGamepadRightStick(rightStick)

Set if the touch gamepad right side is an analog stick (or dpad) instead of face buttons

Parameters:
NameTypeDescription
rightStickboolean

(static) setTouchGamepadSize(size)

Set size of virtual gamepad for touch devices in viewport CSS pixels

Parameters:
NameTypeDescription
sizenumber

(static) setTouchGamepadVibration(ms)

Set duration in ms to vibrate when a touch gamepad face or start button is pressed (0 disables)

Parameters:
NameTypeDescription
msnumber

(static) setTouchInputEnable(enable)

Set if touch input is allowed

Parameters:
NameTypeDescription
enableboolean

(static) setVibrateEnable(enable)

Set to allow vibration hardware if it exists

Parameters:
NameTypeDescription
enableboolean