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
c34f5d7ea8
Move CharaMake up to it's super module
2025-03-17 17:19:28 -04:00
8859683074
Document the various LobbyConnection functions, move it up to it's super module
2025-03-17 17:17:49 -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
a021abc3c7
Use WORLD_NAME constant in Lobby server
2025-03-16 18:23:04 -04:00
dc8d8638f6
Move LobbyCharacterAction into it's own struct
2025-03-16 18:22:15 -04:00
ff9bcb255d
Extract sequence number from the lobby character action packet
2025-03-16 18:18:49 -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
23050e7b95
Move more structs out of the root src/ folder and into their respective server
2025-03-16 15:39:44 -04:00
f8a28e45c9
Add helper function to send lobby errors
...
This isn't used yet, but implemented for future use.
2025-03-16 15:20:55 -04:00
22acdc4a3b
Print IP address when lobby & world servers are started
2025-03-16 14:51:18 -04:00
f372f3173d
Create dedicated Connection implementations to handle future server work
...
The current situation of throw-every-piece-of-logic-into-one-file for each
server isn't working out. So now there is a new ZoneConnection/LobbyConnection
struct that will be delegating tasks to their own Handlers (for example, there
could be a ChatHandler.)
I'm not sure how well this architecture will scale, but it's better than what
we have right now.
2025-03-15 20:38:10 -04:00
640aeb797c
Fix a few problems with ClientSelectData, use the same character in both servers
...
I apparently had a few fields missing here. Also just some general clean up,
make it the same looking character in both the Lobby and World server. I also
chose Gridania as the test zone.
2025-03-14 00:30:37 -04:00
5c22532474
Add Lobby IPC packets for character creation
...
This adds the packets required for name confirmation, character creation etc so
you can actually go through the process now!
2025-03-13 23:30:48 -04:00
4d4720b192
Add new character name rejection
...
Next is being able to create a new character (but not really, because there is
no persistent.) This is a good first step, though.
2025-03-13 22:22:02 -04:00
7b0c41a478
Fix numerous issues with the client<->zone communication and Oodle
...
Yet again TemporalStasis is awesome, and it shows that we need two separate
compressors (one for clientbound packets, one for serverbound ones.) I also
updated some opcodes for the latest patch, and support for compressing with
Oodle when sending packets.
2025-03-11 23:52:55 -04:00
7116389afe
Fix size of initalization encryption packet, start testing for that
2025-03-11 21:52:46 -04:00
2b5e0a7a48
Add more fields & actions for LobbyCharacterAction
...
Thanks to TemporalStasis, again.
2025-03-11 21:31:52 -04:00
5bcdadf058
Replace Blowfish implementation with a Rust one
...
This is a slightly modified version of the one in Physis, with the required
modifications inspired from WorkingRobot's TemporalStatis fork. Thanks so much!
2025-03-11 21:20:47 -04:00
660e12c597
Start implementing some world IPC
...
This doesn't work yet, but whatever it's a start.
2025-03-10 21:31:21 -04:00
e5d143d2c6
Add world server, fix reading compression type
...
This doesn't work yet as we don't implement Oodle decompression, but we at least
start recieving the packets.
2025-03-09 11:07:01 -04:00
1cd68ee1a3
Store session id, handle world join requests
...
We have yet to implement the world server, so the client gets kicked back to the
main menu immediately right now.
2025-03-09 11:01:06 -04:00
a7f60fab4d
Don't add empty service accounts
2025-03-09 10:43:34 -04:00
26e22843c5
Add better names for origin/destination world fields
2025-03-09 10:39:46 -04:00
2649985b32
Fill out more fields of ClientSelectData
...
Thanks to FFXIVClientStructs, which already has much of this documented.
2025-03-09 10:13:47 -04:00
1013556eba
Send ClientSelectData JSON, show character in lobby screen
2025-03-09 09:40:11 -04:00
7613723151
Roll delete into a more general lobby action
2025-03-09 00:20:41 -05:00
c35a5448d1
Add support for character delete packets
2025-03-09 00:06:54 -05:00
3e34020282
Fix various problems with the lobby
2025-03-08 23:49:53 -05:00
b127d44ddf
Move world id into a constant value
2025-03-08 23:40:58 -05:00
0c5c784d0f
Split up and move lobby packet handling
2025-03-08 23:24:09 -05:00
51e0f0680e
Move encryption stuffs into their own module
2025-03-08 16:10:00 -05:00
cdc250fca1
Begin decrypting packets, add IPC segment type
2025-03-08 16:08:25 -05:00
3caf9d38c1
Try sending a initialize encryption response packet
2025-03-08 15:27:28 -05:00
0ec0ed34ec
Parse the encryption initialization packet
2025-03-08 14:38:31 -05:00
5f0d6cc425
Dump unknown packets when encountered
2025-03-08 13:58:24 -05:00
b5afff068a
Add dummy lobby server
...
This doesn't respond or read anything yet, it's just for testing.
2025-03-08 13:51:50 -05:00