• Owl@mander.xyz
    link
    fedilink
    arrow-up
    19
    arrow-down
    1
    ·
    2 days ago

    Lua is great

    People hate on it because they are too psychorigid to switch to lists starting from 1

  • Owl@mander.xyz
    link
    fedilink
    arrow-up
    14
    ·
    2 days ago

    The comments under this post should be pinned on lua.org. They’re the greatest advertisement for the language

      • sp3ctr4l@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        12
        ·
        edit-2
        3 days ago

        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.

  • vala@lemmy.world
    link
    fedilink
    arrow-up
    48
    ·
    3 days ago

    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.

    • sp3ctr4l@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      13
      arrow-down
      1
      ·
      edit-2
      3 days ago

      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.

      • Drew@sopuli.xyz
        link
        fedilink
        arrow-up
        8
        ·
        2 days ago

        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)

        • sp3ctr4l@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          2 days ago

          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.

  • Omega@discuss.online
    link
    fedilink
    arrow-up
    14
    ·
    2 days ago

    Lua is actually a really decent language to work with, and it’s pretty fast too, can compile it to executables, I think it’s great