AnthonyZJiang / D-OS-Save-Editor

A save editor for Divinity Original Sin: Enhanced Edition
Other
50 stars 15 forks source link

Possible port? #13

Open it-is-I-Pants opened 6 years ago

it-is-I-Pants commented 6 years ago

Would it be possible to port this project to either .NET Core or Mono for us Linux/Mac players? I honestly have no idea if it'd be feasible but I thought I'd ask. I'd try to port it myself but I'm unable to open the source in monodevelop under linux...

AnthonyZJiang commented 6 years ago

I would like to help but I have zero experience in developing software for Linux/Mac.

I tried to google it and found this post on MSDN. Idk if it helps or not.

it-is-I-Pants commented 6 years ago

Yeah I did some more digging and the easiest probable option would be to port to mono which is basically an open source implementation of C#/.NET. I was looking into .NET core because it's cross platform and works directly in visual studio but it seems like its more geared towards web and command line based applications. The thing is that I believe you can only open visual studio code written in .NET under the Windows version of monodevelop and I don't have a system running windows to do so.

More Mono compatibility information is here if you wanna take a look at it. Like I said though, I just cannot open the project file under Linux but I'll gladly bugtest if you need it

it-is-I-Pants commented 6 years ago

Oops it looks like they stopped offering installers for monodevelop on Windows, you'll need to follow this build guide here (at the bottom of the page) to build it. There used to be a plugin for Visual Studio but it looks like they dropped support for it as of VS2017. This is turning out to seem like a much bigger hassle than it was a few years ago, but then again, I never really used Visual Studio and always used monodevelop from the get go, even on Windows.

AnthonyZJiang commented 6 years ago

Alright. I will have a look at it when I have access to my home PC (I'm currently outside the country, unfortunately) and report back. I'm not really interested in porting the application to Linux/Mac since I rarely use them, but if you are happy to do so on your own, I will be happy to help.

SamAmco commented 5 years ago

Hey guys I know this is an old thread but i'm currently trying to port to Linux.

Well specifically I'm trying to get your code to read my save game file and write it to an xml file which i would then modify and then get it to read the xml file and write back to the save file. I don't have a tremendous amount of time to dedicate so I'm not looking to do UI right now. Unless I've mis-understood your code it looks like that's basically what you're doing anyway (plus a UI wrapper) right?

The main difficulty is that LSLib has a dependency on a native library which seems to only build easily for Windows. Rather than trying to port all of LSLib and dependencies I thought I'd just try to cut out the parts relevant to this project and port them. Hopefully I can drop LSLibNative all together.

I'm currently a bit confused though. The save game files generated by my version of the game all have extension lsv but if i look at LoadResource and SaveResource in LSLib namespace I see that they are looking for files with extension lsx, lsb, lsf or lsj. Can anyone confirm whether any of these file formats are the same as lsv? I can see "lsv" referenced in your comments in Savegame.cs so I figured you must have some insight here.

I don't want to make any promises as I don't know how far I'll get but I'm trying to port this using only platform agnostic code atm.

AnthonyZJiang commented 5 years ago

@SamAmco commented on May 27, 2019, 5:32 PM GMT+1:

Hey guys I know this is an old thread but i'm currently trying to port to Linux.

Well specifically I'm trying to get your code to read my save game file and write it to an xml file which i would then modify and then get it to read the xml file and write back to the save file. I don't have a tremendous amount of time to dedicate so I'm not looking to do UI right now. Unless I've mis-understood your code it looks like that's basically what you're doing anyway (plus a UI wrapper) right?

The main difficulty is that LSLib has a dependency on a native library which seems to only build easily for Windows. Rather than trying to port all of LSLib and dependencies I thought I'd just try to cut out the parts relevant to this project and port them. Hopefully I can drop LSLibNative all together.

I'm currently a bit confused though. The save game files generated by my version of the game all have extension lsv but if i look at LoadResource and SaveResource in LSLib namespace I see that they are looking for files with extension lsx, lsb, lsf or lsj. Can anyone confirm whether any of these file formats are the same as lsv? I can see "lsv" referenced in your comments in Savegame.cs so I figured you must have some insight here.

I don't want to make any promises as I don't know how far I'll get but I'm trying to port this using only platform agnostic code atm.

Hi Sam,

I believe you will need LSLib to convert/decrypt lsv to lsx files since the former is binary and the latter is essentially xml. You will need to code your own converter if you want to drop out LSLib.

Best

Correction:

lsv is a savegame package and LSLib unpacks the lsv into multiple resource files. lsx is the one we are interested in and it is essentially an xml file. After you finish editing lsx, with LSLib one can pack it with everything else creating an lsv savegame file.