• gamer@lemm.ee
    link
    fedilink
    English
    arrow-up
    8
    ·
    7 hours ago

    Imma be the guy and drop an ackshually

    • Nothing about Lua would make it difficult to implement a physics engine in it compared to other languages
    • The hardest part would be integrating with Morrowind’s systems. If the engine doesn’t expose e.g. collision geometry to scripts in an efficient way, then you’ll run into some real challenges
    • Even without LuaJIT, there’s no reason to expect performance so bad you can’t implement realtime rigid body physics. Interpreted Lua is fast, but even if it wasn’t, a 60 fps performance target for physics is not tough to achieve at all
    • sp3ctr4l@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      4 hours ago

      Nothing about Lua would make it difficult to implement a physics engine in it compared to other languages.

      Correct, but said implementation will be orders of magnitude slower than implementing at a lower level… meaning you cannot handle lots of objects, you can only handle a few, and only with a few players if this is all networked… otherwise you get massive physics calculation innacuracy, terrible performance spikes, crashes, and if networked, server hangs/stalls, huge desync, etc.

      The hardest part would be integrating with Morrowind’s systems. If the engine doesn’t expose e.g. collision geometry to scripts in an efficient way, then you’ll run into some real challenges.

      I mean… that is true, that having to emulate collision meshes/hulls would be less efficient that just actually having direct access to them… but that would be the case with any language, and Lua is still much slower at any real time collision mesh/hull emulation than doing the same in a lower level language.

      Even without LuaJIT, there’s no reason to expect performance so bad you can’t implement realtime rigid body physics. Interpreted Lua is fast, but even if it wasn’t, a 60 fps performance target for physics is not tough to achieve at all.

      You say that, but I’ve never seen it done well in a way that can scale for many tens or hundreds or thousands of 3D physics calls in a complex single player scenario, or a multiplayer scenario where you now also have to account for networked synchronization.

      Not saying its impossible, just saying it… I’ve never seen anyone pull off an efficient and accurate 3D physics engine in Lua, untill now with this LuaJIT implementation.

      If you can show me a high performance 3d physics engine written entirely in interpreted Lua, well please do show me, and share with the class.

      My guess would be that it would be constrained to either specific physics scenarios, as in, wouldn’t have as full a realistic physics feature set… wouldn’t handle well a lot of simultaneous intersctions… but I’m open to being surprised.

      Like uh, Godot’s Jolt physics are written in C++…

      …and while this used to basically be an addon, that was better than Godot’s default physics engine…

      …even Jolt isn’t nearly as efficient or accurate as say, Valve’s implementation of Havok in Source.

      Godot has been catching up with Unity on this physics engine performance front, but Unity still has the performance edge by a bit, and neither are close to Source.

      And these are all C++ physics implementations, to the best of my knowledge.

    • Zahille7@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      7 hours ago

      Project Zombie and GMod both use Lua scripts. GMod is also one of the best physics sandboxes imo, and has like the most mods on the workshop ever.

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

        Project…Zombie?

        Do you mean Zomboid?

        If so, Zomboid isn’t … the physics aren’t done in Lua.

        The base of the game is written in C++, and then certain parts of that are exposed to modders via an API that works with Lua.

        https://expertbeacon.com/is-project-zomboid-java/

        The physics engine is written in C++.

        Because Lua is waaay too slow, and even compiled Java is about 4x as slow as C++.

      • Leuthil@lemmy.world
        link
        fedilink
        English
        arrow-up
        5
        ·
        edit-2
        6 hours ago

        The physics in GMod isn’t implemented in Lua though. It was already part of the Source engine.

        Unless GMod isn’t referring to Garry’s Mod.

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

          Yeah, was gonna say this.

          If you actually do use Lua to significantly alter the actual physics, shit gets fuckywucky really, really fast… its quite inefficient and laggy.

          I know, because I’ve tried to implement custom physics manipulations in Gmod via Lua… the netgraph, and server side lag, becomes absolutely absymal, really fast, if you’re trying to use it for more than just a few objects/interactions at a time.

          Like the uh… Armored Combat Framework?

          That uses Lua to allow you to construct your own custom tanks and what not?

          That tries to do things like penetration/ricochet calls on physics and collision hulls… through Lua?

          Astoundingly inefficient and laggy in pretty much any situation with more than 3 or 4 vehicles operating and engaging each other at the same time… especially so if they are using high rate of fire autocannons or machine guns.

          You have to have an unusually powerful server to be able to handle more than that, and its still gonna chug as you scale up conflict sizes.

          As I remember, most ACF servers had/have a bunch of rules about giving warnings before you dupe spawn or dupe save a vehicle design, have maximum part complexity limits, have designated build and designated battle times, or just seperate servers for each… because using Lua to handle so much physics stuff is so often likely to cause server stalls and crashes.