Mientras desarrollas un juego, no quieres que los cambios experimentales, las correcciones o las ideas a medio terminar afecten al proyecto general de manera inmediata. Crear varias ramas permite que tú y tu equipo trabajéis juntos o de forma independiente con seguridad, sin ralentizar el progreso general del proyecto.
Las ramas son versiones paralelas del proyecto principal que avanzan a distintas velocidades y con distintos fines.
Un proyecto puede necesitar admitir varios tipos de trabajo al mismo tiempo. Crear y gestionar ramas lo hace posible al permitir que cada tipo de flujo de trabajo siga su propia ruta, y fusionarlas solo cuando estés listo. Hay diferentes estrategias de ramificación que los equipos usan por distintos motivos, pero un paradigma común se basa en lo siguiente:
Rama principal: una rama estable y de larga duración que sirve como base del proyecto.
Rama de lanzamiento: ramas en las que se prueba el trabajo y se prepara para una versión específica.
Rama de funciones: ramas específicas en las que se trabaja en las funciones antes de integrarlas en una rama de lanzamiento o
principal.Rama experimental: ramas donde se puede explorar con seguridad sin afectar a todo el proyecto ni a otras ramas.
Rama principal
La rama principal es la versión más estable de un proyecto porque es la base compartida y fiable de la que surgen y a la que regresan el resto de ramas.
Una rama principal se utiliza para:
Integrar otra rama cuando el trabajo esté listo.
Iterar para crear una compilación estable para pruebas de juego.
Crear una rama dev que siga a la rama principal. La rama dev es donde puedes probar la estabilidad del trabajo antes de fusionarla con la principal.
Rama de lanzamiento
En las ramas de lanzamiento se bloquea el trabajo mientras se prepara una compilación para pruebas o el lanzamiento. Una rama de lanzamiento es una forma excelente de organizar el trabajo en torno a un objetivo de lanzamiento o un calendario concreto.
Una rama de lanzamiento se usa para:
Bloquear funciones para el lanzamiento de un trabajo específico.
Centrarse en corregir errores y pulir detalles.
Evitar los cambios de última hora y la ampliación del ámbito.
Separar el trabajo de lanzamiento en su propia rama es especialmente útil en las últimas fases del desarrollo porque:
El trabajo experimental puede continuar sin causar problemas al equipo.
Los cambios no son permanentes en el proyecto general, lo que podría provocar retrasos.
El equipo siempre sabe qué va a incluir un lanzamiento.
Ramas de funciones
Una rama de funciones se utiliza para trabajar en funciones en curso sin introducir riesgos en la rama principal o en la de lanzamiento. Puede haber muchas ramas de funciones donde otras personas hacen cambios libremente sin romper ramas del proyecto.
Las ramas de funciones se crean para trabajar en una tarea específica, como:
Añadir un nuevo sistema de jugabilidad.
Crear un flujo de IU.
Añadir una nueva sección del mapa.
Las ramas de funciones son útiles para:
Agrupar y revisar el trabajo de funciones.
Cambiar entre funciones en desarrollo y otras tareas sin perder tu posición o sin ensuciar el espacio de trabajo activo con cambios dispares.
Si decides ir en otra dirección, la rama de funciones se puede abandonar fácilmente sin afectar a nadie más.
Las ramas de funciones se pueden abandonar fácilmente sin afectar a otro compañero de equipo ni al trabajo en curso.
Ramas experimentales
Una rama experimental es el lugar donde se exploran nuevas ideas de forma segura sin interrumpir el trabajo del resto del equipo. Después de explorar una idea, puedes comparar los resultados y decidir qué conservar. Si una idea funciona, puedes fusionar los cambios. Si no funciona, la rama se puede eliminar o abandonar.
Las ramas experimentales se usan para lo siguiente:
Crear prototipos de ideas de jugabilidad.
Probar optimizaciones de rendimiento.
Explorar arte alternativo o disposiciones de nivel alternativas.