Hello Andrew. This is a great game! I'm so impressed. I'm a fan of yours for you YouTube rustlang content, I'm curious if you code this game with Rust! Looking forward to see another rust addition on your channel :).
Thank you so much! I initially started with the idea of the logic part of this game in Rust but I got sidetracked and ended up doing it all in JS/Typescript. I have been thinking of making a video showing sort of the flow of developing this game. From building the game logic, level editor, art, sound and world map shader. Although not Rust, the ideas are transferable.
The undo system uses a cool library immer.js which gave undoing for free after a bit of setup.
I am also interested in writing Rust plugins for game dev tools like Unity. However need to advance my Unity skills a little more :P
Speaking of undo, one neat feature of Puzzlescript is that the undo stack includes level restarts. I don't know if it's possible in your particular implementation, but it's more useful than you'd think, as the restart can have a tendency to clarify where your previous attempt went wrong when you're getting close to a solution.
I did not include restarting in the undo stack although that would have been really useful (an oversight). I used the PuzzleScript documentation as a reference for the implementation of game logic. The Riko engine allows chain reactions of rules to happen like in PuzzleScript, but we cut any of the chain reaction elements out of the final game as it didn't add anything to the puzzles.
i.e. We had an explosive that would damage tiles on either side that you could arrange. I liked it cause it was cool, and could wreck your large blocks, but it didn't add anything.
Thanks for letting me know about the undo restart. Come to think of it, Stephen's Sausage Roll also keeps restart in undo stack!