ata4 / disunity

An experimental toolset for Unity asset and asset bundle files.
The Unlicense
2.69k stars 662 forks source link

ToDo #217

Open Mactastic1-5 opened 7 years ago

Mactastic1-5 commented 7 years ago
ata4 commented 7 years ago

Indeed, there's so much to do here that it may be better to start over from scratch. There's actually some progress with the last point using Python, but I need a Unity project myself as a motivation to continue working on the code.

Thanks for responding to some of the other issues here, btw.

Mactastic1-5 commented 7 years ago

@ata4 You should upload the python port that you started to a python-port branch.

ata4 commented 7 years ago

Yeah, I can do that. Might actually be better than a separate repository.

Mactastic1-5 commented 7 years ago

@ata4 What features does it have and what does it support thus far?

I think the goal should be to create a program that extracts every format/version and converts, if necessary, every format into a common file format without any problems. A GUI that is easy to use for users that aren't comfortable with CLI. I updated the list.

It would be better if you posted complete documentation on Unity formats/versions, so that I have a better understanding.

Mactastic1-5 commented 7 years ago

@ata4 Are these custom dependencies?

<!-- Dependencies from jitpack.io -->
        <dependency>
            <groupId>com.github.ata4</groupId>
            <artifactId>lzmajio</artifactId>
            <version>e6877e7e01</version>
        </dependency>
        <dependency>
            <groupId>com.github.ata4</groupId>
            <artifactId>ioutils</artifactId>
            <version>047e401d73</version>
        </dependency>
    </dependencies>

I forked your repository, I've been updating things that I can and I am writing a Wiki for it. I don't know how to commit as you can see, lol.

Edit: Nevermind, I figured it out.

ata4 commented 7 years ago

@ata4 What features does it have and what does it support thus far?

I think it supports Unity 2.x up to 5.4, including deserialization. It can't extract anything right now, though.

I think the goal should be to create a program that extracts every format/version and converts, if necessary, every format into a common file format without any problems.

Which is just too complicated IMHO. For textures alone, there are 52 different formats and then supporting them from all Unity versions? Not to mention other asset types.

A GUI that is easy to use for users that aren't comfortable with CLI. I updated the list.

Also difficult, at least when it's supposed to be platform-independent. There's usually the choice between writing a GUI for each operating system or adding hundreds of megabytes of framework dependencies. I'm not a fan of both. A CLI runs everywhere at least.

It would be better if you posted complete documentation on Unity formats/versions, so that I have a better understanding.

I don't have a complete one, that's the problem. I've been working on updated versions of the wiki docs, but it gets more complicated with each major Unity version.

Mactastic1-5 commented 7 years ago

@ata4 How about JavaFX for the GUI? Have you looked at Unity Studio, it's a C# program though.

ata4 commented 7 years ago

JavaFX won't work with Python, though. And yeah, I did take a look at Unity Studio, but wasn't quite happy with the compatibility last time I've checked it. Anyway, I have uploaded the current Python code to the branch python, for those who want to take a look at it. I'm not really happy with its current state, mostly because I've applied some old Java habits on the Python code, but I guess it's still cleaner than the Java version.

Mactastic1-5 commented 7 years ago

@ata4 It would work with Java. PyGUI framework for Python?

GreenWizard2015 commented 7 years ago

Maybe better do some refactoring? When I implementing extracting from 5+ bundles, i notice big amount of old Java syntax code (not used <?>), kinda tricky code with hacks and other problems. I don't know, maybe it is me too stupid, but, as for me, its reason for not trying contribute to this project.

RupW commented 7 years ago

I'm not sure that's fair. I think most of it was fairly clear, and I don't remember any untyped collections. (I do remember having to trace the CLI commands back and forth a few times, but that easy once I'd seen how it worked.) But the difficult part is understanding the individual unity resource formats and writing them back out in a more useful format, and if you can contribute that expertise I'm sure we'd help you with a patch. Or there's always the new Python branch to work on.

Mactastic1-5 commented 7 years ago

@RupW The Python port seems better than the Java version.

ata4 commented 7 years ago

The original code was just an experimental tool for my own use and I thought that it could be useful for others, which is why I have uploaded it here. But I wasn't really familiar with design patterns and all that stuff back then, so the code was pretty ugly. Most of it has been rewritten a few times already, but simply realized that Java isn't the right programming language for this task, that's why the Python version exists. But it's also something that an experienced Python programmer would call "ugly", I guess.

Mactastic1-5 commented 7 years ago

@ata4 Have you looked at Haxe?

maritaria commented 7 years ago

@ata4 How did you figure out the format initially? The only other tool out there are some closed source ones. I would love to help on this project if there was some way or method you use to discover the format.