This commit is contained in:
parent
5c26bf8093
commit
ddede78b83
3 changed files with 223 additions and 4 deletions
165
content/blog/ffxiv-may2025/index.md
Normal file
165
content/blog/ffxiv-may2025/index.md
Normal file
|
@ -0,0 +1,165 @@
|
|||
---
|
||||
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.
|
53
content/blog/kawari10/index.md
Normal file
53
content/blog/kawari10/index.md
Normal file
|
@ -0,0 +1,53 @@
|
|||
---
|
||||
title: "Kawari Progress Report 10 - Polish"
|
||||
date: 2025-05-06
|
||||
draft: true
|
||||
tags:
|
||||
- FFXIV
|
||||
- Reverse Engineering
|
||||
series:
|
||||
- Kawari Progress Report
|
||||
summary: "meh"
|
||||
---
|
||||
|
||||
Today's progress report is all about polish! We still have a lot of rough edges, on a UX level but also technically.
|
||||
|
||||
Since this is the tenth progress report for Kawari, I think it's time for a re-introduction - in case you missed what this is about. [Kawari] is my alternative server for FFXIV. I
|
||||
|
||||
# Better Artifacts
|
||||
|
||||
I have redone the structure of the artifact ZIP, for example by putting the server binaries in the top-level directory. The original web template files are now included, so they can be freely changed like the game scripts:
|
||||
|
||||
[screenshot]
|
||||
|
||||
Additionally, there are now working run scripts for Windows and Linux to start all of the Kawari services at once. (Previously you had to manually run each and every executable.) Note that I have _no_ clue how to write Batch scripts, so it ends up doing stupid things like spawning a dozen console windows. If you're a Windows expert and know how to make that better, I would appreciate some help!
|
||||
|
||||
# Better Web
|
||||
|
||||
I redone the web interface and slapped on Bootstrap styling until I'm not lazy to do some custom CSS. It looks somewhat nice now:
|
||||
|
||||
[screenshot]
|
||||
|
||||
[screenshot]
|
||||
|
||||
# New Config Flags
|
||||
|
||||
There are a couple of new config flags, including:
|
||||
* Turn off outgoing packet compression, useful if your capture tool doesn't support Oodle decompression (and you don't care about what the client sends?)
|
||||
|
||||
# Official Launcher
|
||||
|
||||
Kawari can now be used with the official launcher, making it super easy to use. For Windows, this only consists of dragging files and Linux isn't much harder. The setup instructions are located on the internal website:
|
||||
|
||||
[screenshot]
|
||||
|
||||
Here's how it looks like in the launcher:
|
||||
|
||||
[screenshot]
|
||||
|
||||
# Scripting
|
||||
|
||||
I have expanded the breadth of things you can script, and I have it working on a variety of things now - such as:
|
||||
* Inns
|
||||
* Warps (including ferries, lifts, and exit doors.)
|
||||
* Beds
|
|
@ -2,20 +2,21 @@
|
|||
title: "Thoughts on LGM + RMS"
|
||||
date: 2025-05-06
|
||||
draft: false
|
||||
summary: "I'm attending Libre Graphics Meeting this month, and what a way to influence my experience with the event - before it even starts."
|
||||
summary: "I'm attending the Libre Graphics Meeting later this month, and what a way to influence my experience with the event - before it even starts."
|
||||
tags:
|
||||
- Open Source
|
||||
- Libre Graphics Meeting
|
||||
---
|
||||
|
||||
I'm attending Libre Graphics Meeting this month, and it's also my first LGM! What a way to [influence my feelings about the event](https://libregraphicsmeeting.org/2025/news/2025-05-06_0002-keynote-announcement-richard-stallman/) before it even starts:
|
||||
I'm attending the [Libre Graphics Meeting](https://libregraphicsmeeting.org/) later this month, and it's also my first LGM! What a way to [influence my feelings about the event](https://libregraphicsmeeting.org/2025/news/2025-05-06_0002-keynote-announcement-richard-stallman/) before it even starts:
|
||||
|
||||
> On Wednesday, May 28th at 19:30, Dr. Richard Stallman will deliver a keynote on Free/Libre Software and Freedom in the Digital Society at Libre Graphics Meeting.
|
||||
|
||||
Regardless of your feelings about RMS (try to guess mine!) there are some things about the keynote announcement that troubles me. I felt like this was better done on my blog instead of a quippy Mastodon post.
|
||||
|
||||
* **RMS is controversial**, that much is agreed upon (and this is also pointed out by the organizer.) This guy has _two websites_ claiming how "bad"/"good" he is, seriously?
|
||||
* **RMS is controversial**, that much is agreed upon (and this is also pointed out by the organizer.) This guy has _two different websites_ claiming how "bad"/"good" he is, seriously?
|
||||
* **RMS is not heavily involved in "Libre Graphics"**. This is _also_ pointed out by the organizer (they sort of toss away that point however.) Fine, it's your event and you can decide who gives a keynote.
|
||||
* **His presence _is_ driving people away**. Some of my friends are deciding not to go/canceling because of his presence. (That alone should be pretty telling?!) If I didn't book everything already, I would reconsider going myself.
|
||||
* **The organizer has admitted that they received "a pattern of concerning remarks"**, which _isn't_ a red flag by itself?
|
||||
* **The organizer has admitted that they received "a pattern of concerning remarks"**, which somehow _isn't_ a red flag by itself?
|
||||
|
||||
It's certainly _A Choice™_ to have the context provided above, and still be like "yeah, this is who I *want* doing a keynote." Certainly there must be more interesting people to pick from in this space? You can bet I'm not going to be around for his keynote.
|
||||
|
|
Loading…
Add table
Reference in a new issue