marzent / IINACT

A Dalamud plugin to run the FFXIV_ACT_Plugin in an ACT-like enviroment with a heavily modified port of Overlay Plugin
https://www.iinact.com
GNU General Public License v3.0
169 stars 39 forks source link

Patch and use the Machina library bundled in FFXIV_ACT_Plugin #77

Open Menci opened 4 months ago

Menci commented 4 months ago

Currently IINACT use an owned fork of the Machina library. While Machina.FFXIV contains the game client's opcode, the fork needs to be updated for each game version. If we want to also support the Chinese client, things become harder since the open-source repo of Machina doesn't even contain the latest opcodes for Chinese client.

Since we're only replacing the DeucalionClient with DalamudClient in the Machina library, we can do it dynamically for the Machina library bundled in FFXIV_ACT_Plugin, then we won't need to maintain the opcodes manually anymore.

marzent commented 4 months ago

Sorry for not coming back to you earlier!

Indeed the only real problem with https://github.com/marzent/IINACT/pull/76 is that it does not point to the custom Machina submodule anymore.

In the past IINACT used to actually just use the bundled Machina, the two main reasons why I moved away from doing this was to easily implemented the Dalamud client (which you have already taken efforts to not be needed anymore) and to update the opcodes myself on patchday (ideally before the servers are already up), since I do not like to wait for the full release of the FFXIV_ACT_Plugin and then people want to use the beta, which is only available on Discord etc and it is just a headache and for me worth manually updating for.

I also wouldn't mind keeping the Chinese opcodes of the Machina fork updated in a timely manner, or maybe even some sort of CI propagation from an opcode repo.

Menci commented 4 months ago

Oh I even didn't know there's a Discord community! For the Chinese our maintainers usually just update the plugin on patch day since the parsing code is just from an older version of the global one and they only need the opcodes on the patch day...

How about dynamically update opcodes with an URL, just like updating the plugin zip?

marzent commented 4 months ago

How about dynamically update opcodes with an URL, just like updating the plugin zip?

That would probably be ideal, but would require a bit of new infrastructure and then patch machina as well with the new opcodes...

There is also the risk of some random network issues, which especially when connecting to GitHub happens a lot, so these would have to be cached + versioned most likely as well.

marzent commented 4 months ago

This is also compounded by OverlayPlugin having its own list of opcodes that also need updating anyways on patch day

DieMoe233 commented 3 months ago

This is also compounded by OverlayPlugin having its own list of opcodes that also need updating anyways on patch day

https://github.com/moewcorp/FFXIVNetworkOpcodes