Unnamed 2D Platformer & Dynamic Lighting

(This project is under development!)

Between early Summer and late Fall of 2018, I had started work on another 2D project in Unity. This time, however, my aim was to polish my 2D character controller and simple physics skills with a controller that had a rich feature set - wall sliding and jumping, grabbing ledges of dynamic and rotating platforms, variable gravity direction, and rolling my own 2D physics and collisions yet again. Unlike implementing Mega Man, however, this collision system was built to handle slopes and a myriad of other things. I am not a master of these kinds of things, in fact I would say my knowledge of physics and collisions is lackluster, but I never say no to a challenge.

Fast-forward a month, and my prototype level is finished. The player could do everything I had wanted them to do, and covered all kinds of crazy edge cases (not everything, but about 95% of it all). As I started blocking out a first level and making prototype art, I realized something I was missing - 2D lighting. Unity does not come with 2D dynamic lighting. You could fake 2D with a 3D ortho view and paper-thin game objects on the X/Y or X/Z planes, but I didn’t want to settle for workarounds. I wanted proper 2D dynamic lights.

After whipping out my wallet and purchasing an asset, 2DDL, only to find that I didn’t quite like its performance (damn, there goes that money), I stumbled upon this Gamasutra post about 2D lighting in Unity using 1D shadow mapping. Intrigued, I opened up the reference project zip and was greeted with a scene lit up by 64 dynamic, rotating lights and a rock solid framerate. Now we’re in business!

Admittedly, I had taken what was implemented by the author, Rob Ware, instead of implementing their article by hand, but I also worked on improving the system and learning a ton in the process. The project, for instance, showcases 2D lighting in Unity, but it didn’t do anything with shadowing. The next few months for me were spent diving into shaders and learning a lot about blend modes, and figuring out how a stealth game in this sort of system would be implemented. During the process, I had also implemented a form of normal mapping for the lighting system, so 2D lighting would be more interesting with things that are using normal maps!

This is where the discussion on this game ends, as this is the most of what I would like this game shown publically to be. I am going to be working on this game, with plans to eventually sell it under an alias, and so I would like to keep its development under wraps. At least, that’s the plan with this one. Solo game dev projects never really work out, though, so we’ll see what happens.