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.

  • ChrysanthemumIndica@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    11
    arrow-down
    1
    ·
    3 days 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
      3
      ·
      2 days 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
        3
        ·
        2 days 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.