Most likely not~ its been a while but iirc RMMV used a different filter padding, so you'll probably end up with a black screen~
TheUnproPro
Creator of
Recent community posts
It is indeed quite impressive, as for MV/MZ while they are fantastic, every export no matter the device will export to a web format, on PC it uses NW.js (node webkit), like CrossCode does, this makes games easier to hack and even flat out edit, though to be 100% honest, no game is safe from that regardless of the engine lol.
As for reverse engineering the shader, turns out now you need to link your own gl program it looks like, and store the frag/vert shaders in an object, I just need to figure out why/how a glProgram is now required and how to tie that to the renderer, gonna attempt to just bootleg it and use the main app's glProgram
I appreciate the offer though~
But yeah, the TL;DR version is WebGPU is significantly faster, also optimized asf for newer mobile devices (or even some older ones with updated web rendering, w/e browser you use), The down side is, GLSL code wont work out of the box with it, apparently? Idk man, some jank sh* going down rn on PIXI's side lol, like they're improving which is amazing, but they've also made custom shaders obscure asf, I'll try deconstructing a built in shader and see if I can't figure out クソ何で makes them work~
The title names should be the name of the image file you want to add to the list of swappable title screen images :)
"
i've been trying to logic the code but i keep getting reminded that i have the most rudimentary coding experience (think: hello world) ;;
"
^ Welcome to the world of coding =D It's always awesome to hear someone putting in the effort to learn, though it can be a real headache;
About toggling plugins mid-game, yeah atm that's not really an option, I mean it -kind of- can be, but it'd be a bit bootleg on how it needs to be done lol~ Anyway here's the commented version:
// Extending Scene_Title prototype to add custom properties (() => { // Custom properties for the title scene Scene_Title.prototype.title_timer = 0; // Timer for tracking time Scene_Title.prototype.title_image_index = 0; // Index to track the current title image Scene_Title.prototype.title_images = [ "title_1_name", "title_2_name", "etc", ].map(t => ImageManager.loadTitle1(t)); // Array of title images loaded using ImageManager // Save the original update function of Scene_Title const originalUpdate = Scene_Title.prototype.update; // Override the update function to add custom logic Scene_Title.prototype.update = function() { // Call the original update function originalUpdate.call(this, arguments); // Increment the title timer this.title_timer++; // Check if 2.5 seconds (2500 milliseconds) have passed if (this.title_timer >= 2500) { // Increment the title image index this.title_image_index++; } // Check if the current title image is loaded if (this._backSprite1._imageLoaded != this.title_image_index) { // Update the loaded image index this._backSprite1._imageLoaded = this.title_image_index; // Set the bitmap of _backSprite1 to the current title image this._backSprite1.bitmap = this.title_images[this.title_image_index]; } // Wrap around the title_image_index to prevent going beyond the array length this.title_image_index = this.title_image_index % this.title_images.length; }; })();
Ah~ I can give you a rundown way to do it-
Make a "title_change.js" file, put it in plugins, give it the following content:
(()=>{ Scene_Title.prototype.title_timer = 0;
Scene_Title.prototype.title_image_index= 0;
Scene_Title.prototype.title_images = [
"title_1_name",
"title_1_name",
"etc",
].map(t=>ImageManager.loadTitle1(t)); const osu = Scene_Title.prototype.update;
Scene_Title.prototype.update = function() {
osu.call(this, arguments);
this.title_timer++;
if(this.title_timer>=2500) //2.5 seconds
this.title_image_index++; if(this._backSprite1._imageLoaded != this.title_image_index) {
this._backSprite1._imageLoaded = this.title_image_index;
this._backSprite1.bitmap = this.title_images[this.title_image_index];
}
this.title_image_index = this.title_image_index%this.title_images.length;
} })();
Put it on top of the other plugins;I don't know if this will work right off the bat, but~ play around with it, it should work :)
Yeah it seems RPG Maker isn't treating you well at all... I'm so sorry it's doing that to you. VERY strange also for electron to not allow you to use modern JS... something unknown is going on from a deeper level, I'm willing to work with you to try and get it figured out but maybe we should Discord from here, as we might need to do some *cracks knuckles* anti-jank special methods I've developed from dealing with my own "this makes no f*ing sense" problems xD
Though imo, you might be better using Godot
VERY interesting, it means that for some mysterious reason it's not allowing you to use an updated javascript interpreter... hmm...
No worries, I'm very sorry you're experiencing such troubles over this. If you're willing to keep going, I'd love to work with you to solve it~ game dev can be a headache, but generally it never involves this level of debugging. But hey =D once we solve it, you'll be able to solve this issue for other developers who might run into the rare problem as well!
Replace the js code I sent with this, for 'editor.js'
const { app, BrowserWindow } = require('electron'); function createWindow() { mainWindow = new BrowserWindow({ width: 816, height: 624, frame: true, webSecurity: false, webPreferences: { nodeIntegration: true, contextIsolation: false, webSecurity: false, }, }); mainWindow.loadFile(require('path').resolve('./', 'index.html')); mainWindow.webContents.openDevTools(); } app.whenReady().then(createWindow); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } });
then run electron ./editor.js from the powershell~ remember to hold left shift, right click an empty space in your RPG Maker's project directory first and select "Open powershell here"
EDIT:
Also, I really don't mind, feel free to vent lol, don't hold back I 100% get it. sometimes I wanna scream and rip my hair out (whenever it grows back from the previous ripout!)
Not a chance, your system is more than capable. Lets try going outside the box a little~
Do you have Node.js and NPM installed? If not, install it here:
https://nodejs.org/dist/v20.10.0/node-v20.10.0-x64.msi
After that, you might need to restart~ When you do, open your games project folder and hold shift when you right click on an empty space in the folder, you should see something like "Open powershell here". Run that, then type "npm install -g electron", When that's done, close the powershell window and re-open it (so that it refreshes with the new electron command enabled), from there, create a file called "editor.js", place these contents in it:
const { app, BrowserWindow } = require('electron') const path = require('node:path') const createWindow = () => { // Create the browser window. const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.join(__dirname, 'preload.js') } }) // and load the index.html of the app. mainWindow.loadFile('index.html') // Open the DevTools. // mainWindow.webContents.openDevTools() } // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.whenReady().then(() => { createWindow() app.on('activate', () => { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow() }) }) // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit() })
Finally, with all of that out of the way, in the powershell window type "electron ./editor.js" and --IF-- all went well, it should open the RPG Maker game again, but this time using electron which, while it does rely on chromium, might support something with your PC that Node Webkit (NWJS) doesnt
If that also doesn't work, we can try one more thing :
EDIT:
editor.js should be in the same place as index.html in your project folder
Lmk if this helps, gl!
EDIT 2:
I'm used to dealing with jank that makes zero sense, lol, so I'm not stressed at all in trying to help you figure out why the performance here is being crustier than a hookers underboob
Now I'm even more confused. There's zero reason it should be lagging. Lets try to Force-Update your nwjs ~
Or direct link (will likely be outdated soon though) https://dl.nwjs.io/v0.82.0/nwjs-sdk-v0.82.0-win-x64.zip
Download the SDK version, then go to Steam/steamapps/common/RPG Maker MZ/ and there should be a folder called "nwjs-win" Drag/drop the new files from the zip to this and then try (remember to make a backup just in case)
My guess is it has to do with the CSS styling I decided to go with, but even then, there's absolutely -no- reason it should be this laggy
No worries, I gotcha~
So, to activate it, use the event "script" tag, and put
$gameVariables.vhsFilter = true;
To configure it:
$gameVariables.vhsAmp = value
$gameVariables.vhsLines = value
$gameVariables.vhsSpeed = value
$gameVariables.vhsStatic = value
vhsAmp is the amplitude
vhsLines is the amount of lines, iirc
vhsSpeed is how fast it goes
vhsStatic is how much noise there is