Dev - Also, on form submission, use GD to resize the image as a new thumbnail file
Dev - In the submission form, you can now upload a banner image
Left arrow : Previous effect.
Right Arrow : Next effect.
Up Arrow : Increase ambient light.
Down Arrow : Decrease ambient light.
<b>Simple because :</b>
All you need to do to create a light is set its parent object to tmpLightSource. Then all manipulation of the light is the same as any other object. image_angle, image_xscale, and so on are applied as they would be normally, with the exception of image_alpha, which can't be used due to the way subtractive drawing works. This can be easily overcome through smart use of image_blend, as demonstrated with the heart shaped lights. Since essentially any object (you must be careful with custom draw events) can be made into a light with this method, any sprite can be used just as easily, including animated sprites. Ambient lighting is also covered in an easy manner. Simply set global.ambientLight to the color you want, and it's done. This allows for easy day/night cycles.
<b>High speed because :</b>
Since lights are represented by simple objects (which require no script) and are handled in only a few lines of code in the controlling object (the inner loop is only one statement), execution is fast. The difference in speed caused by each additional light is minimal. On my laptop (with only on-board video), it took nearly 350 lights (using the first effect) before my framerate dropped below 60.
<b>Files included :</b>
An example demonstrating actual use of the engine, and a version of the file stripped down to just the engine, so as to be easily importable (via File > Merge Game). It really comes down to two resonably simple objects. One of which is simply a parent object for any lights you create.
<b>My thoughts :</b>
Lighting in GM does <i>not</i> have to be complicated. I've seen many lighting engines floating around and most of them are much more complicated (and therefore slower) than they need to be. Unless you need special effects like glare for lights that are too bright, something as simple as this should be fine, and will run much faster than most engines, simply because it does less work. and makes the built in functionality of GM do as much of that work as possible. Remember... GML is slow. ^_^
1.1 : Fixed problem with deleting lights.