d16c2c6583
Allow loading unpacked game files, add unpacking mode
...
This enables you to subsitute game files with your own more easily,
along with running a server with only a limited amount of game
data.
2025-07-08 22:39:31 -04:00
2f1aee9d09
Fill out more unknowns in lobby IPC packets
...
Mostly based off of Sapphire, but fixed in the more modern age.
2025-07-04 15:40:10 -04:00
24edee6548
Fix various size issues with lobby IPC packets
...
Some of these were the wrong size, and were affecting both the
server and packet analyzer alike. This should now more accurately
reflect retail.
2025-07-04 15:01:27 -04:00
7ccd132129
Unify version and file checking behind one config parameter
...
And make it affect the patch server as well, if you really want to
use an unsupported version.
2025-07-04 11:56:12 -04:00
The Dax
1c7570c696
Bounds check the string parts vecs.
...
Fix off by one error
Style nit.
2025-07-04 11:44:35 -04:00
The Dax
b3c954ed83
Fix error string
2025-07-04 11:44:35 -04:00
The Dax
d011f11e54
Lobby server: implement a server-side version check against the version info the client sends.
...
-TLDR: it checks file length and sha1 hash of the game exe, and all of the version strings.
2025-07-04 11:44:35 -04:00
thedax
bc7ab11deb
Lobby server: send back more accurate error messages for problems ( #97 )
...
* Lobby server: send back more accurate error messages for problems
* Send the dreaded 2002 error code instead. Exact error codes would probably be better.
-It is unknown if there's a list somewhere.
2025-07-02 21:59:25 -04:00
ff3a7d6835
Remove more leftover debugging code
2025-06-28 15:10:57 -04:00
05f909497c
More unknown IPC handling fixes
2025-06-26 21:06:54 -04:00
4f364ae330
Don't make packet parsing async
...
This doesn't need to be marked as async, the code isn't.
2025-06-26 19:09:13 -04:00
2dc3a899bb
Run cargo fmt
2025-06-19 16:01:16 -04:00
OTCompa
086cd24b09
Connect to server name instead of listening address
2025-06-19 15:54:42 -04:00
3757f4e0db
Make !spawnmonster put the NPC at your location again
...
Also included some refactoring that will help networking these better.
2025-06-18 20:28:03 -04:00
1b6fdab000
Add warnings in more lobby fail cases
...
For example, if your World server is down and no service accounts were
returned.
2025-06-18 20:08:35 -04:00
97a1836e77
Don't panic in the Lobby server if the Login server is unavailable
...
See #21
2025-06-18 19:38:00 -04:00
9787126a1b
Replace (most of) the remaining Excel parsing with Physis Sheets
...
The only one remaining is for Item data, but that can't be ported yet
because the new API only fetches the first page for now.
2025-05-09 18:35:44 -04:00
e43ab6c42a
When no session is found when logging into the lobby, show an error msg
...
It's the wrong error message, but it's better than getting an empty
lobby screen!
2025-05-08 21:01:15 -04:00
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
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
67ec72a962
Rename the remaining lobby IPC opcodes, reorder them too
2025-05-01 22:45:49 -04:00
2ec54fa6ec
Use more accurate names for some client lobby packet types
2025-05-01 22:36:30 -04:00
2a6c9ee76c
Add support for Shanda (Chinese) logins to the lobby server
...
This only means logging into the lobby server works, trying to login to
a World doesn't work as even the current version is too old. It probably
won't work without modifications anyway.
2025-04-22 18:15:13 -04:00
90e5e191e9
Integrate Login<->Lobby servers, remove placeholder service account id
...
All accounts were sharing the same character list, but now they should
be properly separated. This also modifies the login database to prepare
for multiple service accounts, but there's no way to manage them in the
web interface yet still.
2025-04-05 21:36:56 -04:00
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
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
f5c23f8bf5
Shorten the server startup text
2025-03-29 20:05:20 -04:00
107a00aa92
Move lobby character actions to LobbyConnection, support deleting characters
2025-03-22 17:32:00 -04:00
6190001caa
Remove more hardcoded values for character
...
Since we are now backed by a database, the remaining usages are erroneous and
should be removed.
2025-03-22 17:06:16 -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
7b77c19008
Add TODO to fix the lobby error for name rejection
2025-03-21 19:59:58 -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
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