- Joined
- Apr 12, 2020
- Messages
- 82
- Reaction score
- 195
- First Language
- Vietnamese
- Primarily Uses
- RMMZ
Shora Lighting System

Version: 1.8.4
Itch.io Page.
Wiki Page.
PayPal.Me Profile.
―――――――――――――――――――――
ShoraLightingSystem, written in JavaScript, is a plug-in developed by Shora to provide dynamic lighting to RPG Maker MV/MZ engine, intended to be easiest to start and most flexible when advanced!
Introduction
This is my first graphics plugin for RPG Maker MV/MZ, began developed since 3/2020. After lots of failure in quality and performance, now I can finally, introduce to you, Shora Lighting Plugin, with real-time dynamic shadow and lighting. It have been optimized heavily to focus in quality, performance, and flexibility.Features
- Create your base lights from plugin manager. Then you can use these lights note-tags or event's comment, with or without additional parameters to override your default settings. GUI Editor in development.- Two type of lights: Character Lighting and Custom Lighting. The event lighting automatically follow character (event, player etc.) position, and direction if you specified it to.
- Every light have it own ids, and you can use them for dynamically animate your lighting, like its offset, radius, angle, and color, using plugin command / script call. You can also turning it and its shadow on/off dynamically too.
- Ultra 2.5D shadow is implemented, and give you most flexibility over it settings. It tend to create best visually correct shadow as possible, while still easy to use for beginner and flexible to use for advanced. GUI Editor in development.
- Intensity lighting filter and soft shadow filter already implemented, create the best quality for both lighting and shadow. You can easily enable/disable and change their settings in the plugin manager or dynamically though command / script.
Gallery:
MV Plugin Commands:

MV Plugin Commands:
ambient <color (hex)> <time (ticks)>: changing the current ambient color to destination color in tick(s) time. Useful for a simple day/night cycle system and easily compatible with any other plugin. The same syntax apply for changing shadowAmbient and topBlockAmbient, but those are advanced things and I doubt anyone would need it.
offset <eventId*> <X> <Y> <ticks> <transition type>: set the event's lighting offset to (X, Y) in ticks time. The default transition type is easeInOut (1), and you can use the linear one (0). It does not actually set the position of the lighting, only it offset.
tint <eventId*> <color> <ticks>: set the event's lighting tin to color in ticks time.
status <eventId*> <on/off>: set the status of light to on(1) of off(0).
static_light <x> <y> <ref>: add a static light which type is *ref* and located in (x,y).
*: you can shorten the eventId for the current lighting (lighting of the event which call the commands) by using a simple "=" instead of typing it id. This is the same as "leave the id blank for this event" in MZ plugin command.
Example: offset = 48 -48 60 will move this event lighting by right one block and up one block in one second.
A new better syntax for MV command are developed, which allow you to choose what settings to be changed. For below 1.8.2 you can see old command from the reference here:

offset <eventId*> <X> <Y> <ticks> <transition type>: set the event's lighting offset to (X, Y) in ticks time. The default transition type is easeInOut (1), and you can use the linear one (0). It does not actually set the position of the lighting, only it offset.
tint <eventId*> <color> <ticks>: set the event's lighting tin to color in ticks time.
status <eventId*> <on/off>: set the status of light to on(1) of off(0).
static_light <x> <y> <ref>: add a static light which type is *ref* and located in (x,y).
*: you can shorten the eventId for the current lighting (lighting of the event which call the commands) by using a simple "=" instead of typing it id. This is the same as "leave the id blank for this event" in MZ plugin command.
Example: offset = 48 -48 60 will move this event lighting by right one block and up one block in one second.
A new better syntax for MV command are developed, which allow you to choose what settings to be changed. For below 1.8.2 you can see old command from the reference here:

Download the demo and see how the dynamic shadow work!
Link to demo download.
Currently working on further more optimize on PIXIJS renderer, instead of relaying on its batching renderer. So it would be best in performance for both MV and MZ.
You may not use this plugin for any commercial project. If you wanna do so, please inbox me though above e-mail, or DM me via this forum/discord (Shora#3835).
Change-logs:
Update v.1.1b (13/9/2021): First public beta version released for MZ!.
Update v.1.2b (15/9/2021):
- Now included MV versions!
- Add new parameters: Shadow Ambient and Top Block Ambient. These two color are default choice for all light that not specified this setting. Allow user to control their light shadow ambient color and the ambient color affect top-block. Included two new plugin command to change these but only take effect on the next map.
- The MV version now will be merged to the MZ version and share their development in one plugin file. MZ version have the higher priority though, because PIXI V5 have better optimization for this plugin. MV Demo is completely converted from MZ's one.
- Fix various bugs.
Update v.1.3b (4/11/2021):
- Change the code structure to handling save/load functionality (aka fix my past suckness). Thanks @Shiko for the feedback.
- Fix some bugs include @VaiJack8 report of fps drop when changing game variables each frame.
- Get the light layer to draw above the upper layer (everything), intended to use with parallax mapping, as suggest from @Decinbr. Still need tested though (I don't know how to do parallax mapping).
This is a small update since i came back to plugin coding after my personal issues, just fixing feedbacked bugs and adding suggested feature. I'm pretty dis-motivation now so i hope eveyone can give me more feedback and suggestion
I really appreciate that <3.
Update v.1.4b (1/10/2022):
- Re-written the shadow polygon optimization, which both fixed most weird lighting box when drawing unusual shadow shapes, and drastically reduce the shadow segments numbers by roughly 10% (which lead to faster performance).
- Re-organized the region id usage, counting from zero height so that mean now you can draw 0-height shadow caster block, or can be call as top-down-2D-block. You will need to increase the old region id by 1 though. Also now you can limited the region id block by a range instead of only start index like before (default is from 1 to 10).
- Introduce two more special block that can be specified its id (default is 50 and 51): top-roof block and ignore-shadows block. Top-roof block serve the purpose of draw top roof, which no light can be cast on it (useful when you drawing a gate, etc.) and ignore-shadow block will NOT let any shadow ray to be cast on it (can be use when you want to make the illusion of a wall that is higher than the light ray, which the shadow cannot cast to).
- Fixed some minor bugs.
Update v.1.5 (19/1/2022):
- Now preserve various parameters when the game is saved/loaded, i.e. map's ambient, light's status/offset/color. Will add more in the future.
- Add a new parameters to lighting: Status. Control the status allow you to turn on/off the light anywhere you want without need to removing/adding the light repeatedly.
- Add a new parameters to shadow: Offset. Give you control over the shadow source cast position. The shadow offset will be addition with the light offset, i.e. if you set the light offset to 48 and shadow offset to 4, then the shadow source will be calculated at 52.
- Fulfilled all the default parameters. Now you can easily install the plugin to your project without having weird bug cause by the blank parameters. Also add error throwing when you don't have the image file needed.
Update v.1.6 (27/1/2022):
- Now you can draw static lighting using plugin command/ script, by provide it light type and positions. Currently you can't modify, or even change it status, but in exchange it allow you to draw hundreds, or even thousands of static lighting on the map! Note: MV Version blending mode is NORMAL instead of ADD for technical reason (PIXIJS), and I'm gonna patch it in the future if needed.
- Added soft shadow customisation. Allow you to customize soft shadow status/strength/quality. The prefer strength/quality params is 2/1; 1/1; 1/2. All old previous version used 1/2.
- Added customizable color matrix filter to map, which allow you to higher the lights intensity and make lighting blend nicely into map. Currently only 'brightness' is visible in the plugin params, but you can use $shoraLayer.colorFilter to use all the other methods (see http://filters.pixijs.download/dev/demo/index.html)
- Change lighting registering phase. Now the new lighting type will be registered not only when you create a new game, but when the game boot up (Thanks to @Enigma_Productions).
- Fix a pretty serious memory leak when update from v1.4 to v1.5. Now it should work fine (test this by repeatingly switch between complex map).
- Fix some others minor bugs.
- Change all both demo's plugin command to use script call instead, for synchronizing easier. You can still use each's plugin commands normally.
Update v.1.7 + v.1.8 (8/2/2020):
- Performance:
+ Lighting layer now will can only be drawn to the map layer. By this, pictures are no longer affected by ambient lighting.
+ Soft shadow now use Kawase Blur instead, which much faster than the old Gaussian Blur.
+ Massive performance improvement by purely render mask texture instead of using filters. This also finally allow the radius and angle features to be added.
- Flexibility:
+ Light's state, shadow's state, radius and angle now can be both set in the plugin manager, in the comment syntax or update dynamically using plugin command/ script call.
+ Change the old comment syntax. The new syntax allow for more flexibility since you can choose whether properties to overwritten.
Example: [flashlight -angle 45 -radius 150 -x 12 -direction off]
Read more about available property in the Wiki. The old syntax ([light flashlight]) will still work, but give a warning in console. Please change to the new syntax. (Just change it to [flashlight] will work).
+ Entire plugin state can be dynamically enable/disable using script: $gameLighting.enable(), $gameLighting.disable(), $gameLighting.setPluginState(true / false).
+ Add helper parameters, which currently allow you to defined your color, and disable engine's shadow. By defined your custom color, you can quickly using the color by its name instead of it value, like [light -tint white] instead of [light -tint #ffffff].
+ You can now change the map ambient/shadow ambient/top block ambient from the map's notetags. Syntax is [ambient #333333], [shadowambient night], etc.
+ Temporary remove static lighting feature, to implement custom lighting in the next update. Custom lighting will behave the same as normal character's lighting (so you can still dynamically changes it settings), but with custom position.
- Quality?:
+ By setting radius/angle dynamically by plugin command (by tick similar to offset), you can easily create your own pulsating light/ cycling light. Repeatly changing light with shadow do impact performance, so useful to use this (don't use lots of shadow light continuously pulsating).
+ Moved both the light intensity filters and shadow soft filters to the [Advanced: Filters] section. You can dynamically turn those on/off/set it value.
Update v.1.2b (15/9/2021):
- Now included MV versions!
- Add new parameters: Shadow Ambient and Top Block Ambient. These two color are default choice for all light that not specified this setting. Allow user to control their light shadow ambient color and the ambient color affect top-block. Included two new plugin command to change these but only take effect on the next map.
- The MV version now will be merged to the MZ version and share their development in one plugin file. MZ version have the higher priority though, because PIXI V5 have better optimization for this plugin. MV Demo is completely converted from MZ's one.
- Fix various bugs.
Update v.1.3b (4/11/2021):
- Change the code structure to handling save/load functionality (aka fix my past suckness). Thanks @Shiko for the feedback.
- Fix some bugs include @VaiJack8 report of fps drop when changing game variables each frame.
- Get the light layer to draw above the upper layer (everything), intended to use with parallax mapping, as suggest from @Decinbr. Still need tested though (I don't know how to do parallax mapping).
This is a small update since i came back to plugin coding after my personal issues, just fixing feedbacked bugs and adding suggested feature. I'm pretty dis-motivation now so i hope eveyone can give me more feedback and suggestion
Update v.1.4b (1/10/2022):
- Re-written the shadow polygon optimization, which both fixed most weird lighting box when drawing unusual shadow shapes, and drastically reduce the shadow segments numbers by roughly 10% (which lead to faster performance).
- Re-organized the region id usage, counting from zero height so that mean now you can draw 0-height shadow caster block, or can be call as top-down-2D-block. You will need to increase the old region id by 1 though. Also now you can limited the region id block by a range instead of only start index like before (default is from 1 to 10).
- Introduce two more special block that can be specified its id (default is 50 and 51): top-roof block and ignore-shadows block. Top-roof block serve the purpose of draw top roof, which no light can be cast on it (useful when you drawing a gate, etc.) and ignore-shadow block will NOT let any shadow ray to be cast on it (can be use when you want to make the illusion of a wall that is higher than the light ray, which the shadow cannot cast to).
- Fixed some minor bugs.
Update v.1.5 (19/1/2022):
- Now preserve various parameters when the game is saved/loaded, i.e. map's ambient, light's status/offset/color. Will add more in the future.
- Add a new parameters to lighting: Status. Control the status allow you to turn on/off the light anywhere you want without need to removing/adding the light repeatedly.
- Add a new parameters to shadow: Offset. Give you control over the shadow source cast position. The shadow offset will be addition with the light offset, i.e. if you set the light offset to 48 and shadow offset to 4, then the shadow source will be calculated at 52.
- Fulfilled all the default parameters. Now you can easily install the plugin to your project without having weird bug cause by the blank parameters. Also add error throwing when you don't have the image file needed.
Update v.1.6 (27/1/2022):
- Now you can draw static lighting using plugin command/ script, by provide it light type and positions. Currently you can't modify, or even change it status, but in exchange it allow you to draw hundreds, or even thousands of static lighting on the map! Note: MV Version blending mode is NORMAL instead of ADD for technical reason (PIXIJS), and I'm gonna patch it in the future if needed.
- Added soft shadow customisation. Allow you to customize soft shadow status/strength/quality. The prefer strength/quality params is 2/1; 1/1; 1/2. All old previous version used 1/2.
- Added customizable color matrix filter to map, which allow you to higher the lights intensity and make lighting blend nicely into map. Currently only 'brightness' is visible in the plugin params, but you can use $shoraLayer.colorFilter to use all the other methods (see http://filters.pixijs.download/dev/demo/index.html)
- Change lighting registering phase. Now the new lighting type will be registered not only when you create a new game, but when the game boot up (Thanks to @Enigma_Productions).
- Fix a pretty serious memory leak when update from v1.4 to v1.5. Now it should work fine (test this by repeatingly switch between complex map).
- Fix some others minor bugs.
- Change all both demo's plugin command to use script call instead, for synchronizing easier. You can still use each's plugin commands normally.
Update v.1.7 + v.1.8 (8/2/2020):
- Performance:
+ Lighting layer now will can only be drawn to the map layer. By this, pictures are no longer affected by ambient lighting.
+ Soft shadow now use Kawase Blur instead, which much faster than the old Gaussian Blur.
+ Massive performance improvement by purely render mask texture instead of using filters. This also finally allow the radius and angle features to be added.
- Flexibility:
+ Light's state, shadow's state, radius and angle now can be both set in the plugin manager, in the comment syntax or update dynamically using plugin command/ script call.
+ Change the old comment syntax. The new syntax allow for more flexibility since you can choose whether properties to overwritten.
Example: [flashlight -angle 45 -radius 150 -x 12 -direction off]
Read more about available property in the Wiki. The old syntax ([light flashlight]) will still work, but give a warning in console. Please change to the new syntax. (Just change it to [flashlight] will work).
+ Entire plugin state can be dynamically enable/disable using script: $gameLighting.enable(), $gameLighting.disable(), $gameLighting.setPluginState(true / false).
+ Add helper parameters, which currently allow you to defined your color, and disable engine's shadow. By defined your custom color, you can quickly using the color by its name instead of it value, like [light -tint white] instead of [light -tint #ffffff].
+ You can now change the map ambient/shadow ambient/top block ambient from the map's notetags. Syntax is [ambient #333333], [shadowambient night], etc.
+ Temporary remove static lighting feature, to implement custom lighting in the next update. Custom lighting will behave the same as normal character's lighting (so you can still dynamically changes it settings), but with custom position.
- Quality?:
+ By setting radius/angle dynamically by plugin command (by tick similar to offset), you can easily create your own pulsating light/ cycling light. Repeatly changing light with shadow do impact performance, so useful to use this (don't use lots of shadow light continuously pulsating).
+ Moved both the light intensity filters and shadow soft filters to the [Advanced: Filters] section. You can dynamically turn those on/off/set it value.
Term of Use:
If you want to use this plugin with a free RPG Maker game, you can do it for free and there's no need to contact me. I only ask you to give credit to "Shora" or "Shora Lighting Plugin" somewhere in your game.
This plugin is NOT FREE for COMMERCIAL use. If you want to use it on a commercial title (any game that you may sell), you must pay a one-time $24.99 USD fee (via PayPal only: kieudung.c11212@gmail.com - please send me an e-mail/DMs). This license covers commercial use for your current and future projects, and it allows you to use all my plugins.
If you are the owner of the games, you can freely use it after buying the license. However if you just participate in the production of the game, not fully owning the game, you must contact me for authorization. This is to limit those from one person buying the license and fake-participate in many others game of other developers to avoid license problem.
Please note that this plugin is provided “as is”, without warranty of any kind. You are responsible for testing it and checking if it’s compatible with your game. In no event shall the author of this plugin be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.
This plugin is NOT FREE for COMMERCIAL use. If you want to use it on a commercial title (any game that you may sell), you must pay a one-time $24.99 USD fee (via PayPal only: kieudung.c11212@gmail.com - please send me an e-mail/DMs). This license covers commercial use for your current and future projects, and it allows you to use all my plugins.
If you are the owner of the games, you can freely use it after buying the license. However if you just participate in the production of the game, not fully owning the game, you must contact me for authorization. This is to limit those from one person buying the license and fake-participate in many others game of other developers to avoid license problem.
Please note that this plugin is provided “as is”, without warranty of any kind. You are responsible for testing it and checking if it’s compatible with your game. In no event shall the author of this plugin be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.
If you want to support me, I would suggest using PayPal instead of itch.io
Attachments
Last edited: