VVEILVMJAVASCRIPT OBFUSCATION
PricingAPI docsJSVMP vs obfuscatorsWhat is JSVMPHTML5 gamesRPG Maker pluginsElectron and Node.jsTermsRefund policyPrivacy policy

VEILVM · Guides

Protect RPG Maker MV / MZ Plugins with JSVMP

RPG Maker MV and MZ plugins are plain JavaScript. If you sell plugins on itch.io or Gumroad, buyers (and non-buyers) can open the .js file and copy features into their own releases. Many commercial authors already ship obfuscated plugins for that reason.

VEILVM is a browser-based JSVMP tool: it compiles selected JS into a custom VM bytecode + interpreter, which is harder to casually edit than rename-only obfuscation.

What works well

  • Paid plugin logic you do not want republished
  • License / activation helpers that ship with the plugin
  • Feature gates for “free demo vs full” builds

Caveats specific to RPG Maker

  1. Plugin parameters & Plugin Commands must stay reachable. Prefer protecting internal helpers while leaving the parameter-parsing surface readable, or document that users configure via Plugin Manager only.
  2. Compatibility support gets harder when the body is fully VM-protected. Keep a private unobfuscated copy for your own debugging.
  3. Forum rules: RPG Maker Web forums allow creators to protect their own plugins; they generally do not want paid plugins advertised as hard sell threads. Host sales on itch.io / Gumroad and keep forum posts informational (demo + terms).
  4. Do not redistribute or re-protect someone else's plugin.

Suggested workflow

1. Develop and test the plugin unobfuscated in a private project
2. Split “public API” (params, commands) from “core logic” modules if possible
3. Run core logic through VEILVM (High-performance or Dynamic VM)
4. Ship the protected .js with clear Terms of Use (no redistribution / no deobfuscation)
5. Keep the source in private git for updates

For CI or batch builds, use the Pro API (up to 2 MB source per request).

Example shape (illustrative)

Before (keep this private):

// core-economy.js — do not ship plain
function calcDropRate(enemyLevel, luck) {
  return Math.min(0.85, 0.05 + enemyLevel * 0.01 + luck * 0.002);
}

After VEILVM: ship the generated interpreter + bytecode instead of the plain function. Wire your plugin header / @param block as usual so Plugin Manager still works.

Try VEILVM

  • 3 free runs a day, no sign-up, up to 5 KB/file (resets 00:00 UTC)
  • Free: 20 runs/mo, 30 KB/file
  • Pro: $9/mo or $79/year — 1,000 runs/mo, API access

Open: https://vm.ldvmp.com

Related

  • Protect HTML5 game JavaScript
  • What is JSVMP?
Back to VEILVM
PricingAPI docsJSVMP vs obfuscatorsWhat is JSVMPHTML5 gamesRPG Maker pluginsElectron and Node.jsTermsRefund policyPrivacy policy