It is great for scripting things that do not need to run exceedingly fast, or are not exceptionally complex.
2D games? UI? Absolutely.
Even many subsystems of 3D games can be handled decently well. Procedurally populate a map with items, or generate some NPC populations or weapons or items based on mixxing and matching a bunch of preset components, throw some kind of event tracking and event driven system on top of already existing systems to give your world more depth and breadth.
But by the time you get to… trying to do an entire 3d render pipeline for graphics more complicated than roughly an N64 or PS1, all of your netcode in a conplex and fast paced game, an entire dynamic 3D physics engine with many active objects… try to to that in Lua, you’re probably not gonna have a good time.
At that point, as the Open MW devs have shown… you can technically stilluse Lua to do this, but you’ve gotta be running your Lua through LuaJIT, that essentially compiles the parts of the Lua code that need that speed into C, and then run it in C.
At that point, it arguably makes more sense to just… take those parts of the code and just actually, always, run them in C or C++ or Rust or something.
… But after saying all that, I do not mean to take away from what you are saying, which is that Lua is extremely flexble and absolutely does have a wealth of legitimate uses cases.
It is great for scripting things that do not need to run exceedingly fast, or are not exceptionally complex.
2D games? UI? Absolutely.
Even many subsystems of 3D games can be handled decently well. Procedurally populate a map with items, or generate some NPC populations or weapons or items based on mixxing and matching a bunch of preset components, throw some kind of event tracking and event driven system on top of already existing systems to give your world more depth and breadth.
But by the time you get to… trying to do an entire 3d render pipeline for graphics more complicated than roughly an N64 or PS1, all of your netcode in a conplex and fast paced game, an entire dynamic 3D physics engine with many active objects… try to to that in Lua, you’re probably not gonna have a good time.
At that point, as the Open MW devs have shown… you can technically stilluse Lua to do this, but you’ve gotta be running your Lua through LuaJIT, that essentially compiles the parts of the Lua code that need that speed into C, and then run it in C.
At that point, it arguably makes more sense to just… take those parts of the code and just actually, always, run them in C or C++ or Rust or something.
… But after saying all that, I do not mean to take away from what you are saying, which is that Lua is extremely flexble and absolutely does have a wealth of legitimate uses cases.