1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-24 08:07:45 +00:00
Commit graph

38 commits

Author SHA1 Message Date
af6f95fa61 Add CONTRIBUTING guide, detailing packet capture and updating to latest patch 2025-03-23 08:33:07 -04:00
1e343d0f10 Add version checks in the patch server for game and boot components
As 7.2 is releasing next week, it would be nice for the patch server to double
check the user has the correct version of the game. Now the patch server rejects
clients that have too new of a version.
2025-03-23 08:21:43 -04:00
0069196e3c Move some constants to common module 2025-03-22 19:17:01 -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
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
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
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
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
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
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
726d351f8b Add documentation for the different modules, move patchlist code 2025-03-16 15:42:46 -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
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
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
d1139b4618 Extract maximum char name length into a const 2025-03-13 00:18:00 -04:00
aa6e818bfb Begin moving IPC structures to their own files 2025-03-12 17:47:58 -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
51c66a4a14 Add support for decompressing Oodle-compressed packets 2025-03-09 12:00:58 -04:00
1013556eba Send ClientSelectData JSON, show character in lobby screen 2025-03-09 09:40:11 -04:00
970d756809 Move IPC opcodes to their own enum & module 2025-03-08 22:03:28 -05:00
6aed610276 Move more code out of packet module 2025-03-08 21:56:44 -05:00
51e0f0680e Move encryption stuffs into their own module 2025-03-08 16:10:00 -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
40ef6b8193 Run cargo fmt 2025-03-08 13:27:41 -05:00
5f2617ef71 Add world status webpage 2024-06-29 14:14:07 -04:00
ee6b4f2f7f Add PatchList type, for future usage
Also adds a test!
2024-06-29 13:56:54 -04:00
e529188d91 Add non-functional login/register pages 2024-05-11 14:10:49 -04:00
f37840d44f Begin adding a user accessible web server 2024-05-11 14:03:18 -04:00
3278452ac3 Begin work on HTML templates for future web panel functionality 2024-05-11 13:59:36 -04:00
bd9782a868 Move generate SID to its own dedicated function 2024-05-11 13:50:05 -04:00
1625179a74 Add admin panel, config 2023-10-05 12:09:05 -04:00