redstrate.com/content/blog/ffxiv-may2025/index.md

166 lines
9.8 KiB
Markdown
Raw Normal View History

2025-05-06 16:13:40 -04:00
---
title: "Astra & Novus Status Update: May 2025"
date: 2025-05-06
draft: true
tags:
- Open Source
- FFXIV
- Modding
toc: true
series:
- Astra & Novus Status Update
---
Sooo... it's been a while since I wrote one of these. We have a years worth of progress to catch up on, so we'd better begin!
If this is your first time hearing any of this, [Astra]() is my unofficial FFXIV launcher that supports Linux[^1]. It supports launching Dalamud, can run as a Steam Compatibility Tool, and supports custom servers like [Kawari]():
Novus is my [unofficial FFXIV tool suite]() which includes programs to view model files, edit gear and a lot more. I got frustrated years ago that almost none of the pre-existing FFXIV modding tooling worked on Linux, so I made my own:
Updates to my Kawari project are happening in another [series of blog posts], because the scope of that project is large enough on it's own!
# Astra
## Initial Setup
I have redone the initial setup, making the entire process clearer:
Astra now supports importing an existing game install from another launcher:
## Developer Settings
Advanced Dalamud settings are now hidden behind the Developer Settings toggle, because they should rarely (if ever) be touched.
A new button has been added to the Developer Settings to launch the game immediately, which been more useful to me than you'd think:
If you develop Dalamud, there's now an easier way to use your local dev build in Astra. Plop it into `~/.local/share/astra/dalamud/local` and select the "Local" option for "Dalamud Channel" in your profile settings. This also skips all update and version checks for Dalamud.
Most custom server settings are now moved to be per-account, so you can have an account for an alternative server and still play on your Square Enix account easily.
You can now specify a custom lobby and game master server under developer settings, useful for connecting to any of the various alternative server projects.
## Misc UX
The password field is now writeable again, and you can also click a button to view your password:
It's now possible to update the game even if the worlds are closed for maintenance.
Before Astra starts patching, it checks if you have enough disk space - not only to download the update but also to install it. This should prevent some nasty scenarios when updating the game.
I have added back the "Tools" menu that was lost in the QML transition, so you can access the Official Launcher again if needed.
When removing a profile, we now provide an option to delete the game files too.
I added an option to disable updates. Useful if you're like me, and need to keep the game at a specific version.
## Bugfixes
Patches are no longer kept in memory, which was proven to be problematic on systems like the Steam Deck. This greatly improves patch stability for everyone, however!
If Dalamud reports that it's incompatible with your game version, it should disable itself automatically instead of crashing.
In the rare case where Astra does fail to apply a patch - like if the download was corrupted, (or a genuine bug in Physis) - an error is shown to the user and the errant patch is deleted:
The method Astra uses to track if the game is open (e.g. for keeping your computer from sleeping) is now way more reliable on Linux when running with Dalamud.
## Removals
I have done several feature removals to claw back the feature creep:
* Sapphire support is removed. I only used this feature _once_ (if ever?) and I kept breaking it.
* Feral Gamemode support is removed. I don't use it anymore, and I have an alternative solution up my sleeve if I want to add it back.
* Gamescope support is removed. I originally added this to workaround various Wine bugs when it runs under XWayland. But now that they have a native Wayland backend and even the XWayland bugs are gone, there's very little reason to keep it.
* The news is always shown, and the option to disable it has been removed.
## Steam Service Accounts
One of the last remaining features to implement was Steam service account support. I had been putting this off for a while because:
1. I don't use my own Steam service account.
2. They use yet _another_ Blowfish implementation for "encrypting" steam tickets and do a whole bunch of nonsense before sending it.
3. Communicating with the Steamworks API from a GPLv3 application is a bit annoying.
I'm happy to report I solved all of those problems, and Astra can now login to Steam service accounts just fine. There is one caveat: it's only supported when running as a Steam compatibility tool for now.
## Nightly Flatpaks
Are you interested in trying out Astra after all of these changes? If so, you can grab a nightly Flatpak from GitHub Actions. I will eventually update these to my server if you don't have a GitHub account.
# Novus
## Game Launcher
Added a new application for launching the game, it's very simple right now though.
## Gear Editor
Added various Penumbra actions to the Armour menubar.
## Game Renderer
Debug markers have been added to the game renderer to aid debugging graphical issues.
I'm still working on Dawntrail support for the game renderer, which isn't complete yet but looks less broken now.
## Excel Editor
You can switch between any available language in an Excel sheet. I'm stupid and CJK characters are not shown correctly yet.
## Data Explorer
I added a status bar to the bottom of Data Explorer, listing various useful information about the currently selected file or folder.
As you may have seen in my Kawari updates, I have been busy delving into how the game's event system works. To aid in this effort, I added a Lua decompiler to the Data Explorer which makes exploring *way* easier.
# Physis
This is the library that powers my FFXIV-related projects. It has received some significant changes, most of them related to fixing problems introduced by changes in Dawntrail.
## Dawntrail Updates
I'm happy to report that everything *mostly* works now, with the biggest exception being model I/O. You can read Dawntrail models, but writing them results in an invalid model that crashes the retail client. I will be redoing how model I/O works at some point, which will fix inherent design problems with how it's structured today, but I'm unsure about how soon that will happen.
## Patching Patches
ZiPatch support has been improving, I not only fixed more patching bugs but also working towards write support. Physis-created patches can add new files, but that's about the extent of what I wrote so far.
I written a more comprehensive patch list parser for Kawari. I then moved it to Physis, so it can be shared with Astra to replace it's C++ implementation. A cool thing about this implementation is being able to write completely new patchlists, something that will be essential for a future feature in Kawari.
## WebAssembly
Physis can now be compiled to WebAssembly, which was used in the web version of Auracite. I also hacked away a lot of dependencies in Physis that either wasn't needed or I could safely take out, and the result is a _much_ lighter library to build!
## Gearsets
A contributor has kindly written support for the GEARSETS.dat save data, and I hope we can expand into more save data in the future! Currently we can read Character Creation data, Gearsets data, Log data and Plain-text config files.
## Retail Testing Platform
I have a lot of tests in Physis (which I'm really proud of) but one thing that's really lacking is testing against many retail game versions. For example, I end up breaking support for Benchmarks _way_ more often than you'd think. To solve this, I have begun writing a testing platform for running Physis against a bunch of different game versions. I have yet to write a web frontend for it, and it's still a script I have to manually run.
## Miscel
In an effort to reduce the scope of the library API, I have moved a lot of functionality really only used by Astra to Miscel. This includes frontier URL lookup, installer helpers, and finding existing game directories.
(libphysis - the C/C++ bindings - now depend on both libraries for simplicity.)
## Excel Improvements
One of the first things I wrote was the Excel parser, and boooy does it have a ton of mistakes. A good example is how I handled row IDs - or to be more specific how I _didn't_ handle them. I have begun shifting around a ton of the API, not only to make it more functionally correct but also to prepare for writing support. (Writing custom Excel sheets is for a future unannounced project!)
## Terrain and Layer Groups
Another focus of mine has been terrain and layer groups, the two formats that make up the Zones in the game - from background objects, to Event NPCs and even deciding where you teleport. I have tidied up the terrain parsing some, and begun implementing write support for both formats. Layer groups are going to be really tricky though, don't expect that for a while.
## Character Save Data
A feature needed for Auracite was writing character creation saved data. If you don't know, Auracite is a tool (and website!) where you can "save" your FFXIV character into a ZIP file. It contains a bunch of cool things like your Adventurer Plate (as showcased in my FFXIV shrine), information pulled from the Lodestone and more!
## SQDB
A little known format called SQDB (Square Enix Database?) is used to detail what is inside of data files. This isn't shipped in retail anymore, but is such a simple format it just makes sense to add support for it.
# Documentation
I begun the process of moving from docs.xiv.zone to wiki.xiv.zone. You may alread have seen I linked to it in newer projects. The wiki format has proven to be a lower barrier for me to edit it, so I hope more interesting stuff pops up on there. Note that the wiki is _not_ publicly editable, and I have no immediate plans to allow sign ups.
[^1]: It technically supports Windows, but there's very little reason to use it instead of XIVQuickLauncher.