ayyaruq / zanarkand

Network capture library for realtime FFXIV Frame and FFXIV Message reading from a TCP/IP stream
MIT License
20 stars 8 forks source link

Oodle Support #16

Open ayyaruq opened 2 years ago

ayyaruq commented 2 years ago

As per the 6.1 or so changes to introduce Oodle compression. There's a few options here and I'm not sure what's best, leaning towards an interface for decompressors and allowing it to be user's choice. The following are what I had in mind:

eBPF is particularly interesting, effectively allowing the Linux kernel network stack to decode packets on receive and re-encode them on send, so anything using the data has full access without any compression in the way. The downside is that it only runs on Linux as eBPF doesn't exist on other platforms unless you count BSD separately.

LLIR is likely the most simple to use and maintain even though it sounds really weird, the downside is that it loses all of the ASM optimisations the official Oodle static lib has, but those might be trivial and third party libs lack them anyway.

gamous commented 2 years ago

This module provide a go banding oodle (third party dumps of the Oodle DLL): https://github.com/new-world-tools/go-oodle Open source oodle (third party dumps from UE): https://github.com/jackhub/Oodle