Balatro: Criando um AppImage nativo para Linux
Balatro é um premiado jogo de cartas "inspirado" em Pôker, disponível oficialmente para Windows, MacOS e vários consoles. Bom, essa é uma lista que tecnicamente não inclui Linux, mas um dia eu estava olhando o site do arcabouço de desenvolvimento de jogos LÖVE2D e vi Balatro na seção de jogos feitos com ele e, por curiosidade, decidi conferir na documentação como jogos feitos com ele eram compilados e empacotados.
Para a minha surpresa, jogos feitos com LÖVE2D são um arquivo zip empacotando o código-fonte completo e recursos (efeitos sonoros, artes, etc.) concatenados ao final de um executável do arcabouço nativo para a plataforma em questão; Como LÖVE2D suporta linux, pensei que podia facilmente extrair os arquivos da minha cópia do jogo e reempacotar para produzir uma versão do jogo nativa.
Comece instalando o jogo onde quer que você o tenha, no meu caso a Steam, mas isso deveria funcionar em qualquer cópia do jogo já que ele não tem nenhum tipo de DRM, e encontre a pasta onde ele foi instalado, o jeito mais fácil é através da opção mostrada na imagem abaixo:

Copie o arquivo "Balatro.exe", renomei-o para Balatro.zip e extraia os arquivos-fonte para uma pasta src/ com os comandos:
$ cp Balatro.exe Balatro.zip && unzip Balatro.zip -d src/
Em seguida, entre na pasta src, comprima novamente os arquivos para um zip com a extensão .love usando os comandos e volte à pasta inicial:
$ cd src/ && zip -9 -r Balatro.love .
$ mv Balatro.love ../Balatro.love && cd ..
Baixe a última versão do LÖVE2D diretamente do github oficial do projeto, no momento que estou escrevendo 11.5 "Mysterious Mysteries", e a última versão do appimagetool, ferramenta que usaremos para montar o AppImage do jogo, usando o wget na mesma pasta, em seguida, damos permissão de execução para ambas:
$ wget https://github.com/love2d/love/releases/download/11.5/love-11.5-x86_64.AppImage
$ wget https://github.com/AppImage/appimagetool/releases/tag/continuous
$ chmod +x love-11.5-x86_64.AppImage
$ chmod +x squashfs-root/bin/Balatro
Execute o AppImage do LÖVE2D com um comando que extrai os arquivos para uma pasta chamada "squashfs-root":
$ ./love-11.5-x86_64.AppImage --appimage-extract
Concatene (cat) o arquivo Balatro.love criado em um passo anterior com o arquivo squashfs-root/bin/love e apague esse mesmo arquivo:
$ cat squashfs-root/bin/love Balatro.love > squashfs-root/bin/Balatro
$ rm squashfs-root/bin/love
Ainda dentro dessa pasta, vamos editar dois arquivos, love.desktop para executar o arquivo certo (esse arquivo é igual aos arquivos desktop de Desktop Environments do sistema) e Apprun (pelo mesmo motivo):
# love.desktop
[Desktop Entry]
Name=Balatro
Comment=Poker-like deck-builder
MimeType=application/x-love-game;
Exec=Balatro %f
Type=Application
Categories=Game;
Terminal=false
Icon=love
NoDisplay=true
# AppRun
# Apenas o fim do arquivo
if [ -z "$FUSE_PATH" ]; then
exec "$APPDIR/bin/Balatro" "$@"
else
exec "$APPDIR/bin/Balatro" --fused "$FUSE_PATH" "$@"
fi
Feito isso, é só executar um último comando para reempacotar a pasta num AppImage e está tudo pronto:
$ appimagetool-x86_64.AppImage squashfs-root/ Balatro.AppImage
É isso, agora você tem um Balatro.AppImage que roda sem nenhuma camada de compatibilidade e pode apagar o restante dos arquivos (se quiser). Esse também é um bom método caso queira modificar o jogo de alguma forma. Até a próxima!
- ← Anterior
Poema: Sem freio - Próximo →
Leituras recentes