#!/usr/bin/env bash # Compila o Fire & Fondness 2 do fredygames.com: o jogo de John Gabriel (codigo GPL-3.0, arte e musica # CC BY 4.0), a partir do tarball do commit 1e8e10f do repositorio JohnGabrielUK/fire-and-fondness-2 # no Bitbucket, exportado para HTML5 com o Godot 3.2.2 oficial (a versao em que o autor fez o jogo) e o # modelo web dele, pelo preset "HTML5" do export_presets.cfg do proprio projeto. Este script e o patch # ao lado dele sao parte do codigo-fonte publicado junto do jogo ("the scripts used to control # compilation" da GPL). # # src/FredGames.Web/Content/games/fire-and-fondness-2/engine/build.sh # # As tres fontes do lancamento original (SGK075, V5 Prophit e Visitor) nao tem termos que permitam # redistribuir num site com anuncios; o script as apaga da arvore e poe no lugar fontes SIL OFL 1.1, # arquivos sem modificacao conferidos pelo SHA-256: # - Ark Pixel Font 10px proporcional (latin), de TakWolf, release 2026.09.25 (texto corrido, no # lugar da SGK075); # - Silkscreen Regular e Bold, de Jason Kottke, do repositorio google/fonts (interface e titulos, no # lugar da Visitor e da V5 Prophit). # # fire-and-fondness-2-fredygames.patch: # - game/fonts/*.tres: as tres DynamicFont apontam para as fontes novas, no tamanho em que cada uma # fica nitida (um pixel da fonte = um pixel do jogo); # - game/export_presets.cfg: no preset "HTML5", um html/head_include que da foco ao canvas quando a # pagina carrega e quando o iframe recebe foco (o Godot 3.2 so le o teclado com o canvas em foco; # sem isso, as setas rolariam a pagina do site em volta do jogo); # - README: os creditos das fontes. # # O Godot 3.2.2 (macOS, x86_64, roda no Rosetta) e o modelo HTML5 ficam em artifacts/tools/godot-3.2.2, # conferidos pelo SHA-256 (os mesmos arquivos do SHA512-SUMS.txt do release). O editor roda com HOME # dentro da pasta de saida, onde ficam a configuracao dele e o modelo de exportacao. # # Saida: artifacts/build/fire-and-fondness-2-1e8e10f/web/, que o bundle.yaml do jogo confere arquivo # por arquivo. set -euo pipefail COMMIT=1e8e10fcbbeaccdbaa3d077bf5000b2a889c945b SHA256=dfa67abc9cc7867e44520c95e37054afb221407c6a0e9d6e42834a513a9e41b9 GODOT=3.2.2 GODOT_URL=https://github.com/godotengine/godot/releases/download/$GODOT-stable GODOT_OSX_SHA256=36d1002ad3a99314e03195f944b86b3d9b694ad4938a32e88c4ac51c7bf9b893 GODOT_TPZ_SHA256=2b1e1332878e5230bc5139b458a9bea910e54b9c1ba7e4100398c7da2ef4b94b GOOGLE_FONTS=94301472b4d809299b4775bc6502592b83dd6934 SILKSCREEN_REGULAR_SHA256=c845473330b94c2079ce9af01c51ac8ba2d99c24f4d14c039843bbb8e642ebd8 SILKSCREEN_BOLD_SHA256=768476aa712d4f5c3e18d3bce80f980a8bd3f72b7094d22ec5e768df3acfed61 SILKSCREEN_OFL_SHA256=86c5e9c9382cdcc5948704fdfe60f2aa164a719746931219a42736ecd9cefbd3 ARK=2026.09.25 ARK_SHA256=c87de087f8ef372274b007ffa626de0d70b3e9f9f8c98bcbaa916a3b052b019d here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/fire-and-fondness-2-${COMMIT:0:7}" cache="$root/artifacts/build/cache" tools="$root/artifacts/tools" mkdir -p "$cache" fetch() { if [ ! -f "$cache/$2" ]; then curl -fsSL --retry 4 "$1" -o "$cache/$2.partial" && mv "$cache/$2.partial" "$cache/$2" fi echo "$3 $cache/$2" | shasum -a 256 -c - } fetch "https://bitbucket.org/JohnGabrielUK/fire-and-fondness-2/get/$COMMIT.tar.gz" "ff2-${COMMIT:0:7}.tar.gz" "$SHA256" fetch "$GODOT_URL/Godot_v$GODOT-stable_osx.64.zip" "Godot_v$GODOT-stable_osx.64.zip" "$GODOT_OSX_SHA256" fetch "$GODOT_URL/Godot_v$GODOT-stable_export_templates.tpz" "Godot_v$GODOT-stable_export_templates.tpz" "$GODOT_TPZ_SHA256" gf="https://raw.githubusercontent.com/google/fonts/$GOOGLE_FONTS/ofl/silkscreen" fetch "$gf/Silkscreen-Regular.ttf" silkscreen-Silkscreen-Regular.ttf "$SILKSCREEN_REGULAR_SHA256" fetch "$gf/Silkscreen-Bold.ttf" silkscreen-Silkscreen-Bold.ttf "$SILKSCREEN_BOLD_SHA256" fetch "$gf/OFL.txt" silkscreen-OFL.txt "$SILKSCREEN_OFL_SHA256" fetch "https://github.com/TakWolf/ark-pixel-font/releases/download/$ARK/ark-pixel-font-10px-proportional-ttf-v$ARK.zip" \ "ark-pixel-font-10px-proportional-ttf-v$ARK.zip" "$ARK_SHA256" if [ ! -d "$tools/godot-$GODOT" ]; then rm -rf "$tools/godot-$GODOT.tmp" mkdir -p "$tools/godot-$GODOT.tmp" unzip -q "$cache/Godot_v$GODOT-stable_osx.64.zip" -d "$tools/godot-$GODOT.tmp" unzip -q "$cache/Godot_v$GODOT-stable_export_templates.tpz" templates/webassembly_release.zip templates/version.txt \ -d "$tools/godot-$GODOT.tmp" mv "$tools/godot-$GODOT.tmp" "$tools/godot-$GODOT" fi rm -rf "$out" mkdir -p "$out/tree" "$out/web" "$out/fonts" tar -xzf "$cache/ff2-${COMMIT:0:7}.tar.gz" -C "$out/tree" --strip-components 1 patch -d "$out/tree" -p1 --quiet < "$here/fire-and-fondness-2-fredygames.patch" rm "$out/tree/game/fonts/SGK075.ttf" "$out/tree/game/fonts/V5Prn___.ttf" "$out/tree/game/fonts/visitor2.ttf" cp "$cache/silkscreen-Silkscreen-Regular.ttf" "$out/tree/game/fonts/Silkscreen-Regular.ttf" cp "$cache/silkscreen-Silkscreen-Bold.ttf" "$out/tree/game/fonts/Silkscreen-Bold.ttf" unzip -q "$cache/ark-pixel-font-10px-proportional-ttf-v$ARK.zip" ark-pixel-10px-proportional-latin.ttf -d "$out/tree/game/fonts" # As fontes e as licencas delas, para o codigo-fonte publicado. cp "$out/tree/game/fonts/Silkscreen-Regular.ttf" "$out/tree/game/fonts/Silkscreen-Bold.ttf" \ "$out/tree/game/fonts/ark-pixel-10px-proportional-latin.ttf" "$out/fonts/" cp "$cache/silkscreen-OFL.txt" "$out/fonts/Silkscreen-OFL.txt" unzip -p "$cache/ark-pixel-font-10px-proportional-ttf-v$ARK.zip" OFL.txt > "$out/fonts/ArkPixelFont-OFL.txt" # Editor isolado: configuracao e modelo de exportacao dentro da pasta de saida. export HOME="$out/home" TZ=UTC LC_ALL=C templates="$HOME/Library/Application Support/Godot/templates/$GODOT.stable" mkdir -p "$templates" cp "$tools/godot-$GODOT/templates/webassembly_release.zip" "$tools/godot-$GODOT/templates/version.txt" "$templates/" godot="$tools/godot-$GODOT/Godot.app/Contents/MacOS/Godot" cd "$out/tree/game" # A primeira passada so importa os recursos (cria .import/); a segunda exporta. arch -x86_64 "$godot" --path . --editor --quit > "$out/import.log" 2>&1 || true arch -x86_64 "$godot" --path . --export "HTML5" "$out/web/index.html" > "$out/export.log" 2>&1 ls -l "$out/web"