DevOps com aplicativos do UnityDevOps with Unity apps

Desenvolver aplicativos para plataformas modernas envolve muito mais atividades do que apenas escrever código.Developing apps for modern platforms involves many more activities than just writing code. Essas atividades, conhecidas como DevOps (desenvolvimento + operações), abrangem o ciclo de vida completo do aplicativo e incluem trabalhos de planejamento e acompanhando, elaboração e implementação de código, gerenciamento de um repositório de código-fonte, execução de builds, gerenciamento de integrações e implantações contínuas, testes (incluindo testes de unidade e testes de IU), execução de várias formas de diagnóstico em ambientes de desenvolvimento e produção e monitoramento de desempenho do aplicativo e dos comportamentos do usuário em tempo real por meio de telemetria e análise.These activities, referred to as DevOps (development + operations), span the app's complete life cycle and include planning and tracking work, designing and implementing code, managing a source code repository, running builds, managing continuous integrations and deployments, testing (including unit tests and UI tests), running various forms of diagnostics in both development and production environments, and monitoring app performance and user behaviors in real time through telemetry and analytics.

O Visual Studio, com o Azure DevOps Services e o Team Foundation Server, oferece uma variedade de funcionalidades de DevOps.Visual Studio, together with Azure DevOps Services and Team Foundation Server, provides a variety of DevOps capabilities. Muitas delas são aplicáveis a projetos multiplataforma, incluindo jogos e aplicativos gráficos de imersão criados com o Unity, principalmente ao usar C# como linguagem de script.Many of these are applicable to cross-platform projects, including games and immersive graphical apps created with Unity—especially when using C# as a scripting language. No entanto, como o Unity tem seus próprios ambiente de desenvolvimento e mecanismo de runtime, uma série de recursos de DevOps não se aplicam como se aplicariam a outros tipos de projetos criados no Visual Studio.However, because Unity has its own development environment and runtime engine, a number of DevOps features don't apply as they would to other kinds of projects built in Visual Studio.

As tabelas a seguir identificam como os recursos de DevOps no Visual Studio aplicam-se ou não se aplicam ao trabalhar com o Unity.The following tables identify how DevOps features in Visual Studio apply or don't apply when working with Unity. Consulte a documentação vinculada para obter detalhes sobre os recursos em si.Refer to the linked documentation for details on the features themselves.

Ferramentas agileAgile tools

Link de referência: About Agile tools and Agile project management (Sobre as ferramentas Agile e o gerenciamento de projetos Agile) (usando o Azure Boards ou o TFS, incluindo o Team Explorer Everywhere)Reference link: About Agile tools and Agile project management (using Azure Boards or TFS, including Team Explorer Everywhere)

Comentário Geral: todos os recursos de planejamento e acompanhamento são independentes do tipo de projeto e de linguagens de codificação.General Comment: all planning and tracking features are independent of project type and coding languages.

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
Gerenciar listas de pendências e sprintsManage backlogs and sprints SimYes
Acompanhamento de trabalhoWork tracking SimYes
Colaboração da sala da equipeTeam room collaboration SimYes
Quadros kanbanKanban boards SimYes
Relatar e visualizar o progressoReport and visualize progress SimYes

ModelagemModeling

Link de referência: Analisar e modelar a arquiteturaReference link: Analyze and model architecture

Comentário geral: embora esses recursos de design sejam independentes da linguagem de codificação ou funcionem com linguagens .NET como C#, eles operam em um paradigma de aplicativo tradicional com hierarquias de objeto e relações de classe.General Comment: Although these design features are either independent of coding language, or work with .NET languages like C#, they operate on a traditional application paradigm with object hierarchies and class relationships. Projetar um jogo no Unity envolve um paradigma totalmente diferente, ou seja, as relações de objetos gráficos, sons, sombreadores, scripts e assim por diante.Designing a game within Unity involves a different paradigm altogether, namely the relationships of graphical objects, sounds, shaders, scripts, and so forth. Por esse motivo, as ferramentas do diagrama de modelagem do Visual Studio não são particularmente relevantes para a totalidade de um projeto do Unity.For this reason, the Visual Studio modeling diagram tools are not particularly relevant to the whole of a Unity project. Eles poderiam ser usados para gerenciar relações em scripts C#, mas essa é apenas uma parte do todo.They could possibly be used to manage relationships within C# scripts, but that is only one part of the whole.

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
Diagramas de sequênciaSequence diagrams NãoNo
Grafos de dependênciaDependency graphs NãoNo
Hierarquia de chamadasCall hierarchy NãoNo
Designer de ClasseClass designer NãoNo
Gerenciador de arquiteturaArchitecture explorer NãoNo
Diagramas UML (caso de uso, atividade, classe, componente, sequência e DSL)UML diagrams (use case, activity, class, component, sequence, and DSL) NãoNo
Diagramas de camadaLayer diagrams NãoNo
Validação da camadaLayer validation NãoNo

CódigoCode

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
Usar o TFVC (Controle de Versão do Team Foundation) ou o Azure ReposUse Team Foundation Version Control (TFVC) or Azure Repos SimYes Projetos do Unity são simplesmente uma coleção de arquivos que podem ser colocados em sistemas de controle de versão como qualquer outro projeto, mas há algumas considerações especiais descritas após esta tabela.Unity projects are simply a collection of files that can be placed into version control systems like any other project, but there are a few special considerations described after this table.
Introdução ao GIT no Azure ReposGetting started with Git in Azure Repos SimYes Consulte as observações após a tabela.See notes after the table.
Melhorar a qualidade do códigoImprove Code Quality SimYes
Localizar alterações de código e outros históricosFind code changes and other history SimYes
Usar mapas de códigos para depurar aplicativosUse code maps to debug your applications SimYes

Considerações especiais para controle de versão com o Unity:Special considerations for version control with Unity:

  1. O Unity acompanha metadados sobre ativos de jogos em uma única biblioteca opaca que está oculta por padrão.Unity tracks metadata about game assets in a single, opaque library that is hidden by default. Para manter arquivos e metadados em sincronia, é necessário tornar os metadados visíveis e armazená-lo em partes mais gerenciáveis.To keep files and metadata in sync, it is necessary to make the metadata visible and to store it in more-manageable chunks. Para obter detalhes, consulte Uso de sistemas de controle de versão externo com o Unity (documentação do Unity).For details, refer to Using External Version Control Systems with Unity (Unity documentation).

  2. Nem todos os arquivos e pastas em um projeto do Unity são apropriados para controle do código-fonte, como também é descrito no link acima.Not all files and folders in a Unity project are appropriate for source control, as is also described in the link above. As pastas Ativos e ProjectSettings devem ser adicionadas, mas as pastas Biblioteca e Temp, não.The Assets and ProjectSettings folders should be added, but the Library and Temp folders should not. Para obter uma lista adicional de arquivos gerados não entrariam no controle do código-fonte, consulte a discussão Como usar Git para controle do código-fonte Unity3D? em StackOverflow.For an additional list of generated files that would not go into source control, see the discussion How to use Git for Unity3D source control? on StackOverflow. Muitos desenvolvedores têm publicaram sobre assunto independentemente em seus blogs.Many developers have also blogged on this subject independently.

  3. Ativos binários em um projeto do Unity, como texturas ou arquivos de áudio, podem ocupar uma grande quantidade de armazenamento.Binary assets in a Unity project—such as textures or audio files—can take up a large amount of storage. Vários sistemas de controle do código-fonte, como Git, armazenam uma cópia única de um arquivo para cada alteração feita, mesmo que a alteração afete apenas uma pequena parte do arquivo.Various source control systems like Git store a unique copy of a file for every change that is made, even if the change affects only a small portion of the file. Isso pode fazer o repositório Git ficar inflado.This can cause the Git repository to become bloated. Para resolver isso, os desenvolvedores do Unity geralmente optam por adicionar somente ativos finais ao repositório e usar uma maneira diferente de manter um histórico de trabalho de seus ativos, como OneDrive, DropBox ou git-annex.To address this, Unity developers often elect to add only final assets to their repository, and use a different means of keeping a working history of their assets, such as OneDrive, DropBox, or git-annex. Essa abordagem funciona porque esses ativos geralmente não precisam ter controle de versão ao longo das alterações do código-fonte.This approach works because such assets typically don't need to be versioned along with source code changes. Os desenvolvedores normalmente também definem o Modo de Serialização de Ativo como Forçar Texto no editor do projeto para armazenar arquivos de cena no texto e não no formato binário, o que permite mesclagens no controle do código-fonte.Developers also typically set the project editor's Asset Serialization Mode to Force Text to store scene files in text rather than binary format, which allows for merges in source control. Para obter detalhes, consulte Configurações do Editor (documentação do Unity).For details, see Editor Settings (Unity documentation).

BuildBuild

Link de referência: Azure PipelinesReference link: Azure Pipelines

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
TFS (Team Foundation Server) localOn-premises Team Foundation Server (TFS) PossívelPossible Projetos do Unity são criados por meio do ambiente do Unity e não por meio do sistema de build do Visual Studio (compilar dentro de Ferramentas do Visual Studio para Unity compilará os scripts, mas não produzirá um executável).Unity projects are built through the Unity environment and not through the Visual Studio build system (building within the Visual Studio Tools for Unity will compile the scripts but not produce an executable). É possível compilar projetos do Unity da linha de comando (documentação do Unity), de modo que seja possível configurar um processo MSBuild em um servidor TFS para executar os comandos do Unity apropriados, desde que o Unity em si esteja instalado no computador.It is possible to build Unity projects from the command line (Unity documentation), so it possible to configure an MSBuild process on a TFS server to execute the appropriate Unity commands, provided that Unity itself is installed on that computer.

O Unity também oferece o Build de Nuvem Unity, que monitora um repositório Git ou SVN e executa compilações periódicas.Unity also offers Unity Cloud Build, which monitors a Git or SVN repository and runs periodic builds. No momento, ele não funciona com o TFVC nem o Azure DevOps Services.At present it does not work with TFVC or Azure DevOps Services.
Servidor de build local vinculado ao Azure DevOps ServicesOn-premises build server linked to Azure DevOps Services PossívelPossible Dadas as mesmas condições acima, ainda é possível direcionar builds disparados por meio do Azure DevOps Services para uso em um computador com TFS local.Given the same conditions as above, it is further possible to direct builds triggered through Azure DevOps Services to use an on-premises TFS computer. Consulte Build and release agents (Agentes de build e de versão) para obter instruções.See Build and release agents for instructions.
Serviço de controlador hospedado do Azure DevOps ServicesHosted controller service of Azure DevOps Services NãoNo Atualmente, não há suporte para compilações do Unity.Unity builds are not presently supported.
Compilar definições com pré e pós-scriptsBuild definitions with pre- and post-scripts SimYes Uma definição de build personalizada que usa a linha de comando do Unity para executar um build também pode ser configurada para scripts de pré e pós-build.A custom build definition that uses the Unity command line to run a build can also be configured for pre- and post-build scripts.
Integração contínua incluindo check-ins restritosContinuous integration including gated check-ins SimYes Check-ins restritos somente para TFVC, uma vez que Git funciona em um modelo de solicitação pull, em vez de check-ins.Gated check-ins for TFVC only as Git works on a pull-request model rather than check-ins.

TesteTest

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
Planejando testes, criando casos de teste e organizando conjuntos de testesPlanning tests, creating test cases and organizing test suites SimYes
Teste manualManual testing SimYes
Gerenciador de Teste (testes de gravação e reprodução)Test Manager (record and playback tests) Somente dispositivos Windows e emuladores AndroidWindows devices and Android emulators only
Cobertura de códigoCode coverage n/an/a Não se aplica, uma vez que o teste de unidade acontece dentro do Unity e não no Visual Studio, consulte abaixo.Not applicable as unit testing happens within Unity and not Visual Studio, see below.
Teste de unidade em seu códigoUnit test your code No Unity, mas não no Visual StudioWithin Unity, but not Visual Studio O Unity fornece sua própria estrutura de teste de unidade como parte das ferramentas de teste do Unity (repositório de ativos do Unity).Unity provides its own unit test framework as part of Unity test tools (Unity Asset Store). Resultados de teste de unidade são relatados dentro do Unity e não aparecerão no Visual Studio.Unit test results are reported within Unity and will not be surfaced within Visual Studio.
Usar a automação da interface do usuário para testar o códigoUse UI automation to test your code NãoNo Os testes de IU codificados dependem de controles legíveis na interface do usuário do aplicativo. Os aplicativos Unity são gráficos por natureza e, assim, o conteúdo não é legível para ferramentas de teste de IU codificado.Coded UI tests rely on readable controls in the app's UI; Unity apps are graphical in nature and so content isn't readable by the Coded UI test tools.

Melhorar a qualidade do códigoImprove code quality

Link de referência: melhorar a qualidade do códigoReference link: Improve code quality

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
Analisar a qualidade do código gerenciadoAnalyze managed code quality SimYes Pode analisar o código de script C# no Visual Studio.Can analyze the C# script code within Visual Studio.
Localizar código duplicado usando detecção de clone de códigoFind duplicate code by using code clone detection SimYes Pode analisar o código de script C# no Visual Studio.Can analyze the C# script code within Visual Studio.
Medir complexidade e facilidade de manutenção do código gerenciadoMeasure complexity and maintainability of managed code SimYes Pode analisar o código de script C# no Visual Studio.Can analyze the C# script code within Visual Studio.
Ferramentas de desempenhoPerformance tools NãoNo Use o Unity Profiler (site do Unity).Use the Unity Profiler (Unity website).
Analisar problemas de memória .NET FrameworkAnalyze .NET Framework memory issues NãoNo Ferramentas do Visual Studio não têm ganchos na estrutura Mono (como usado pelo Unity) para a criação de perfil.Visual Studio tools do not have hooks into the Mono framework (as used by Unity) for profiling. Use o Unity Profiler (documentação do Unity).Use the Unity Profiler (Unity documentation).

Gerenciamento de liberaçõesRelease management

Link de referência: Build e versão no Azure Pipelines e no TFSReference link: Build and release in Azure Pipelines and TFS

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
Gerenciar processos de versãoManage release processes SimYes
Implantação para servidores para carregamento lateral por meio de scriptsDeployment to servers for side-loading via scripts SimYes
Carregar para a loja de aplicativosUpload to app store ParcialPartial Estão disponíveis extensões que podem automatizar esse processo para algumas lojas de aplicativos.Extensions are available that can automate this process for some app stores. Consulte Extensões para o Azure DevOps Services; por exemplo, a extensão para Google Play.See Extensions for Azure DevOps Services; for example, the extension for Google Play.

Monitorar com HockeyAppMonitor with HockeyApp

Link de referência: Monitorar com HockeyAppReference link: Monitor with HockeyApp

RecursoFeature Tem suporte com o UnitySupported with Unity Comentários AdicionaisAdditional Comments
Análise de falhas, telemetria e distribuição betaCrash analytics, telemetry, and beta distribution SimYes HockeyApp é útil principalmente para tratar a distribuição beta e obter relatórios de falha.HockeyApp is primarily useful for handling beta distribution and obtaining crash reports.

Para telemetria de scripts do C#, é possível usar qualquer estrutura de análise, desde que ela seja executada na versão do .NET que é usada pelo Unity.For telemetry from C# scripts, it is possible to use any analytics framework provided that it runs on the version of .NET that is used by Unity. No entanto, isso permite análise somente dentro de scripts de jogos e não mais profundamente dentro do mecanismo do Unity.However, this allows for analytics only within game scripts and not more deeply inside the Unity engine. No momento, não há nenhum plug-in do Application Insights, mas plug-ins estão disponíveis para outras soluções de análise, como Unity Analytics e Google Analytics.At present there is no plugin for Application Insights, but plugins are available for other analytics solutions such as Unity Analytics and Google Analytics. Serviços como Unity Analytics que entendem a natureza de um projeto Unity obviamente fornecerão análise muito mais significativa do que estruturas genéricas.Services like Unity Analytics that understand the nature of a Unity project will, of course, provide much more meaningful analysis than generic frameworks.