166 lines
9.8 KiB
Markdown
166 lines
9.8 KiB
Markdown
|
---
|
||
|
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.
|