Skip to main content

Configuration

GameByte provides sensible defaults with full customization options.

🎮Configuration Playground - Live Settings Editor
Loading demo...

Configuration Methods​

At Creation​

const game = createGame({
debug: true,
renderer: {
antialias: true,
resolution: window.devicePixelRatio
},
mobile: {
touchTargetSize: 44
}
});

After Creation​

const game = createGame();

game.setConfig({
debug: { showFPS: true }
});

Configuration Reference​

Core Settings​

OptionTypeDefaultDescription
debugbooleanfalseEnable debug mode
versionstring'1.0.0'Game version
namestring'GameByte App'Game name
createGame({
name: 'My Awesome Game',
version: '1.2.0',
debug: process.env.NODE_ENV === 'development'
});

Renderer Settings​

OptionTypeDefaultDescription
renderer.antialiasbooleantrueSmooth edges
renderer.resolutionnumber1Pixel density
renderer.backgroundColornumber0x1a1a2eBackground color
renderer.autoDensitybooleantrueMatch device pixel ratio
renderer.powerPreferencestring'default'GPU preference
createGame({
renderer: {
antialias: true,
resolution: window.devicePixelRatio,
backgroundColor: 0x000000,
autoDensity: true,
powerPreference: 'high-performance' // or 'low-power'
}
});

Mobile Settings​

OptionTypeDefaultDescription
mobile.enabledbooleantrueEnable mobile optimizations
mobile.touchTargetSizenumber44Minimum touch target (px)
mobile.preventZoombooleantrueDisable pinch zoom
mobile.preventScrollbooleantrueDisable scroll
mobile.hapticFeedbackbooleantrueEnable vibration
createGame({
mobile: {
enabled: true,
touchTargetSize: 44,
preventZoom: true,
preventScroll: true,
hapticFeedback: true
}
});

Physics Settings​

OptionTypeDefaultDescription
physics.enginestring'matter'2D engine ('matter')
physics.gravity.xnumber0Horizontal gravity
physics.gravity.ynumber1Vertical gravity
physics.timestepnumber1/60Fixed timestep
createGame({
physics: {
engine: 'matter',
gravity: { x: 0, y: 9.8 },
timestep: 1/60
}
});

Audio Settings​

OptionTypeDefaultDescription
audio.masterVolumenumber1Master volume (0-1)
audio.musicVolumenumber0.7Music volume (0-1)
audio.sfxVolumenumber1SFX volume (0-1)
audio.mutedbooleanfalseGlobal mute
createGame({
audio: {
masterVolume: 1,
musicVolume: 0.7,
sfxVolume: 1,
muted: false
}
});

Debug Settings​

OptionTypeDefaultDescription
debug.showFPSbooleanfalseShow FPS counter
debug.showPhysicsbooleanfalseDraw physics bodies
debug.showTouchAreasbooleanfalseHighlight touch targets
debug.logLevelstring'warn'Console log level
createGame({
debug: {
showFPS: true,
showPhysics: true,
showTouchAreas: true,
logLevel: 'debug' // 'none' | 'error' | 'warn' | 'info' | 'debug'
}
});

Environment-Based Config​

const isDev = process.env.NODE_ENV === 'development';

createGame({
debug: isDev,
renderer: {
// Lower resolution in dev for faster iteration
resolution: isDev ? 1 : window.devicePixelRatio
},
debug: {
showFPS: isDev,
showPhysics: isDev,
logLevel: isDev ? 'debug' : 'error'
}
});

Runtime Configuration​

Reading Config​

const config = game.getConfig();
console.log(config.renderer.resolution);

Updating Config​

// Update single value
game.setConfig({ debug: { showFPS: false } });

// Update multiple values
game.setConfig({
audio: { muted: true },
renderer: { backgroundColor: 0x000000 }
});

Config Events​

game.on('config:changed', (key, newValue, oldValue) => {
console.log(`${key} changed from ${oldValue} to ${newValue}`);
});

Full Default Configuration​

const defaultConfig = {
name: 'GameByte App',
version: '1.0.0',
debug: false,

renderer: {
antialias: true,
resolution: 1,
backgroundColor: 0x1a1a2e,
autoDensity: true,
powerPreference: 'default'
},

mobile: {
enabled: true,
touchTargetSize: 44,
preventZoom: true,
preventScroll: true,
hapticFeedback: true
},

physics: {
engine: 'matter',
gravity: { x: 0, y: 1 },
timestep: 1/60
},

audio: {
masterVolume: 1,
musicVolume: 0.7,
sfxVolume: 1,
muted: false
},

debug: {
showFPS: false,
showPhysics: false,
showTouchAreas: false,
logLevel: 'warn'
}
};