Rebrand project and refresh title presentation
This commit is contained in:
parent
17fef2c5d4
commit
7ae20789a9
138 changed files with 1511 additions and 1498 deletions
|
|
@ -4,7 +4,7 @@ set -euo pipefail
|
|||
|
||||
readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
readonly PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
|
||||
readonly OUTPUT_PATH="${PROJECT_ROOT}/builds/android/NETfishing-debug.apk"
|
||||
readonly OUTPUT_PATH="${PROJECT_ROOT}/builds/android/straywild-debug.apk"
|
||||
readonly GODOT_BIN="${GODOT_BIN:-godot}"
|
||||
|
||||
mkdir -p -- "$(dirname -- "${OUTPUT_PATH}")"
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ readonly WINDOWS_DIR="${BUILD_ROOT}/windows-x86_64"
|
|||
readonly LINUX_DIR="${BUILD_ROOT}/linux-x86_64"
|
||||
readonly README_SOURCE="${PROJECT_ROOT}/docs/README-PLAYTEST.txt"
|
||||
readonly SOURCE_COMMIT="$(git -C "${PROJECT_ROOT}" rev-parse HEAD)"
|
||||
readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/netfishing"
|
||||
readonly WINDOWS_ZIP="${BUILD_ROOT}/NETfishing-v0.18.1-alpha-windows-x86_64.zip"
|
||||
readonly LINUX_ZIP="${BUILD_ROOT}/NETfishing-v0.18.1-alpha-linux-x86_64.zip"
|
||||
readonly SOURCE_URL="https://forge.makearmy.io/woofmeow/straywild"
|
||||
readonly WINDOWS_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-windows-x86_64.zip"
|
||||
readonly LINUX_ZIP="${BUILD_ROOT}/straywild-v0.18.1-alpha-linux-x86_64.zip"
|
||||
readonly GODOT_BIN="${GODOT_BIN:-godot}"
|
||||
|
||||
if [[ ! -f "${PROJECT_ROOT}/project.godot" ]]; then
|
||||
|
|
@ -31,26 +31,26 @@ mkdir -p -- "${WINDOWS_DIR}" "${LINUX_DIR}"
|
|||
--headless \
|
||||
--path "${PROJECT_ROOT}" \
|
||||
--export-release "Windows Desktop" \
|
||||
"${WINDOWS_DIR}/NETfishing.exe"
|
||||
"${WINDOWS_DIR}/straywild.exe"
|
||||
|
||||
"${GODOT_BIN}" \
|
||||
--headless \
|
||||
--path "${PROJECT_ROOT}" \
|
||||
--export-release "Linux Desktop" \
|
||||
"${LINUX_DIR}/NETfishing.x86_64"
|
||||
"${LINUX_DIR}/straywild.x86_64"
|
||||
|
||||
for required_file in \
|
||||
"${WINDOWS_DIR}/NETfishing.exe" \
|
||||
"${WINDOWS_DIR}/NETfishing.pck" \
|
||||
"${LINUX_DIR}/NETfishing.x86_64" \
|
||||
"${LINUX_DIR}/NETfishing.pck"; do
|
||||
"${WINDOWS_DIR}/straywild.exe" \
|
||||
"${WINDOWS_DIR}/straywild.pck" \
|
||||
"${LINUX_DIR}/straywild.x86_64" \
|
||||
"${LINUX_DIR}/straywild.pck"; do
|
||||
if [[ ! -s "${required_file}" ]]; then
|
||||
echo "error: expected export output is missing: ${required_file}" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
chmod +x -- "${LINUX_DIR}/NETfishing.x86_64"
|
||||
chmod +x -- "${LINUX_DIR}/straywild.x86_64"
|
||||
cp -- "${README_SOURCE}" "${WINDOWS_DIR}/README-PLAYTEST.txt"
|
||||
cp -- "${README_SOURCE}" "${LINUX_DIR}/README-PLAYTEST.txt"
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ stage_licenses() {
|
|||
install -m 0644 "${PROJECT_ROOT}/LICENSE" \
|
||||
"${destination}/GPL-3.0-or-later.txt"
|
||||
install -m 0644 "${PROJECT_ROOT}/ASSET-LICENSE.md" \
|
||||
"${destination}/NETFISHING-ASSET-LICENSE.md"
|
||||
"${destination}/straywild-ASSET-LICENSE.md"
|
||||
install -m 0644 "${PROJECT_ROOT}/docs/ATTRIBUTION.md" \
|
||||
"${destination}/ATTRIBUTION.md"
|
||||
install -m 0644 "${PROJECT_ROOT}/TRADEMARKS.md" \
|
||||
|
|
@ -72,7 +72,7 @@ stage_licenses() {
|
|||
cat >"${destination}/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: ${SOURCE_URL}
|
||||
Source revision at build time: ${SOURCE_COMMIT}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -35,10 +35,10 @@ if [[ ! "$SAMPLE_SET_DIRECTORY" =~ ^[a-z0-9_-]+$ ]]; then
|
|||
fi
|
||||
|
||||
readonly DESTINATION_DIRECTORY="$PROJECT_ROOT/sound/dialogue/animalese/$SAMPLE_SET_DIRECTORY"
|
||||
readonly WORK_DIRECTORY="$(mktemp -d -t netfishing-animalese-import.XXXXXX)"
|
||||
readonly WORK_DIRECTORY="$(mktemp -d -t straywild-animalese-import.XXXXXX)"
|
||||
|
||||
cleanup() {
|
||||
if [[ "$WORK_DIRECTORY" == /tmp/netfishing-animalese-import.* ]]; then
|
||||
if [[ "$WORK_DIRECTORY" == /tmp/straywild-animalese-import.* ]]; then
|
||||
find "$WORK_DIRECTORY" -depth -delete
|
||||
fi
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ fi
|
|||
|
||||
readonly ROOT_PATH="$1"
|
||||
|
||||
readonly WORK_ROOT="$(mktemp -d -t netfishing-godot-data.XXXXXX)"
|
||||
readonly WORK_ROOT="$(mktemp -d -t straywild-godot-data.XXXXXX)"
|
||||
trap 'rm -rf -- "${WORK_ROOT}"' EXIT
|
||||
|
||||
cd "${PROJECT_ROOT}"
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<gameList>
|
||||
<game>
|
||||
<path>./NETfishing.sh</path>
|
||||
<name>NETfishing</name>
|
||||
<path>./straywild.sh</path>
|
||||
<name>straywild</name>
|
||||
<desc>A relaxed multiplayer fishing game about exploring a small island, catching and collecting fish, customizing your character, and spending time by the water.</desc>
|
||||
<releasedate>20260804T000000</releasedate>
|
||||
<developer>NETfishing project</developer>
|
||||
<developer>straywild project</developer>
|
||||
<publisher>Independent</publisher>
|
||||
<genre>adventure, simulation</genre>
|
||||
<image>./netfishing/screenshot.png</image>
|
||||
<image>./straywild/screenshot.png</image>
|
||||
</game>
|
||||
</gameList>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"version": 4,
|
||||
"name": "netfishing.zip",
|
||||
"name": "straywild.zip",
|
||||
"items": [
|
||||
"NETfishing.sh",
|
||||
"netfishing/"
|
||||
"straywild.sh",
|
||||
"straywild/"
|
||||
],
|
||||
"items_opt": null,
|
||||
"attr": {
|
||||
"title": "NETfishing",
|
||||
"title": "straywild",
|
||||
"porter": [
|
||||
"Voyager"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# NETfishing reads the controller directly. GPTOKEYB is retained only for its
|
||||
# straywild reads the controller directly. GPTOKEYB is retained only for its
|
||||
# device-specific force-quit chord, so every keyboard and mouse binding is
|
||||
# disabled to prevent duplicate input.
|
||||
|
||||
|
|
@ -16,35 +16,35 @@ source "$controlfolder/control.txt"
|
|||
[ -f "${controlfolder}/mod_${CFW_NAME}.txt" ] && source "${controlfolder}/mod_${CFW_NAME}.txt"
|
||||
get_controls
|
||||
|
||||
GAMEDIR="/${directory}/ports/netfishing"
|
||||
GAMEDIR="/${directory}/ports/straywild"
|
||||
|
||||
CONFDIR="$GAMEDIR/conf"
|
||||
PORTS_ROOT="${GAMEDIR%/netfishing}"
|
||||
SAVEDIR="$PORTS_ROOT/saves/netfishing"
|
||||
DATA_BOOTSTRAP_DIR="$CONFDIR/data/godot/app_userdata/NETFISHING"
|
||||
GAME_EXECUTABLE="$GAMEDIR/NETfishing.aarch64"
|
||||
GAME_LAUNCHER="$GAMEDIR/launch-netfishing.sh"
|
||||
GPTOKEYB_CONFIG="$GAMEDIR/netfishing.gptk"
|
||||
PORTS_ROOT="${GAMEDIR%/straywild}"
|
||||
SAVEDIR="$PORTS_ROOT/saves/straywild"
|
||||
DATA_BOOTSTRAP_DIR="$CONFDIR/data/godot/app_userdata/straywild"
|
||||
GAME_EXECUTABLE="$GAMEDIR/straywild.aarch64"
|
||||
GAME_LAUNCHER="$GAMEDIR/launch-straywild.sh"
|
||||
GPTOKEYB_CONFIG="$GAMEDIR/straywild.gptk"
|
||||
CONTROLLER_MAPPING_FILE="$CONFDIR/cache/controller_mapping.txt"
|
||||
WESTON_DIR="/tmp/netfishing-weston"
|
||||
WESTON_DIR="/tmp/straywild-weston"
|
||||
WESTON_RUNTIME="weston_pkg_0.2"
|
||||
HARBOURMASTER="$controlfolder/harbourmaster"
|
||||
|
||||
mkdir -p "$CONFDIR/data" "$CONFDIR/config" "$CONFDIR/cache" "$WESTON_DIR"
|
||||
chmod +x "$GAME_EXECUTABLE"
|
||||
|
||||
# NETfishing uses a predictable save directory beside the port instead of
|
||||
# straywild uses a predictable save directory beside the port instead of
|
||||
# presenting a folder picker on a small screen. Preserve an established
|
||||
# data-root choice when upgrading an existing installation.
|
||||
NETFISHING_DATA_ENVIRONMENT=()
|
||||
if [ -f "$SAVEDIR/netfishing_data.json" ] || {
|
||||
straywild_DATA_ENVIRONMENT=()
|
||||
if [ -f "$SAVEDIR/straywild_data.json" ] || {
|
||||
[ ! -f "$DATA_BOOTSTRAP_DIR/data_root_bootstrap.json" ] &&
|
||||
[ ! -f "$DATA_BOOTSTRAP_DIR/data_root_bootstrap.json.backup" ]
|
||||
}; then
|
||||
mkdir -p "$SAVEDIR"
|
||||
NETFISHING_DATA_ENVIRONMENT+=(
|
||||
"NETFISHING_DATA_DIR=$SAVEDIR"
|
||||
"NETFISHING_CREATE_DATA_DIR=1"
|
||||
straywild_DATA_ENVIRONMENT+=(
|
||||
"straywild_DATA_DIR=$SAVEDIR"
|
||||
"straywild_CREATE_DATA_DIR=1"
|
||||
)
|
||||
fi
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ fi
|
|||
|
||||
if [ ! -f "$controlfolder/libs/${WESTON_RUNTIME}.squashfs" ]; then
|
||||
if [ ! -x "$HARBOURMASTER" ]; then
|
||||
pm_message "NETfishing requires the latest PortMaster and WestonPack runtime."
|
||||
pm_message "straywild requires the latest PortMaster and WestonPack runtime."
|
||||
sleep 5
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -78,17 +78,17 @@ cd "$GAMEDIR" || exit 1
|
|||
GODOT_MUOS_MAPPING="19004ca6010000000100000000010000,muOS-Keys,a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,lefttrigger:b10,righttrigger:b11,guide:b8,start:b7,back:b6,dpup:h0.1,dpleft:h0.8,dpright:h0.2,dpdown:h0.4,leftx:a0,lefty:a1,leftstick:b9,rightx:a2,righty:a3,rightstick:b12,platform:Linux,"
|
||||
MUOS_SDL2_GUID="19000000010000000100000000010000"
|
||||
if [[ "$sdl_controllerconfig" == "${MUOS_SDL2_GUID},"* ]]; then
|
||||
netfishing_controllerconfig="$GODOT_MUOS_MAPPING"
|
||||
straywild_controllerconfig="$GODOT_MUOS_MAPPING"
|
||||
elif [ -n "$sdl_controllerconfig" ]; then
|
||||
netfishing_controllerconfig="$sdl_controllerconfig"
|
||||
straywild_controllerconfig="$sdl_controllerconfig"
|
||||
else
|
||||
netfishing_controllerconfig="$GODOT_MUOS_MAPPING"
|
||||
straywild_controllerconfig="$GODOT_MUOS_MAPPING"
|
||||
fi
|
||||
printf '%s\n' "$netfishing_controllerconfig" > "$CONTROLLER_MAPPING_FILE"
|
||||
printf '%s\n' "$straywild_controllerconfig" > "$CONTROLLER_MAPPING_FILE"
|
||||
|
||||
NETFISHING_GODOT_OPTIONS=()
|
||||
NETFISHING_GAME_ENVIRONMENT=()
|
||||
PERFORMANCE_PROFILE="${NETFISHING_PERFORMANCE_PROFILE:-}"
|
||||
straywild_GODOT_OPTIONS=()
|
||||
straywild_GAME_ENVIRONMENT=()
|
||||
PERFORMANCE_PROFILE="${straywild_PERFORMANCE_PROFILE:-}"
|
||||
PROFILE_PATH="$CONFDIR/performance_profile"
|
||||
if [[ -z "$PERFORMANCE_PROFILE" && -r "$PROFILE_PATH" ]]; then
|
||||
IFS= read -r PERFORMANCE_PROFILE < "$PROFILE_PATH" || true
|
||||
|
|
@ -96,16 +96,16 @@ if [[ -z "$PERFORMANCE_PROFILE" && -r "$PROFILE_PATH" ]]; then
|
|||
fi
|
||||
case "$PERFORMANCE_PROFILE" in
|
||||
normal)
|
||||
NETFISHING_GAME_ENVIRONMENT+=(
|
||||
"NETFISHING_PERFORMANCE_PROFILE=normal"
|
||||
straywild_GAME_ENVIRONMENT+=(
|
||||
"straywild_PERFORMANCE_PROFILE=normal"
|
||||
)
|
||||
;;
|
||||
light|"")
|
||||
NETFISHING_GAME_ENVIRONMENT+=(
|
||||
"NETFISHING_PERFORMANCE_PROFILE=light"
|
||||
"NETFISHING_LOW_END=1"
|
||||
straywild_GAME_ENVIRONMENT+=(
|
||||
"straywild_PERFORMANCE_PROFILE=light"
|
||||
"straywild_LOW_END=1"
|
||||
)
|
||||
NETFISHING_GODOT_OPTIONS+=(
|
||||
straywild_GODOT_OPTIONS+=(
|
||||
--single-window
|
||||
--disable-vsync
|
||||
--max-fps 30
|
||||
|
|
@ -114,11 +114,11 @@ case "$PERFORMANCE_PROFILE" in
|
|||
;;
|
||||
*)
|
||||
echo "Unknown performance profile '$PERFORMANCE_PROFILE'; using light." >&2
|
||||
NETFISHING_GAME_ENVIRONMENT+=(
|
||||
"NETFISHING_PERFORMANCE_PROFILE=light"
|
||||
"NETFISHING_LOW_END=1"
|
||||
straywild_GAME_ENVIRONMENT+=(
|
||||
"straywild_PERFORMANCE_PROFILE=light"
|
||||
"straywild_LOW_END=1"
|
||||
)
|
||||
NETFISHING_GODOT_OPTIONS+=(
|
||||
straywild_GODOT_OPTIONS+=(
|
||||
--single-window
|
||||
--disable-vsync
|
||||
--max-fps 30
|
||||
|
|
@ -127,10 +127,10 @@ case "$PERFORMANCE_PROFILE" in
|
|||
;;
|
||||
esac
|
||||
|
||||
# NETfishing reads gameplay input natively. The explicit no-op map prevents
|
||||
# straywild reads gameplay input natively. The explicit no-op map prevents
|
||||
# GPTOKEYB from injecting duplicate keyboard or mouse input while retaining
|
||||
# its device-specific force-quit chord, including on ROCKNIX.
|
||||
$GPTOKEYB "NETfishing.aarch64" -c "$GPTOKEYB_CONFIG" &
|
||||
$GPTOKEYB "straywild.aarch64" -c "$GPTOKEYB_CONFIG" &
|
||||
pm_platform_helper "$GAME_EXECUTABLE"
|
||||
|
||||
$ESUDO env CRUSTY_RESOLUTION="${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}" \
|
||||
|
|
@ -139,12 +139,12 @@ $ESUDO env CRUSTY_RESOLUTION="${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}" \
|
|||
XDG_CONFIG_HOME="$CONFDIR/config" \
|
||||
XDG_CACHE_HOME="$CONFDIR/cache" \
|
||||
GODOT_SILENCE_ROOT_WARNING=1 \
|
||||
"${NETFISHING_DATA_ENVIRONMENT[@]}" \
|
||||
"${NETFISHING_GAME_ENVIRONMENT[@]}" \
|
||||
"${straywild_DATA_ENVIRONMENT[@]}" \
|
||||
"${straywild_GAME_ENVIRONMENT[@]}" \
|
||||
"$GAME_LAUNCHER" \
|
||||
"$CONTROLLER_MAPPING_FILE" \
|
||||
"$GAME_EXECUTABLE" \
|
||||
"${NETFISHING_GODOT_OPTIONS[@]}" \
|
||||
"${straywild_GODOT_OPTIONS[@]}" \
|
||||
--resolution "${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}" \
|
||||
--fullscreen \
|
||||
--rendering-driver opengl3_es \
|
||||
|
|
@ -6,9 +6,9 @@ readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|||
readonly PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
|
||||
readonly GODOT_BIN="${GODOT_BIN:-godot}"
|
||||
readonly TEST_TIMEOUT_SECONDS="${TEST_TIMEOUT_SECONDS:-120}"
|
||||
readonly RUN_ROOT="$(mktemp -d -t netfishing-validations.XXXXXX)"
|
||||
readonly RUN_ROOT="$(mktemp -d -t straywild-validations.XXXXXX)"
|
||||
|
||||
export NETFISHING_ISOLATED_VALIDATION_STORAGE=1
|
||||
export straywild_ISOLATED_VALIDATION_STORAGE=1
|
||||
|
||||
readonly -a QUICK_TESTS=(
|
||||
"scripts/validate_animalese_samples.gd"
|
||||
|
|
|
|||
|
|
@ -336,8 +336,8 @@ check_editor_settings() {
|
|||
run_export_hint() {
|
||||
echo
|
||||
echo "Example export commands:"
|
||||
echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-release \"Android\" builds/${PROJECT_VERSION}/android/NETfishing.apk"
|
||||
echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-debug \"Android\" builds/android/NETfishing-debug.apk"
|
||||
echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-release \"Android\" builds/${PROJECT_VERSION}/android/straywild.apk"
|
||||
echo " ${GODOT} --headless --path \"$PROJECT_ROOT\" --export-debug \"Android\" builds/android/straywild-debug.apk"
|
||||
}
|
||||
|
||||
print_status INFO "Starting Android dependency preflight..."
|
||||
|
|
|
|||
|
|
@ -1,36 +1,36 @@
|
|||
extends SceneTree
|
||||
|
||||
const PROJECT_PATH := "/tmp/netfishing"
|
||||
const INSTALL_PATH := "/opt/NETfishing"
|
||||
const PROJECT_PATH := "/tmp/straywild"
|
||||
const INSTALL_PATH := "/opt/straywild"
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
var root_to_create: String = OS.get_environment("NETFISHING_TEST_CREATE_ROOT")
|
||||
var root_to_create: String = OS.get_environment("straywild_TEST_CREATE_ROOT")
|
||||
if not root_to_create.is_empty():
|
||||
_create_validation_root(root_to_create)
|
||||
return
|
||||
var failures: PackedStringArray = []
|
||||
_expect(
|
||||
"external temporary directory",
|
||||
"/tmp/NETfishing-test-data",
|
||||
"/tmp/straywild-test-data",
|
||||
PlayerDataRoot.PATH_ALLOWED,
|
||||
failures,
|
||||
)
|
||||
_expect(
|
||||
"external trailing slash",
|
||||
"/tmp/NETfishing-test-data/",
|
||||
"/tmp/straywild-test-data/",
|
||||
PlayerDataRoot.PATH_ALLOWED,
|
||||
failures,
|
||||
)
|
||||
_expect(
|
||||
"similar project-name sibling",
|
||||
"/tmp/netfishing-data",
|
||||
"/tmp/straywild-data",
|
||||
PlayerDataRoot.PATH_ALLOWED,
|
||||
failures,
|
||||
)
|
||||
_expect(
|
||||
"documents directory",
|
||||
"/home/player/Documents/NETfishing",
|
||||
"/home/player/Documents/straywild",
|
||||
PlayerDataRoot.PATH_ALLOWED,
|
||||
failures,
|
||||
)
|
||||
|
|
@ -55,7 +55,7 @@ func _initialize() -> void:
|
|||
)
|
||||
_expect_with_references(
|
||||
"empty project reference",
|
||||
"/tmp/NETfishing-test-data",
|
||||
"/tmp/straywild-test-data",
|
||||
"",
|
||||
INSTALL_PATH,
|
||||
PlayerDataRoot.PATH_ALLOWED,
|
||||
|
|
@ -63,7 +63,7 @@ func _initialize() -> void:
|
|||
)
|
||||
_expect_with_references(
|
||||
"root project reference",
|
||||
"/tmp/NETfishing-test-data",
|
||||
"/tmp/straywild-test-data",
|
||||
"/",
|
||||
INSTALL_PATH,
|
||||
PlayerDataRoot.PATH_ALLOWED,
|
||||
|
|
@ -71,9 +71,9 @@ func _initialize() -> void:
|
|||
)
|
||||
_expect_with_references(
|
||||
"Windows component and case normalization",
|
||||
"C:\\Games\\NETfishing Data",
|
||||
"C:\\Games\\NETfishing",
|
||||
"C:\\Program Files\\NETfishing",
|
||||
"C:\\Games\\straywild Data",
|
||||
"C:\\Games\\straywild",
|
||||
"C:\\Program Files\\straywild",
|
||||
PlayerDataRoot.PATH_ALLOWED,
|
||||
failures,
|
||||
true,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue