Usando Git na Unity
Quem eu sou: Erik Cruz
● Programador na Rogue Snail.
● Fundador e Programador na Utopia Game
Studio.
● Estudante de Jogos Digitais na Unisinos.
● Técnico em informática e em Programação
de Jogos Digitais.
Contato: erikcruzdev@gmail.com
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Um pouco sobre a Rogue Snail
Trailer Relic Hunter Legends | Site Rogue Snail
A Rogue Snail é uma empresa
totalmente remota com integrantes
trabalhando de todo o Brasil e
também de outros países.
Estamos desenvolvendo os jogos
da franquia Relic Hunters com a
nossa própria propriedade
intelectual.
O que é o GIT e para que serve
Git é uma ferramenta de versionamento onde você consegue salvar o
estado atual do seu projeto. Praticamente é uma máquina do tempo!
Usando Git, uma equipe
grande consegue
trabalhar no mesmo
projeto e mantendo
versões diferentes
estáveis.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
O que é o GIT e para que serve
Viagem no tempo: Consegue ir para um estado estável antes das
coisas pegarem fogo.
Versionamento: Chega de cópias de zip no drive de
versao_final_finalizada_aleluia.zip!
“No que vou usar isso na minha vida?”
● Salva o seu projeto de cachorros que
comem pen drive.
● Evita perda de trabalho feito caso
ocorra um problema.
● Ferramenta feita para integrar trabalho
feito por uma equipe.
● Evita perda de projeto caso ele
for corrompido ou algo
semelhante.
● Backup do projeto na nuvem.
● Empresas grandes, não
necessariamente remotas,
utilizam GIT profissionalmente.
“No que vou usar isso na minha vida?”
“E precisa em Game Jam ou projeto da
faculdade?”
Sim, além de ter um backup e poder voltar
para uma versão mais estável caso algum
imprevisto aconteça. Utilizar repositório
minimiza o tempo levado para fazer o
famoso “depois a gente junta tudo”.
Como posso usá-lo?
Há vários clientes de GIT para várias plataformas
Fork Source Tree Github
Desktop
Tortoise Git GitKraken
Terminal
Git for Windows
● Com o terminal você tem ciência de todas as operações sendo feitas
com mais controle.
● Leve e muitas vezes mais rápido.
● Te ajuda a imaginar que está acessando a Matrix.
Clientes de GIT - Fork
Colocando seu versionamento na nuvem
● Salva seu repositório na nuvem.
● Backups.
● Colaborar com membros de um time em um mesmo projeto
simultaneamente.
https://bitbucket.org/product/ https://github.com/
Os mais usados
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Características
Bitbucket:
Free para até cinco integrantes de uma equipe; 1GB de LFS.
1GB de LFS Free; colaboradores ilimitados.
Ambos serviços tem projetos privados ilimitados e pode fazer upgrades
para aumentar o storage e outros benefício.
P.S: Vamos falar sobre o LFS e sua importância depois.
Vamos por a mão na massa!
Vamos utilizar o Fork e o Github nessa workshop!
Download do Fork em: https://git-fork.com/
Cadastro no Github em: https://github.com/
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Passos iniciais
● Criar uma conta no Bitbucket ou no Github.
● Depois do login, vamos criar um novo repositório.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Criando um repositório
Repositório: Pasta com
controle de versão do Git.
Clonando um repositório
Copie o link do repositório:
Clonando um repositório - Fork
File> Clone> Cole o link:
Funções importantes do Fork
Commit
Um commit é um conjunto de mudanças feitas no projeto que o usuário
queira salvar naquele estado. Um checkpoint, um save.
É ideal fazer commits frequentes para caso você queira voltar para um
estado anterior e salvá-lo.
Commitando uma mudança
Changes - Contém as mudanças feitas que não foram
commitadas.
Stage - Adiciona arquivos que tiveram mudanças relevantes
para irem possivelmente irem para o commit.
Unstage - Remove mudança que foi dado Stage.
Commitando uma mudança
Commitando uma mudança
Push - Empurrar/Upload
Depois que o commit é feito, a mudança fica salvo no repositória
apenas de forma local. As mudanças se encontram apenas na sua
máquina. Você precisa “Empurrar/Enviar” essas mudanças para a
nuvem (Github, Bitbucket ou outro serviço).
Origin/Master - É o seu branch/ramo principal na nuvem.
Master - É o seu ramo principal local em sua máquina.
P.S: Vamos falar sobre
Branch/Ramo em breve, segura aí.
Push - Empurrar/Upload
Push - Empurrar/Upload
Pull - Puxar/Baixar
Ok, e se meu colega alterou algum arquivo e eu quero atualizar o
projeto? Você precisa baixar as mudanças dos seus colegas usando o
comando Pull.
É recomendável quando você estiver trabalhando no mesmo branch
que um colega você dar Pull antes de fazer suas alterações para o Git
atualizar o projeto.
P.S: Vamos falar sobre
Branch/Ramo em breve, eu
juro!
Outras operações
Fetch - Baixa todas as mudanças e commits feitos no repositório remoto sem
afetar o seu estado local.
Stash - É uma “lixeira” para guardar mudanças temporárias caso você queira
sair de um branch e ir para outra sem perder suas mudanças atuais.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Branches
E se eu estou mexendo em uma feature que ainda está em
desenvolvimento e ainda não está estável? Como posso mandar para o
servidor sem quebrar o projeto? A resposta é criando Branches!
Branches são ramificações que apontam para estados de commits.
Usando branches você consegue
divergir do estado atual do
repositório e voltar para esse estado
anterior facilmente.
Branches são úteis para fazer uma feature mais isolada sem mudar
drasticamente o estado do projeto para que outras pessoas consigam ter
uma versão estável com segurança.
Branches
É como se você fosse um viajante
no tempo criando uma realidade
alternativa e quisesse voltar para
estabilidade caso algo desse
errado.
Criando uma Branch
Sua branch precisa sair de outra
branch/commit para ser criada.
Por padrão, a branch master já é iniciada
com o repositório.
Trocando de branch
Caso você quiser voltar para outra timeline do seu projeto onde alguma
coisa específica estava diferente, você pode mudar a vontade! Só não
esqueça de commitar suas mudanças atuais para não perdê-las caso
forem relevantes!
Antes de trocar de branch é importante dar um
Fetch para atualizar todas as branches remotas
para você não perder uma atualização.
Boas Práticas com Branches
Há boas práticas para criação de branches.
Uma delas é você fazer uma branch nova
quando trabalhar em uma Feature nova. Isso
pode te ajudar caso alguma mudança destrutiva
ocorra no seu repositório.
Trabalhar em uma branch separada da Master faz com que as mudanças da
master fiquem protegidas de mudanças instáveis. Mas também é exagero criar
um branch para cada mudança pequena.
Merge - Mesclar
E depois que você quer unir suas mudanças
estáveis com o resto do projeto?
Para isso você precisa fazer o Merge.
Merge é a união de commits mesclados em um
novo commit que guarda esse novo estado.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Merge - Mesclar
Merge é um processo que pode ser complexo em projetos grandes
com equipes grandes onde tem pessoas mexendo em coisas
simultaneamente.
Como fazer um Merge
Resolvendo conflitos em Merge
Às vezes os Merges podem ter conflitos quando as branches mescladas tiveram
mudança nos mesmos lugares:
Resolvendo conflitos em Merge
Dependendo do conflito, você pode marcar apenas as mudanças de uma das
branches. Mas quando o commit tem trechos requisitados nos dois branches,
você precisa dar Merge para mesclá-os. Ative as duas checkboxes e dê um
Merge.
Resolvendo conflitos em Merge
Resolvendo conflitos em Merge
Conflitos podem ser resolvidos com trechos de cada branch, para isso basta
passar o mouse no conflito sublinhado e dar select Left ou Right.
Resolvendo conflitos em Merge
Um trecho pode ser dado Select Left ou Select Right mas você pode editar
o texto, copiar e colar partes do outro trecho ou mudá-lo para incluir
ambos.
Resolvendo conflitos em Merge
Depois de resolvido, faça o commit normalmente e verá a mágica acontecer.
Inclusive no Fork fica visível o resultado do Merge antes de commitar.
Git Ignore
Há arquivos que você quer ignorar e não quer
commitar mudanças, principalmente quando
você trabalha com uma Engine como a Unity e
a Unreal.
Há arquivos gerados pela própria engine que
não devem entrar no commit.
Um formato de arquivo específico, um arquivo
ou um diretório inteiro pode ser ignorado.
Git Ignore
Não esqueça de fazer um commit
com o arquivo .gitignore depois de
adicionar alguma coisa no Ignore!
Git Ignore na Unity
Pastas geradas pela Unity que devem ser ignoradas:
NomeDoProjeto/Library
NomeDoProjeto/Temp
NomeDoProjeto/Logs
Também há extensões que devem ser ignoradas como: *.suo, *.tmp etc.
Veja mais em: https://github.com/github/gitignore/blob/master/Unity.gitignore
LFS significa Large File Storage e é utilizado para seu repositório lidar melhor
com formatos binários que não lidam bem com mudanças em texto como .jpg,
.psd, .mp3 etc.
Código e arquivos de texto não entram para o LFS.
Veja quais são os arquivos que precisam estar no LFS:
https://gist.github.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f
O que é o tal LFS que estava nos planos
do Github e Bitbucket mesmo?
O LFS precisa ser inicializado no
projeto para ser usado.
Para isso vá em:
Repository > Git LFS> Initialize Git LFS
Inicializando o LFS
Inicializando o LFS
Adicione no formato como o formato
de exemplo:
*.bla
Depois de adicionar extensões de
arquivos que você usa no projeto
aperte em Track.
Outras configurações para a Unity
Para utilizar Unity com Git, além de configurar o Ignore, há configurações
que precisam ser feitas dentro da Engine, elas se encontram em:
Edit> Project Settings>Version Control
Edit> Project Settings>Editor
Mas o que são esses Meta Files?
Arquivo que a Unity cria para cada asset. Ele guarda um identificador (id)
único para reconhecer o asset que também é gerado durante sua criação.
Ele fica oculto se a opção Visible Meta Files não é marcada, portanto, não
conseguiria ir para o versionamento.
Outras configurações para a Unity
NÃO SE FAZ MERGE DE SCENE UTILIZANDO AS
MUDANÇAS DE DUAS BRANCHES.
Utilize prefabs, cenas separadas, Scriptable Objects
o máximo possível! Quando não puder, comunique
o time!
Arquivos binários como *.jpg, *.png também não
devem ser mesclados, use o LFS.
Saiba mais!
Tutorial de Unity com Github Desktop: https://www.youtube.com/watch?v=qpXxcvS-g3g
Documentação do Git para Terminal: https://git-scm.com/doc
Workshop de Git com Terminal:
https://drive.google.com/file/d/1LrjCba0tRgLeD0dT7LWMLe7F2SVrqKXW/view?usp=sharing
The complete guide to Unity & Git:
https://www.gamasutra.com/blogs/TimPettersen/20161206/286981/The_complete_guide_to_Unity__Git.php
Meta Files na Unity:
https://docs.unity3d.com/560/Documentation/Manual/BehindtheScenes.html
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Links da palestra
Site da Rogue Snail: https://www.roguesnail.com/
Trailer do Relic Hunters Legend:https://www.youtube.com/watch?v=GW7B4zIciTI
Git Fork: https://git-fork.com/
Github: https://github.com/
Bitbucket: https://bitbucket.org/product/
Erik Cruz - Usando Git na Game Jam - Agosto 2020
Obrigado :)
Erik Cruz
Contato: erikcruzdev@gmail.com
Rogue Snail: www.roguesnail.com
Erik Cruz - Usando Git na Game Jam - Agosto 2020

Usando Git na Unity - Gaming For All 2021

  • 1.
  • 2.
    Quem eu sou:Erik Cruz ● Programador na Rogue Snail. ● Fundador e Programador na Utopia Game Studio. ● Estudante de Jogos Digitais na Unisinos. ● Técnico em informática e em Programação de Jogos Digitais. Contato: erikcruzdev@gmail.com Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 3.
    Um pouco sobrea Rogue Snail Trailer Relic Hunter Legends | Site Rogue Snail A Rogue Snail é uma empresa totalmente remota com integrantes trabalhando de todo o Brasil e também de outros países. Estamos desenvolvendo os jogos da franquia Relic Hunters com a nossa própria propriedade intelectual.
  • 4.
    O que éo GIT e para que serve Git é uma ferramenta de versionamento onde você consegue salvar o estado atual do seu projeto. Praticamente é uma máquina do tempo! Usando Git, uma equipe grande consegue trabalhar no mesmo projeto e mantendo versões diferentes estáveis. Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 5.
    O que éo GIT e para que serve Viagem no tempo: Consegue ir para um estado estável antes das coisas pegarem fogo. Versionamento: Chega de cópias de zip no drive de versao_final_finalizada_aleluia.zip!
  • 6.
    “No que vouusar isso na minha vida?” ● Salva o seu projeto de cachorros que comem pen drive. ● Evita perda de trabalho feito caso ocorra um problema. ● Ferramenta feita para integrar trabalho feito por uma equipe.
  • 7.
    ● Evita perdade projeto caso ele for corrompido ou algo semelhante. ● Backup do projeto na nuvem. ● Empresas grandes, não necessariamente remotas, utilizam GIT profissionalmente. “No que vou usar isso na minha vida?”
  • 8.
    “E precisa emGame Jam ou projeto da faculdade?” Sim, além de ter um backup e poder voltar para uma versão mais estável caso algum imprevisto aconteça. Utilizar repositório minimiza o tempo levado para fazer o famoso “depois a gente junta tudo”.
  • 9.
    Como posso usá-lo? Hávários clientes de GIT para várias plataformas Fork Source Tree Github Desktop Tortoise Git GitKraken
  • 10.
    Terminal Git for Windows ●Com o terminal você tem ciência de todas as operações sendo feitas com mais controle. ● Leve e muitas vezes mais rápido. ● Te ajuda a imaginar que está acessando a Matrix.
  • 11.
  • 12.
    Colocando seu versionamentona nuvem ● Salva seu repositório na nuvem. ● Backups. ● Colaborar com membros de um time em um mesmo projeto simultaneamente. https://bitbucket.org/product/ https://github.com/ Os mais usados Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 13.
    Características Bitbucket: Free para atécinco integrantes de uma equipe; 1GB de LFS. 1GB de LFS Free; colaboradores ilimitados. Ambos serviços tem projetos privados ilimitados e pode fazer upgrades para aumentar o storage e outros benefício. P.S: Vamos falar sobre o LFS e sua importância depois.
  • 14.
    Vamos por amão na massa! Vamos utilizar o Fork e o Github nessa workshop! Download do Fork em: https://git-fork.com/ Cadastro no Github em: https://github.com/ Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 15.
    Passos iniciais ● Criaruma conta no Bitbucket ou no Github. ● Depois do login, vamos criar um novo repositório. Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 16.
    Criando um repositório Repositório:Pasta com controle de versão do Git.
  • 17.
    Clonando um repositório Copieo link do repositório:
  • 18.
    Clonando um repositório- Fork File> Clone> Cole o link:
  • 19.
  • 20.
    Commit Um commit éum conjunto de mudanças feitas no projeto que o usuário queira salvar naquele estado. Um checkpoint, um save. É ideal fazer commits frequentes para caso você queira voltar para um estado anterior e salvá-lo.
  • 21.
    Commitando uma mudança Changes- Contém as mudanças feitas que não foram commitadas. Stage - Adiciona arquivos que tiveram mudanças relevantes para irem possivelmente irem para o commit. Unstage - Remove mudança que foi dado Stage.
  • 22.
  • 23.
  • 24.
    Push - Empurrar/Upload Depoisque o commit é feito, a mudança fica salvo no repositória apenas de forma local. As mudanças se encontram apenas na sua máquina. Você precisa “Empurrar/Enviar” essas mudanças para a nuvem (Github, Bitbucket ou outro serviço). Origin/Master - É o seu branch/ramo principal na nuvem. Master - É o seu ramo principal local em sua máquina. P.S: Vamos falar sobre Branch/Ramo em breve, segura aí.
  • 25.
  • 26.
  • 27.
    Pull - Puxar/Baixar Ok,e se meu colega alterou algum arquivo e eu quero atualizar o projeto? Você precisa baixar as mudanças dos seus colegas usando o comando Pull. É recomendável quando você estiver trabalhando no mesmo branch que um colega você dar Pull antes de fazer suas alterações para o Git atualizar o projeto. P.S: Vamos falar sobre Branch/Ramo em breve, eu juro!
  • 28.
    Outras operações Fetch -Baixa todas as mudanças e commits feitos no repositório remoto sem afetar o seu estado local. Stash - É uma “lixeira” para guardar mudanças temporárias caso você queira sair de um branch e ir para outra sem perder suas mudanças atuais. Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 29.
    Branches E se euestou mexendo em uma feature que ainda está em desenvolvimento e ainda não está estável? Como posso mandar para o servidor sem quebrar o projeto? A resposta é criando Branches! Branches são ramificações que apontam para estados de commits. Usando branches você consegue divergir do estado atual do repositório e voltar para esse estado anterior facilmente.
  • 30.
    Branches são úteispara fazer uma feature mais isolada sem mudar drasticamente o estado do projeto para que outras pessoas consigam ter uma versão estável com segurança. Branches É como se você fosse um viajante no tempo criando uma realidade alternativa e quisesse voltar para estabilidade caso algo desse errado.
  • 31.
    Criando uma Branch Suabranch precisa sair de outra branch/commit para ser criada. Por padrão, a branch master já é iniciada com o repositório.
  • 32.
    Trocando de branch Casovocê quiser voltar para outra timeline do seu projeto onde alguma coisa específica estava diferente, você pode mudar a vontade! Só não esqueça de commitar suas mudanças atuais para não perdê-las caso forem relevantes! Antes de trocar de branch é importante dar um Fetch para atualizar todas as branches remotas para você não perder uma atualização.
  • 33.
    Boas Práticas comBranches Há boas práticas para criação de branches. Uma delas é você fazer uma branch nova quando trabalhar em uma Feature nova. Isso pode te ajudar caso alguma mudança destrutiva ocorra no seu repositório. Trabalhar em uma branch separada da Master faz com que as mudanças da master fiquem protegidas de mudanças instáveis. Mas também é exagero criar um branch para cada mudança pequena.
  • 34.
    Merge - Mesclar Edepois que você quer unir suas mudanças estáveis com o resto do projeto? Para isso você precisa fazer o Merge. Merge é a união de commits mesclados em um novo commit que guarda esse novo estado. Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 35.
    Merge - Mesclar Mergeé um processo que pode ser complexo em projetos grandes com equipes grandes onde tem pessoas mexendo em coisas simultaneamente.
  • 36.
  • 37.
    Resolvendo conflitos emMerge Às vezes os Merges podem ter conflitos quando as branches mescladas tiveram mudança nos mesmos lugares:
  • 38.
    Resolvendo conflitos emMerge Dependendo do conflito, você pode marcar apenas as mudanças de uma das branches. Mas quando o commit tem trechos requisitados nos dois branches, você precisa dar Merge para mesclá-os. Ative as duas checkboxes e dê um Merge.
  • 39.
  • 40.
    Resolvendo conflitos emMerge Conflitos podem ser resolvidos com trechos de cada branch, para isso basta passar o mouse no conflito sublinhado e dar select Left ou Right.
  • 41.
    Resolvendo conflitos emMerge Um trecho pode ser dado Select Left ou Select Right mas você pode editar o texto, copiar e colar partes do outro trecho ou mudá-lo para incluir ambos.
  • 42.
    Resolvendo conflitos emMerge Depois de resolvido, faça o commit normalmente e verá a mágica acontecer. Inclusive no Fork fica visível o resultado do Merge antes de commitar.
  • 43.
    Git Ignore Há arquivosque você quer ignorar e não quer commitar mudanças, principalmente quando você trabalha com uma Engine como a Unity e a Unreal. Há arquivos gerados pela própria engine que não devem entrar no commit. Um formato de arquivo específico, um arquivo ou um diretório inteiro pode ser ignorado.
  • 44.
    Git Ignore Não esqueçade fazer um commit com o arquivo .gitignore depois de adicionar alguma coisa no Ignore!
  • 45.
    Git Ignore naUnity Pastas geradas pela Unity que devem ser ignoradas: NomeDoProjeto/Library NomeDoProjeto/Temp NomeDoProjeto/Logs Também há extensões que devem ser ignoradas como: *.suo, *.tmp etc. Veja mais em: https://github.com/github/gitignore/blob/master/Unity.gitignore
  • 46.
    LFS significa LargeFile Storage e é utilizado para seu repositório lidar melhor com formatos binários que não lidam bem com mudanças em texto como .jpg, .psd, .mp3 etc. Código e arquivos de texto não entram para o LFS. Veja quais são os arquivos que precisam estar no LFS: https://gist.github.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f O que é o tal LFS que estava nos planos do Github e Bitbucket mesmo?
  • 47.
    O LFS precisaser inicializado no projeto para ser usado. Para isso vá em: Repository > Git LFS> Initialize Git LFS
  • 48.
  • 49.
    Inicializando o LFS Adicioneno formato como o formato de exemplo: *.bla Depois de adicionar extensões de arquivos que você usa no projeto aperte em Track.
  • 50.
    Outras configurações paraa Unity Para utilizar Unity com Git, além de configurar o Ignore, há configurações que precisam ser feitas dentro da Engine, elas se encontram em: Edit> Project Settings>Version Control Edit> Project Settings>Editor
  • 52.
    Mas o quesão esses Meta Files? Arquivo que a Unity cria para cada asset. Ele guarda um identificador (id) único para reconhecer o asset que também é gerado durante sua criação. Ele fica oculto se a opção Visible Meta Files não é marcada, portanto, não conseguiria ir para o versionamento.
  • 53.
    Outras configurações paraa Unity NÃO SE FAZ MERGE DE SCENE UTILIZANDO AS MUDANÇAS DE DUAS BRANCHES. Utilize prefabs, cenas separadas, Scriptable Objects o máximo possível! Quando não puder, comunique o time! Arquivos binários como *.jpg, *.png também não devem ser mesclados, use o LFS.
  • 54.
    Saiba mais! Tutorial deUnity com Github Desktop: https://www.youtube.com/watch?v=qpXxcvS-g3g Documentação do Git para Terminal: https://git-scm.com/doc Workshop de Git com Terminal: https://drive.google.com/file/d/1LrjCba0tRgLeD0dT7LWMLe7F2SVrqKXW/view?usp=sharing The complete guide to Unity & Git: https://www.gamasutra.com/blogs/TimPettersen/20161206/286981/The_complete_guide_to_Unity__Git.php Meta Files na Unity: https://docs.unity3d.com/560/Documentation/Manual/BehindtheScenes.html Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 55.
    Links da palestra Siteda Rogue Snail: https://www.roguesnail.com/ Trailer do Relic Hunters Legend:https://www.youtube.com/watch?v=GW7B4zIciTI Git Fork: https://git-fork.com/ Github: https://github.com/ Bitbucket: https://bitbucket.org/product/ Erik Cruz - Usando Git na Game Jam - Agosto 2020
  • 56.
    Obrigado :) Erik Cruz Contato:erikcruzdev@gmail.com Rogue Snail: www.roguesnail.com Erik Cruz - Usando Git na Game Jam - Agosto 2020