gibbed / Gibbed.Illusion

Tools & code for use with Illusion engine-based games (Mafia II).
zlib License
21 stars 6 forks source link

Support for Mafia III #1

Open Fireboyd78 opened 7 years ago

Fireboyd78 commented 7 years ago

Hi Rick,

Are there any possible plans for updating your Illusion toolset to include support for Mafia III? This was already started here, back when the tools were still on the SVN.

That particular codebase has been extremely butchered, but with a little bit of effort, we might be able to implement it alongside the older SDS loading code.

At the moment I'm not sure if I can help much, but maybe I'll submit some pull requests later on. Just wanted to know where you stand right now, if you're interested I'll likely be more motivated to help out, etc.

Fireboyd78 commented 7 years ago

@gibbed I just noticed you renamed stuff like Gibbed.Illusion.FileFormats to Gibbed.Mafia2.FileFormats -- does this mean Mafia III stuff would need to be put in Gibbed.Mafia3.FileFormats or something? Just wanted to make sure we're on the same page here :P

gibbed commented 7 years ago

@Fireboyd78 I think I completely missed this comment due to the sheer volume of issue notifications I get.

As for Mafia 3 support, it might happen. The main reason I split this up here is because there are some formats that are clearly specific to Mafia 2 and, unless confirmed otherwise, should be Mafia 2 specific. This was largely a refactoring effort to clean things up for the move to git.

Fireboyd78 commented 7 years ago

@gibbed:

The main reason I split this up here is because there are some formats that are clearly specific to Mafia 2 > and, unless confirmed otherwise, should be Mafia 2 specific.

I'm not sure if you've seen Mafia 3's files, but it's actually running on the same engine. This came as a surprise to me as I was under the impression it was a new proprietary engine by Hangar 13, but nope...just the same old game engine by 2K Czech we all know and love! Even uses the same Havok physics and everything!

The SDS format is now version 0x14 (v20/v1.4?) and most files don't use the XML data pointer Mafia 2 heavily relied on. Here's some crappy updated code for the new SDS format, as an example. Unfortunately I have no idea what changes were made to that version (based on the last SVN repo), so implementing it into the new "official" repo here might take a bit of work. I'd be more than happy to help if needed, however. It's really a shame Mafia 3 modding is pretty much impossible at the moment, since the only other developer besides yourself has most likely been overwhelmed with life and can't continue development. Let's be honest, nobody knows this shit more than you do, haha.

Personally I'd start by trying to strip the SDS format down to the header, and then allowing for different loaders depending on what the format is. But before any of that, the Mafia2 stuff should be merged back into Illusion, and the ArchiveDecompress and ArchiveDecrypt projects merged into one ArchiveManager kinda deal. Maybe even move most of the stuff into Illusion.FileFormats and have ResourceExplorer provide a simple archive unpacker/uncompressor.

I also have previous experience implementing "advanced" command line arguments (if you want to call them that), so I can help in that area if necessary (for archive stuff, etc).