Well, and then there’s the guy who made Balatro in Lua.
Using the love2D framework if not wrong
Yup! If you have it on steam you can unzip the exe and take a peak at his code.
This was the method people used to get Balatro running on mobile before. Extract the Lua code and then package it using LÖVE for Android/iOS
World of Warcraft plugins and Awesome WM configs. There are some decent 2d game engines that use Lua too, like Love2d!
I’ll add DCS World modders, thank you to the heroes who brave Lua and the DCS API to bring us obscure planes and helicopters!
Don’t forget Gmod modders!
Glua is bizzaro world Lua though.
It was so, so, so much worse back in the early days when the FacePunch forums still… existed.
Probably a majority of forum posts, for years, were people screaming at Garry for making posts that just said something like ‘its obvious how this function works, I don’t need to explain it’, and then oops turns out he did it wrong, new gamebreaking bug / exploit exists for 3 weeks, the first week of which was random forum people telling Garry he did it wrong and him temp or perma banning them.
That or he would very often just rewrite entire core function libraries, make a tiny 8 word bullet point about it in an avalanche of a changelog, and then say something like, ‘shouldn’t break existing code’, and then well, it would completely break existing game mode code, and then 80% of the most played custom game modes would be broken for a month or more while Garry just either ignored everyone, or told them he didn’t care.
…
Also, Roblox just is Gmod in many ways, but with a highly manipulative monetization model built in.
All the Gmod RP servers would paygate player roles and content and such offsite, outside of the game, setup a webpage or forum that worked as an ecommerce site, run a dedi db and then API connect that into Gmod… Roblox is all of that, but self contained, and with a lot more lawyers on hand to prevent monetization outside of the game itself.
Gmod is the first thing I think of when I hear Lua.
To me, Lua will always be the WoW plugin language.
Lua is a super underrated language. The standard implementation is under 500kb and it can run almost anywhere. Including inside other programs and on embedded systems that dont even have an OS.
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.
I don’t think luajit compiles lua to C and then compiles the C, that would be pretty silly. JIT compilers directly output machine code.
And as long as you can do something in a higher level language there’s no need to involve manual memory management or tracking ownership (rust)
Ah, I used ‘compiled to C’ as a clumsy phrase, that was incorrect to say, lol.
Whats actually going on… its a bit complicated.
On the one hand, you can directly write C code and call C functions in a Lua script, basically encapsulated inside the Foreign Function Call Interface… and that would mean you are writing Lua code, that has C code in it… thus arguably, you are passing Lua to C, runtime compiling that C, and then running that compiled bit of C code is running as machine code, but the rest of the Lua code is running as Lua, which is compiled into machine code.
On the other hand, LuaJIT basically does a series of analysis passes on your Lua code, and if it finds functions or chains of functions that are called very frequently, or functions that are computationally costly, slow, it will compile those bits directly into machine code… but the actual code that directs that process is itself written in C.
…
The point I am trying to get at here is that sometimes it makes more sense to write code that needs to be more highly performant via the use of a more performant, compiled language…
LuaJIT handles that by just doing it for you ‘automagically’…
But you may be able to get even better runtime performance if you rearchitect a bit by taking all that stuff that LuaJIT is highlighting for optimization, and just actually permanently writing that stuff in C, C++ or Rust.
Or, maybe LuaJIT is ‘good enough’, and makes for less workload, simplifies development.
…
I threw Rust in there because it seems to generally be almost, but not quite as fast as C++ / C in runtime… but is also much less daunting and confusing for a less experienced coder to learn how to use.
Lua is extremely human readable, C and C++, a good deal more complicated… Rust is more human readable and easier to learn than C/C++, and also essentially has training wheels on for memory management problems that would be extremely frustrating for someone like a novice game coder that is trying to transition from say Lua or Python, into a lower level, compiled language.
Lua can be pretty fast, but not Lua itself but Luau runtimes or LuaJIT
I disagree. Those are faster but the standard lua implementation is actually super fast.
Dont forget OpenComputers users! Theres gotta be five of us by now.
Including the people that only used computercraft?
There are dozens of us! Dozens!!!
I was sick and tired of not having full remote storage access after losing logistics pipes, we had refined storage and a computercraft peripheral mod for it so I wrote a server and client for remotely requesting items to be delivered via ender chest using the computer craft ipads and the computercraft internet. You’d type in a search query and it would display the top 10 items in the network containing that query and how many there were, then you’d pick the one you wanted from that list by entering its index, then you’d enter the quantity
You made your own Applied Energistics 2 lol
Yea, I really really can’t stand ae2 but I also didn’t have control over the mods anyway
There are dozens of us. Dozens!
(I am trying to set up an mail system on my server using modems and am suffering help)
Six!
luanti mod dev?
Hey, there’s the one I was looking for!
That’s what I thought too!
:)
Löve2D gets zero löve :(
Lua doesn’t do zero, in case its users find the concept confusing
Ok
deleted by creator
You forgot computercraft players
My turtles eat worlds!
The one time I used lua was to make a casino in Minecraft with the ComputerCraft mod like, over a decade ago. I enjoyed it. Even as a young lad I didn’t like index from 1, though
Computercraft enjoyers
Factorio mod dev?
Literally every game modding community ever:
Except the poor people stuck with C# when modding unity games.
and PICO-8 devs!