• @[email protected]
    link
    fedilink
    8410 months ago
    What does not work
    ...
    capitalism (IRL; I wouldn't want to try implementing it here)
    

    I actually lol’d

    And I gotta ask, what insanity drives someone to implement a minecraft server in bash…?

    • @muntedcrocodile
      link
      1910 months ago

      The insanity that mojang keeps adding shitty mobs to keep us distracted and refuses to aknowlege that multithreading is a thing thats possible.

      • @rockSlayer
        link
        1910 months ago

        Adding multithreading to such a huge project would be a monumental feat. There’s dozens of multithreading jokes, but I like this one most

        Knock knock

        Race condition

        Who’s there?

      • @[email protected]
        link
        fedilink
        310 months ago

        I was more astonished about the choice of language than the decision to implement a server. That said, is the problem with lack of multi threading mostly related to scalability or something else?

        • @muntedcrocodile
          link
          110 months ago

          Yeah there literally isnt powerfull enough hardware to support more than a few hundred people on a single instance. And world generation really should take better advantage of multiples cores.

  • @ouigol
    link
    2410 months ago

    How much work is making a Minecraft server from scratch? What things need to be implemented? I saw on the GitHub that placing and destroying blocks was implemented, so I’m guessing it’s a lot of work

    • qazOP
      link
      34
      edit-2
      10 months ago

      One of the most common Minecraft server implementations called Paper MC consists of 321k lines of code (mostly Java and a little bit of Kotlin).

        • haui
          link
          fedilink
          610 months ago

          Its somewhat intriguing to me. I always thought companies would obfuscate their code so that nobody can just reverse engineer their product. Does mojang not do it or is it not possible to keep people from decompiling it?

          • 520
            link
            fedilink
            23
            edit-2
            10 months ago

            One of the things about Java is that it is stupidly easy to decompile back into java source code.

            Obfuscation can make it harder to do but not impossible. There are also performance and licensing implications too.

            What it would REALLY hinder is mod development, which is where a huge amount of it’s diehard fanbase is, not to mention advertising via let’s plays comes from. There’s only so much material you can make out of simply building blocks, and the mod scene helps keep Minecraft relevant in Let’s Plays and streaming.

            The mod scene has been incredibly instrumental in keeping Minecraft as a whole relevant. Most footage and screenshots you tend to see today usually has a mod applied that you can see in the footage. Ever seen Minecraft with realistic lighting? That’s a mod. Seen those weird survival challenges? Also done by mods.

            If that dies off, Minecraft’s word of mouth and relevancy dies with it. And from that, so do the console versions.

            • haui
              link
              fedilink
              210 months ago

              Thats a very cool and elaborate explanation! Thank you!

          • Chewy
            link
            fedilink
            910 months ago

            Mojang/Microsoft actually releases obfuscation maps for Minecraft: Java since 2019. This maps the decompiled random class names to the official variable/class names used by Mojang devs.

            In an effort to help make modding the game easier, we have decided to publish our game obfuscation maps with all future releases of the game, starting today. This means that anyone who is interested may deobfuscate the game and find their way around the code without needing to spend a few months figuring out what’s what. It is our hope that mod authors and mod framework authors use these files to augment their updating processes that they have today. These mappings will always be available, instantly and immediately as part of every newly released version. This does not, however, change the existing restrictions on what you may or may not do with our game code or assets. The links to the obfuscation mappings are included as part of the version manifest json, and may be automatically pulled for any given version.

            https://www.minecraft.net/en-us/article/minecraft-snapshot-19w36a

            As others have said, Java is pretty easy to decompile, so there were community maintained obfuscation maps before (huge amount of work).

            • haui
              link
              fedilink
              410 months ago

              Great addition! Thanks. So they did actually help with modding but only eventually it seems.

          • @[email protected]
            link
            fedilink
            510 months ago

            In the end it is always assembler. Enough time given and you can translate it to higher languages. A huge modding community and a lot of tooling for the Java language made it possible i guess.

            There was a lot of work here. I doubt there were any symbols present in the binary.

            • haui
              link
              fedilink
              210 months ago

              Very cool! Thanks for elaborating. Took me only a decade plus to learn this fact. ;)

    • AggressivelyPassive
      link
      fedilink
      210 months ago

      The entire repo takes 165kb, so it’s not nothing, but also not exactly an afternoon project.

  • @wmassingham
    link
    1810 months ago

    I missed the word “server” every time and thought it was a client, and spent far too long trying to figure out how you’d play Minecraft in Bash. Text based? ASCII graphics?