Quatro práticas essenciais de DevOps para fazer com que todos os seus jogos se destaquem

Passe de uma crise de hot-fix para iterações e lançamentos rápidos.
Introdução
Trabalhar 60 horas por semana, meses antes de um lançamento? Ficar codificando a noite toda para fornecer correções de bugs milagrosas várias vezes por semana? Acrescentar recursos inspirados e de última hora literalmente antes do lançamento?
Esse setor é notório por sua cadência crunch-crunch-crunch. E você pode ser uma pessoa que prospera com essa loucura. Mas se a recompensa não estiver presente no final do ano fiscal, você deve se perguntar: por quê?
Talvez uma crise de lançamento tenha sido demais para um de seus principais desenvolvedores, que se demitiu e atrasou o lançamento. Talvez uma solução que durou a noite toda tenha desencadeado uma reação em cadeia de outras soluções que duraram a noite toda. Talvez um recurso de última hora, testado de forma inadequada, tenha ameaçado destruir todo o projeto. Seja qual for o cenário específico, uma coisa é certa: Você já esteve aqui muitas vezes.
Se essas táticas não parecerem valer o preço, é porque, apesar de seu heroísmo, você não está dando aos clientes o que eles querem. A capacidade de criar scripts de shaders, animar água, imaginar níveis ou configurar uma CDN é apenas parte do que é necessário para criar valor com sucesso para a comunidade de jogos. Para cruzar o abismo da produção lucrativa, as habilidades mais cruciais de que você precisará são a aplicação de sistemas e processos que direcionem suas energias em uma única direção: oferecer ótimos jogos para seus fãs.
São necessárias práticas inteligentes de DevOps para transformar um estúdio de um caos baseado em crise em uma terra de fluxos de trabalho produtivos e eficazes. O objetivo é devolver à sua equipe o recurso mais precioso, o tempo, para que ela possa trabalhar nas coisas que realmente importam.
Mas quanto tempo você pode realmente recuperar eliminando a crise? Anos, de acordo com Josh Nixdorf, diretor técnico da Electronic Arts: "Do ponto de vista da minha equipe, uma das métricas mais importantes que acompanhamos são os anos de esforço economizados. Isso também aumentou exponencialmente à medida que avançamos em nossa jornada de DevOps, começando com cerca de 20 anos de esforço com nossa primeira tentativa de DevOps e ultrapassando os 1.000 anos atuais."
Ao migrar para um processo de desenvolvimento mais simplificado e intencional, você capacita sua equipe a proporcionar melhores experiências aos seus jogadores e ganha a capacidade de realizar entregas com mais frequência. Este e-book apresenta alguns princípios e processos fundamentais de DevOps que são específicos para ambientes de desenvolvimento de jogos e destaca algumas ferramentas essenciais de DevOps para o bom funcionamento da pilha de tecnologia de um estúdio.
Por que DevOps?
O desenvolvimento de jogos fica mais complicado com o lançamento de cada geração de console. Os jogadores esperam cada vez mais gráficos melhores, atualizações frequentes após o lançamento e um suporte excelente. Se o seu jogo estiver cheio de bugs no lançamento, será extremamente difícil - se não impossível - recuperá-lo. Como disse o presidente da Xsolla, Chris Hewish, nesta entrevista ao GamesIndustry.biz, "Você sempre pode aproveitar o sucesso, mas não pode crescer das cinzas de um lançamento fracassado".
Para maximizar o valor do jogador, é essencial que você examine seus processos e ferramentas e, em seguida, identifique oportunidades de otimização. Seus fluxos de trabalho atuais permitirão que você dê suporte ao seu jogo ao longo do tempo? E quanto aos projetos futuros?
As equipes de estúdio tendem a concentrar sua atenção em como os desenvolvedores e artistas podem realizar tarefas cada vez mais difíceis. Mas esse foco faz com que seja muito fácil perder completamente a compreensão do processo. Por exemplo, se um programador parar e verificar seu trabalho com mais frequência (um processo DevOps), ele gastará menos tempo corrigindo bugs.
Sem essa compreensão do processo, os estúdios estão fadados ao fracasso:
- Desenvolvedores sobrecarregados que estão sempre trabalhando em modo de crise
- Lançamentos atormentados por bugs e feedback negativo
- Frustração generalizada causada por planos de desenvolvimento confusos
- Desperdício de esforços em toda a linha
A solução é adotar práticas e ferramentas de DevOps que otimizem e reduzam os ciclos de desenvolvimento para yield de jogos com desempenho consistente. Os benefícios são muitos para serem listados, mas aqui estão alguns deles:
- Automação de processos que liberam os desenvolvedores de tarefas repetitivas
- Tomada de decisão proativa em vez de reativa
- Integração e implementações contínuas que proporcionam aos seus jogadores conteúdo de maior qualidade
- Muito menos excesso de trabalho, estresse e esgotamento
E o pagamento no final do ano fiscal? Maior do que você pode imaginar: equipe mais feliz, clientes mais felizes e contadores mais felizes.
As quatro práticas essenciais
Você não precisa de um engenheiro de DevOps para começar a obter os benefícios de uma abordagem mais parecida com a de DevOps em seu ambiente de desenvolvimento. Até mesmo um desenvolvedor solo melhorará sua produtividade simplesmente compreendendo essas quatro práticas essenciais de DevOps.
Controle de versão robusto: Para quase todos os programadores, fazer o backup das alterações de código é tão automático quanto piscar os olhos. Um simples commit garante que o trabalho esteja seguro e não seja sobrescrito ou perdido. Mas o desenvolvimento de jogos envolve o gerenciamento e o rastreamento de uma variedade muito maior de ativos, às vezes enormes, gerados por artistas distribuídos e outros. Isso exige um sistema de controle de versão completo com um conjunto de recursos avançados.
Automação de Build Automation (CI/CD): Integração contínua (CI) significa mesclar automaticamente o trabalho de uma ou mais fontes em um repositório central. A entrega contínua (CD) é a criação automática de novas compilações à medida que você desenvolve. A implementação de um pipeline de CI/CD automatizado é uma prática recomendada estabelecida na metodologia ágil, fornecendo uma maneira consistente e automatizada de criar, empacotar e testar seu jogo.
Gerenciamento de artefatos: Além do código e dos ativos gerenciados por um sistema de controle de versão, os artefatos incluem uma ampla variedade de dependências, como imagens de base, pacotes de software, gráficos Helm, metadados e outros recursos tangenciais, mas essenciais. Um gerenciador de artefatos complementa o controle de versões, mantendo um repositório central para absolutamente tudo o que é necessário para criar ou implantar aplicativos ou jogos.
Testes frequentes e automatizados: Uma abordagem DevOps rompe os silos tradicionais de desenvolvedor/QA. Por exemplo, os desenvolvedores escrevem códigos em partes menores e realizam seus próprios testes antes de enviá-los para a base de código principal para compilações. O ideal é que esse teste seja contínuo e automatizado. Os candidatos à versão são mais refinados, e as equipes de controle de qualidade se aprofundam muito mais no desempenho do jogo.

1: Controle de versão robusto
Minimizar conflitos de mesclagem e perda de trabalho
Quando artistas e programadores estão constantemente se desentendendo, ou quando conflitos de mesclagem resultam em trabalho redundante ou perdido, o controle de versão geralmente é o culpado. Para aplicar as práticas recomendadas de controle de versão em ambientes de desenvolvimento de jogos, você precisará de um sistema com recursos exclusivos.
Na prática, os arquivos de código são pequenos, independentemente de seu tamanho. No entanto, os gráficos dos jogos de console e PC de última geração podem ser comparativamente enormes, tornando a largura de banda da rede um fator crítico. A extração e o envio desses ativos de um repositório central devem ser tão rápidos e fáceis quanto qualquer outro ativo de desenvolvimento.
O maior problema da maioria das soluções de controle de versão? Usabilidade - para todos.
Os programadores geralmente são adeptos de interfaces de linha de comando e técnicas complexas de ramificação de controle de versão, enquanto os artistas podem achar difícil simplesmente clicar em Save com frequência suficiente. Mas seus desenhos e animações são tão importantes para o pacote final quanto a base de código.

Um sistema de controle de versão de desenvolvimento de jogos precisa oferecer opções complexas e detalhadas para os desenvolvedores e, ao mesmo tempo, ser muito acessível para usuários menos técnicos. Caso contrário, os engenheiros gastarão seu tempo explicando, repetidamente, como o sistema funciona.
Uma IU gráfica e intuitiva pode facilitar muito a coordenação de ramificações e fusões complexas com os programadores, artistas e designers que trabalham simultaneamente em diferentes níveis e versões destinadas a diferentes plataformas.
Rastreabilidade significa ser capaz de ver exatamente quando e onde um ativo foi modificado e em quais ramificações ele é usado, e é um recurso importante também para as equipes de controle de qualidade. Além disso, a segurança adequada em todos os seus repositórios, ramificações, rótulos e caminhos é um requisito mínimo.

2: Automação de Build Automation (CI/CD)
Passe mais tempo criando e menos tempo gerenciando pipelines e ferramentas complexas
Um tema consistente de todas as práticas de DevOps é dividir o trabalho em partes menores. Unidades menores são mais fáceis de manusear, mais simples de testar e mais rápidas de otimizar. Você também minimiza o desperdício de esforço se bater em um obstáculo ou decidir mudar de direção.
No desenvolvimento de jogos, isso significa mesclar frequentemente suas alterações em andamento com as de outras pessoas e criar novas compilações. A criação manual de compilações não é tão complicada, mas é uma interrupção de outros trabalhos, e o tempo que isso leva pode aumentar rapidamente. Novamente, como em muitas outras práticas de DevOps, a automação é fundamental.
Um pipeline de compilação automatizado está vinculado ao seu sistema de controle de versão, monitorando as alterações e criando novas compilações a cada confirmação ou quando o número de alterações ultrapassa um determinado limite. Isso significa que os desenvolvedores podem identificar e corrigir as falhas com antecedência e com frequência, antes que as coisas saiam do controle. Ele mantém o código e os ativos em um estado mais confiável e pronto para o lançamento. Se você precisar reverter as alterações por qualquer motivo, a última compilação bem-sucedida estará pronta para ser usada. Além disso, outras equipes podem acessar facilmente as compilações para obter atualizações e dar feedback oportuno.
Culturalmente, uma abordagem DevOps para construir automação muda as prioridades da sua equipe para garantir que o trabalho seja feito corretamente antes de avançar para novos recursos. Eles avançam gradualmente, aproveitando pequenos sucessos, em vez de fazer longas corridas e cair exaustos. Isso aumenta a confiança e reduz significativamente a probabilidade de atrapalhar o trabalho de outra pessoa porque seu código ainda não foi concluído.

3: Gerenciamento de artefatos
Leve seu jogo para onde ele precisa ir
Depois que o sistema de CI/CD cria uma nova compilação, ele normalmente a envia para um repositório de artefatos, onde o gerenciador de artefatos a registra com todas as suas dependências e outros componentes necessários. Orquestrar esses "outros componentes necessários" é a razão pela qual o gerenciamento de artefatos é uma prática tão importante no DevOps de desenvolvimento de jogos.
Os artefatos podem vir de todos os tipos de fontes, como seus desenvolvedores internos, artistas contratados e qualquer número de repositórios públicos de código-fonte aberto. O gerenciador de artefatos é o que garante que todo esse conteúdo essencial seja carregado e arquivado, ao mesmo tempo em que verifica as versões e as aprovações, verifica se há problemas de segurança e assim por diante. Há muitos pontos de falha possíveis.
Obviamente, qualquer sistema útil de gerenciamento de artefatos tem requisitos mínimos. Ele deve ser capaz de gerenciar metadados para dar suporte ao controle de versão e à filtragem com base no licenciamento. Ele precisa permitir que os desenvolvedores definam qual conteúdo será retido e por quanto tempo. E, o que é mais importante, ele deve ser construído como um sistema de alta disponibilidade para evitar tempo de inatividade.
Em comparação com a simples designação de um bucket S3 como repositório de projetos, há vantagens consideráveis na implementação de um gerenciador de artefatos real. Isso significa que manter uma biblioteca comum para todos os recursos do projeto aprimora a colaboração, principalmente entre artistas e engenheiros. Todos os recursos são registrados e rastreáveis, o que possibilita compilações previsíveis e repetíveis. Além disso, libera todos os membros da equipe do gerenciamento de implementações, para que possam codificar, animar, projetar ou fazer o que fazem de melhor.

4: Testes frequentes e automatizados
Responder ao feedback e trabalhar com agilidade
Dois princípios moldam as práticas eficazes de DevOps para controle de qualidade:
Testes frequentes no início do desenvolvimento
Fluxos de trabalho automatizados de controle de qualidade
Um carpinteiro mede duas vezes para cortar uma vez. Em outras palavras, eles resolvem a variável de comprimento e, em seguida, testam seu trabalho antes de passar para a próxima etapa de produção. Os desenvolvedores podem fazer exatamente a mesma coisa escrevendo blocos de código mais curtos e verificando-os novamente antes de escrever mais. A linha entre o desenvolvedor e o controle de qualidade é tênue.
As verificações frequentes do código pelos desenvolvedores compensam quando as compilações passam por testes automatizados. Sempre que o compilador envia uma nova compilação para o repositório, ela é testada. Com os testes automatizados contínuos, é muito menos provável que os bugs sobrevivam após o desenvolvimento e causem problemas no código de produção. E aqueles que sobreviverem não serão tão virulentos.
Dito isso, todos nós sabemos que os bugs acontecem. O que acompanha os testes automatizados de controle de qualidade são os relatórios automatizados, tanto dos protocolos de teste quanto, depois que um jogo chega ao mercado, dos dispositivos em que está sendo executado. Assim que o controle de qualidade ou a instalação de um usuário encontra anomalias, o sistema informa dados específicos de falhas e exceções para permitir correções mais rápidas. Muitas vezes, os problemas ainda não são aparentes para o usuário final e podem ser corrigidos antes de aparecerem como falhas perceptíveis.
De todas as práticas de DevOps para ambientes de desenvolvimento de jogos, os testes frequentes e automatizados podem ser os mais cruciais. Os jogadores querem novos conteúdos regularmente, e os estúdios estão sob enorme pressão para cumprir as datas de lançamento com recursos novos e inovadores. Mas se um influenciador importante tiver uma experiência ruim, além de um dia ruim, as ramificações podem ser devastadoras. É imprescindível obter o controle de qualidade correto.
Os estúdios de jogos estão fazendo isso funcionar
DevOps e práticas ágeis são, em grande parte, apenas hábitos de trabalho de senso comum. Porém, quando são aplicadas a jogos que envolvem códigos complexos, milhares de ativos e restrições de desempenho implacáveis, os estúdios precisam de ferramentas DevOps dedicadas para garantir o controle meticuloso da fonte, a integração e a entrega contínuas, o gerenciamento seguro de artefatos e testes frequentes e automatizados.
O uso de ferramentas de DevOps que se integram perfeitamente à sua plataforma de desenvolvimento aumenta sua eficácia. Abaixo estão apenas alguns dos milhares de criadores da Unity que usam nossa crescente biblioteca de ferramentas DevOps para melhorar seus fluxos de trabalho e produzir jogos impressionantes.
Estúdio: Alta
Em um Creator Spotlight no canal Twitch da Unity, Alta compartilhou como eles usam o Unity Version Control (anteriormente Plastic SCM) para acelerar os ciclos de lançamento e fornecer atualizações regulares de conteúdo para sua grande e crescente base de fãs. "Usamos o Plastic SCM para nosso controle de origem. Isso nos permite ter ramificações de diferentes versões do projeto", diz Boramy Unn, diretor de jogos da Alta. "Criamos uma nova ramificação para cada recurso e, em seguida, para qualquer tipo de empreendimento arriscado dentro de cada recurso, criamos sub-ramificações."

Estúdio: KO_OP
A KO_OP é um estúdio de jogos de propriedade cooperativa com sede em Montreal. Eles estavam em busca de uma solução de controle de versão que eliminasse os obstáculos entre artistas e engenheiros enquanto trabalhavam em seu mais recente projeto, Goodbye Volcano High. "O Gluon[fluxo de trabalho de artista do Unity Version Control] foi uma surpresa agradável", disse Jacob Blommestein, um desenvolvedor da KO_OP, em um estudo de caso do Unity. "Os artistas não precisavam saber nada sobre ramificação ou fusão. Eles apenas adicionaram seus arquivos .psd, e o controle de versão foi transparente."

Estúdio: Sycoforge
Em uma entrevista no blog da Unity, a CEO Michela Rimensberger compartilhou como o Unity Version Control está ajudando a Sycoforge e sua comunidade a trabalharem juntas para dar vida ao seu ambicioso jogo Return to Nangrim. "De uma perspectiva técnica, o Unity Version Control tem sido um salva-vidas para a colaboração", disse ela. "Experimentamos muitas ferramentas de controle de versão diferentes e logo percebemos que nenhuma delas realmente atendia às necessidades de uma empresa de desenvolvimento de jogos. Embora alguns fossem úteis para programadores, os artistas tinham surtos de suor ao usá-los. Com o Version Control, descobrimos um verdadeiro divisor de águas. É fácil de usar tanto para quem não é programador quanto para quem é programador."

Estúdio: Cryptic Studios
A Cryptic Studios, subsidiária da Perfect World, usa a Backtrace para automatizar o rastreamento de erros e bugs. "A Backtrace mudou a forma como exploramos e usamos os dados de colisões", disse o produtor sênior da Cryptic Studios, Brent Lamb, em um e-book da Unity lançado este ano. "Todos se sentem à vontade para fazer consultas e entender a saúde de um de nossos jogos."

Comece hoje mesmo
Acelere seus fluxos de trabalho e desenvolva sua cadeia de ferramentas de DevOps com as soluções de DevOps da Unity. Crie com mais eficiência para chegar ao mercado no prazo e com a qualidade que você espera. Explore as soluções aqui.