Durante lo sviluppo di un gioco, non vuoi che modifiche sperimentali, correzioni o idee a metà influiscano subito sull'intero progetto. La creazione di più rami consente a te e ai tuoi compagni di squadra di lavorare insieme o in modo indipendente in tutta sicurezza, senza rallentare l'avanzamento complessivo del progetto.
I rami sono versioni parallele del progetto principale che avanzano a velocità diverse e per scopi diversi.
Un progetto potrebbe dover supportare contemporaneamente vari tipi di lavoro. Creare e gestire rami lo rende possibile, permettendo a ogni tipo di flusso di lavoro di seguire il proprio percorso e di unirsi agli altri solo quando sei pronto. Esistono diverse strategie di ramificazione che i team adottano per motivi diversi, ma un paradigma comune sfrutta quanto segue:
Ramo principale: un ramo stabile e di lunga durata che funge da base per il progetto.
Ramo di versione: rami in cui il lavoro viene testato e preparato per una versione specifica.
Ramo di funzionalità: rami dedicati in cui viene svolto il lavoro sulle funzionalità prima di essere integrato in un ramo di versione o in quello
principale.Ramo sperimentale: rami in cui si può esplorare in sicurezza senza influire sull'intero progetto o su altri rami.
Ramo principale
Il ramo principale è la versione più stabile di un progetto perché è la base condivisa e affidabile da cui derivano e a cui confluiscono tutti gli altri rami.
Un ramo principale viene utilizzato per:
Integrare un altro ramo quando il lavoro è pronto.
Iterare per creare una build stabile per i playtest.
Crea un ramo dev che segue il ramo principale. Il ramo dev è dove puoi testare la stabilità del lavoro prima di unirlo a quello principale.
Ramo di versione
I rami di versione sono quelli in cui il lavoro viene bloccato mentre si prepara una build per i test o per la versione. Un ramo di versione è un ottimo modo per organizzare il lavoro attorno a uno specifico obiettivo o a una timeline della versione.
Un ramo di versione viene utilizzato per:
Bloccare le funzionalità per rilasciare lavori specifici.
Concentrarsi su correzione dei bug e rifinitura.
Evitare modifiche all'ultimo minuto ed espandere l'ambito.
Separare il lavoro della versione in un ramo dedicato è particolarmente utile nelle fasi finali dello sviluppo perché:
Il lavoro sperimentale può continuare senza causare problemi al team.
Le modifiche non sono permanenti per l'intero progetto, il che potrebbe comportare dei ritardi.
Il team sa sempre cosa sta per essere incluso in un versione.
Rami di funzionalità
Un ramo di funzionalità viene usato per lavorare su funzionalità in corso senza introdurre rischi per i rami versione o principale. Possono esserci molti rami delle funzionalità in cui i compagni di squadra possono apportare modifiche liberamente senza compromettere gli altri rami del progetto.
I rami di funzionalità vengono creati per lavorare su un task specifico, ad esempio:
Aggiunta di un nuovo sistema di gameplay.
Compilazione del flusso dell'UI.
Aggiunta di una nuova sezione della mappa.
I rami di funzionalità sono utili per:
Raggruppare e revisionare il lavoro sulle funzionalità.
Passare dalle funzionalità in corso di sviluppo ad altre attività senza perdere il filo o confondere lo spazio di lavoro attivo con modifiche disparate.
Se decidi di seguire un'altra direzione, il ramo di funzionalità può essere facilmente abbandonato senza influire su nessun altro.
I rami di funzionalità possono essere abbandonati facilmente senza influire su un altro compagno di squadra o sul lavoro in corso.
Rami sperimentali
Un ramo sperimentale è il luogo in cui nuove idee vengono esplorate in sicurezza senza interrompere il lavoro di un altro membro del team. Dopo aver esplorato un'idea, puoi confrontare i risultati e decidere cosa tenere. Se un'idea funziona, puoi unire le modifiche. Se non funziona, il ramo può essere eliminato o abbandonato.
I rami sperimentali vengono utilizzati nei seguenti modi:
Prototipazione di idee di gameplay.
Prova di ottimizzazioni delle prestazioni.
Esplorazione di layout artistici o di livello alternativi.