I have the same opinion since starting from Pico8 (Lua) and then trying to expand beyond it into larger projects. Lua was surprisingly worse than early Javascript and even more barebones.
The weird amount of hype for Lua is probably due to the great projects in spite of it, like LOVE and Pico8, and the fact that Lua never makes it very far past weekend hobby state for most people so there's never any real counterbalancing force of people fed up with it.
It's a combo of two things for me, the tooling usually sucks and you have to get over the hump of learning the ins and outs of the language and the platform you are using it on.
Good tooling helps with the explorability so JS is manageable because you can runtime inspect what the heck is going on. The Chrome debugger is excellent for example. Most Lua game engines provide basically zero debugging beyond runtime errors and console output. Which makes exploring tedious.
Then learning a platform and the ins and outs of a language is much quicker in a statically typed language. Not only because the editor is much more empowered so you can explore the codebase statically but with a compilation step you also get a quicker feedback cycle for a lot of common errors. I found JS extremely tedious dealing with runtime errors with typos. TS basically makes that impossible.
I think that's why PICO-8 feels like a sweet spot for Lua because the platform is so small it's quick and easy to learn. And the code size restriction stop you from making anything complex enough to benefit too much from static typing. I still hate runtime errors for silly mistakes that would have been trivially caught.
I also tried to do some in Lua and found it unfit for my programming style...
Last project that needed game engine like things I picked Kotlin with libGDX/KDX. Reasonably quick builds, reasonably strong typing, performs well enough and x-platform enough.
Or for the people who do make it past weekend hobby state, they simply like it a lot, like me. I think Lua is a perfect language in many ways but you have to have the right mindset about it. If you're bothered by doing things yourself and you just want to get things done without defining your own structures, libraries, etc, then the language is just not for you and you're better off using something else.
From time to time a larger project emerges - Driver San Francisco has all of its gameplay logic done in Lua. But yes, one project is more like an exception to the rule.
Lua is popular for games because it’s so small, focused, flexible and very easy to embed, not because the core language is so great. The Lua core language really is as bare bones as it gets but that’s by design, because of its simplicity and good design it is very amenable to extend it to be exactly what it needs to be for your application and nothing else.
I would probably never write a standalone game in pure Lua because that’s not what it is intended for, it’s strength is easy embedding in a host application that does the heavy lifting, low-level stuff and provides the new primitives and functions for the application-specific parts of the code that runs in Lua. Other languages may be better in terms of language feature and tooling but none of these come close to the easy of use for embedded scripting.
Well, it's nice for writing short pieces of logic etc. (or for example lua nginx etc). It's super nice for a quick iteration, as the host (game engine or whatever) can quickly reload.
I've written a few commercial games in lua (corona, and others), and it must be me, but my code becomes a nightmare to maintain at a certain point.
The weird amount of hype for Lua is probably due to the great projects in spite of it, like LOVE and Pico8, and the fact that Lua never makes it very far past weekend hobby state for most people so there's never any real counterbalancing force of people fed up with it.