Os custos ocultos de produtividade que interrompem suas Timelines de lançamento

Jan 21, 2022
Um afloramento rochoso em uma ilha

Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

Quantas vezes, no último mês, você teve que largar o que estava fazendo e entrar em ação para resolver um problema urgente que precisava ser resolvido agora mesmo? Uma das armadilhas mais comuns no desenvolvimento de jogos é deixar que pequenas ineficiências, aparentemente inconsequentes, se transformem em problemas maiores.

Quando seu estado de fluxo é interrompido várias vezes ao dia - seja esperando o download de um arquivo de projeto ou resolvendo mais um conflito de mesclagem - é quando as coisas começam a se perder. Os bugs começam a se infiltrar em seu código. Os ciclos de implantação se alongam. As noites inteiras se tornam a norma. O atrito aumenta a cada deslize e logo é sentido por toda a equipe. A frustração aumenta, o moral começa a se deteriorar e fica claro que o modo de fazer as coisas do seu estúdio simplesmente não funciona.

A implementação de soluções DevOps pode ajudá-lo a quebrar esse ciclo caótico. Com os processos corretos em vigor, você e todos os membros da sua equipe podem passar menos tempo trocando de tarefas e recuperar o foco necessário para produzir seu melhor trabalho. Princípios operacionais bem definidos e o conjunto certo de ferramentas melhoram a colaboração e aceleram os ciclos de implementação. Lance jogos polidos e estáveis no prazo e com qualidade, repetidamente - tudo isso minimizando a crise.

A Unity tem trabalhado com inúmeros desenvolvedores de jogos e estúdios ao longo dos anos, e muitos dos especialistas em nossa equipe são os próprios desenvolvedores de jogos. Em nossa experiência, os sistemas de controle de versão (VCS) são a base do DevOps eficaz, mas também podem ser um dos maiores problemas para os estúdios. Isso não é uma coincidência.

Neste e-book, reunimos insights de nossas equipes de produtos e engenharia sobre três das armadilhas mais comuns do Version Control que impedem os estúdios de fazer o que fazem de melhor: criar. Continue lendo para ver as armadilhas ocultas de produtividade que interrompem suas Timines de lançamento - e como as soluções VCS, como o componente Version Control do Unity DevOps, podem ajudá-lo a voltar aos trilhos.

Problema nº 1: Desenvolvimento paralelo

A situação: Um projeto, vários fluxos de trabalho

A menos que você seja uma equipe única, terá vários membros da equipe trabalhando no mesmo projeto. Obviamente, ter mãos extras pode ajudá-lo a escalar em velocidade, mas também pode tornar as coisas mais lentas.

O desenvolvimento paralelo ocorre quando vários membros da equipe trabalham em várias ramificações, com a possibilidade de mesclá-las posteriormente. Os programadores normalmente trabalham dessa forma, enquanto os artistas tendem a trabalhar em um único ramo com bloqueios, pois lidam com arquivos e ativos individuais.

O custo: Tempo que você nunca terá de volta

O impacto na produtividade aqui é óbvio e imenso: Muito tempo perdido.

O custo de produtividade de ter que refazer o trabalho, resolver conflitos de mesclagem, rastrear arquivos perdidos ou esperar para fazer o download de alterações já confirmadas resulta em ciclos de lançamento mais lentos, conflitos internos entre os membros da equipe e a incapacidade de corrigir rapidamente os bugs que os usuários encontram no jogo.

O problema: Perda de trabalho e conflitos internos

Embora seja vantajoso até mesmo para um desenvolvedor de jogos solo usar um VCS, ele é absolutamente essencial quando se trabalha com vários membros da equipe.

Não usar nenhum controle de versão pode resultar rapidamente em uma situação em que os desenvolvedores sobrescrevem o código uns dos outros, resultando em perda de trabalho e muita frustração. No entanto, até mesmo o uso de ferramentas VCS comuns hoje em dia cria problemas para as equipes de desenvolvimento de jogos.

Por exemplo, se toda a equipe estiver usando o Git, um dos cenários mais comuns é que alguns dos membros mais não técnicos da equipe, como os artistas, não terão um entendimento completo da ferramenta. É muito fácil para eles perderem alterações, especialmente sem a capacidade de bloquear arquivos. E como o sistema não é transparente e fácil de seguir, muitas vezes há uma dependência excessiva dos desenvolvedores para resolver problemas, o que resulta em ainda mais trabalho perdido.

Devido à incapacidade do Git de bloquear arquivos, muitas equipes de desenvolvimento de jogos usam o Perforce em toda a equipe para se ater a um único sistema e fonte de verdade. No entanto, os desenvolvedores podem não estar satisfeitos com a velocidade e o desempenho da abordagem de "fluxos de tarefas" do Perforce para ramificação e mesclagem. Isso pode adicionar outra camada de complexidade a um processo já complexo, especialmente ao configurar a integração contínua. A maioria dos criadores com quem conversamos diz que nem sequer tentaria o desenvolvimento baseado em tarefas com o Perforce. Simplesmente não é um fluxo de trabalho ideal.

Um trio animado tocando música no palco

Goodbye Volcano High por KO_OP

A solução: Organização consistente do projeto

Ter regras claras para coisas como organização de arquivos e garantir que elas sejam amplamente divulgadas mantém sua equipe trabalhando em sintonia.

Também recomendo escolher um VCS que funcione para todos os membros da sua equipe. Por exemplo, os artistas devem poder contribuir com o projeto de forma independente, sem depender de programadores. Ao implementar um sistema de controle de versão que seja fácil de ser usado por todos, fazer alterações nos arquivos do projeto torna-se um processo menos intimidador.

O estúdio KO_OP, sediado em Montreal, lidou com a assimetria e a falta de comunicação entre artistas e programadores durante a criação do jogo Goodbye Volcano High. Saiba como eles resolveram problemas de bloqueio de progresso implementando o VCS correto.

Problema nº 2: Ferramentas redundantes e silos

A situação: Diferentes funções, diferentes ferramentas

Normalmente, as equipes dos EUA começam com uma única solução de controle de versão e, depois de encontrarem problemas, passam a usar vários sistemas. Na raiz, os desenvolvedores e artistas precisam de fluxos de trabalho diferentes porque trabalham com código em vez de binários. Como resultado, as equipes terão artistas trabalhando com uma ferramenta como o Perforce, enquanto os desenvolvedores trabalharão com o GitLab ou o GitHub.

O custo: O dobro do trabalho sem o retorno

No desenvolvimento de jogos, cada segundo é necessário para iterar e testar rapidamente novas ideias. Embora várias ferramentas de controle de versão sejam frequentemente adotadas para resolver problemas que desperdiçam tempo, como sincronização ou conflitos de mesclagem, muitas vezes elas podem agravar esses problemas ou criar outros problemas. Por exemplo, eles podem aumentar o tempo gasto na criação de novos processos ou fluxos de trabalho sem integrações bilaterais, ou o custo financeiro de manter dois sistemas.

O problema: Mais fluxos de trabalho, mais problemas, mais manutenção

Para explicar melhor, uma equipe geralmente começa com base no Perforce ou no Git (por exemplo, GitLab/GitHub) e lida com as dificuldades que cada fluxo de trabalho exclusivo cria. No Perforce, eles perdem a capacidade de trabalhar de forma distribuída e com ramificações efêmeras. Com o Git, eles se deparam com problemas de armazenamento de arquivos devido ao trabalho distribuído. As equipes podem usar o Git Large File Storage (LFS) para garantir que apenas uma versão do binário seja armazenada na máquina, mas isso tem o custo da velocidade e de um fluxo de trabalho confuso que finge ser centralizado, mas não é.

Há dois problemas comuns que os estúdios encontrarão ao usar várias soluções. O primeiro é manter dois tipos de tecnologias de controle de versão para o projeto, o que geralmente inclui fluxos de trabalho ou processos complicados para integrar os dois. O segundo está centrado no conhecimento e no treinamento. Com dois sistemas muito diferentes, você precisa de especialistas em ambos para ajudar a desbloquear um criador ou uma equipe inteira quando algo dá errado.

Arte do jogo de Crying Suns

Crying Suns por Alt Shift

A solução: Avalie e otimize sua cadeia de ferramentas

O ideal é que todos os ativos sejam gerenciados e versionados no mesmo sistema de controle de versão, com fluxos de trabalho adaptados às diferentes necessidades da sua equipe.

É importante examinar seus processos e ferramentas e, em seguida, decidir se eles estão realmente funcionando para o seu estúdio.

Isso permitiria que o seu estúdio evitasse muitas dessas dores de cabeça comuns relacionadas à necessidade de criar pipelines diferentes para transferir ativos de uma equipe para outra.

Recomendamos um único VCS que possa acomodar vários fluxos de trabalho ou que tenha integrações robustas entre sistemas, para permitir o rastreamento de quem está trabalhando em quê e as versões mais recentes de cada ativo.

Comece aprendendo sobre o que considerar ao avaliar os sistemas de controle de versão.

Problema nº 3: Grande demais para se comprometer

A situação: Os arquivos de projeto precisam de atualizações frequentes

Trabalhar com arquivos e binários grandes é um dos elementos exclusivos da criação de um jogo, mas isso pode causar problemas com o controle de versões. Digamos que você seja um desenvolvedor trabalhando com o Git e esteja tentando fazer o check-in do seu código. Para fazer isso, primeiro você precisa atualizar seu espaço de trabalho com as alterações mais recentes de outros membros da equipe (isso é o equivalente a puxar e empurrar).

O custo: Ainda mais tempo perdido

O tempo gasto aguardando o download das atualizações é tempo perdido. Esse tempo se acumula. Um sistema mais rápido permite que suas equipes se concentrem na conclusão de suas tarefas sem que as ferramentas paralisem os projetos.

O problema: Interrupções no fluxo de trabalho

Alguns sistemas de controle de versão são extremamente lentos quando se trata de trabalhar com binários grandes. Imagine como é frustrante ter que esperar cinco minutos entre o momento em que você clica em atualizar e o momento em que você faz o check-in e pode finalmente seguir com sua vida.

No desenvolvimento de jogos, você precisa ser rápido. Se levar muito tempo para implementar mudanças no jogo ou responder a bugs devido a ineficiências no início do pipeline, esses problemas só se agravarão mais tarde.

Muitos estúdios usam soluções como o Perforce ou o Git LFS para resolver problemas com grandes ativos binários, mas cada uma delas vem com os mesmos compromissos descritos à esquerda.

Cabana abandonada no inverno from Retorno a Nangrim

Return to Nangrim por Sycoforge

A solução: Use o controle de versão baseado em arquivos

A escolha de um VCS baseado em arquivos pode acelerar muito o trabalho.

Com um sistema como esse, os colaboradores podem baixar apenas os arquivos que precisam alterar, em vez de todo o projeto. É muito mais rápido e mais seguro, mas é preciso garantir que todos estejam organizando seus arquivos da mesma forma para que seja realmente eficaz.

Pense com antecedência ao escolher sua solução de controle de versão, pois isso pode evitar muitas dores de cabeça mais tarde. Os jogos estão ficando maiores e mais complicados. Quanto mais cedo você implementar o sistema de controle de versão correto, melhor estará preparado para o sucesso duradouro.

Saiba mais sobre a abordagem da Sycoforge ao desenvolvimento iterativo com seu jogo Return to Nangrim e como o Unity Version Control os ajudou a se ajustar ao escopo crescente do projeto.

Version Control do Unity para desenvolvimento de jogos

O Version Control é fundamental para o DevOps, mas também é uma fonte central de conflito para os estúdios de jogos, e não há muitas soluções que realmente funcionem para todos os colaboradores. O Version Control do Unity DevOps está posicionado de forma única para dar suporte aos desenvolvedores de jogos, precisamente porque resolve esses problemas de perda de tempo. Veja como ele se compara à concorrência.

Um jogador de cabelo curto e vermelho em pé na selva

Desenvolvimento paralelo

Facilitar efetivamente o desenvolvimento paralelo é uma necessidade, e cada membro da equipe pode ter preferências diferentes. As ferramentas baseadas em Git, como GitHub, GitLab ou BitBucket, são alguns dos sistemas de controle de versão mais populares, especialmente entre os desenvolvedores. Devido à popularidade do Git, os usuários terão acesso a uma grande quantidade de aprimoramentos, integrações e interoperabilidade. No entanto, à medida que a equipe e o tamanho do projeto aumentam, muitos estúdios de jogos maiores e AAA usam uma solução de fluxo de trabalho centralizado como o Perforce para acomodar melhor os artistas e os usuários não técnicos ao lidar com grandes ativos binários.

Devido aos seus recursos robustos de ramificação e mesclagem para desenvolvedores e à capacidade de trabalhar de forma centralizada e bloquear arquivos para artistas, um sistema como o Unity Version Control pode ajudar. Se estiver trabalhando no Unity Editor, a integração perfeita do Version Control com a Unity UI incentiva a colaboração.

Ferramentas redundantes e silos

Embora artistas e programadores possam ter preferências diferentes quanto ao uso do Version Control, é importante conhecer os prós e os contras da correção excessiva em qualquer direção. Especialmente quando se trabalha remotamente, ter um único sistema de controle de versão e uma única "fonte de verdade" pode ajudar a eliminar muitas das frustrações e das consequências do desperdício de tempo de manter vários pipelines diferentes.

Mesmo com seus vários pontos fortes e fracos, muitos sistemas, como o GitHub, o Perforce, ou mesmo o Dropbox ou o Google Drive, podem ser configurados para se adequar ao seu fluxo de trabalho. Procure integrações ou extensões para ajudar a reduzir alguns dos problemas de colaboração ou opte por um único sistema projetado para todas as partes.

O Unity Version Control suporta o trabalho com um único repositório em diferentes modos. Esse recurso lhe dá o poder de vários fluxos de trabalho sem o incômodo de manter e conectar dois sistemas diferentes.

No Unity Version Control, um artista pode usar a UI do Gluon para trabalhar com o repositório no modo centralizado, simulando assim o mesmo estilo de trabalho com uma solução como o Perforce. Um desenvolvedor pode usar a interface do usuário padrão para trabalhar com o repositório como em um modo distribuído, simulando assim o mesmo fluxo de trabalho de uma solução baseada em Git, como o GitHub ou o GitLab.

Uma pequena criatura próxima a uma piscina de água

Grande demais para se comprometer

O desenvolvimento de jogos significa trabalhar com grandes projetos. À medida que o seu estúdio se expande, o sistema de gerenciamento de controle de origem também deve ser capaz de se expandir.

Embora o modelo distribuído do Git não tenha sido projetado para um caso de uso de desenvolvimento de jogos, há várias extensões projetadas para permitir que o Git lide com arquivos binários com mais facilidade, sendo o Git-LFS o mais amplamente utilizado. Ainda assim, o Git não foi projetado com o gerenciamento de ativos de arte em mente, e é por isso que outras soluções, como o Perforce, são frequentemente implementadas em estúdios maiores.

O Unity Version Control é a solução de maior desempenho do mercado quando se trata de lidar com arquivos grandes, o que é ideal para o desenvolvimento de jogos. Reduz significativamente o tempo de inatividade à espera do carregamento dos arquivos - o Unity Version Control pode ser até 5 a 8 vezes mais rápido do que outras soluções. Você ainda está lidando com o mesmo conteúdo, mas agora não está esperando por um download de cinco minutos várias vezes ao dia. Em vez disso, você obtém o que precisa em segundos.

Crie sem compromisso

O Unity Version Control foi projetado especificamente para o desenvolvimento de jogos, oferecendo suporte a artistas e desenvolvedores em estúdios de todos os tamanhos. Ele capacita os artistas com fluxos de trabalho baseados em arquivos e uma interface de usuário intuitiva, além de incluir ramificação e mesclagem robustas para os programadores, a fim de garantir que todos os usuários se beneficiem da colaboração aprimorada e da agilidade da iteração.

O Unity Version Control centraliza o trabalho sem repositórios clonados e oferece suporte a arquivos e repositórios enormes com transferências de dados rápidas e otimizadas para WAN. Sua ferramenta de fluxo de trabalho Gluon permite que os membros da equipe com menor inclinação técnica apliquem facilmente qualquer protocolo de controle de versão.

Acelere seus fluxos de trabalho e desenvolva sua cadeia de ferramentas DevOps com o Unity DevOps. Criamos sem compromisso e trabalhamos com eficiência para chegar ao mercado no prazo e com a qualidade que você espera. Comece a trabalhar gratuitamente hoje mesmo.

Obtenha o ebook

Preencha este formulário para acessar insights e soluções de ponta de especialistas do setor