1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-29 01:47:45 +00:00
Commit graph

33 commits

Author SHA1 Message Date
eae962cc85 Multiple fixes attempting to fix packet errors
It doesn't unfortunately, there's still a bunch of errors when decoding
packets. These are all decent fixes though.
2025-03-30 21:42:46 -04:00
243d94c586 Add preliminary support for restoring character backups from Auracite
Not much is importable yet - pretty much just the character's name and
appearance.
2025-03-30 18:52:00 -04:00
37c19ee1b8 Start sharing the Physis GameData instances
Instead of standalone functions in the common module to perform game data tasks,
there is now a shared GameData struct that these functions moved to. This speeds
up a few things, and can take advantage of Physis' built-in index caching.

I know the current solution isn't ideal (each connection has to mutex lock to
access gamedata) but it's at least better than before.
2025-03-30 10:34:42 -04:00
3bd0d64aa7 Add relevant remake fields to ClientSelectData
This documents a few fields interesting to Fantasia, such as the flag needed to
enable the "Re-edit Character" menu item.
2025-03-30 08:36:01 -04:00
7495f88dd5 Add various lobby character flags
This is based off existing work in FFXIVClientStructs, but I did make
sure to double-check what these actually did as well. These also can be
a combination of flags, but FFXIVClientStructs doesn't consider it one
yet.
2025-03-30 08:32:46 -04:00
d0bb7f4ba9 Start defining IPC opcodes in JSON
This is to make it easier to interpolate with other tools and projects,
and to reduce the mental barrier (of me and other contributors) of
changing these. This only ports the Lobby connection to use JSON so far,
the World connection is next.
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
0069196e3c Move some constants to common module 2025-03-22 19:17:01 -04:00
15ed586fd0 Fix CharaMake structure, derive City-State from class picked in creation 2025-03-22 18:34:27 -04:00
c4b65f5ecd Set max characters per world to 8 2025-03-22 18:08:40 -04:00
e4203c0ead Entitle the user to Dawntrail
This gives you the Dawntrail intro screen instead of the Endwalker one.
2025-03-22 18:08:14 -04:00
ff7d096d5d Fix the name rejection error message not showing correctly 2025-03-22 17:50:31 -04:00
55d0b81ae4 Use LobbyCharacterActionKind in CharacterCreated Lobby IPC
Instead of the magic unknown number, replace at least one byte of it with
something that's known!
2025-03-22 17:39:28 -04:00
107a00aa92 Move lobby character actions to LobbyConnection, support deleting characters 2025-03-22 17:32:00 -04:00
a91c59aaaa Remove hardcoded world id & name, make it configurable
Now the world isn't hardcoded to Gilgamesh, and is configurable. It's also now
the "Dev" server listed in the excel sheet which makes a more sensible default.
2025-03-22 17:00:21 -04:00
3f27d2b3df Change configuration format to YAML, allow configuring the address and ports
This removes all of the hardcoded localhost stuff, and allows changing the ports
of various services.
2025-03-22 16:47:21 -04:00
4b67b22c9f Show the actual character list on the lobby screen
This doesn't do any actual account checking yet, but it works pretty well.
2025-03-21 21:26:32 -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
1f2283af14 Specify a connection type when sending packets 2025-03-18 20:33:12 -04:00
22379bccdd Set the remaining days subscribed to 30
To hide that message every time you login, warning you that the subscription is
running out.
2025-03-17 17:43:28 -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
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
ee1b79ee56 Document what LobbyConnection and ZoneConnection is 2025-03-17 17:03:10 -04:00
c510d955bd Document more random things, move session_id from PacketState to LobbyConnection 2025-03-17 16:58:48 -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
a72199e5af Use the same nameday/deity/etc information everywhere, add tests for PlayerSpawn
This doesn't really fix anything functionally, but makes the Character window
look nicer. The same (currently unchangable) data is now reflected in the lobby.
2025-03-16 14:43:30 -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