Lights Out is an old game with lots of versions available differentiated mostly by graphics, quality of life features, and how many levels the game has coded in.
My take on the game is slightly different.
In Lights Out the objective is to, you guessed it, turn off all the lights. I took a slightly different approach and made it like a more traditional puzzle. Instead of simply turning all the lights off the objective is to change a starting pattern to match an ending pattern. For instance turning an X on the grid in to a box around the edges (I don’t know if that example is even possible I simply use it as an easy to explain example). This can change the thinking on solving the puzzle quite a bit.
To that end I created another tool inside the game, a level editor. This editor allows the user to freely set up a start state before having them use the normal game rules to set up the end state. This ensures that any puzzle created by the editor is solvable. As for sharing these levels… I am currently working on that.
I also have a few ideas on creating procedurally generated levels using a similar method to the level editor.