Publish new kawari blog post, update shrines and other misc changes
Some checks failed
Deploy / Deploy Website (push) Has been cancelled
Some checks failed
Deploy / Deploy Website (push) Has been cancelled
This commit is contained in:
parent
267d341720
commit
280a64b445
38 changed files with 149 additions and 67 deletions
|
@ -126,6 +126,9 @@ menu:
|
|||
- name: 'Accessibility'
|
||||
url: 'accessibility'
|
||||
weight: 3
|
||||
- name: 'Source Code'
|
||||
url: 'https://code.ryne.moe/redstrate/redstrate.com'
|
||||
weight: 4
|
||||
badges:
|
||||
- name: 'CC NC SA'
|
||||
params:
|
||||
|
|
|
@ -87,7 +87,7 @@ In a previous update you might have seen that my character's attributes were com
|
|||

|
||||
|
||||
There are now several new GM commands:
|
||||
* ``//gm wireframe``: Turns on wireframe rendering for the environment. I actually wonder if this to catch bots running under the ground. Is that still a thing?
|
||||
* ``//gm wireframe``: Turns on wireframe rendering for the environment. I actually wonder if this is for catching bots running underneath the ground. Is that still a thing?
|
||||
* `//gm <item>` to give yourself an item.
|
||||
* `//gm lv <level>` to set your current level.
|
||||
|
||||
|
|
BIN
content/blog/kawari9/char-archive.webp
Normal file
BIN
content/blog/kawari9/char-archive.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
78
content/blog/kawari9/index.md
Normal file
78
content/blog/kawari9/index.md
Normal file
|
@ -0,0 +1,78 @@
|
|||
---
|
||||
title: "Kawari Progress Report 9 - Patch 7.21"
|
||||
date: 2025-05-01
|
||||
draft: false
|
||||
tags:
|
||||
- FFXIV
|
||||
- Reverse Engineering
|
||||
series:
|
||||
- Kawari Progress Report
|
||||
summary: "Here is a new progress report, mostly smaller things but I managed to complete another patch update!"
|
||||
---
|
||||
|
||||
Here is a new progress report, mostly smaller things but I managed to complete another patch update! I have begun working on my other FFXIV projects again, so Kawari has taken a bit of a back-burner.
|
||||
|
||||
# Equipped Weapons
|
||||
|
||||
Your equipped weapon is now displayed (subweapons are not yet, so some weapons will look broken.) It turns out I was truncating the model IDs, which was easy to fix:
|
||||
|
||||

|
||||
|
||||
More importantly, this fixes the broken-looking animations when you attacked enemies! (Or rather, the lack of animation...)
|
||||
|
||||
# Launcher
|
||||
|
||||
[Sapphire](https://github.com/SapphireServer/Sapphire) - _the_ alternative server for FFXIV - uses a completely bespoke launcher. Other projects expect you to know how to launch the game manually. Kawari isn't any better: [Astra](https://github.com/redstrate/Astra) has first-class support, but I shouldn't expect you to use it. I want Kawari to be approachable to the average FFXIV player!
|
||||
|
||||
What if we just re-used the _existing_ program SqEx ships, which is already very capable of launching the game?
|
||||
|
||||

|
||||
|
||||
This is now possible with [LauncherTweaks](https://github.com/redstrate/LauncherTweaks), and Kawari is now equipped to serve a launcher page that's compatible with the latest boot executable (and possibly older versions too!) We can do this too without modifying any game files, users just have to copy two files into their boot directory.
|
||||
|
||||
I don't know enough about [the launcher API](https://wiki.xiv.zone/Launcher#Native_Communication) to launch the game _yet_, but it can already read `FFXIV_BOOT.cfg`, open the config backup tool and more. Once that's done though I'll modify our usage guide accordingly!
|
||||
|
||||
# Patch 7.21
|
||||
|
||||
This patch was released since the last report, so it's time to update those IPC opcodes! This is actually quite a fun one, so I've been busy playing the retail game again instead of working on Kawari 😄
|
||||
|
||||
Anyway, Kawari should now work with this version[^1]. There's a few tidbits left such as events, but I think 7.22 will release soon - I don't want to waste too much time on 7.21.
|
||||
|
||||
# China Region
|
||||
|
||||
A special interest of mine recently is exploring the [Chinese](https://wiki.xiv.zone/China_Region) and [Korean](https://wiki.xiv.zone/Korea_Region) versions of the game (well, as much as an I can without being a citizen of either country.) I have implemented the bare minimum so a Chinese client to connect to the Kawari lobby server. They use a specialized login packet that was trivial to add:
|
||||
|
||||

|
||||

|
||||
|
||||
This doesn't mean Chinese clients can load into a zone, unfortunately. Their client is too old and it predates any supported game version in Kawari. I suspect that even when they update, their IPC opcodes might still be different to their Global counterpart.
|
||||
|
||||
# Packet Obfuscation
|
||||
|
||||
[This is a new packet-related mess from SqEx](https://www.pcgamer.com/games/final-fantasy/i-cant-really-say-what-they-were-thinking-says-whistleblowing-modder-as-final-fantasy-14s-attempt-to-thwart-stalkers-falls-terribly-short-of-the-mark/), but fortunately doesn't require Kawari to implement it. I'm still worried will become mandatory in the future, so I'm going to work on supporting it anyway.
|
||||
|
||||
I have now added a toggle to the world config to tell the client we are sending obfuscated packets, but let me reiterate there's _no point_ in doing this. We don't actually obfuscate anything yet, so all it does is crash the game. If the server happens to send invalid data, I guess the client doesn't know how to handle it? Good thing that network errors don't exist!!
|
||||
|
||||
If you're interested in how the obfuscation works on the client, see [Perchbird's Unscrambler](https://github.com/perchbirdd/Unscrambler) which goes into a _ton_ of detail about the algorithm.
|
||||
|
||||
# Scripting
|
||||
|
||||
I have filled out more `ActionResult` fields for attacks. This is now exposed in the Lua API, and action scripts can specify whether they deal magical/physical damage, their aspect and more:
|
||||
|
||||
```lua
|
||||
-- FastBlade.lua
|
||||
function doAction(player)
|
||||
effects = EffectsBuilder()
|
||||
effects:damage("Normal", "Slashing", "Unaspected", 20)
|
||||
|
||||
return effects
|
||||
end
|
||||
```
|
||||
|
||||
# Character Backups
|
||||
|
||||
As I mentioned in a previous report, you could place character backups from [Auracite](https://auracite.xiv.zone/) into the server's `backups` folder to load them. This doesn't really work anymore now that we have accounts and such. Now this functionality is exposed on the account management website, where it makes more sense:
|
||||
|
||||

|
||||
|
||||
[^1]: With that, Kawari now works against four different patches: 7.21, 7.20h, 7.20 and 7.18h! With [iolite](https://github.com/0xbbadbeef/iolite), we can use an alternative server with 7.16.
|
BIN
content/blog/kawari9/launcher.webp
Normal file
BIN
content/blog/kawari9/launcher.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
BIN
content/blog/kawari9/shanda-char.webp
Normal file
BIN
content/blog/kawari9/shanda-char.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
BIN
content/blog/kawari9/shanda-lobby.webp
Normal file
BIN
content/blog/kawari9/shanda-lobby.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
BIN
content/blog/kawari9/wepon.webp
Normal file
BIN
content/blog/kawari9/wepon.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
12
content/software/morpho.md
Normal file
12
content/software/morpho.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: "Morpho"
|
||||
date: 2025-04-26
|
||||
draft: false
|
||||
layout: "project"
|
||||
projtags:
|
||||
- Qt
|
||||
source: "https://invent.kde.org/redstrate/Morpho"
|
||||
license: GPLv3
|
||||
summary: "BlueSky client"
|
||||
---
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
"program": "Procreate",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
"program": "Procreate",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"program": "Procreate",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"program": "Procreate",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"newgrounds_url": "https://www.newgrounds.com/art/view/redstrate/bard-in-the-black-shroud",
|
||||
"program": "Procreate, Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "bard in the black shroud"
|
||||
}
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
"mastodon_url": "https://mastodon.art/@redstrate/109434559164546455",
|
||||
"program": "Procreate",
|
||||
"tags": [
|
||||
"sketch"
|
||||
"sketch",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Sketch Dump"
|
||||
}
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"description": "As you can probably tell, I LOVE this streetwear set in FFXIV.",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Viera Streetwear"
|
||||
}
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"program": "Krita",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Viera #1"
|
||||
}
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"program": "Krita",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Viera #2"
|
||||
}
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"mastodon_url": "https://mastodon.art/@redstrate/109394255132277134",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"sketch"
|
||||
"sketch",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Well Fed"
|
||||
}
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"description": "This is my second Knockout background, which is just a slightly touched up drawing I did last year! I still like this set.",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Knockout Background #2"
|
||||
}
|
||||
|
|
|
@ -14,7 +14,8 @@
|
|||
"program": "Krita",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "march sketches"
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3lc6i7menf22b",
|
||||
"program": "Krita, Blender",
|
||||
"title": "commission for midnighto51",
|
||||
"tags": ["fan art", "commission"],
|
||||
"tags": ["fan art", "commission", "ffxiv"],
|
||||
"languages": {
|
||||
"jp": {
|
||||
"title": "commission for midnighto51 (2)"
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3lbmxvdfrhk2t",
|
||||
"program": "Krita, Blender",
|
||||
"title": "commission for midnighto51",
|
||||
"tags": ["fan art", "commission"],
|
||||
"tags": ["fan art", "commission", "ffxiv"],
|
||||
"languages": {
|
||||
"jp": {
|
||||
"title": "commission for midnighto51"
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3lbdmhro4g22t",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Miq'ote Sketch"
|
||||
}
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
"program": "Krita",
|
||||
"tags": [
|
||||
"sketch",
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Sage Sketch"
|
||||
}
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3lbdmhro4g22t",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Juritta Sketch"
|
||||
}
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3lbhxsxbzx22j",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Viera ID Check",
|
||||
"languages": {
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"mastodon_url": "https://mastodon.art/@redstrate/111794271545458755",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "It's cold here"
|
||||
}
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
"pixiv_url": "https://www.pixiv.net/artworks/115516281",
|
||||
"program": "Krita",
|
||||
"tags": [
|
||||
"fan art"
|
||||
"fan art",
|
||||
"ffxiv"
|
||||
],
|
||||
"title": "Bull of Ala Mhigo",
|
||||
"languages": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"alt_text": "Drawing of my Viera warrior of light from Final Fantasy XIV. She is wearing a big light green shirt, and leaning on her right hand. The shirt has a design of a bomb on it.",
|
||||
"tags": ["sketch", "fan art"],
|
||||
"tags": ["sketch", "fan art", "ffxiv"],
|
||||
"date": "2025-02-28",
|
||||
"mastodon_url": "https://mastodon.art/@redstrate/114082579323219923",
|
||||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3ljavgnqygc2a",
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"pixiv_url": "https://www.pixiv.net/en/artworks/129208899",
|
||||
"program": "Krita",
|
||||
"title": "dress 👗",
|
||||
"tags": ["fan art"],
|
||||
"tags": ["fan art", "ffxiv"],
|
||||
"languages": {
|
||||
"jp": {
|
||||
"title": "ドレス"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"alt_text": "Illustration of a male Viera (from Final Fantasy XIV Online.) He is wearing his usual tribal garments, which consists of a short shirt, a rug-like thing tugged around his hips and a lot of belts. He has short dark hair, brown eyes and is looking at you. Past him you can see trees that reach into the night sky, with moonlight pouring in through the green leaves.",
|
||||
"tags": ["fan art"],
|
||||
"tags": ["fan art", "ffxiv"],
|
||||
"date": "2025-04-06",
|
||||
"mastodon_url": "https://mastodon.art/@redstrate/114291820012411651",
|
||||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3lm5sicqhkc2o",
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"characters": [
|
||||
"ryne"
|
||||
],
|
||||
"tags": ["fan art"],
|
||||
"tags": ["fan art", "ffxiv"],
|
||||
"date": "2025-01-01",
|
||||
"mastodon_url": "https://mastodon.art/@redstrate/113754899961557170",
|
||||
"bluesky_url": "https://bsky.app/profile/redstrate.com/post/3lepfk72lj22o",
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
"program": "Krita",
|
||||
"title": "undressed 🫣",
|
||||
"nsfw": true,
|
||||
"tags": ["fan art"],
|
||||
"tags": ["fan art", "ffxiv"],
|
||||
"characters": ["juritta"],
|
||||
"languages": {
|
||||
"jp": {
|
||||
|
|
|
@ -41,39 +41,13 @@
|
|||
<div class="box">
|
||||
<h2>Artwork</h2>
|
||||
|
||||
<p>Here's some fan art of my WoL, I want to do more general FFXIV fan art in the future too!</p>
|
||||
<p>Here's some fan art, mostly of my own WoL. I want to do more general FFXIV fan art eventually!</p>
|
||||
|
||||
<div style="height: 500px; overflow: auto">
|
||||
{{ partial "art-section" . }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="radio" id="tab-3" name="my-tabs">
|
||||
<label for="tab-3" class="tab-label">Mods</label>
|
||||
<div class="container">
|
||||
<div class="box">
|
||||
<h2>My Mods</h2>
|
||||
|
||||
<p>I have created a few mods to enhance the game:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://xiv.zone/mods/rebound">Rebound</a>: Somehow even after the big graphical update, Square Enix hasn't fixed the bug where certain character physics (like the Viera ear wiggle) breaks under high framerates.</li>
|
||||
<li><a href="https://xiv.zone/mods/refitter">Refitter</a>: I didn't like how some armor fit on my WoL, so I fixed it myself.</li>
|
||||
<li><a href="https://xiv.zone/mods/hooky">Hooky</a>: I find this really useful during Gold Saucer events so I can leave the game running the background.</li>
|
||||
<li><a href="https://xiv.zone/mods/easyfullscreen">EasyFullscreen</a>: So I can enter and exit the game with F11.</li>
|
||||
</ul>
|
||||
|
||||
<h2>My Tools</h2>
|
||||
|
||||
<p>I have created some unofficial tools for the game:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://xiv.zone/astra">Astra</a>: I use this on my desktop & Steam Deck to launch the game.</li>
|
||||
<li><a href="https://xiv.zone/novus">Novus</a>: There was no Linux solution for working with the game's data on Linux - so I created my own.</li>
|
||||
<li><a href="https://auracite.xiv.zone">Auracite</a>: This grabs portable information about your WoL. I used to display my adventurer plate here!</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
|
|
|
@ -6,14 +6,6 @@
|
|||
<p>Yes... I was a Minecraft kid growing up. I started playing during the Beta, but I'm not sure what version.</p>
|
||||
|
||||
<div class="container">
|
||||
<div class="box">
|
||||
<h2>Mods</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="https://code.ryne.moe/redstrate/realms-begone">Realms Begone</a>: Remove the Realms button on the Title Screen.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="box">
|
||||
<h2>Worlds</h2>
|
||||
|
||||
|
|
|
@ -2,14 +2,19 @@
|
|||
<h2>{{ .Title }}</h2>
|
||||
|
||||
{{ if in .File.Dir "blog" }}
|
||||
{{ $posted := $.Date.Format "January 02, 2006" }}
|
||||
{{ $modified := $.Page.Lastmod.Format "January 02, 2006" }}
|
||||
|
||||
<i style="margin: 0">
|
||||
Posted on
|
||||
<time datetime="{{ .Page.Lastmod.Format "2006-01-02" }}" class="text-muted">
|
||||
{{ $.Date.Format "January 02, 2006" }}
|
||||
{{ $posted }}
|
||||
</time>
|
||||
{{ if not (eq $posted $modified) }}
|
||||
<time datetime="{{ .Page.Lastmod.Format "2006-01-02" }}" class="text-muted">
|
||||
(Updated on {{ $.Page.Lastmod.Format "January 02, 2006" }})
|
||||
(Updated on {{ $modified }})
|
||||
</time>
|
||||
{{ end }}
|
||||
</i>
|
||||
|
||||
<br>
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
<div class="grid-sizer"></div>
|
||||
<div class="gutter-sizer"></div>
|
||||
|
||||
{{ $p := slice "Juritta" }}
|
||||
{{ range where .Site.RegularPages "Params.characters" "intersect" $p }}
|
||||
{{ $p := slice "ffxiv" }}
|
||||
{{ range where .Site.RegularPages "Params.arttags" "intersect" $p }}
|
||||
{{ if not (.Params.guest) }}
|
||||
{{ partial "render-art" . }}
|
||||
{{ end }}
|
||||
|
|
Loading…
Add table
Reference in a new issue