#!/usr/bin/env bash # Gera o Spectrum Sprites (artilharia por turnos de jacktheclown91, js13kGames 2026, MIT) sem o modo online. # O jogo publicado na js13kGames traz o fonte legivel em src/index.html (um unico arquivo, sem dependencias) e um # zip empacotado com Terser + Roadroller. O menu do jogo tem "QUICK MATCH", "ONLINE HOST" e "ONLINE JOIN", que # abrem um WebSocket para wss://relay.js13kgames.com (servidor de terceiros); o site so serve o que roda local. # O patch spectrum-sprites/spectrum-sprites-no-online.patch faz tres coisas, todas em src/index.html: # - netOpen() (a unica funcao que cria o WebSocket) passa a so marcar falha, sem abrir conexao; # - o menu fica com "LOCAL BATTLE" e "VS COMPUTER" (desenho, setas e clique do mouse); # - o resto do codigo de rede fica no arquivo, sem caminho que chegue nele. # Nao ha minificacao: o index.html servido e o fonte do autor com o patch, como esta no commit. # # src/FredGames.Bundler/Builds/build-spectrum-sprites.sh # # Saida: artifacts/build/spectrum-sprites-ab580f1/{index.html,spectrum-sprites-ab580f1.tar.gz}; o index.html tem # que sair igual em dois builds seguidos. set -euo pipefail COMMIT=ab580f160be0d20b429345211e0b91369cd8503b SHA256=6b516185d7a8244838da635f5af9b2a1b88fab4f1e437db2a45da809e5142c77 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/spectrum-sprites-${COMMIT:0:7}" cache="$root/artifacts/build/cache" mkdir -p "$cache" tgz="$cache/spectrum-sprites-${COMMIT:0:7}.tar.gz" if [ ! -f "$tgz" ]; then curl -fsSL --retry 4 "https://github.com/js13kGames/spectrum-sprites/archive/$COMMIT.tar.gz" -o "$tgz.partial" && mv "$tgz.partial" "$tgz" fi echo "$SHA256 $tgz" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" tar -xzf "$tgz" -C "$out/tree" --strip-components 1 # Fonte publicado (sem a mudanca): o tarball do commit, regravado em tar deterministico. ( cd "$out/tree" && find . -type f | sed 's|^\./||' | LC_ALL=C sort > "$out/files.txt" ) ( cd "$out/tree" && COPYFILE_DISABLE=1 tar --format=ustar --uid 0 --gid 0 --uname root --gname root -n \ -cf - -T "$out/files.txt" ) | gzip -n -9 > "$out/spectrum-sprites-${COMMIT:0:7}.tar.gz" patch -s -p1 -d "$out/tree" < "$here/spectrum-sprites/spectrum-sprites-no-online.patch" if grep -q 'relay.js13kgames.com' "$out/tree/src/index.html"; then echo "o patch deixou o endereco do relay"; exit 1; fi cp "$out/tree/src/index.html" "$out/index.html" rm -rf "$out/tree" "$out/files.txt" ls -l "$out/index.html" shasum -a 256 "$out/index.html" "$out/spectrum-sprites-${COMMIT:0:7}.tar.gz"