Engine Tuner (and tuned core)

● ARCHIVED · READ-ONLY
Started by AceOfAces 13 posts View original ↗
  1. Introduction:
    Members of the RarelyTypicalPlayers community (a collective of developers and reviewers) came together in pursuit of optimizing the RMMV core scripts after finding some glaring issues in their code. The results show improvements of 10+ fps on average and have been made easy to use for even inexperienced users. An extra plugin was also created for those who need the stock behaviour, but still want improved performance.

    Parts of the core:

    The improved core is available in two forms:
    1. A plugin form: The plugin slipstreams all of the changes into one file. Helpful for clean-room patching.
    2. A patched set of scripts: This is the same as the core scripts, but with the changes included.
    Depending on your needs, you can use either of these. If you are going with the second form, you can use the slim version of the plugin to tweak some extra areas of the engine.

    Download:
    You can grab both the plugin and/or the optimized core on itch.io or on Github (changes in the script are listed on the repo as well). The plugins are under the MIT license. The tuned core is in the same license as core scripts. Credit under AceOfAces.

    While you are at it, why don't give the RTP community love? Join on Discord or pay a visit to the YouTube channel. They are live every Wednesday at 2p.m. EST.
  2. I decided to switch to the plugin version. I had been using the core_js version prior.
    However, upon switching, suddenly my f4 key to switch between full screen and windowed stopped working :stickytongue:
    cantExit.jpg
    Any ideas?

    As a bonus, there are several files on the itch page.
    It would be nice to have a description of each file and why one might chose one over the other. The itch page (and this thread) is quite light on details.
    The plugin help section talks about some Sentry plugin or whatever. I have no idea what that is and whether it's a required file or not. Once again, some clarifying language in this thread on itch would be greatly appreciated.
  3. TheAM-Dol said:
    decided to switch to the plugin version. I had been using the core_js version prior.
    However, upon switching, suddenly my f4 key to switch between full screen and windowed stopped working

    Hmm... Something related to the key mapping is broken. I'll take a look at it and fix it.

    TheAM-Dol said:
    As a bonus, there are several files on the itch page.
    It would be nice to have a description of each file and why one might chose one over the other. The itch page (and this thread) is quite light on details.
    The plugin help section talks about some Sentry plugin or whatever. I have no idea what that is and whether it's a required file or not. Once again, some clarifying language in this thread on itch would be greatly appreciated.

    The plugin version essentially packs the changes into a plugin to patch. It needs to be above the Sentry plugin (which is used for sending crash reports to the developer via the Sentry service), to make sure it doesn't conflict with that. The other files (main.js and co) are simply the patched core scripts. A slim version of the tuner plugin (that lack the patched) can be used to finetune the optimization.
  4. Thanks for looking into the problem.

    AceOfAces_Mod said:
    The plugin version essentially packs the changes into a plugin to patch. It needs to be above the Sentry plugin (which is used for sending crash reports to the developer via the Sentry service), to make sure it doesn't conflict with that. The other files (main.js and co) are simply the patched core scripts. A slim version of the tuner plugin (that lack the patched) can be used to finetune the optimization.
    I...think I understand. It would be nice if the clarifying information was put on the itch page.
    I think I saw on the git page that it does mention some of the improvements the plugin does, but that's no where to be found in the itch page or this thread, so it would be nice to include what exactly the plugin is doing as well.
    There is also a save opt-in plugin or something? Not sure what that is, and the description is a bit hard to parse. Something about an old way RM handled saves, but an update changed that. So why would I use this plugin? What does it do? And how does it relate to the other plugins in the engine?

    And why would someone want to use the slim version? Does the slim version target just the necessary things that make the biggest difference in performance?
  5. TheAM-Dol said:
    I...think I understand. It would be nice if the clarifying information was put on the itch page.
    I think I saw on the git page that it does mention some of the improvements the plugin does, but that's no where to be found in the itch page or this thread, so it would be nice to include what exactly the plugin is doing as well
    Working on it.

    TheAM-Dol said:
    There is also a save opt-in plugin or something? Not sure what that is, and the description is a bit hard to parse. Something about an old way RM handled saves, but an update changed that. So why would I use this plugin? What does it do? And how does it relate to the other plugins in the engine?
    To make it as easy to understand as possible: In the coresrcipt 1.3 (which is partially implemented to the tuned core and plugin), it introduced a new loading algorithm to speed up the indexing of the saves in the save screen (alongside a new algorithm to calculate the play time, which calculates the time better). For some reason, under certain projects, the game may fail to index the files properly. Which results into failing to load the saves. Hence why it's an opt in.

    TheAM-Dol said:
    And why would someone want to use the slim version? Does the slim version target just the necessary things that make the biggest difference in performance?
    The slim version is intended to be used with the patched core scripts. Most of the changes that are in the full version of the plugin are already incorporated to the core scripts. It simply provides some extra patches and settings, to fine-tune the performance of the game.

    QUICK EDIT: Just released patch set 2024.1, bringing full parity with corescript 1.3b (alongside fixing the fullscreen bug on the plugin and adding extra optimizations for canvas).
  6. AceOfAces_Mod said:
    In the coresrcipt 1.3 (which is partially implemented to the tuned core and plugin)
    ...
    QUICK EDIT: Just released patch set 2024.1, bringing full parity with corescript 1.3b
    Just to chime in, as an example of an average RPG Maker developer who might be considering the tuner: This is very confusing.

    The core script 1.3 is very old, as the current (presumably final) version of MV is 1.6.3. It's unclear why you would be using anything from that, as several iterations (1.5 and 1.6) broke compatibility with many plugins due to significant changes.

    If you're actually talking about 1.3 of the engine tuner, that's even more confusing as your itch page acknowledges the difference between your project and "the core scripts"
    1719114950987.png
    and the number 1.3 doesn't appear to have anything to do with the version of your project
    1719114989890.png

    So...what are you talking about?

    (as a side but related note, it is also confusing to see two completely different version numberings between the patched core scripts and the plugin. If they contain the same content and changes, why aren't they the same version numbers?)
  7. ATT_Turan said:
    Just to chime in, as an example of an average RPG Maker developer who might be considering the tuner: This is very confusing.

    The core script 1.3 is very old, as the current (presumably final) version of MV is 1.6.3. It's unclear why you would be using anything from that, as several iterations (1.5 and 1.6) broke compatibility with many plugins due to significant changes.
    To clarify, when I'm referring to corescript 1.3, I'm not referring to MV 1.3. Instead, I'm referring to this corescript: https://github.com/rpgtkoolmv/corescript

    Which is (essentially) the latest version of MV's core code. Corescript 1.3 from that repo was never released officially as an update to MV (1.6.x used the 1.2 version of the corescript repo, if I recall correctly).
  8. AceOfAces_Mod said:
    To clarify, when I'm referring to corescript 1.3, I'm not referring to MV 1.3. Instead, I'm referring to this corescript: https://github.com/rpgtkoolmv/corescript
    Thank you for the response. I would say that answers the question, but does not particularly clarify :stickytongue:

    I've never seen/heard of that, and I suspect most people who could potentially look at the Tuner plugin haven't heard of it, either. So referencing it using the same terminology as the actual MV code produces confusion.

    I'd be very interested in checking out what this does to MV if it can be explained/documented clearly. Thanks for your efforts.
  9. ATT_Turan said:
    I'd be very interested in checking out what this does to MV if it can be explained/documented clearly. Thanks for your efforts.
    Hi, I'm Ron Ronson and I approve this message.
  10. Here's a list of the changes that corescript 1.3 brings (as implemented in the tuned plugin and patched js files):
    Spoiler
    • General improvements to how the game caches images.
    • More detailed error messages.
    • Text speed can be adjusted via the \S[n].
    • Fix the game does not work properly when deploying to Android app using Crosswalk. (Who uses Crosswalk anymore?)
    • The game saves properly when using Enigma Virtual Box (better use my Cook Tool Deluxe for that. Wink wink, nudge nudge).
    • Fix to prevent the game from stopping when an error occurs due to browser extension.
    • Fix cannot touch the retry button when loading error occurred on iOS.
    • Fix letters blurred when drawing smaller characters than 21px.
    • Fix an error when using an item without party member that can use items due to a bad status or the like.
    • Fix large characters (whose filename begins with $) are not rendered correctly in the window.
    • Fix loop tag of some ogg files cannot be read correctly.
    • Fix playing time fast-forwarded when playing on a monitor with a higher refresh rate.
    • Fix where the drawing position of letters is shifted by 1 pixel in Safari browser.
    • Fix an error when saving objects created with Object.create(null).
    • Fix keep touching when the game screen loses focus.
    • Fix double trigger events when long touching map events.
    • Fix the background and contents of the windows might not be displayed correctly on Chrome 69.
    • Fix rendering the map is delayed for a moment than the parallax at NewGame.
    • Fix the game freezes when user agent is changed from iOS Safari to another while playing the game.
    • Fix the game screen freezes despite sound being heard.
    • Several other points, fix some code that might cause the problem when using plugin.

    And here's what the tuned script and js files themselves implement on top:

    Spoiler
    • Removed an unnecessary check (this.texture.frame.width > 0 && this.texture.frame.height > 0) in Sprite.prototype._renderWebGL/_renderCanvas.
    • The calculation for the character speed is pre-calculated (includes a fallback for non-standard speeds).
    • Half tile size is only calculated when when Tilemap is initialized.
    • Simplified a check in TilingSprite.prototype._refresh.
    • Updated to Pixi.js 4.8.9.
    • Fixed Garbage Collection settings for Pixi.js.
    • Replaced the deprecated VoidFilter with AlphaFilter.
    • Replaced calls to RegExp.$1 in the WebAudio._readMetadata.
    • Removed styles.type. It implies text/css anyway.
    • Removed a legacy call specific with Safari (body.style.webkitUserSelect).
    • Enabled willReadFrequently for canvas, improving latency.
  11. And just to be completely clear on this, both the plugin version and the loose scripts version are identical and make the same changes?
  12. TheAM-Dol said:
    And just to be completely clear on this, both the plugin version and the loose scripts version are identical and make the same changes?
    Yes. The plugin version works more like a toggleable patch file. But they are otherwise identical.
  13. Hi
    Is there a way to make your plugin friendly with this plugin?

    Change Tile Size