A lot of games these days offer a rumble mode that activates in response to certain game events (an explosion set off during a major plot twist, getting knocked out during a fight, or simply taking a hard fall to the ground) and this plugin has been designed to bring that experience to RPG Maker.
- v1.0: Initial RTM
- v1.1: Unanticipated bugfix
- v1.2: Added control switch assignment to change rumble mode status
- v1.3: Small change to accommodate the possibility of a crash when a gamepad is disconnected.
- v1.4: Replaces control switch with option menu function, and directs the effect to the most recenty-used gamepad. A very special thanks to YoraeRasante for this update.
- v1.5: Added verification to detect the availability of a supported gamepad. As of this update, the functions will not be available if gamepad detection fails.
- v1.6: Community circulation revoked and user requirements changed. You must have a license to use the plugin and can no longer freely distribute or modify its code. Note that this only applies starting with version 1.6 and does not affect existing users.
- v2.0: Adds support for mobile device rumble, and provides instructions and code to support Xbox through Universal Windows projects. Also marks the official shift of the paid license to a “what it’s worth” model (though it is now entirely optional).
- v2.1: Changed the mobile device rumble call because of an unforeseen issue with the detection method. Also updated with bugcheck detection for the Universal Windows instructions in the event that a gamepad is not detected by the system.
Since the launcher that ships with MV doesn’t have the necessary functions that allow the plugin to work, you will need to patch MV with a compatible version of NWJS. If you use the automated patch tool, the launcher will be replaced during setup with a 64-bit runtime stack deprecating any environment versions prior to Windows 7. (Don’t worry about the prospect of problems, though – as long as your install and project are 1.6.x or newer the official NW..JS redistributable and the MV launcher are completely interchangeable. But then again, you should at least back up the default launcher files before installing.) You can also download the plugin separately, if that’s all you need. Note that this only applies to MV – the necessary bits were added to NW.JS between the release of MV and MZ so obviously the functionality is already there in MZ. Therefore you do not need to patch MZ.
To activate the rumble feature in a given event or scene, use the following script call:
Strong is the maximum velocity of the effect’s magnitude.
Weak is the exact opposite: the weak end of the effect.
Time is defined in milliseconds, so 1000::1 and 5000 is 5 seconds. (Get it?)
Note that neither weak nor strong can go over 1.0, and that magnitude values of 0.1 are completely ignored (and for obvious reasons). Also, the values for weak and strong can be reversed and still work properly.
What’s up with the automated patch tool?
Since the NW.JS package that ships with RPG Maker MV does not have the necessary updates that are required for the plugin to work properly, the automated patch tool downloads a compatible version of the NW.JS and updates your game files accordingly. This allows you to use the updated package for both testing and distribution without having to do it later on. Since they’re basically the same thing, you can patch the files without any effect to your testing and deployment provisions. (Obviously you can also patch manually by downloading from the NW.JS website.)
What reasoning does the NW.JS update for MV provide as part of the install process?
If you’re on 64-bit, you can take advantage of improved access to your system resources beyond the 3GB combined access limit, making for improved game performance. Also, it is required in order to guarantee the complete availability of the gamepad servicing libraries for NW.JS that allow for the plugin to work properly.
Is RPG Maker MZ supported?
Yes. RPG Maker MZ has been tested and is fully compatible. Note that because MZ is newer than MV, you will not need to patch MZ to use the plugin.
What should I say if my customers are complaining of rumble malfunctioning?
Provided the gamepad has a rumble feature there shouldn’t be an issue. But in rare cases, making a change to the rumble option while the gamepad is connected may desync the rumble feature. If this occurs, simply unplug and reconnect your gamepad to cycle access to the rumble interface.
I have a console-targeted game project. Does the plugin support console rumble?
The code is primarily aimed at NW.JS which does not support game console deployment. For this use case you may need to add separate code to read the state of the rumble parameters or implement your own, with the sole exception of Xbox builds which are covered in the Building for Xbox help section. There is also a rumble call for mobile devices.
My Xbox project didn’t trigger the rumble on cue. What happened?
This is a bug that I cannot seem to resolve, and may be related to the WinRT configuration process. As a workaround, you can place a zeroed-out rumble call somewhere in the malfunctioning event (e.g. Rumble(0,0,100)) and the next rumble event after the zeroed-out call will fire as expected. This is also useful for terminating an existing rumble event when it is no longer required.
My UWP build failed to compile, or I’m receiving an undefined function error.
The rumble event handlers for Universal Windows must be added to a WinRT component project independently of the main app in order to work; however the project can still be hosted in the same solution for as long as it is referenced by the host app. You must also set both the host project and the WinRT component project to require Windows 10 build 17763 as a minimum release target. Refer to the following external help link:
I’m receiving a whole list of code syntax errors.
You probably created a Visual Basic project. I may translate the code at a later date for that use case, but for now the instructions assume C#.