Client Configuration v7 - nodeGame/nodegame GitHub Wiki
- status: complete
- version: 7.x
Usually, there is no need to manually configure a node instance, as
all default values are chosen automatically. However, the node.setup
method allows one to obtain a fine-grained configuration in cases when
it is needed. The syntax is the following:
node.setup('feature', settings);
- "verbosity":
// Sets the verbosity level for console output.
// Verbosity is an integer value, or one of the available levels:
//
// - 'ALWAYS': -Number.MAX_VALUE,
// - 'error': -1,
// - 'warn': 0,
// - 'info': 1,
// - 'silly': 10,
// - 'debug': 100,
// - 'NEVER': Number.MAX_VALUE
//
// Current value is stored in node.verbosity. Default: 'warn'.
node.setup('verbosity', 'warn');
- "env":
// Sets environment variables.
// Environment variables can be retrieved with node.env('myenv').
node.setup('env', { myenv: true });
- "nodename":
// Assigns a name to the node instance.
// The name is stored under node.nodename, and it is added to every
// log message. Default: 'ng'.
node.setup('nodename', 'mynode');
- "debug":
// If TRUE, errors are thrown, otherwise they are caught.
// In production, 'debug' should be set to FALSE.
node.setup('debug', true);
- "events":
// Configures the Event Emitter.
node.setup('events', {
// Logs to console all fired events.
dumpEvents: false,
// Stores a record of all fired events.
history: false
});
- "settings":
// Adds/updates variables in node.game.settings.
node.setup('settings', {
foo: 'bar',
foo2: 'bar2'
});
- "metadata":
// Adds/updates variables in node.game.metadata.
node.setup('metadata', {
name: 'The name of the Game',
version: '1.0.0'
});
- "player":
// Setups a new player object.
// A new player cannot be created while a game is running.
node.setup('player', conf);
- "timer":
// Setup an existing timer object.
// Accepts one configuration parameter of the type:
//
// - 'name': name of the timer. Default: node.game.timer.name
// - options: configuration options to pass to the init method
// - action: an action to call on the timer (start, stop, etc.)
//
// If options is an array, it will repeat the configuration of
// timers for each element in it.
node.setup('timer', options);
- "plot":
// Modifies the current list stages and steps of the game
// plot must be an object containing the updated stages,
// and updateRule the string 'replace', or 'append'.
node.setup('plot', plot, updateRule);
- "plist":
// Modifies the current list of connected players.
// plist must be an array of players, and updateRule
// the string 'replace', or 'append'.
node.setup('plist', plist, updateRule);
- "lang":
// Sets the default language.
node.setup('lang', {
name: 'English',
shortName: 'en',
nativeName: 'English',
path: 'en/'
});
// Or:
node.setup('lang', 'English'); // Uses the first two letters to make shortName.
// Or:
node.setup('lang', [ 'English', true ]); // Sets en/ prefix for loading frames.
- "host":
// Sets the uri of the host to connect to.
// By default, the host is retrieved from the value of window.location.
node.setup('host', 'http://myhost.com');
- "socket":
// Sets the type of socket connections with additional options.
node.setup('socket', {
type: 'SocketIo',
reconnect: false
});
- "window":
node.setup('window', {
// Displays a confirmation message if the user tries to leave the page.
promptOnleave: false,
// Pressing escape does not close the connection.
noEscape: true,
// Default position of the header.
defaultHeaderPosition: 'left',
// Does not display a context menu with the right click.
disableRightClick: false,
// Disables the back button in the browser interface.
disableBackButton: true,
// Sets the uri prefix for every new frame load (see W.setUriPrefix).
uriPrefix: 'en-us',
// Creates and configures a new wait screen (see WaitScreen).
waitScreen: { ... },
// Destroys the wait screen.
waitScreen: false
});
- "page":
node.setup('page', {
// Removes all elements in the body of the page.
clearBody: true,
// Removes all elements from page.
clear: true,
// Sets the title of the page.
title: 'ABC',
// Sets the title of the page and also adds a H1 block in the body.
title: {
title: 'ABC',
addToBody: true
}
});
- "frame":
node.setup('frame', {
// Generates a new frame.
generate: {
// The id of the HTML element to which to append the frame.
root: 'myid',
// If TRUE, a new frame is created even if an existing one is found.
force: true,
// The name of the frame (default: 'ng_mainframe').
name: 'foo',
},
// Load a new frame.
load: 'myframe.html',
// Load a new frame with options.
load: {
url: 'myframe.html',
// Callback to execute after the frame has been loaded.
cb: function() { console.log('loaded!'); },
// Options to pass to W.loadFrame.
options: { cache: { loadMode: 'reload' } }
},
// Sets the uri prefix for every new frame load (see W.setUriPrefix).
uriPrefix: 'en-us',
// Clears the frame contents.
clear: true,
// Destroys the frame and removes it from DOM.
destroy: true
});
- "header":
node.setup('header', {
// Generates a new frame.
generate: {
// The id of the HTML element to which to append the header.
root: 'myid',
// If TRUE, a new header is created even if an existing one is found.
force: true,
// The name of the header (default: 'ng_header').
name: 'foo',
},
// Sets the position of the header on the page.
position: 'top', // or 'bottom', 'left', 'right'.
// Clears the header contents.
clear: true,
// Destroys the header and removes it from DOM.
destroy: true
});
- "widgets":
node.setup('widgets', {
// Registers new widgets.
widgets: {
// Widget 1.
mywidget: function() { ... },
// Widget 2.
mywidget2: function() { ... }
},
// Destroys all widgets.
destroyAll: true,
// Appends a new widget.
append: {
VisualRound: {
// The id of the root element (default: append to page).
root: 'rootId',
// Other options for the widget.
}
}
});
- waitroom":
// See WaitingRoom widget for all configuration options.
node.setup('waitroom', { ... } });
- requirements":
// See Requirements widget for all configuration options.
node.setup('requirements', { ... } });
Alternatively, the configuration for each element can be grouped together in a single object and call the setup method with the 'nodegame' label.
node.setup('nodegame', {
debug: true,
window: { ... },
// ...
});
Every logic can remotely invoke setup functions via the following command:
node.remoteSetup('feature', 'recipientId');
All settings specified with node.setup
are stored in the node.conf
object.