DAE's Lighting System with Optimised Real-Time Shadows and Animated Lights

DaedraTalos

Evil Plugin Overlord
Veteran
Joined
Jul 8, 2016
Messages
168
Reaction score
156
First Language
English
Primarily Uses
RMMZ
14nIM46XMS.gifRaG0yLpHmU.gifeJDOU3AKhe.gifrQolCzQ6pk.gif
What's been added since the plugin was first released:
- Spritesheet animations for lighting
- Custom animation settings for lighting (animated lights without using images)
- Light culling and various optimisations
- PNG-based lights + settings-based lights
- Custom directional offsets (for flashlights and such)
- Light rotations and angle wideness

(The help file has more detailed instructions, make sure to check it out!)


1631700969089.png
1631700985530.png
1631701000035.png
1631701020433.png
1631701036742.png


Download DEMO (non-commercial) project: https://daedrakyne.itch.io/daes-lighting-system
Buy PRO version (commercial-version):
  1. If you want to support me, send me £10 ($13.85) via PayPal and send me a PM with a screenshot to confirm your payment, and once the payment is confirmed, I'll send you the plugin and add your forums account to the list of paying users (to send you future updates of the plugin): https://paypal.me/SModley?locale.x=en_GB

  2. Otherwise, buy the £15 ($20.78) version on itch.io (you instantly get access to the plugin and future updates, but I only get 50~65% of your payment): https://daedrakyne.itch.io/daes-lighting-system

Hey there! :kaojoy:
I've been working for a while now on a new lighting plugin for both MV and MZ.
My reason for starting down this road was due to this post from about a month ago:

I've researched the most efficient 2D-RTS lighting systems, and have decided to base mine on a pure-hardware (GPU) implementation.
In its current state, without culling (meaning that for now every light in the scene is being rendered/updated, regardless of whether it's even on the screen or not), the game can handle ~650 lights (with shadows) in one scene without its fps dropping.

If you could try it out, and leave your thoughts down in a reply below, I would really appreciate it! My goal is to make a plugin that is more diverse than khas' while still being as optimized as possible.

Plugin commands (MV) (no need for MZ plugin command instructions):
  • dae_light setambientlight r g b
    • Sets the current ambient light to the specified color.
    • r, g and b are numbers from 0 to 255 that represent an rgb color.
    • Example: dae_light setambientlight 0 20 0
  • THE REST OF THE PLUGIN COMMANDS ARE THE SAME AS THE EVENT COMMENTS, BUT WITHOUT "[" AND "]"


Event comments (run whenever event page changes):
  • [dae_light addlight uniqueID type]
    • Adds a new light and sets its position to that of the event. Light will follow the event wherever it goes
    • uniqueID can be either "null" or any word (letters, numbers and underscore). If set to null, the light will not be stored as a unique light (meaning that it won't be designable by other commands / comments)
    • type must be one of the light types from the plugin parameters. For example, "halogen". New light types can be created in the plugin parameters.
    • Example: [dae_light addlight halo2 halogen]
  • [dae_light setoffset uniqueID offsetX offsetY]
    • Sets a manual offset for the designed light, if it exists.
    • offsetX and offsetY are numbers.
    • Example: [dae_light setoffset halo2 0 24]
  • [dae_light setcolor uniqueID R G B]
    • Sets the color of the light
    • R, G and B are numbers between 0 and 255
    • Example: [dae_light setcolor uniqueID 255 0 255] (pink)
  • [dae_light setrotation uniqueID rotation]
    • Sets the rotation of the light
    • Rotation is an angle between 0 and 360
  • [dae_light setangle uniqueID angle]
    • Sets the angle wideness of the light.
    • Angle is between 0 (no light) and 360 (full light)
    • Example: an angle of 180 will create a semi-circle light
  • [dae_light setintensity uniqueID intensity]
    • Sets the intensity of the light.
    • Intensity is between 0 (no light) to 200 (bright light).
    • For some reason, the MZ plugin can't handle a single intense light, but works fine with multiple lights added together. Until this is fixed, you can overlap multiple lights together to create a bright light.
  • [dae_light setrotation/f uniqueID rotation]
    • Sets how much the light rotates every frame.
    • Rotation is any number, negative or positive, and with decimals allowed.
Map notes:
  • <dae_light off> -- Disables lighting for that map
  • <dae_light shadowpicture picture_name> -- Uses the given picture as a shadow map for that map. The picture must be in the "img/shadows/" folder.
    • Example: <dae_light shadowpicture shopping_map_shadow>
    • Shadow maps can be easily created by saving a picture of a map (right-click on map -> save), going to a picture editor (I used piskelapp.com), and drawing black in a new layer wherever you want shadows to be.

There is no current customization for RegionIDs (it is easily implementable, just wanted to get the demo out first), but you can currently use the regionID 17 to create a blue light, and regionIDs 4, 6 and 7 to create shadows. (4: full block shadow, 6: left wall shadow, 7: right wall shadow)


Changelog:


  • v 1.5
    1. Added support for light spritesheet animations.
    2. Added support for light custom animations (settings-based)
    3. Implemented customisability for Region Shadows and Region Lights.
    4. Implemented various performance optimisations.
    5. Implemented basic light-culling.
  • v1.3
    1. Added support for custom images for lights! (like khas' plugin)
    2. Added customisability support for custom-image lights (resizing, color tinting, + everything else)
    3. Added direction-based custom offset option for lights, useful when making flashlights
    4. Added plugin command for ambient light
  • v1.2
    1. In-game light modifications (color, intensity, rotation, angle, rotation/f, offset)
    2. Automatic offset change depending on the rotation of the light
    3. Automatic light rotations (rotating lights!!), with customizable speeds
    4. Light angle/wideness customization: you can now create flashlights, and beams!

Current goals for the next version:
- light / shadow heights
- event shadows (you heard that right! events will be able to have shadows too)
 
Last edited:

Passingbyposts

Veteran
Veteran
Joined
Sep 12, 2016
Messages
105
Reaction score
64
First Language
English
Primarily Uses
If i wasnt so in bed with community lighting i'd definetly give this a go looks great :)
 

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
3,289
Reaction score
760
First Language
English
Primarily Uses
RMVXA
Definitely going to grab this when you have all the added features resolved.
Or maybe later. Not in a rush to start making on MZ yet. But do love this.
I missed out on the opportunity to get Khas's MV plugin, but then MZ came out.
Thank you for this.
 

DaedraTalos

Evil Plugin Overlord
Veteran
Joined
Jul 8, 2016
Messages
168
Reaction score
156
First Language
English
Primarily Uses
RMMZ
Definitely going to grab this when you have all the added features resolved.
Or maybe later. Not in a rush to start making on MZ yet. But do love this.
I missed out on the opportunity to get Khas's MV plugin, but then MZ came out.
Thank you for this.
The MV version is up-to=date too, if you're using MV ^^
As for the features, no worries, I'm taking a small break from development to see how well this plugin does and will continue work on it shortly once it has gathered enough attention :) Next up will be multi-layered lights/shadows, multi-type shadows and event shadows
 

DaedraTalos

Evil Plugin Overlord
Veteran
Joined
Jul 8, 2016
Messages
168
Reaction score
156
First Language
English
Primarily Uses
RMMZ
MZ: fixed a bug where the lights would "pop into existence" when first appearing on screen
 

Fndisme

Villager
Member
Joined
Apr 5, 2021
Messages
6
Reaction score
3
First Language
Chinese
Primarily Uses
RMMZ
It looks good!
 

Latest Threads

Latest Posts

Latest Profile Posts

About the Deer, I had to cut some piece of video due the *swearing* Youtube copyrights issues...
A caveman pokes his head in...
I was listening to songs by Chuck E Cheese's voice actor (Jaret Reddick from Bowling for Soup) when the meds I was taking for my stomach virus apparently stopped working. I can't take my next dose until morning, but it's no use anyway. I'm officially sick again. Of course, I'll definitely take the next dose either way, but it's useless now.
New profile picture! This time, it's representative of my current project.
I suddenly feel like making a game for little kids: a pointless sandbox of cute animals, silly collectibles, and random mini games.

Forum statistics

Threads
116,003
Messages
1,094,813
Members
151,306
Latest member
rpgLord69
Top