#!/usr/bin/env bash # Gera o zero-velocity.love do Zero Velocity (Theogen Ratkin, GPL-3.0-or-later; arte CC BY-SA 4.0; musica CC BY 4.0) # a partir do commit 142c2b8 do repositorio, com um patch nosso (publicado junto do fonte): # zero-velocity/web-compat.patch tira o goto de drawCollision (funcao de depuracao; o love.js usa Lua 5.1, # que nao tem goto e recusa o arquivo inteiro) e desliga o fullscreen do conf.lua # (a pagina ja cuida do tamanho da janela; com fullscreen o jogo desenha em 800x600 # no canto) e tira o item "Exit" do menu (love.event.quit congela a pagina). # O jogo vive na pasta game/ do repositorio; o .love leva o conteudo dela mais LICENSE.txt, copyright e CREDITS.md # (as licencas e os creditos do autor). Nada no jogo abre paginas, usa rede ou threads. # O .love e um zip deterministico (ordem alfabetica, data fixa, deflate). # # src/FredGames.Bundler/Builds/build-zero-velocity.sh # # Saida: artifacts/build/zero-velocity-142c2b8/zero-velocity.love set -euo pipefail COMMIT=142c2b80017f3aa6a1cd50029ce38b0f988da5e0 SHA256=8fd03fe26cfff7c6dddef1bc080df110c0852acc668ae6e7f36711d692e8427e here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/zero-velocity-142c2b8" cache="$root/artifacts/build/cache" mkdir -p "$cache" tarball="$cache/zero-velocity-142c2b8.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/theoratkin/zero-velocity/archive/$COMMIT.tar.gz" -o "$tarball" echo "$SHA256 $tarball" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" tar -xzf "$tarball" -C "$out/tree" --strip-components 1 patch -d "$out/tree" -p1 < "$here/zero-velocity/web-compat.patch" mkdir -p "$out/game" cp -R "$out/tree/game/." "$out/game/" cp "$out/tree/LICENSE.txt" "$out/tree/copyright" "$out/tree/CREDITS.md" "$out/game/" python3 -I - "$out/game" "$out/zero-velocity.love" <<'PY' import os, sys, zipfile src, dest = sys.argv[1:] names = [] for base, dirs, files in os.walk(src): for f in files: rel = os.path.relpath(os.path.join(base, f), src).replace(os.sep, '/') names.append(rel) with zipfile.ZipFile(dest, 'w', zipfile.ZIP_DEFLATED, compresslevel=9) as z: for rel in sorted(names): info = zipfile.ZipInfo(rel, (1980, 1, 1, 0, 0, 0)) info.compress_type = zipfile.ZIP_DEFLATED info.external_attr = 0o644 << 16 info.create_system = 3 with open(os.path.join(src, rel), 'rb') as fh: z.writestr(info, fh.read(), compresslevel=9) PY shasum -a 256 "$out/zero-velocity.love"