In my opinion, the lack of variables and arithmetic is something you can work around. Puzzle games that actually involve numbers in the design are difficult or impossible to make, but then... there's lots of games like Sokoban or Chip's Challenge that aren't affected by that. Sure, it limits the design space, but so do things like having to use square grids, or 5x5 images. It's exactly like making a game for a game jam; the limitations inspire you in new ways.
What bugs me is the need to repeat yourself in the code. A lot.
There's lots of ways in different languages to stick by the
Don't Repeat Yourself Principle. Copy-pasted blocks of code can be made into functions, defined once and then called multiple times. Slight differences between the copy-pasted blocks become parameters in the function call, usually emphasising important parts and explaining why the structure is the way it is. Or object-orientation that lets you call a Drawable.redraw() function without needing to worry whether you're drawing a simple circle or a bitmap image or something that won't be added to the code until years later. Whatever it is, you redrew it. No need to account for special cases every time you call the function.
Puzzlescript isn't good at that. There's no functions. There's object properties, but they're limited in what they can do. You can't, for example, have an object that can face in four different directions. You have four different objects, and where it's convenient you use an object property to unify them, but any time you have to depend on the direction it's facing, you need four copies of the code. No way to avoid repetition. Adding a way to specify objects as "facing in a direction" has been suggested, but I don't think that addresses the underlying problem.
For an example of what I'm talking about, look at the source of
Beam Islands. There's sections of code like this:
[ BgNW1 Animate ] -> [ BgNW2 ]
[ BgNE1 Animate ] -> [ BgNE2 ]
[ BgSW1 Animate ] -> [ BgSW2 ]
[ BgSE1 Animate ] -> [ BgSE2 ]
[ BgNW2 Animate ] -> [ BgNW3 ]
[ BgNE2 Animate ] -> [ BgNE3 ]
[ BgSW2 Animate ] -> [ BgSW3 ]
[ BgSE2 Animate ] -> [ BgSE3 ]
[ BgNW3 Animate ] -> [ BgNW4 ]
[ BgNE3 Animate ] -> [ BgNE4 ]
[ BgSW3 Animate ] -> [ BgSW4 ]
[ BgSE3 Animate ] -> [ BgSE4 ]
[ BgNW4 Animate ] -> [ BgNW1 ]
[ BgNE4 Animate ] -> [ BgNE1 ]
[ BgSW4 Animate ] -> [ BgSW1 ]
[ BgSE4 Animate ] -> [ BgSE1 ]
, which really should be a one- or two-liner. It's just an animation loop. In Game Maker, this would be done with
image_index += 1;, and other frameworks have something similar. But Puzzlescript has no way to specify an asymmetric relationship like "is the next animation frame" between two objects*, so we're forced to do structures like this. And there are many other repeated sections of code in Beam Islands, and similar games. It's a recipe for debugging nightmares.
Now, this only comes up with games above a certain complexity. And you can do a lot in Puzzlescript with not much; Sokoban with one line of rules code is amazing. Puzzlescript is excellent for prototyping simple games, with a small number of objects and behaviours, where the complexity arises from the interaction between them. The reason that complex games are difficult to write is the same reason that, for a while, they were impossible to write. I'm referring to the old limit of 32 objects and 6 layers. That limit came about because Stephen never thought anyone would seriously need to use that many objects.
And the reason for that is that Puzzlescript was not meant for complex programming.
Games with simple programming, it excels at. A game like Love and Pieces can be made playable in five minutes flat, and only needs the graphics and the level design after that (which doesn't take much longer). And that's amazing; I've never seen anything like it. Puzzlescript is simply a victim of its own success; people like using it so much that they use it for more and more advanced things. Things which it was not intended to do, not designed to do.
Anyway, I'm happy to participate in your interviews. I'm Christopher Wells, I made Singleton Traffic and It Dies In The Light and some other stuff that I haven't posted here.
*Note to self: This idea has potential. Get the Puzzlescript source and see if you can implement it.