Rebrand project and refresh title presentation

This commit is contained in:
Alexander Sellite 2026-08-25 17:14:12 -04:00
parent 17fef2c5d4
commit 7ae20789a9
138 changed files with 1511 additions and 1498 deletions

View file

@ -42,13 +42,13 @@ fi
readonly RELEASE_TAG="v${PROJECT_VERSION}"
readonly RELEASE_ROOT="${PROJECT_ROOT}/builds/${RELEASE_TAG}"
readonly ARM64_ROOT="${RELEASE_ROOT}/linux-arm64"
readonly ARM64_EXECUTABLE="${ARM64_ROOT}/NETfishing.arm64"
readonly ARM64_PCK="${ARM64_ROOT}/NETfishing.pck"
readonly ARM64_EXECUTABLE="${ARM64_ROOT}/straywild.arm64"
readonly ARM64_PCK="${ARM64_ROOT}/straywild.pck"
readonly STAGE_ROOT="${RELEASE_ROOT}/portmaster-stage"
readonly GAME_ROOT="${STAGE_ROOT}/netfishing"
readonly ARCHIVE="${RELEASE_ROOT}/netfishing.zip"
readonly OBSOLETE_VERSIONED_ARCHIVE="${RELEASE_ROOT}/NETfishing-${RELEASE_TAG}-portmaster-arm64.zip"
readonly OBSOLETE_LOWERCASE_ARCHIVE="${RELEASE_ROOT}/netfishing-${RELEASE_TAG}-portmaster-arm64.zip"
readonly GAME_ROOT="${STAGE_ROOT}/straywild"
readonly ARCHIVE="${RELEASE_ROOT}/straywild.zip"
readonly OBSOLETE_VERSIONED_ARCHIVE="${RELEASE_ROOT}/straywild-${RELEASE_TAG}-portmaster-arm64.zip"
readonly OBSOLETE_LOWERCASE_ARCHIVE="${RELEASE_ROOT}/straywild-${RELEASE_TAG}-portmaster-arm64.zip"
readonly HEAD_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)"
readonly TAG_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse "${RELEASE_TAG}^{commit}")"
@ -74,7 +74,7 @@ elif [[ "${HEAD_COMMIT}" != "${TAG_COMMIT}" ]]; then
echo "HEAD does not match ${RELEASE_TAG}. Refusing to package mutable source." >&2
exit 1
fi
if [[ "${NETFISHING_ALLOW_DIRTY_RELEASE:-0}" != "1" ]]; then
if [[ "${straywild_ALLOW_DIRTY_RELEASE:-0}" != "1" ]]; then
dirty_tree=0
git -C "${PROJECT_ROOT}" diff --quiet || dirty_tree=1
git -C "${PROJECT_ROOT}" diff --cached --quiet || dirty_tree=1
@ -97,7 +97,7 @@ done
mkdir -p -- "${ARM64_ROOT}" "${RELEASE_ROOT}"
if [[ ${PACKAGE_ONLY} -eq 0 ]]; then
readonly EXPORT_PROJECT_ROOT="$(
mktemp -d -t netfishing-portmaster-export.XXXXXX
mktemp -d -t straywild-portmaster-export.XXXXXX
)"
cleanup_export_project() {
rm -rf -- "${EXPORT_PROJECT_ROOT}"
@ -108,9 +108,9 @@ if [[ ${PACKAGE_ONLY} -eq 0 ]]; then
--exclude '/.git/' \
--exclude '/.godot/' \
--exclude '/art/source/' \
--exclude '/art/exported/system_icons/netfishing.ico' \
--exclude '/art/exported/system_icons/netfishing_1024.png' \
--exclude '/art/exported/system_icons/netfishing_1024.png.import' \
--exclude '/art/exported/system_icons/straywild.ico' \
--exclude '/art/exported/system_icons/straywild_1024.png' \
--exclude '/art/exported/system_icons/straywild_1024.png.import' \
--exclude '/audio/ambience/' \
--exclude '/builds/' \
--exclude '/docs/design/' \
@ -141,14 +141,14 @@ rm -f -- \
"${OBSOLETE_LOWERCASE_ARCHIVE}"
mkdir -p -- "${GAME_ROOT}/licenses"
install -m 0755 "${TEMPLATE_ROOT}/NETfishing.sh" "${STAGE_ROOT}/NETfishing.sh"
install -m 0755 "${TEMPLATE_ROOT}/straywild.sh" "${STAGE_ROOT}/straywild.sh"
install -m 0644 "${TEMPLATE_ROOT}/port.json" "${GAME_ROOT}/port.json"
install -m 0644 "${TEMPLATE_ROOT}/netfishing.gptk" \
"${GAME_ROOT}/netfishing.gptk"
install -m 0755 "${TEMPLATE_ROOT}/launch-netfishing.sh" \
"${GAME_ROOT}/launch-netfishing.sh"
install -m 0755 "${ARM64_EXECUTABLE}" "${GAME_ROOT}/NETfishing.aarch64"
install -m 0644 "${ARM64_PCK}" "${GAME_ROOT}/NETfishing.pck"
install -m 0644 "${TEMPLATE_ROOT}/straywild.gptk" \
"${GAME_ROOT}/straywild.gptk"
install -m 0755 "${TEMPLATE_ROOT}/launch-straywild.sh" \
"${GAME_ROOT}/launch-straywild.sh"
install -m 0755 "${ARM64_EXECUTABLE}" "${GAME_ROOT}/straywild.aarch64"
install -m 0644 "${ARM64_PCK}" "${GAME_ROOT}/straywild.pck"
install -m 0644 "${TEMPLATE_ROOT}/gameinfo.xml" "${GAME_ROOT}/gameinfo.xml"
install -m 0644 "${TEMPLATE_ROOT}/screenshot.png" "${GAME_ROOT}/screenshot.png"
install -m 0644 \
@ -159,7 +159,7 @@ install -m 0644 \
"${GAME_ROOT}/licenses/GPL-3.0-or-later.txt"
install -m 0644 \
"${PROJECT_ROOT}/ASSET-LICENSE.md" \
"${GAME_ROOT}/licenses/NETFISHING-ASSET-LICENSE.md"
"${GAME_ROOT}/licenses/straywild-ASSET-LICENSE.md"
install -m 0644 \
"${PROJECT_ROOT}/TRADEMARKS.md" \
"${GAME_ROOT}/licenses/TRADEMARKS.md"
@ -171,7 +171,7 @@ install -m 0644 \
"${GAME_ROOT}/licenses/Seattle-Avenue-LICENSE.txt"
cat >"${GAME_ROOT}/BUILD-INFO.txt" <<EOF
NETfishing PortMaster ARM64 build
straywild PortMaster ARM64 build
Project version: ${PROJECT_VERSION}
Game source commit: ${TAG_COMMIT}
@ -191,105 +191,105 @@ EOF
cat >"${GAME_ROOT}/licenses/SOURCE-CODE.md" <<EOF
# Corresponding source
NETfishing code is licensed under GPL-3.0-or-later.
straywild code is licensed under GPL-3.0-or-later.
Source repository: https://forge.makearmy.io/woofmeow/netfishing
Source repository: https://forge.makearmy.io/woofmeow/straywild
Exact source revision: ${TAG_COMMIT}
Release tag: ${RELEASE_TAG}
PortMaster packaging revision: ${HEAD_COMMIT}
EOF
cat >"${GAME_ROOT}/README.md" <<EOF
# NETfishing for PortMaster
# straywild for PortMaster
This package contains NETfishing \`${RELEASE_TAG}\`, exported from Godot 4.7.1
This package contains straywild \`${RELEASE_TAG}\`, exported from Godot 4.7.1
for 64-bit ARM Linux and wrapped for PortMaster.
## Installation
Install the complete \`netfishing.zip\` archive with PortMaster or HarbourMaster.
Install the complete \`straywild.zip\` archive with PortMaster or HarbourMaster.
The package requires an ARM64 device, two analog sticks, GLIBC 2.28 or newer,
and the \`weston_pkg_0.2\` runtime.
New installations store player data under \`ports/saves/netfishing/\` without
New installations store player data under \`ports/saves/straywild/\` without
opening a folder picker. Existing installations preserve their previously
selected data root. Device-local configuration remains under
\`netfishing/conf/\`.
\`straywild/conf/\`.
PortMaster launches use the light performance profile by default. Put the word
\`normal\` in \`netfishing/conf/performance_profile\` to opt a capable device
\`normal\` in \`straywild/conf/performance_profile\` to opt a capable device
into the normal rendering profile. PortMaster packages retain title and world
music while omitting rain and shoreline ambience in both profiles. See
\`netfishing/licenses/\` for bundled credits and license information.
\`straywild/licenses/\` for bundled credits and license information.
## Controls
NETfishing reads the handheld controller directly. GPTOKEYB's device-specific
straywild reads the handheld controller directly. GPTOKEYB's device-specific
force-quit chord remains available; this is Start+Select on most devices.
EOF
(
cd "${STAGE_ROOT}"
zip -qry "${ARCHIVE}" NETfishing.sh netfishing
zip -qry "${ARCHIVE}" straywild.sh straywild
)
unzip -tq "${ARCHIVE}" >/dev/null
readonly TOP_LEVELS="$(
unzip -Z1 "${ARCHIVE}" | cut -d/ -f1 | sort -u
)"
readonly EXPECTED_TOP_LEVELS="$(printf '%s\n' NETfishing.sh netfishing)"
readonly EXPECTED_TOP_LEVELS="$(printf '%s\n' straywild.sh straywild)"
if [[ "${TOP_LEVELS}" != "${EXPECTED_TOP_LEVELS}" ]]; then
echo "Unexpected PortMaster archive roots:" >&2
printf '%s\n' "${TOP_LEVELS}" >&2
exit 1
fi
grep -q '"version": 4' "${GAME_ROOT}/port.json"
grep -q '"name": "netfishing.zip"' "${GAME_ROOT}/port.json"
grep -q '"name": "straywild.zip"' "${GAME_ROOT}/port.json"
grep -q '"rtr": true' "${GAME_ROOT}/port.json"
if unzip -Z1 "${ARCHIVE}" | grep -qx 'port.json'; then
echo "port.json must be inside netfishing/, not at the archive root." >&2
echo "port.json must be inside straywild/, not at the archive root." >&2
exit 1
fi
if grep -Eq '^[[:space:]]*#[[:space:]]*PORTMASTER:' \
"${STAGE_ROOT}/NETfishing.sh"; then
"${STAGE_ROOT}/straywild.sh"; then
echo "The distributable launcher contains an installed PortMaster signature." >&2
exit 1
fi
grep -Fq 'PROFILE_PATH="$CONFDIR/performance_profile"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq 'NETFISHING_PERFORMANCE_PROFILE=light' \
"${STAGE_ROOT}/NETfishing.sh"
"${STAGE_ROOT}/straywild.sh"
grep -Fq 'straywild_PERFORMANCE_PROFILE=light' \
"${STAGE_ROOT}/straywild.sh"
grep -Fq 'CONTROLLER_MAPPING_FILE="$CONFDIR/cache/controller_mapping.txt"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq 'SAVEDIR="$PORTS_ROOT/saves/netfishing"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq '"NETFISHING_DATA_DIR=$SAVEDIR"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq '"NETFISHING_CREATE_DATA_DIR=1"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq 'printf '\''%s\n'\'' "$netfishing_controllerconfig" > "$CONTROLLER_MAPPING_FILE"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq '"$GAME_LAUNCHER"' "${STAGE_ROOT}/NETfishing.sh"
grep -Fq '"$CONTROLLER_MAPPING_FILE"' "${STAGE_ROOT}/NETfishing.sh"
if grep -Fq 'SDL_GAMECONTROLLERCONFIG="$netfishing_controllerconfig"' \
"${STAGE_ROOT}/NETfishing.sh"; then
"${STAGE_ROOT}/straywild.sh"
grep -Fq 'SAVEDIR="$PORTS_ROOT/saves/straywild"' \
"${STAGE_ROOT}/straywild.sh"
grep -Fq '"straywild_DATA_DIR=$SAVEDIR"' \
"${STAGE_ROOT}/straywild.sh"
grep -Fq '"straywild_CREATE_DATA_DIR=1"' \
"${STAGE_ROOT}/straywild.sh"
grep -Fq 'printf '\''%s\n'\'' "$straywild_controllerconfig" > "$CONTROLLER_MAPPING_FILE"' \
"${STAGE_ROOT}/straywild.sh"
grep -Fq '"$GAME_LAUNCHER"' "${STAGE_ROOT}/straywild.sh"
grep -Fq '"$CONTROLLER_MAPPING_FILE"' "${STAGE_ROOT}/straywild.sh"
if grep -Fq 'SDL_GAMECONTROLLERCONFIG="$straywild_controllerconfig"' \
"${STAGE_ROOT}/straywild.sh"; then
echo "Raw controller mappings must not be passed through westonwrap.sh." >&2
exit 1
fi
grep -Fq 'SDL_GAMECONTROLLERCONFIG="$(<"$CONTROLLER_MAPPING_FILE")"' \
"${GAME_ROOT}/launch-netfishing.sh"
"${GAME_ROOT}/launch-straywild.sh"
grep -Fq 'export SDL_GAMECONTROLLERCONFIG' \
"${GAME_ROOT}/launch-netfishing.sh"
grep -Fq 'exec "$@"' "${GAME_ROOT}/launch-netfishing.sh"
grep -Fq 'GPTOKEYB_CONFIG="$GAMEDIR/netfishing.gptk"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq '$GPTOKEYB "NETfishing.aarch64" -c "$GPTOKEYB_CONFIG" &' \
"${STAGE_ROOT}/NETfishing.sh"
"${GAME_ROOT}/launch-straywild.sh"
grep -Fq 'exec "$@"' "${GAME_ROOT}/launch-straywild.sh"
grep -Fq 'GPTOKEYB_CONFIG="$GAMEDIR/straywild.gptk"' \
"${STAGE_ROOT}/straywild.sh"
grep -Fq '$GPTOKEYB "straywild.aarch64" -c "$GPTOKEYB_CONFIG" &' \
"${STAGE_ROOT}/straywild.sh"
grep -Fq 'pm_platform_helper "$GAME_EXECUTABLE"' \
"${STAGE_ROOT}/NETfishing.sh"
grep -Fq 'pm_finish' "${STAGE_ROOT}/NETfishing.sh"
"${STAGE_ROOT}/straywild.sh"
grep -Fq 'pm_finish' "${STAGE_ROOT}/straywild.sh"
if [[ "$(grep -Ec '^[[:space:]]*\$GPTOKEYB[[:space:]]' \
"${STAGE_ROOT}/NETfishing.sh")" -ne 1 ]]; then
echo "NETfishing must start exactly one GPTOKEYB exit handler." >&2
"${STAGE_ROOT}/straywild.sh")" -ne 1 ]]; then
echo "straywild must start exactly one GPTOKEYB exit handler." >&2
exit 1
fi
readonly GPTOKEYB_NOOP_KEYS=(
@ -303,13 +303,13 @@ readonly GPTOKEYB_NOOP_KEYS=(
for noop_key in "${GPTOKEYB_NOOP_KEYS[@]}"; do
if ! grep -Eq \
"^[[:space:]]*${noop_key}[[:space:]]*=[[:space:]]*\\\\\"[[:space:]]*$" \
"${GAME_ROOT}/netfishing.gptk"; then
"${GAME_ROOT}/straywild.gptk"; then
echo "GPTOKEYB no-op mapping is missing: ${noop_key}" >&2
exit 1
fi
done
if [[ "$(grep -Ec '^[[:space:]]*[a-z0-9_]+[[:space:]]*=' \
"${GAME_ROOT}/netfishing.gptk")" -ne "${#GPTOKEYB_NOOP_KEYS[@]}" ]]; then
"${GAME_ROOT}/straywild.gptk")" -ne "${#GPTOKEYB_NOOP_KEYS[@]}" ]]; then
echo "GPTOKEYB no-op mapping contains an unexpected assignment." >&2
exit 1
fi