Hey guys, it’s 2026 and I realize not all monitors are created equal to this day. How would one go about adding an in-game slider to adjust the game’s brightness without having to change your monitor settings? I ask because some games might end up being developed with certain lighting levels in mind and having the right setup would be amazing, especially for horror games or even stealth games.
Adding onto @Son_ofHiro’s idea, the catch with Tint Screen is that maps use the same setting for night or cave tints. So a brightness option built on it would get overwritten any time one of those events runs.
I think I would make brightness its own entry in the Options menu instead, separate from the screen tint. Here’s a small plugin that adds a Brightness setting from 50% to 150% and saves it along with the volume settings:
/*:
* @target MZ
* @plugindesc Adds a Brightness option to the Options menu.
*/
(() => {
const MIN = 50;
const MAX = 150;
const STEP = 10;
ConfigManager.brightness = 100;
const _makeData = ConfigManager.makeData;
ConfigManager.makeData = function() {
const config = _makeData.call(this);
config.brightness = this.brightness;
return config;
};
const _applyData = ConfigManager.applyData;
ConfigManager.applyData = function(config) {
_applyData.call(this, config);
this.brightness = "brightness" in config
? Number(config.brightness).clamp(MIN, MAX)
: 100;
};
const _addGeneralOptions = Window_Options.prototype.addGeneralOptions;
Window_Options.prototype.addGeneralOptions = function() {
_addGeneralOptions.call(this);
this.addCommand("Brightness", "brightness");
};
const _statusText = Window_Options.prototype.statusText;
Window_Options.prototype.statusText = function(index) {
if (this.commandSymbol(index) === "brightness") {
return ConfigManager.brightness + "%";
}
return _statusText.call(this, index);
};
Window_Options.prototype.changeBrightness = function(forward, wrap) {
let value = ConfigManager.brightness + (forward ? STEP : -STEP);
if (value > MAX && wrap) {
value = MIN;
}
this.changeValue("brightness", value.clamp(MIN, MAX));
};
const _processOk = Window_Options.prototype.processOk;
Window_Options.prototype.processOk = function() {
if (this.currentSymbol() === "brightness") {
this.changeBrightness(true, true);
} else {
_processOk.call(this);
}
};
const _cursorRight = Window_Options.prototype.cursorRight;
Window_Options.prototype.cursorRight = function() {
if (this.currentSymbol() === "brightness") {
this.changeBrightness(true, false);
} else {
_cursorRight.call(this);
}
};
const _cursorLeft = Window_Options.prototype.cursorLeft;
Window_Options.prototype.cursorLeft = function() {
if (this.currentSymbol() === "brightness") {
this.changeBrightness(false, false);
} else {
_cursorLeft.call(this);
}
};
const _maxCommands = Scene_Options.prototype.maxCommands;
Scene_Options.prototype.maxCommands = function() {
return _maxCommands.call(this) + 1;
};
const _createColorFilter = Scene_Base.prototype.createColorFilter;
Scene_Base.prototype.createColorFilter = function() {
_createColorFilter.call(this);
this._brightnessFilter = new PIXI.filters.ColorMatrixFilter();
this.filters = this.filters.concat(this._brightnessFilter);
};
const _updateColorFilter = Scene_Base.prototype.updateColorFilter;
Scene_Base.prototype.updateColorFilter = function() {
_updateColorFilter.call(this);
this._brightnessFilter.brightness(ConfigManager.brightness / 100, false);
};
})();
Save it as Brightness.js in your project’s js/plugins folder, then turn it on in the Plugin Manager. If you’re already using a plugin that rebuilds the Options menu, like VisuStella’s Options Core, I’m not sure this would show up there.
That worked out really well! Thanks! ![]()