Keep working on draft
All checks were successful
Deploy / Deploy Website (push) Successful in 31s

This commit is contained in:
Joshua Goins 2025-07-04 17:00:43 -04:00
parent 274c929c33
commit af56d7a372
3 changed files with 65 additions and 29 deletions

View file

@ -1,67 +1,99 @@
---
title: "Kawari Progress Report 12 - Shopping"
date: 2025-06-30
title: "Kawari Progress Report 12 - Viewing"
date: 2025-07-04
draft: true
tags:
- FFXIV
- Reverse Engineering
series:
- Kawari Progress Report
summary: "PLACEHOLDER"
summary: "This is quite a large update, and we implemented quite a few game features now."
bluesky_url: ""
mastodon_url: ""
draft: true
---
This is quite a large update, thank you to our contributors making this list huge! We implemented quite a few game features now.
# Features
Currency (gil for now) and EXP are now supported and sent to the client.
Currency (just gil) and EXP are now supported, and these are sent to the client.
Thanks to thedax, the Aetheryte and Aethernet network is mostly functional - save for the starting town's Aetherytes which are hidden right now.
Thanks to thedax, the Aetheryte and Aethernet network is now mostly functional. We still have trouble making the Aetherytes in the starting town show up though.
Unlocks (Actions, Emotes, etc), unlocked Aetherytes EXP, item glamours and condition are now persistent and is saved on log out.
Unlocks (Actions, Emotes, etc), unlocked Aetherytes, EXP, item glamours and their condition are now persistent and saved on log out.
The inn bed is now 99% functional, save for the waking up animation.
The inn bed is now 99% functional, but we are still missing the waking up animation. Fun fact: the Dreamfitting feature works completely offline and doesn't seem to contact SqEx servers at all.
SCREENSHOT
The Unending Journey is now functional, which means **we can now play most FFXIV cutscenes offline**! Here it is in action:
VID
Most Gil shops are now partially implemented, allowing you to buy items. They all seem to share a common Lua script, so now it's just a matter of mapping them. Here is one in New Gridania:
VID
Thanks to thedax, the Lobby server now performs the same version and hash checking as retail. You can turn it off with a config option, of course.
The welcome message displayed on login can now be customized in the config:
![Screenshot courtesy of thedax](welcome.webp)
I have begun implementing packet obsfucation which is used on retail. It can obsfucate player names properly, but that's about it for now:
![](scrambler.webp)
# Multiplayer
Emotes are now shown from other players, but they do not interrupt yet:
Other player's emotes are networked now (they do not interrupt yet):
Sheathing and unsheathing weapons are also shown, but the animation does not play yet:
VID
The various display flags for equipment (like hiding headgear) is now shown to other players, and yourself.
Sheathing and unsheathing weapons are now networked, but the animation does not play properly:
VID
The various display flags for equipment (e.g. hiding headgear) is now shown to other players, and yourself:
VID
# Commands
You can now reload scripts like `Global.lua` that are loaded on start-up with the new `!reload` command.
You can now reload global scripts like `Global.lua` which are only loaded on start-up with the new `!reload` debug command. This makes authoring new events, commands, etc much easier.
I added the `!finishevent` command to forcefully tell the client to stop it's current event. This is useful if you got stuck while talking to something.
thedax added support for the `//gm teri_info` command for listing lots of useful information about your current zone.
Thanks to thedax, `//gm teri_info` is now supported and can list useful information about your current zone:
I added support for the `//gm gil` command.
GM commands are now ported to Lua, this will make it easier to add even more GM commands in the future. It also helped consolidate a lot of command implementation details.
SCREENSHOT
I added the `!item <name>` debug command to give you an item by name, like our `!equip` command.
I added support for the `//gm gil` command to give yourself gil. Thanks to thedax, you can now remove gil using `//gm collect` (just from yourself, for now.)
Thanks to thedax, you can now inspect the current player using `!inspect`:
SCREENSHOT
I added the `!completeallquests` command, allowing you to use features otherwise unavailable. Like for example, the Toybox:
SCREENSHOT
# Scripting
I added a generic Aetheryte script, and thedax tirelessly worked to script all of the Aetherytes in the game!
When encountering an unscripted event, it's now shown in chat and the server log:
When encountering Lua errors, the server now panics less. This - combined with the `!reload` command - makes scripting even easier than before!
thedax also implemented various things, most notably:
* Toy Chest (not currently functional until we can set unlocked quest bits)
* Orchestrion
SCREENSHOT
It's now possible to send an arbitrary number of parameters for event scenes, which are needed to implement some complex events.
It's now possible to read the player's inventory in Lua, we are also planning to let you modify it.
# Bugfixes
When encountering Lua errors, the server should now panic less.
Most zones should work again (in terms of exiting zone lines, aetherytes, etc) thanks to better LGB support in Physis.
Action scripts are now executed at the end of it's actual cast time, which makes Teleporting look _a little_ better.
@ -76,19 +108,23 @@ It's no longer possible to connect with an older client, which never worked anyw
The correct starting weapon for your selected class is now equipped, instead of it always being a GLA weapon.
The way the server loads LGBs is more accurate, by fetching the list of LGBs directly from the game files. This doesn't fix anything specifically, though.
Thanks to thedax, the Lobby server returns more relevant error messages.
# Updates
thedax updated Kawari to support 7.25h2.
Thanks to thedax, Kawari is updated to support 7.25h2 and 7.25h3. I bet we will see a fourth hotfix before 7.3!
# Tooling
I created Packet Analyzer, which re-uses Kawari's existing and semi-comphrensive packet infrastructure and switches it to "reverse". This allows you to view the contents of Chronofoil captures in a nice and structured fashion:
I created Packet Analyzer, which re-uses Kawari's existing and already comphrensive packet parsing to let you view Chronofoil captures:
You can try it out at https://analyze.xiv.zone/.
SCREENSHOT
It's now possible to compile Kawari to WebAssembly. The servers aren't compiled in, but the packet parser can be re-used.
You can try it out [on the web](https://analyze.xiv.zone/) now, and the source code is available [here](https://codeberg.org/redstrate/PacketAnalzyer).
Thanks to NotNite, grabbing _both_ the static (`.lib`) and dynamic (`.dll`) versions of Oodle is no longer nessecary. The documentation was also updated to reflect this.
Thanks to NotNite, grabbing _both_ the static (`.lib`) and dynamic (`.dll`) versions of Oodle on Windows is no longer nessecary! The documentation was also updated to reflect this.
# Community

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB