23f9b5f3c1
Move oodle into the packet module
...
Not sure why I didn't do this before, it's not important enough to be a
top-level item.
2025-05-02 00:52:26 -04:00
5111a38424
Re-organize IPC segments into the ipc module
...
These were kind of scattered everywhere, instead we should move them
into their own module. Kawari's custom IPC is moved here too.
2025-05-02 00:47:11 -04:00
9eb9eca1c8
Change unk1/unk2 in PacketHeader to prefix
2025-05-02 00:31:27 -04:00
0f98bfde52
Implement Default trait for PacketSegment
...
This reduces a *ton* of places where I had to set
source_actor/target_actor to zero because it wasn't relevant.
2025-05-02 00:28:05 -04:00
fb69689f2a
Change server_id field in IpcSegment to option
2025-05-02 00:17:15 -04:00
f3f25eb219
Overhaul segment types, their names and their order
2025-05-02 00:03:36 -04:00
2ec54fa6ec
Use more accurate names for some client lobby packet types
2025-05-01 22:36:30 -04:00
6971ef1fc8
Rename PacketHeader's unk3 into "version"
...
I know the name now, but it's still a mystery what it is?
2025-05-01 22:29:34 -04:00
fed21b3617
Make various packet dumping optional, turned off by default
...
This creates a lot of clutter, and only really interesting to
developers.
2025-04-01 16:58:39 -04:00
caf70ea469
Pass GameData into Zone, stop loading the same zone twice on login
2025-03-30 19:13:24 -04:00
9cb7cd9abd
Add initial stuffs for actor replication
2025-03-30 18:03:42 -04:00
bcbe62af06
Add packets related to playing events and scenes
2025-03-28 23:00:32 -04:00
4d88f78184
Remove a good bit of log spam
2025-03-28 23:00:32 -04:00
d11c6ad090
Restore and add the remaining 7.2 opcodes
...
Now Kawari is back to it's full functionality, save for tests being
broken and out of date and PlayerSetup has the wrong padding. Success!
2025-03-26 19:23:14 -04:00
3a66e4466c
More various 7.2 packet fixes, attempt to check recieved packet size
2025-03-26 19:23:14 -04:00
a217823a64
Quiet some warnings
2025-03-23 18:21:12 -04:00
c29f8ad7df
Run Clippy auto-fix, disable large enum size warning
2025-03-23 18:14:14 -04:00
af6f95fa61
Add CONTRIBUTING guide, detailing packet capture and updating to latest patch
2025-03-23 08:33:07 -04:00
0900d0b94e
Implement basic character persistence, World <-> Lobby server communication
...
This is unfortunately lumped into one big commit, and is very hacky and WIP but
does indeed work! Since the Lobby and World server are two separate servers, it
uses it's own custom IPC packets (reusing the same packet structures as regular
game ones.)
The characters you create in the Lobby server are now saved in the World server,
but this is not yet reflected in the Lobby screen.
2025-03-21 19:56:16 -04:00
dbade00616
Restore the test_packet_sizes test
2025-03-18 20:33:12 -04:00
1f2283af14
Specify a connection type when sending packets
2025-03-18 20:33:12 -04:00
fecfa821ad
Use PatchList from Physis
...
This is what the Physis implementation was based off of anyway, so it should be
more or less a drop-in replacement.
2025-03-17 17:36:43 -04:00
aee23a200b
Create timestamp_msecs function, run Clippy auto-fix
2025-03-17 17:31:22 -04:00
974efe3824
Move compression logic out of send_packet and into it's own function
2025-03-17 17:28:57 -04:00
a7f56a62a1
Rename FFXIVOodle to OodleNetwork, move out of a folder
...
I was thinking I was going to add other modules but it wasn't needed, so it
doesn't need to live in a folder.
2025-03-17 17:22:09 -04:00
dae20a1e0c
Rename IpcSegmentTrait to ReadWriteIpcSegment, add docs
...
This also adds a default calc_size() implementation so client packets don't have
to implement it.
2025-03-17 17:12:40 -04:00
c510d955bd
Document more random things, move session_id from PacketState to LobbyConnection
2025-03-17 16:58:48 -04:00
3140dad378
Remove leftover bits of debugging logging
2025-03-16 18:35:11 -04:00
7315ece194
Move some larger Lobby IPC structs to their own files, add more tests for these
...
Also fix a bunch of mistakes when calculating size, and so on.
2025-03-16 18:15:19 -04:00
f5d75301b2
Re-organize the IPC structures so they live in their own server-specific module
...
My old setup of throwing *all* of the IPC types and opcodes into *one* enum was
becoming unbearable. Now that we have multiple things using the same opcodes
(because they can overlap) I think it's time to repay this technical debt.
This overhauls the structure of the project to move IPC structs into their own
modules, and separate the opcode data/lists into separate ones depending on if
it's clientbound and serverbound.
Nothing has changed functionall, but this is going to make it way easier to add
more IPC in the future.
2025-03-16 17:43:29 -04:00