I wrote a blog post on the current trend of game decompilations using AI and where we’re going with this. It’s all very promising but oh boy are the implications scary.

  • samus12345@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    1
    ·
    6 hours ago

    I’ve always kept up on recomps and decomps of games I like to put on my Steam Deck, but recently it’s been hard to do with so many coming out and of varying quality! Quiver Launcher has been really useful for keeping track, and it lists how much AI was used for the projects, too. I’m going to try out Super Mario Eclipse tonight.

  • thingsiplay@lemmy.ml
    link
    fedilink
    English
    arrow-up
    17
    arrow-down
    1
    ·
    9 hours ago

    how you can copy code with AI and claim it’s made in a clean room, so technically you’re not under any licensing agreements.

    I argue if you use Ai to code, then you cannot proof that it was implemented in a clean room way.

  • thingsiplay@lemmy.ml
    link
    fedilink
    English
    arrow-up
    18
    arrow-down
    1
    ·
    9 hours ago

    Automatic Ai driven recompilation is not the same as manual user effort to decompile, document and build a human understandable and good source code. That’s why I do not mix up the terms recompilation and decompilation.

    • MimicJar@lemmy.world
      link
      fedilink
      English
      arrow-up
      5
      ·
      8 hours ago

      I’ve been trying to understand the terms and the opening graphic on this site did a good breakdown.

      So my understanding is that a decomp or decompilation is turning the machine code into something human readable. It’s the first step but technically isn’t anything the average person can use because it still needs to then be (re)compiled into a game someone can run.

      However the term “decomp” in general usage refers to the human readable middle step, AND a way to create something for the average person.

      Versus a recomp or recompilation is performing the conversion of machine code to some middle state, then immediately (re)compiling it into a game the average person can run.

      However the term “recomp” in general usage refers to the same, but always with the use of AI.

      Is that right?

      • entwine@programming.dev
        link
        fedilink
        English
        arrow-up
        6
        ·
        7 hours ago

        I think you/that article are overthinking it. Compiling just means turning source code (written/readable by humans) into machine code (aka a program/game). “Decompiling” is the reverse of that, where you turn machine code into source code.

        A lot of these AI de/re/comp/port/whatever projects are made by script kiddies/morons who don’t know what they’re doing. Sometimes you see them claim that a project is a “static recompilation”, but when you look at the code it’s literally just a bespoke emulator that runs the game.

        Which is to say, don’t get too hung up on these terms, since they’re often misused either way.

      • thingsiplay@lemmy.ml
        link
        fedilink
        English
        arrow-up
        5
        ·
        edit-2
        7 hours ago

        It’s important to understand that these terms are not standardized and people or organizations may use them slightly differently or interchangeably. This can cause confusion. But in the wild, people have come to use these terms (in my experience, I’m not an expert either) in specific ways. The article you linked seems to do a pretty good job, but we should remember that this is his/her personal interpretation. From your explanation, I would say it sounds about right “in my opinion”.

        I lost it and put this lengthy reply. Sorry about that. Edit: Some parts are still not good explained, I tried.

        Source code and compiled binary

        First, it is important to understand the two states of a game: source code and compiled binary. The source code is text form written in a programming language (usually by and for humans), with other source material. If you download source code, its just bunch of text files basically. To play the game, one need to use a compiler that compiles or transforms the text files into machine readable compiled binary files. There are other stuff too, but this is the important part. The game can now be run and played on the platform it was built for, such as Super Nintendo. If you create a backup of the Super Nintendo cartridge that holds the compiled binary, then you get a ROM file basically. And on your PC you can’t run the Super Nintendo games without emulating the hardware.

        Assembly

        Every CPU has a set of codes and functions, the very basic at the lowest level possible. Assembly is basically that, it is basically the native language the CPU understands. If you code in Assembly, then it is for this specific CPU architectur, such as Super Nintendo. But the CPU only can understand zeros and ones. So you have to translate the Assembly into real machine code, but the logic does not change anymore. So Assembly is machine code, just wrapped up in a better human readable form. This is usually not the source code. Source code is compiled into Assembly and then machine code binary. You can think of Assembly as machine code for humans, if that makes sense.

        Reverse Step 1: Disassembly

        Disassembly is taking the compiled final binary (such as ROM files in example) and does just translate all the zeros and ones into human readable machine code. But the original variables names and such are lost, so that its hard to understand what this even is due to optimizations by the compiler. Humans have to go through each line and machine code (which is represented in Assembly format) and figure out what each of the lines, commands do, rename each function and so on. This is painful work. What you get is Assembly code that is readable by humans.

        When you compile a fully reverse engineered Assembly code, you get the exact same ROM or machine code that you just disassembled. It didn’t change the code, it just renamed stuff basically. So it will just compile to what it was programmed to.

        Reverse Step 2: Decompilation

        Now that you have something humans can read and reason about their logic, it’s time to write some real and original source code. That means trying to understand the parts in Assembly, then writing in (in example C or Rust language) a language that can be compiled to any other target than the original machine code was intended. This new code is an approximation of what the original source code of the game developers were, but we don’t know.

        Now this process is painful and slow. And in the end it does not mean the code will compile to other platforms, it still aims to produce the original game logic for the original hardware (such as Super Nintendo). So they need to make adjustments to the source code, which is finally easy to work with.

        Reverse Step 3: Port

        Now that you have an easy readable source code in a programming language that is independent from the hardware, such as C or Rust, you can make adjustments. If you aim to play the game on PC, then adjustments are done so it can compile on PC. Whatever is needed, but in short they modify the source code to be able to compile it to other platforms than it was originally intended. That’s a port.

        What is a recompilation?

        In context of this discussion, a Recomp is basically taking the binary of the game and automatically built a source code file (such as to C or Rust) in one step. This leaves out the manual work of humans to categorize, understand and write good human readable code. The produced code from recompilation is meant to be used by compilers only, that compile to binary. It is not intended to be read by humans, even though its technically source code. Disadvantage is, that if there are bugs then humans have a hard time figure out whats going on. Or to mod the game manually, its difficult too.

        This is nowadays often associated with Ai tools, but doesn’t have to. I’m not entirely sure, but the N64Recomp in example is such a non Ai recomp tool.

        In general, the best case is that we have good high quality human readable and understood source code; Decompilation. On the other hand Recompilation is much faster to create.

  • GonzoAtBarstow@lemmy.world
    link
    fedilink
    English
    arrow-up
    72
    arrow-down
    2
    ·
    13 hours ago

    The compiler was never meant to be a source code obfuscating tool anyway, the real sea change is Copyright being ignored. I’ve always wanted Copyright to go away, but it’s going away in a way different than anything I’d imagined and I don’t know what to think about that.

    The obvious upside is we can sort of return to a time when every game was openly moddable. 25 years ago almost every hot game was a mod of another game.

    • Ricky Rigatoni@piefed.zip
      link
      fedilink
      English
      arrow-up
      10
      ·
      6 hours ago

      Copyright is going away in a way that only benefits AI companies. WE still get burned at the stake for downloading shit from limewire even if we’re training our own AI models.

      • AwesomeLowlander@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        52 minutes ago

        It’s not like we need to individually train our own AI models, a few groups could do it and release for everybody else. Like Anna’s Archive.

    • zlatko@programming.dev
      link
      fedilink
      English
      arrow-up
      33
      arrow-down
      3
      ·
      12 hours ago

      It’s not really copyright that you want to go away. It’s corporations exploiting the work of individuals. There are countries that have much saner, a lot more ethical laws around it.

      The AI issue here is their theft, and since the theft is not addressed, it’s going to get ugly, and the big game producers will just lock games behind networks , so unless you’re online and likely paying a subscription, you ain’t gonna be pLaying thaT game.

      • VibeSurgeon@piefed.social
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        3
        ·
        9 hours ago

        Decompilation offers you the possibility of cutting out network-required features, if you dream a little bigger.

        • jaycifer@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          2 hours ago

          They’re not talking about individual features, they’re talking about locking the entire game behind a network (such as game streaming) so the game can’t be downloaded to be decompiled in the first place.

    • ChrysanthemumIndica@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      10
      ·
      12 hours ago

      I appreciate that at least we are all reeling from the implications of it all.

      I think that’s a very interesting point about the compiler, companies have really leaned on that as a way to obfuscate code, some folks seem to think compiled is as good as encrypted? Just another lock on the door, I guess, and a free one at that.

      I think it does make a ton of sense that an llm would be so capable at decompiling code… it’s basically just translating? But having decompiled some stuff myself years ago, it’s still sort of amazing to see such a tedious process automated.

      Bleh, too many conflicting feelings… yes, let’s hope we reclaim some bits of culture taken from us! And let’s cross our fingers that copyright is destroyed in a manner that actually benefits people…

      • entwine@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        7 hours ago

        I think that’s a very interesting point about the compiler, companies have really leaned on that as a way to obfuscate code, some folks seem to think compiled is as good as encrypted? Just another lock on the door, I guess, and a free one at that.

        Well, (depending on the language) compilation is a 100% lossy conversion. So when a game gets ‘decompiled’ with an LLM like this, they’re not restoring the original code. It’s just generating new code with the same behavior, which is functionally the same. People doing this generally wasn’t considered infringement, but it’s clear that having a machine automate it is a big problem. Even if we ignore the fact that the output of an LLM is legally tainted/grey area, the scale at which it can happen now means we need new laws to deal with it.

        This is basically doing to software what the internet did to piracy. That led to the DMCA, which as shitty and corrupt as it is, at least succeeds at some of its main goals.

      • urushitan 漆たん@kakera.kintsugi.moe
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        1
        ·
        9 hours ago

        Additionally the bigger thing is once AI has the feel for understanding how an engine works, it can pretty easily be applied to another game with the same engine. That’s why nobody here gives a shit about unreal or cryengine games, but rather is reacting to RAGE or Nintendo games. The proprietary studio owned engines are the ones people care about

    • entwine@programming.dev
      link
      fedilink
      English
      arrow-up
      5
      arrow-down
      8
      ·
      7 hours ago

      I’ve always wanted Copyright to go away, but it’s going away in a way different than anything I’d imagined and I don’t know what to think about that.

      It’s interesting seeing all the people who used to complain about copyright now realizing that copyright does in fact protect small artists, and it’s actually the reason why anyone was able to make a living as an artist at all.

      On the one hand, it’s good that everyone is starting to get on the same page, but it sucks that things always have to get worse before they get better. This is a good opportunity to perform some introspection and think about what kind of mistakes led you to the wrong conclusion on this issue. Maybe it’ll be constructive and helpful for other issues.

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

        This is a good opportunity to perform some introspection and think about what kind of mistakes led you to the wrong conclusion on this issue.

        Me personally? Copyright is failing your advocated purposes of protecting artists work and their living, and living up to my belief that it was the wrong tool all along. Maybe you could use some of that.

    • REDACTED@infosec.pub
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      10 minutes ago

      What? Mass-decompiling proprietary software or making shitty companies like Adobe irrelevant is not awesome? Alright, what about advancements in medicine and science, even just mapping a fly for fun? Well, if saving lives is not awesome for you, then what about game modding that’s currently peaking? Entire games merged together, many games I play see mods that I thought were impossible before, etc.? Entertainment bad too? Alright, then, what about deciphering historical writings, texts, better archeology, pattern finding, etc.? History is not awesome either? I guess the only thing I can offer you is a personal robot assistant that could work around your house doing chores and stuff (we’re not there yet, but rapidly nearing it), but I guess that’s not awesome either

      Man, lemmy has the most out of touch opinions around the world wide web, like a corner of hipsters. Now do your thing and downvote objectivity

      • Pratai@piefed.ca
        link
        fedilink
        English
        arrow-up
        8
        arrow-down
        1
        ·
        6 hours ago

        The irony!

        No, kiddo. It’s apple’s enshitification that causes this. When they rolled the on-device autocorrect that used to be near perfect into an off-device AI based bullshit disaster- this is the result. I now have to spell-check and check for wrong autocorrections because AI has fucked that up too and it cannot be turned off or reverted.

        So, thanks for helping prove my point.

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

          I turned off autocorrect on my iphone at least a decade ago but left spellcheck on so I still get the red lines if I mess something up. It sounds like that could benefit you.

        • lenabee@lemmy.blahaj.zone
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          5
          ·
          6 hours ago

          Hey, if you’re anti-AI you shouldn’t be using apple products. I understand that owning a device can be difficult to move away from without an additional purchase, but Apple is still listening to you and reading your data. Your usage statistics are being used to prove to retailers that their products are worth selling to their customers. Even using an old iPhone is a silent vote for Apple to continue their trajectory

          • REDACTED@infosec.pub
            link
            fedilink
            English
            arrow-up
            1
            ·
            6 minutes ago

            Just to be safe, they should throw out all devices that radiate EMF. I heard tinfoil hat might help against the AI overlords reading your brain signals

  • cecilkorik@lemmy.ca
    link
    fedilink
    English
    arrow-up
    17
    arrow-down
    2
    ·
    11 hours ago

    I don’t think that’s actually true. I think it’s more just AI propaganda. Most of the so-called “advances” that I’ve seen advertised seem to be far less than they seem when you dig deeper, often relying heavily on previous, human reverse-engineering efforts or simply being injection points built into wrappers for the actual binary game code. It’s just suddenly cool and polished looking because AI padded it out with a bunch of fragile and flaky filler code whose only purpose is to make it look finished and beautiful at first glance when it actually isn’t. The typical AI gameplan, in other words.

  • ChrysanthemumIndica@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    1
    ·
    13 hours ago

    I’ve been thinking about this a lot too, because of seeing all these decompilations (with all the implications that comes with, as you point out some of them), but also because my own “learning LLM tooling” project was reverse engineering Civ IV, and rereleasing in a 64 bit engine with more accessible controls at the expense of 3d (sort of like Unciv).

    I did not do a decompilation, especially because the core of the game has restrictive-licensed source released, but i was able to build clean specs from that source, and then with as clean of context of possible, stage the production and testing of features. I honestly don’t know how you’d prove a classic clean room implementation with LLMs (and definitely not in a one shot), and i can’t really prove my implementation is clean either.

    I really hate the direction of all this stuff (so so much), and i hate that my disabled ass feels compelled to learn such tools so I am able to feed myself. But I did try to have some good come out of it (generic reverse engineered specs, basic accessibility framework, game automation framework, and i definitely learned a lot, plus it does work pretty ok)

    I haven’t been able to figure out a way to release in a way that fits my ethical framework, without also resulting in people insulting me (which I don’t have a lot of room for in my life right now). I’ll happily take suggestions though!

    I’d love for this to not be wasted effort, especially because of the accessibility enhancements for a beloved but proprietary game.

    • sem@lemmy.blahaj.zone
      link
      fedilink
      English
      arrow-up
      2
      ·
      6 hours ago

      This is all very new to me, but I think I get what you’re saying. Could I ask you to check my understanding of this part?

      but i was able to build clean specs from that source, and then with as clean of context of possible, stage the production and testing of features.

      Does this mean that Civ 4 has its source available – and you fed it into the LLM and asked it for a human -readable design spec for what the source code does.

      Then you took that spec sheet and asked a new LLM to generate source code that matches the spec sheet, with some modifications you desired (e.g. 64 bit and different controls).

      I guess i have a follow up question which is, is it possible that the Civ IV source code was included in the training data of the LLM, and would there be any way to know?

      Thanks for considering

      • ChrysanthemumIndica@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        2
        ·
        4 hours ago

        Could I ask you to check my understanding of this part?

        I think your understanding is basically correct, but i just want to clarify what i did with the specs:

        I found the source code, which doesn’t include the rendering engine, is composed of Python and C++ and contains the game logic.

        I then fed the LLM the source code I had available to turn them in to a set of specs for that specific codebase, for important APIs and the logic that connects then.

        I then took those specs and made the LLM genericize them, and in particular creating a structured, human readable description of all game rules.

        With those new generic specs, i was able to creat a development plan and architecture (with heavy aid of LLM), the new engine is written in Godot with json data store.

        Project was bootstrapped like normal, start with the smallest core functionality, especially including debug infrastructure. Get it stable and then keep adding features and testing until everything seems okay.

        I guess i have a follow up question which is, is it possible that the Civ IV source code was included in the training data of the LLM, and would there be any way to know?

        Agreed, that’s actually part of why I said I don’t think i can prove it’s fully clean room!

        But I did try my best to make it unlikely, and even if it did, I imagine it was closer to broken bits and pieces.

  • JerryMerweather@piefed.social
    link
    fedilink
    English
    arrow-up
    6
    ·
    13 hours ago

    Maybe open source licenses are completely unenforceable now. Maybe critical software and hardware can be easily hacked into now, and we haven’t realized just how bad it is yet. Maybe everything will have more invasive DRM on it soon. Who knows. We’re about to find out in the next few months.

    Oh my god, anything but DRM. It freaking sucks and only ruins experience to normal users

    As some else discussed, apps where most infrastructure is on the server just for the sake to protect code might be popular. Which means even more reliance on the internet.

  • aksdb@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    11 hours ago

    I fear this might be another push for live service shit or even game streaming. I absolutely like services like GeForceNow as an option to play games on less ideal hardware. But I wouldn’t want to be forced to that.

  • Katana314@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    13 hours ago

    The only way I can see the industry of intellectual property - and hence all large-budget commercial games - surviving is if laws change to regard the efforts of AI analysis as breaching some of the established DMCA laws.

    I’m sure we often regard those laws as horrendous, though I sometimes wonder if people would agree if they saw Epic Games publish “Meincraft” 3 days after Minecraft gets its first major news article, and leave Notch in the dust.

    • popcar2@piefed.caOP
      link
      fedilink
      English
      arrow-up
      2
      arrow-down
      1
      ·
      13 hours ago

      Games already have IP laws for their assets and patents, but the code is something we can’t really enforce. If someone reverse engineered Minecraft and released it with new graphics and trademarks, how are they going to prove this game is just a copy of Minecraft and not an original block game?

      Obviously if it’s too similar they’d rule against it but AI is really good at shuffling code and changing up minor things to make it legally distinct.

  • vogi@piefed.social
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    10 hours ago

    I guess we will see big studios push gaming as a service again? I honestly wouldn’t care too much since I haven’t been interested in Triple A games for a while now. (except for some exceptions ofc) As long as they keep my indie games unaffected!!

    Scary implications aside, video game decomps are so cool! I honestly feel like we have enough games to last humanity. And having them all in their best form possible is kinda cool, soon we can run all time classics and built our dream console out of an raspi 5, with mods keeping it fresh.

  • Yerbouti@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    6
    ·
    8 hours ago

    We have to face the fact that soon enough, any type of software question will be over. AI will be able to generate whatever software/feature you can think of instantly. Not sure what’s gonna happen to dev jobs but be ready for some huge shit to hit the fan. We need to break free from capitalism before it kills us all.