Light Speed

by FIREking
The fastest lighting system for BYOND
ID:1259367
 
Light Speed is the fastest lighting system for BYOND!

Light Speed is ready for use in online games! Give it a try!

Version 12
-Fixed a bug where a light loc's contents were checked for angles (which would result in infinite width).

Version 11
-added Angular Shadow Casting as provided by D4RK3 54B3R which has sped this library up by 20x!

Version 10
-added back in a missing file for the lighting generator

Version 9
-Fixed a huge bug where shading objects would never re-init when new turfs were placed
-Added tutorial to create your own lighting icon
-Added a few more null checks now that shading objects are more dynamic (can be removed at run time)
-Changed initializing to a background = 1 process so if your map is bigger than 524,288 tiles, it won't cause an infinite loop detection

Version 8
-optimized a few things
-added cpu throttling to ignore light rendering when server is too busy

Version 7
-Added a missing file

Version 6
-improved garbage collection even more
-made minor tweaks, cleaned up some stuff
-added some interesting debugging stuff

Version 5
-improved garbage collection of light objects
-changed some parameters in the demo to make it more online friendly from the get go
-improved client light seeking

Version 4
-moved light seeking to the client, instead of a mob, so mob switching can occur
-fixed a lights_awake reference counter problem in debugging

Version 3
-fixed an issue with updating shadow calculations when turfs are placed at run-time... only lights that were visible were affected as opposed to updating lights in which the turf could possibly affect
This is great. Thank you! :)
I love this, though I can't seem to work out how I would make the shading darker.
In response to Danny Roe
Danny Roe wrote:
I love this, though I can't seem to work out how I would make the shading darker.

Very simple, go to !lighting.dm, set the LIGHTING_GENERATOR to 1 in the green macro, then set darkest to 255, then hit compile and run, it will generate a new icon for you to use, and when it is finished, it will let you save the icon. Now go back in and change the LIGHTING_GENERATOR to 0, and update your LIGHTING_ICON to use the new file you saved. Hit compile and run again! Done!
Ah I see, I was on the right track but didn't notice the percentage counter. It looks great, I'm eager to try this out in a little mini-project.
When running the demo, if you click "kill all lights", you can't turn yours back on and if you try to use + or - you get a cannot change null.intensity runtime error.

Other than that, this looks great.
In response to Albro1
Albro1 wrote:
When running the demo, if you click "kill all lights", you can't turn yours back on and if you try to use + or - you get a cannot change null.intensity runtime error.

Other than that, this looks great.

yeah slight over-sight on my behalf, its more of a debug tool than anything else. it really does kill all lights and the + and - just forgets to check if light is there.
In response to Albro1
Then it wouldn't be 'killing' the lights, if they were still alive.
In response to NNAAAAHH
I'm going to stick with the hope that you don't actually believe "kill the lights" means to make them unable to come back.
In response to Albro1
Ah, Albro1, 'tis but a joke, my dear friend.
FYI you need to create a _blank.dmi for the latest version to generate lights
Also, after creating this _blank file there is no lighting states created. The file that comes out is empty.
put an icon_state in it called "blank"
Just a random question I thought of while I was away from my computer: Could this be used to create a permanent (But changing) source of light on all objects? So you could simulate a sun that changes it's position in the sky periodically, making everything cast a shadow in a certain direction?
In response to Albro1
Albro1 wrote:
Just a random question I thought of while I was away from my computer: Could this be used to create a permanent (But changing) source of light on all objects? So you could simulate a sun that changes it's position in the sky periodically, making everything cast a shadow in a certain direction?

As is, no. But with some work, yes you could definitely make that happen. Fundamentally, the shading is very fast. So its just all about the math at that point.
How about grabbing all atoms within an atom's light? Lol
In response to Albro1
Albro1 wrote:
How about grabbing all atoms within an atom's light? Lol

That's just range(src, radius)
o lol XD
What is the difference between this library and Forum_accounts?