#!/usr/bin/env bash # Compila o MAG(net), publicado aqui como Polarity Defense (defesa de torres com polaridade magnetica, de kettek, liqMix e Amaruuk / # ketMix, GPL-3.0; Go + Ebitengine 2.3.4), para WebAssembly a partir do commit f491d9d de github.com/ketMix/magnet, com o Go 1.27.2 # (Builds/go-ebiten/common.sh). # # src/FredGames.Bundler/Builds/build-polarity-defense.sh # # Mudancas no jogo (polarity-defense/polarity-defense-fredygames.patch, publicado junto do fonte): sem o jogo em rede (pkg/net/connection.go # virou um stub: nenhum socket, nenhum servico de encontro, nenhuma conexao multicast; os botoes "Network Game" e "Exit" saem do menu), # sem os links dos creditos (nada abre outra pagina) e sem o logo da game jam do menu. Mudancas nos assets (neste script): as 5 # musicas (15 MB, Ogg Vorbis de alta qualidade) sao recodificadas em Ogg Vorbis qualidade 0,3, com o oggdec + wav2ogg de # Builds/pygame-music; o logo da game jam (images/ui/ebitengine-gamejam.png) vira uma imagem de 1 pixel transparente. # # Saida: artifacts/build/polarity-defense-f491d9d/{polarity-defense.wasm,wasm_exec.js,polarity-defense-licenses.txt}; dois builds # seguidos dao os mesmos bytes. set -euo pipefail COMMIT=f491d9d1e95123d963da4d10b0f4be92dacc5784 SHA256=4e444a6fc3b7de77ebec224443d2cbfb3dd80441adfa6c329fa63df86a23cc5f 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/polarity-defense-${COMMIT:0:7}" tgz="$cache/magnet-${COMMIT:0:7}.tar.gz" fetch "https://github.com/ketMix/magnet/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/polarity-defense/polarity-defense-fredygames.patch" >/dev/null reencode_ogg "$MUSIC_Q" pkg/data/assets/music/*.ogg # PNG de 1x1 pixel transparente no lugar do logo da game jam. python3 -I - pkg/data/assets/images/ui/ebitengine-gamejam.png <<'PY' import struct, sys, zlib def chunk(t, d): return struct.pack('>I', len(d)) + t + d + struct.pack('>I', zlib.crc32(t + d)) png = b'\x89PNG\r\n\x1a\n' + chunk(b'IHDR', struct.pack('>IIBBBBB', 1, 1, 8, 6, 0, 0, 0)) + chunk(b'IDAT', zlib.compress(b'\0\0\0\0\0', 9)) + chunk(b'IEND', b'') open(sys.argv[1], 'wb').write(png) PY export GO_PKG=./cmd/magnet go_build_wasm "$out/polarity-defense.wasm" go_licenses "$out/polarity-defense-licenses.txt" "Polarity Defense (MAG(net))" cd "$root" rm -rf "$out/tree" ls -l "$out" shasum -a 256 "$out/polarity-defense.wasm" "$out/wasm_exec.js"