Agora, mostrarei como é o processo de desenvolvimento do Unity em uma pequena empresa de gamedev e como o aprimoramos e automatizamos. Ainda assim, 2020 está no quintal, basta dirigir com o mouse ...
Sobre o mouse, isso não é brincadeira. Até recentemente, o processo de teste e desenvolvimento de jogos conosco era algo como:
Android
- Desenvolvedores escrevem código
- Going Android Version
- Carrega para uma pasta compartilhada no Google Drive
- O testador baixa a versão mais recente
- Testa e lança tarefas no Redmine
- Ir para: Etapa 1
A versão do iOS é um pouco mais complicada:
iOS
- Desenvolvedores escrevem código
- Indo para o projeto Xcode
- O script Postbuild adiciona localização, SDK e muito mais
- Projeto compilado
- Arquivado
- Exportado para arquivo IPA (tudo isso não é feito muito rapidamente, haha)
- Depois disso, você pode fazer o upload do IPA para a pasta compartilhada no Google Drive
- Ou faça o upload para o TestFlight, onde você pode esperar alguns dias
- O testador baixa o IPA mais recente
- Conecta o dispositivo, instala o aplicativo
- Testa e lança tarefas no Redmine
- Ir para: Etapa 1
Aqui está uma tristeza. E se para Android, o processo ainda é aceitável (não), então para iOS - tudo é muito longo, inconveniente e errado. Além disso, a maioria das operações é realizada manualmente pelo desenvolvedor (aqui sobre o mouse) e o tempo que pode ser gasto no desenvolvimento leva para aguardar a compilação, a exportação do projeto Xcode e assim por diante. Também é necessário levar em consideração que todos estão no mesmo escritório, ou seja, Você pode perguntar / dizer algo antes de iniciar todo esse processo infernal.
Mas, em geral, de alguma forma funciona e lança jogos :)
E aqui recentemente, com a apresentação do
Leopotam , outro amante da
construção de bicicletas e otimização de tudo, decidi automatizar esse processo. O resultado é um script BASH que pode:
- Faça o download das alterações mais recentes do repositório GIT
- Executar testes
- Build APK para Android, em desenvolvimento e lançamento
- Crie um projeto para o iOS Xcode, em desenvolvimento e lançamento
- Compile
- Arquivar e exportar IPA
- Gere um manifesto para ele
- Gere páginas HTML para instalar
- Carregue tudo isso para o servidor usando sshpass
- Coloque todos os logs em uma pasta separada
- Enviar uma notificação por telegrama
E tudo isso com o toque de um botão. Sem iniciar o Unity e o Xcode. De alguma forma, mais divertido, hein?

Agora, quando a montagem é concluída, o testador recebe uma notificação no Telegram com dois links para as versões Android e iOS. Resta passar por eles e instalar o aplicativo diretamente do dispositivo. Também funciona no iOS, e um manifesto especial é gerado para isso.
Na verdade, esta é minha primeira experiência em programação BASH, então não sei como é, no Feng Shui ou não, mas funciona corretamente. De qualquer forma, o script será atualizado e modificado para atender às necessidades dos projetos. Abaixo estão alguns pontos-chave sobre o que está sendo feito:
Como começar a construir um projeto do Unity para uma plataforma específica
O
manual descreve todos os argumentos que podem ser usados para a compilação. Execute a compilação APK:
$UNITY -batchmode -quit -projectPath "$PATH" -executeMethod Game.BuildActions.AndroidDevelopment -buildTarget android -logFile "$LOGS_PATH/android_development.log"
Aqui
-buildTarget apenas define a plataforma e -
executeMethod chama uma função no projeto do Unity, que inicia a compilação com os parâmetros fornecidos, é algo como isto:
static void AndroidDevelopment () { PlayerSettings.SetScriptingBackend (BuildTargetGroup.Android, ScriptingImplementation.IL2CPP); PlayerSettings.SetScriptingDefineSymbolsForGroup (BuildTargetGroup.Android, "DEV"); EditorUserBuildSettings.SwitchActiveBuildTarget (BuildTargetGroup.Android, BuildTarget.Android); EditorUserBuildSettings.development = true; EditorUserBuildSettings.androidETC2Fallback = AndroidETC2Fallback.Quality32Bit; BuildReport report = BuildPipeline.BuildPlayer (GetScenes (), ANDROID_DEVELOPMENT_FILE, BuildTarget.Android, BuildOptions.None); int code = (report.summary.result == BuildResult.Succeeded) ? 0 : 1; EditorApplication.Exit (code); }
Aqui você pode definir seus próprios parâmetros para construção, condição etc. O resultado é retornado ao script BASH.
Como compilar e exportar o projeto Xcode
Depois que o Unity emitiu com sucesso o projeto Xcode, ele deve ser compilado, arquivado e exportado para um arquivo IPA; isso é feito da seguinte maneira:
xcodebuild -project "$IOS_PATH/Unity-iPhone.xcodeproj" -quiet > "$LOGS_PATH/ios_build_release.log" 2>&1
xcodebuild -project "$IOS_PATH/Unity-iPhone.xcodeproj" -scheme "Unity-iPhone" archive -archivePath "$IOS_RELEASE/Unity-iPhone.xcarchive" -quiet > "$LOGS_PATH/ios_archive_release.log" 2>&1
xcodebuild -exportArchive -archivePath "$IOS_RELEASE/Unity-iPhone.xcarchive" -exportOptionsPlist "$IOS_RELEASE/options.plist" -exportPath $IOS_RELEASE -allowProvisioningUpdates -quiet > "$LOGS_PATH/ios_export_release.log" 2>&1
Aqui
options.plist é um manifesto especial que indica o método de exportação, TeamID e muito mais. Todos os parâmetros disponíveis podem ser visualizados pelo comando:
xcodebuild -help
Com todas essas operações, o
Unity-iPhone.xcodeproj padrão que o Unity gera é especificado. Se você tiver o
xcworkspace , precisará verificar sua disponibilidade e uso.
Como enviar uma mensagem para um telegrama a partir de um script BASH
Você precisa encontrar o bot do
BotFather , escrever para ele / start ou / newbot, preencher os campos e receber uma mensagem com um token e um link para a documentação. Para enviar uma mensagem usando o bot, você precisa executar o seguinte comando:
curl $BOT_PROXY https://api.telegram.org/bot$BOT_TOKEN/sendMessage -m 60 -s -X POST -d chat_id=$CHAT_ID -d text="$1" > "$LOGS_PATH/bot.log" 2>&1
Aqui,
CHAT_ID é o identificador de bate-papo para onde enviar as mensagens. Por exemplo, você pode adicionar o bot ao grupo em que os testadores estão sentados e conceder o direito de ler as mensagens. Depois disso execute:
https://api.telegram.org/bot[BOT_TOKEN]/getUpdates
E obtenha o ID do grupo e dos membros que escreveram algo. Depois disso, indique o ID do grupo ou membro específico para quem enviar. Como encontrar e configurar o envio através de um proxy, acho que não é um problema.
Outras funções, modifique modelos de manifesto e HTML usando
sed e faça upload dos arquivos necessários para o servidor usando
sshpass .
Parâmetros que podem ser alterados rapidamente:
Demo e fonte
Obviamente, tudo isso pode ser feito através do mesmo CI / CD do Gitlab, já existem scripts prontos para isso, execute corredores, construa e teste. Em resumo, use infraestrutura e mecanismos prontos. Mas você precisa passar para ele e também configurá-lo. Talvez cheguemos a isso, enquanto é muito melhor do que era. Além disso, o script inteiro foi escrito com bastante rapidez.
Toda a automação em 2020! Robôs injetam, não um homem.