Mientras desarrollas un juego, no te conviene que los cambios experimentales, las correcciones o las ideas a medias afecten de inmediato al proyecto en general. Crear múltiples ramas te permite a ti, y a tus compañeros de equipo, trabajar juntos o de manera independiente siempre de forma segura y sin ralentizar el progreso general del proyecto.
Las ramas son versiones paralelas del proyecto principal que avanzan a diferentes velocidades y con diferentes propósitos.
Un proyecto podría necesitar admitir varios tipos de trabajo al mismo tiempo. Crear y administrar ramas hace esto posible al permitir que cada tipo de flujo de trabajo viva en su propia ruta, y solo integrarlas cuando lo autorices. Hay distintas estrategias de ramificación que los equipos usan por diferentes razones, pero un paradigma común se basa en lo siguiente:
Rama principal: una rama estable y de larga duración que sirve como base para el proyecto.
Rama de lanzamiento: ramas donde se prueba el trabajo y se prepara para un lanzamiento específico.
Rama de funcionalidad: ramas enfocadas donde se trabaja en funcionalidades antes de integrarlas en una rama de lanzamiento o en la
principal.Rama experimental: ramas en las que se puede explorar de forma segura 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 de referencia compartida y confiable de la que parten y a la que regresan todas las demás ramas.
Una rama principal se usa para:
Integra otra rama cuando el trabajo esté listo.
Iterar para crear una versión estable para pruebas de juego.
Crea una rama de desarrollo que siga a la rama principal. La rama de desarrollo es donde puedes probar la estabilidad del trabajo antes de integrarla con la principal.
Rama de lanzamiento
Las ramas de lanzamiento son donde el trabajo se queda fijo mientras se prepara una versión para pruebas o lanzamiento. Una rama de lanzamiento es una gran manera de organizar el trabajo en torno a un objetivo o línea de tiempo determinados.
Una rama de lanzamiento se usa para:
Fija funciones para lanzar trabajo específico.
Se enfoca en corregir errores y pulir el trabajo.
Evita cambios de último minuto y que el ámbito se expanda sin control.
Separar el trabajo de lanzamiento en su propia rama es muy valioso al final 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 resultar en retrasos.
El equipo siempre sabe qué va a incluir un lanzamiento.
Ramas de funcionalidad
Una rama de funcionalidad se usa para trabajar en funcionalidades en curso sin introducir riesgo en las ramas de lanzamiento ni en la rama principal. Es posible tener muchas ramas de funcionalidad donde los compañeros de equipo hagan cambios libremente sin afectar otras ramas del proyecto.
Las ramas de funcionalidad se crean para trabajar en una tarea específica, como:
Añadir un nuevo sistema de jugabilidad.
Crear un flujo de IU.
Agregar una nueva sección del mapa.
Las ramas de funcionalidad son útiles para:
Agrupar y revisar el trabajo de las funcionalidades.
Cambiar entre funcionalidades en curso y otros trabajos sin perder dónde quedaste ni ensuciar tu espacio de trabajo activo con cambios disparejos.
Si decides tomar una dirección diferente, la rama de funcionalidad se puede abandonar fácilmente sin afectar a nadie más.
Las ramas de funcionalidades se pueden abandonar fácilmente sin afectar a otro compañero de equipo ni al trabajo en progreso.
Ramas experimentales
Una rama experimental es el lugar donde se exploran nuevas ideas de forma segura sin interrumpir el trabajo de otros miembros del equipo. Después de explorar una idea, puedes comparar los resultados y decides qué conservar. Si una idea funciona, puedes integrar los cambios. Si no funciona, se puede eliminar o abandonar la rama.
Las ramas experimentales se usan de las siguientes maneras:
Para crear prototipos de ideas de jugabilidad.
Para probar optimizaciones de rendimiento.
Para explorar diseños alternativos de arte o de niveles.