0069196e3c
Move some constants to common module
2025-03-22 19:17:01 -04:00
fb05caaa31
Store zone id and position in the World database
...
This isn't updated by the server yet, but will be soon in the future.
2025-03-22 19:05:29 -04:00
4b740068d4
Remove hardcoded initial zone, derive it from selected City-State
...
This currently might spawn you in the ground in Ul'dah and probably Limsa too,
until I determine the correct spawn location.
2025-03-22 18:53:53 -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
5c8998ddb2
Change default world id back to Gilgamesh
...
I quickly realized that the "Dev" server is under the "Unknown" data center, and
that's kinda hard to select in the client. I'll think about a solution later.
2025-03-22 17:08:33 -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
f523aa189f
Move login & world database code/logic to their own modules and structs
...
This should remove some of the pollution I added while working on these
features.
2025-03-22 16:15:29 -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
b3a22ebdce
Fix size of WeatherChange packet
2025-03-21 19:58:48 -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
f4536f2cb7
Implement basic support for actions
...
This only works for sprint, and it adds 30 sprint buffs. It also regularly
crashes the server afterwards usually.
2025-03-19 00:28:47 -04:00
3947eebb44
Add new commands to USAGE
2025-03-18 23:49:07 -04:00
788cbf114a
Add support for the GM command to change the weather
...
You can now change the weather with `//gm weather <id>`.
2025-03-18 23:48:00 -04:00
4927fa9119
Send ActorControl and StatusEffectList packets in vain
...
This was hopefully supposed to show the player spawned by !spawnactor, but it
still doesn't work...
2025-03-18 23:30:59 -04:00
da0860cdd7
Move CharacterMode enum to common_spawn module
2025-03-18 22:17:06 -04:00
cfb9aad6e6
Move ObjectKind enum to common_spawn module
2025-03-18 22:15:27 -04:00
bd67eb0127
Add support for spawning NPCs, and a debug command to do it
...
Since the structs are so similar, I created a CommonSpawn struct to hold most of
the interesting fields.
2025-03-18 22:13:28 -04:00
039f4d7f95
Move generate_sid to login server
2025-03-18 20:33:12 -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
f886fbfe4b
Turn the gates on in the example config
2025-03-17 17:44:22 -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
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
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
9009ae527c
Update some documentation for modules and constants
2025-03-17 16:44:17 -04:00
NotNite
481d6b69a2
Document chat commands
2025-03-17 16:40:04 -04:00
NotNite
da69b40ca6
Document config.json
2025-03-17 16:40:04 -04:00
NotNite
10fc8e32ce
Document manual command line arguments
...
I don't have Astra locally so I had to do this to test things. It works
fine right now, but in the future the user must complete the login
process manually.
2025-03-17 16:40:04 -04:00
NotNite
aeb8516a82
Document magic domains, privileged port usage
...
I ran into the issue with privileged ports myself. The link to the Caddy
website has an aside about how to use setcap or sudo, which should be
good enough.
2025-03-17 16:40:04 -04:00
NotNite
e3b5bea440
Move to .localhost TLD for Caddyfile
...
.local is reserved for mDNS (see RFC 6762), and it wasn't properly
resolving on my machine. .localhost (RFC 6761) seems more correct.
2025-03-17 16:40:04 -04:00
NotNite
9fa6a230d6
Clarify Oodle instructions, link against "oodle" directory
...
While you can just drop the Oodle static library into /usr, I'm not a
big fan of doing it, especially when the binary didn't come from my
machine or package manager. You can set a RUSTFLAGS environment variable
or cargo config file to specify a link path, but having the build script
search there for you is easier.
The docs now specify which variant of Oodle is required, since there are
multiple. It also specifically mentions the static library, because I
had some weird issues leaving the dynamic library in that folder, where
the executables wouldn't start unless it could dynamically load the .so.
2025-03-17 16:40:04 -04:00
a8c740a322
Setup sessions table to keep track of active SIDs
...
This is very simple, as I just replace the last active session ID if you login
again. There's no way to invalidate them yet.
2025-03-16 21:15:58 -04:00
bd23c04848
Add a basic login system
...
This allows you to register in the web frontend now, and the login server now
checks this before giving a session ID. Note that this is wildly insecure (it
stores the passwords in plaintext!) and is duly noted in the USAGE.
2025-03-16 20:55:51 -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