#!/usr/bin/env bash # Compila o Retromancer (puzzle + bullet hell que inverte o tempo, de kettek, liqMix e Amaruuk / ketMix, GPL-3.0; Go + Ebitengine 2.5.4) # para WebAssembly a partir do commit db2469c de github.com/ketMix/retromancer, com o Go 1.27.2 (Builds/go-ebiten/common.sh). # # src/FredGames.Bundler/Builds/build-retromancer.sh # # Mudancas no jogo (retromancer/retromancer-fredygames.patch, publicado junto do fonte): sem o recurso opcional de textos gerados pelo # ChatGPT (resources/gpt.go virou um stub sem rede e o botao "GPT Options" saiu: o original chamava api.openai.com), sem o coop em # rede (net/serverclient.go e peer.go viraram stubs: nenhum socket, nenhum matchmaker; o segundo jogador continua local, com # controle; o texto "ou espere um jogador de rede" sai da tela), sem os links dos creditos (nada abre outra pagina) e sem o logo da # game jam dessa tela. Mudancas nos assets (neste script): as 8 musicas (54 MB, Ogg Vorbis de alta qualidade) sao recodificadas em # Ogg Vorbis qualidade 0,3 (para ~11 MB) com o oggdec + wav2ogg de Builds/pygame-music; o logo da jam vira a imagem vazia do jogo e # o chapeu "pep" (um sapo de meme) vira o do queijo. # # Saida: artifacts/build/retromancer-db2469c/{retromancer.wasm,wasm_exec.js,retromancer-licenses.txt}; dois builds seguidos dao os mesmos bytes. set -euo pipefail COMMIT=db2469c4c227dff590d35660533092b6ef088f35 SHA256=08d090963754115f36a71fcced7f1a6c80624d637c1fbe9e84b99417c16ab4de MUSIC_Q=0.3 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" source "$here/go-ebiten/common.sh" out="$root/artifacts/build/retromancer-${COMMIT:0:7}" tgz="$cache/retromancer-${COMMIT:0:7}.tar.gz" fetch "https://github.com/ketMix/retromancer/archive/$COMMIT.tar.gz" "$tgz" "$SHA256" go_setup audio_tools rm -rf "$out"; mkdir -p "$out/tree" tar -xzf "$tgz" -C "$out/tree" --strip-components 1 cd "$out/tree" patch -p1 -E --no-backup-if-mismatch < "$here/retromancer/retromancer-fredygames.patch" >/dev/null reencode_ogg "$MUSIC_Q" assets/songs/*.ogg # Dois assets que nao entram: o logo da game jam dos creditos (vira a imagem vazia do jogo) e o chapeu "pep" (sapo de meme) vira o do queijo. cp assets/images/empty.png assets/images/jam.png cp assets/images/hat-cheese.png assets/images/hat-pep.png go_build_wasm "$out/retromancer.wasm" embed go_licenses "$out/retromancer-licenses.txt" Retromancer embed cd "$root" rm -rf "$out/tree" ls -l "$out" shasum -a 256 "$out/retromancer.wasm" "$out/wasm_exec.js"