1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-28 17:37:45 +00:00
Commit graph

38 commits

Author SHA1 Message Date
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