Add new pages, update stuff and add release docs
This commit is contained in:
parent
1322f02d56
commit
0bfa2e6a20
8 changed files with 140 additions and 27 deletions
96
content/astra/releasing.md
Normal file
96
content/astra/releasing.md
Normal file
|
@ -0,0 +1,96 @@
|
|||
---
|
||||
title: "Creating Releases"
|
||||
---
|
||||
|
||||
There are only two kinds of releases currently:
|
||||
|
||||
* **Major releases** include major features and of course, bug fixes.
|
||||
* **Minor releases** should only include bug fixes. Important features can be backported when nessecary, but don't try to rock the boat.
|
||||
|
||||
It's important that the major number in the version string should not be changed for minor releases. For example:
|
||||
|
||||
* 0.4.0 -> 0.5.0 is a major release.
|
||||
* 0.4.0 -> 0.4.1 is a minor release.
|
||||
|
||||
# Support policy
|
||||
|
||||
Only one major release should be supported at a time, and only the latest minor release for it. If there is 0.4.0, 0.5.0, 0.5.1 then only 0.5.1 is supported.
|
||||
|
||||
# Who can create releases
|
||||
|
||||
I'm the only one who can create releases, due to having SFTP access to the web host and my GPG key. In the future this can be expanded to more people by trusting another GPG key, however.
|
||||
|
||||
# Branches
|
||||
|
||||
Major releases should have their own branch such as `release/0.5`. These branches are meant to be stable, and minor releases built on top of them linearly. All references to these branches shall henceforth be called "release branches".
|
||||
|
||||
# Cherry-picking
|
||||
|
||||
All bugfixes should ideally be committed to `main`, unless it's not nessecary (like fixing a bug only present on that release branch.) Then cherry-pick it to the relevant release branches with `git cherry-pick -x`. It's important to use `-x` so we have a reference to the original commit.
|
||||
|
||||
# GitHub Releases?
|
||||
|
||||
GitHub Releases should be avoided as they are an ecosystem lock-in. We have our own web host that we can host files on outside of GitHub. Similarly, users should not be required to download release artifacts from Actions as that also requires a GitHub account.
|
||||
|
||||
# Process
|
||||
|
||||
Once you're ready to make a release, there are several steps to do. These can really be freely done in any order, this is more of a checklist.
|
||||
|
||||
## Make sure the version is bumped
|
||||
|
||||
You need to bump the version in two places: CMakeLists.txt and the AppStream data. Modify the version text for the `project`, which is this line:
|
||||
|
||||
```cmake
|
||||
project(Astra VERSION 0.5.1 LANGUAGES CXX)
|
||||
```
|
||||
|
||||
And for AppData, create a new `<release>` tag:
|
||||
|
||||
```xml
|
||||
<releases>
|
||||
<release version="0.5.1"/>
|
||||
<release version="0.5.0"/>
|
||||
</releases>
|
||||
```
|
||||
|
||||
{{< note "TODO: We should have a way to put the changelogs in the AppStream data." >}}
|
||||
|
||||
Remember to commit to the release branch before continuing.
|
||||
|
||||
## Create a git tag
|
||||
|
||||
Next is to create a Git tag for the release. Ensure you're on the correct branch and hash, and use `git tag -a <version number>`. For example, `git tag -a 0.5.2`. Make sure the first line is a short blurb for the update. This is what I entered for 0.5.1:
|
||||
|
||||
```
|
||||
Minor update for recent game updates
|
||||
* Made Dalamud asset downloading more reliable.
|
||||
* Fix logging in when the 32-bit client disappeared.
|
||||
* Made the source tarballs slightly smaller.
|
||||
* Bypass the official FFXIV website browser check.
|
||||
* Changed the default Dalamud inject method to "Entrypoint".
|
||||
* More boot patch reliability fixes.
|
||||
```
|
||||
|
||||
Then push the tag using `git push origin tag <version number>`.
|
||||
|
||||
## Create & upload the tarball
|
||||
|
||||
A source tarball can be created by `scripts/tarball.sh`. The final tarball will be created in the parent directory. The SHA256 should be recorded, and this should then be uploaded to the web host.
|
||||
|
||||
{{< note "TODO: I should GPG sign this tarball." >}}
|
||||
|
||||
## Update xiv.zone
|
||||
|
||||
Currently the website has to be kept up to date manually:
|
||||
|
||||
1. Update the current stable version text under /install.
|
||||
2. Create a new version page & update the changelog link.
|
||||
3. Update the source tarball link, including the size (if changed) and the SHA256.
|
||||
|
||||
## Update the distro packaging
|
||||
|
||||
There are three packages to update and test:
|
||||
|
||||
* Fedora
|
||||
* Gentoo
|
||||
* Arch Linux
|
|
@ -2,9 +2,7 @@
|
|||
title: "Community Projects"
|
||||
---
|
||||
|
||||
{{< note "This documentation is incomplete." >}}
|
||||
|
||||
FFXIV for some reason has a budding ecosystem of interesting open source projects and libraries.
|
||||
Here's a list of interestings projects I've come across:
|
||||
|
||||
# Launchers
|
||||
|
||||
|
@ -16,8 +14,8 @@ Alternative programs for the [official launcher]({{< ref "/executable/ffxivlaunc
|
|||
| XIVLauncher.Core | Cross-platform version of XIVLauncher, optimized for Steam Deck | https://github.com/goatcorp/XIVLauncher.Core |
|
||||
| XIV on Mac | Wine Wrapper, Setup tool and launcher for FFXIV on mac | http://www.xivmac.com/ |
|
||||
| microlaunch | A native Linux launcher for FINAL FANTASY XIV Online written in Rust | https://github.com/eorzeatools/microlaunch |
|
||||
| Astra | A FFXIV launcher that supports profiles, multiple accounts and Dalamud plugins. | https://xiv.zone/astra/ |
|
||||
| Seventh Umbral | Launcher for FFXIV 1.x | https://github.com/jpd002/SeventhUmbral |
|
||||
| Astra[^1] | A FFXIV launcher that supports profiles, multiple accounts and Dalamud plugins. | https://xiv.zone/astra/ |
|
||||
|
||||
# Clients
|
||||
|
||||
|
@ -34,8 +32,8 @@ Alternative programs for the official servers such as [Frontier]({{< ref "fronti
|
|||
| Name | Description | Website |
|
||||
| --- | --- | --- |
|
||||
| Sapphire | A Final Fantasy XIV 4.0+ Server Emulator written in C++ | https://github.com/SapphireServer/Sapphire/ |
|
||||
| Kawari | Substitute for some official FFXIV servers | https://github.com/redstrate/kawari |
|
||||
| Project Meteor | Final Fantasy XIV 1.X Server Emulator | https://bitbucket.org/Ioncannon/project-meteor-server/ |
|
||||
| Kawari[^1] | Substitute for some official FFXIV servers | https://git.sr.ht/~redstrate/kawari |
|
||||
|
||||
# Libraries
|
||||
|
||||
|
@ -46,7 +44,9 @@ Libraries to interact with game data, read formats and more.
|
|||
| xivModdingFramework | The library that powers TexTools. Can read/write models, textures, materials etc. | https://github.com/TexTools/xivModdingFramework |
|
||||
| Lumina | A simple, performant and extensible framework for interacting with FFXIV game data | https://github.com/NotAdam/Lumina |
|
||||
| Xande | A C# library for interacting with FINAL FANTASY XIV models | https://github.com/xivdev/Xande |
|
||||
| Physis | Data framework for FFXIV | https://github.com/redstrate/physis |
|
||||
| Penumbra.GameData | Game Data preparation for Penumbra. | https://github.com/Ottermandias/Penumbra.GameData/ |
|
||||
| FFXIVClientStructs | Resources for reverse-engineering the FFXIV client's native classes. | https://github.com/aers/FFXIVClientStructs/ |
|
||||
| Physis[^1] | Data framework for FFXIV | https://git.sr.ht/~redstrate/physis |
|
||||
|
||||
# Plugin Frameworks
|
||||
|
||||
|
@ -55,3 +55,15 @@ Ways to extend the game at runtime with new capabilities.
|
|||
| Name | Description | Website |
|
||||
| --- | --- | --- |
|
||||
| Dalamud | FFXIV plugin framework and API | https://github.com/goatcorp/Dalamud |
|
||||
|
||||
# Miscellaneous
|
||||
|
||||
Projects that don't fit into any other category.
|
||||
|
||||
| Name | Description | Website |
|
||||
| --- | --- | --- |
|
||||
| Ouroburos | Reverse engineering and modding of some shaders of a popular game | https://github.com/Shaderlayan/Ouroboros |
|
||||
| benchtweaks | Small tweaks for the FINAL FANTASY XIV: Dawntrail benchmark | https://github.com/NotNite/benchtweaks |
|
||||
| FFXIV vulgar words reader | FFXIV vulgarwordsfilter.dic parser | https://github.com/Lotlab/ffxiv-vulgar-words-reader/ |
|
||||
|
||||
[^1]: Written by me, but included on the list for the sake of.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: "Launching Dalamud"
|
||||
title: "Integrating Dalamud"
|
||||
---
|
||||
|
||||
If you're developing your own launcher, you might be interested in integrating [Dalamud](https://github.com/goatcorp/Dalamud) support. Here's a detailed
|
||||
|
@ -9,11 +9,11 @@ walk-through of setting up a proper Dalamud environment.
|
|||
|
||||
You'll need a .NET environment to actually launch Dalamud, since it's based it uses .NET. It won't try to use your system .NET, and will require to put it into a separate directory.
|
||||
|
||||
In order to determine which .NET runtime you need, first check dalamud-distrib using the following URL:
|
||||
In order to determine which .NET runtime you need, first check the Dalamud Distribution server using the following URL:
|
||||
|
||||
`https://goatcorp.github.io/dalamud-distrib/version`
|
||||
`https://kamori.goats.dev/Dalamud/Release/VersionInfo`
|
||||
|
||||
This will return a JSON containing keys for `RuntimeVersion`. This is the required .NET runtime, which then can be fetched directly from Microsoft:
|
||||
This will return a JSON containing keys for `runtimeVersion`. This is the required .NET runtime, which then can be fetched directly from Microsoft:
|
||||
|
||||
`https://dotnetcli.azureedge.net/dotnet/Runtime/%1/dotnet-runtime-%1-win-x64.zip`
|
||||
|
||||
|
@ -23,9 +23,7 @@ You can then extract both zip files into some directory, henceforth called `$RUN
|
|||
|
||||
# Grabbing Dalamud
|
||||
|
||||
Now you can grab dalamud from dalamud-distrib:
|
||||
|
||||
`https://goatcorp.github.io/latest.zip`
|
||||
Now you can grab Dalamud from Dalamud Distribution (`https://kamori.goats.dev/Dalamud/Release/VersionInfo`) where the URL is `downloadUrl`.
|
||||
|
||||
You can then extract this zip file, and the resulting directory will be referred to as `$DALAMUD_DIR`.
|
||||
|
||||
|
@ -37,17 +35,16 @@ These are not grabbed by Dalamud (for some reason) and instead you must download
|
|||
|
||||
You can find the asset manifest at:
|
||||
|
||||
`https://goatcorp.github.io/DalamudAssets/asset.json`
|
||||
`https://kamori.goats.dev/Dalamud/Asset/Meta`
|
||||
|
||||
This is simply a long JSON describing where to find the assets, the current version and where to put them. The directory you put
|
||||
assets in will be called `$DALAMUD_ASSET_DIR`.
|
||||
This is simply a long JSON describing where to find the assets, the current version and where to put them. It's recommended to use the `packageUrl` to download all of the assets at once. The directory you put assets in will be called `$DALAMUD_ASSET_DIR`.
|
||||
|
||||
# Launching Dalamud
|
||||
|
||||
Now with all of your ugly ducklings in a row, you can begin launching Dalamud! First, please make
|
||||
sure these environment variables are set **on the game process and all relevant processes and children**. Please double check these, as Dalamud may silently fail without them.
|
||||
|
||||
* `DALAMUD_RUNTIME` should be set to your`$RUNTIME_DIR`.
|
||||
* `DALAMUD_RUNTIME` should be set to your `$RUNTIME_DIR`.
|
||||
* If you are in Wine, please set `XL_WINEONLINUX`.
|
||||
|
||||
1. Launch `$DALAMUD_DIR/Dalamud.Injector.exe`.
|
||||
|
|
|
@ -12,5 +12,6 @@ Despite the [official FFXIV Benchmark site](https://na.finalfantasyxiv.com/bench
|
|||
* [Stormblood (4.x)](http://gdl.square-enix.com/ffxiv/ga61lwajq3g5r2qb/ffxiv-stormblood-bench.zip)
|
||||
* [Shadowbringers (5.x)](https://gdl.square-enix.com/ffxiv/nr2xkhecw9vrkuqy/ffxiv-shadowbringers-bench.zip?=benchmark)
|
||||
* [Endwalker (6.x)](https://download.finalfantasyxiv.com/ys8glaimvmykn88p/ffxiv-endwalker-bench.zip)
|
||||
* [Dawntrail (7.x)](https://download.finalfantasyxiv.com/s9qmq6SJfMMqYM4o/ffxiv-dawntrail-bench.zip)
|
||||
|
||||
{{< note "ARR and Heavenward place the benchmark files under a `/inst` directory on their server. Expansions afterward, place it under a directory with a directory with a seemingly randomized string such as 'nr2xkhecw9vrkuqy'." >}}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
title: "Launcher (ffxivlauncher.exe)"
|
||||
---
|
||||
|
||||
{{< note "This documentation is incomplete." >}}
|
||||
|
||||
This is the program that logins into the official servers and launches the game.
|
||||
|
||||
# History
|
||||
|
@ -12,25 +10,25 @@ Since FFXIV has been around for a long time, it's went through several launcher
|
|||
|
||||
## 1.x
|
||||
|
||||
This is the old launcher designed used for 1.x versions, before A Realm Reborn. This is [a recreation by Ioncannon](http://ffxivclassic.fragmenterworks.com/), as I can't find a screenshot of the original login page anywhere online.
|
||||
This is the launcher used for 1.x, before A Realm Reborn. This screensot is [a recreation by Ioncannon](http://ffxivclassic.fragmenterworks.com/), as I can't find the original login page anywhere online.
|
||||
|
||||

|
||||
|
||||
## 2.x
|
||||
|
||||
The old launcher has been there since launch, but was on the path to be retired since the new launcher design was used.
|
||||
This launcher design was launched with A Realm Reborn and had been in service until Endwalker.
|
||||
|
||||

|
||||
|
||||
## 6.5+
|
||||
|
||||
It seems as of Patch 6.5, the old launcher can no longer be used and all users must use the new design.
|
||||
This is the current iteration of the launcher, and the old launcher can no longer be used and all users must use the new design (as of 6.5+)
|
||||
|
||||

|
||||
|
||||
# Internals
|
||||
|
||||
The launcher is actually a website, and the launcher is served by the [Frontier server]({{< ref "/server/frontier" >}}) on URLs such as https://frontier.ffxiv.com/version_4_0_win/index.html?1559390056785.
|
||||
The launcher is wrapper of a website, and the page is served by the [Frontier server]({{< ref "/server/frontier" >}}) on URLs such as https://frontier.ffxiv.com/version_4_0_win/index.html?1559390056785.
|
||||
|
||||
In order for the launcher to actually launch anything useful, it uses JavaScript callbacks into native code.
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ title: "Updater (ffxivupdater.exe)"
|
|||
|
||||
{{< note "This documentation is incomplete." >}}
|
||||
|
||||
This is the program that actually processes the [patch files]({{< ref "format/patch" >}}) and applies them to the game or boot data.
|
||||
The program that processes the [patch files]({{< ref "format/patch" >}}) and applies them to the game or boot data.
|
||||
|
||||
# Arguments
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
title: "PlayStation 3"
|
||||
title: "PlayStation 3 Client"
|
||||
---
|
||||
|
||||
In [mid-2017 Square Enix officially ended support for the PlayStation 3 version](https://na.finalfantasyxiv.com/lodestone/topics/detail/a8db3b52eae5f11037a16ef7a637368a2ec5ed08). This guide covers how to crack open and mess with the game files, assuming you have a legitimate retail copy. Unfortunately reverse engineering PS3 games is slowly becoming a lost art, I hope to give a quick guide on how to do so.
|
||||
In [mid-2017, Square Enix officially ended support for the PlayStation 3 version](https://na.finalfantasyxiv.com/lodestone/topics/detail/a8db3b52eae5f11037a16ef7a637368a2ec5ed08). This guide covers how to crack open and mess with the game files, assuming you have a legitimate retail copy. Unfortunately reverse engineering PS3 games is slowly becoming a lost art, so here's a quick guide to get started!
|
||||
|
||||
# Obtaining a copy
|
||||
|
||||
|
@ -32,7 +32,7 @@ $ pkgrip INSTALL.PKG
|
|||
|
||||
This process should only take a few minutes and dump the file tree into your current directory.
|
||||
|
||||
Once the contents of the PKG file are dumped, you'll see a very similar looking file structure to the file game. There are a few excpetions:
|
||||
Once the contents of the PKG file are dumped, you'll see a very similar looking folder structure. There are a few excpetions:
|
||||
* The [Bink video files](https://www.radgametools.com/bnkmain.htm) under `game/movie/ffxiv` are "pam" files. No idea what those are yet.
|
||||
* The `dat0` and `index` files are suffixed with `ps3` instead of `win32`, of course.
|
||||
* Curiously, there are `sdat` files as well. Maybe these are encrypted?
|
||||
|
|
9
content/reverse-engineering/windows.md
Normal file
9
content/reverse-engineering/windows.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: "Windows Client"
|
||||
---
|
||||
|
||||
# Ghidra
|
||||
|
||||
You can plug any Win32 executable into Ghidra and it will happily decompile it. Of course, there won't be any debug symbols so can be hard to find anything.
|
||||
|
||||
If you follow the [FFXIVClientStructs Ghidra guide](https://github.com/aers/FFXIVClientStructs/blob/main/ida/README.md) it will give you very helpful tools for getting around. It includes reverse engineered symbols as well as a signature maker, which can help writing hooks for plugins.
|
Loading…
Add table
Reference in a new issue