8 factores a tener en cuenta al elegir un sistema de control de versiones

FERGUS BAIRD / UNITY TECHNOLOGIESSenior Content Marketing Manager
Sep 23, 2021|10 minutos
8 factores a tener en cuenta al elegir un sistema de control de versiones
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

Aunque implantar su primer sistema de control de versiones o cambiar a uno nuevo puede resultar complicado, el impacto a largo plazo merece la pena. Esto es lo que hay que tener en cuenta a la hora de elegir un sistema de Version Control, antes de comprometerse.

La creación de juegos es una tarea gratificante, aunque a menudo caótica. Durante el desarrollo, muchos miembros del equipo con funciones distintas y diferentes niveles de conocimientos técnicos trabajan en el mismo proyecto, intentando alinearse en un único proceso de producción. Coordinarse con más de una persona a la vez puede ser difícil, y este reto aumenta exponencialmente a medida que su equipo sigue creciendo.

Cuando surgen problemas, el tiempo que se tarda en identificarlos y solucionarlos puede ralentizarlo todo, y a todos. Ahí radica la importancia de elegir el sistema de control de versiones (VCS) adecuado para sus objetivos.

Cómo funciona el Version Control

Version Control le permite mantener una vista de pájaro de todo su proyecto. Aporta una organización fundamental a su trabajo, lo que permite a su equipo iterar con rapidez y eficacia. ¿Pero cómo?

Los archivos del proyecto se almacenan en una base de datos compartida llamada repositorio, o "repo". Gestionar tus archivos de esta forma te permite hacer copias de seguridad de tu proyecto a intervalos regulares, y volver cómodamente a versiones anteriores si las cosas no van según lo previsto.

Con un VCS, puede realizar múltiples cambios individuales y "confirmarlos" como un único grupo para su aprovisionamiento. Esto agrupa el grupo de cambios, de modo que cuando se vuelve a una versión anterior, todo lo de ese mismo grupo se deshace. De hecho, puedes revisar y modificar cada cambio agrupado dentro de una "confirmación", o deshacer la "confirmación" en su totalidad. Dado que tienes acceso al historial completo, puedes rastrear y eliminar errores más fácilmente, así como restaurar cualquier función eliminada anteriormente.

Además, como el Version Control suele almacenarse en la nube o en un servidor distribuido, facilita la colaboración de su equipo de desarrollo en distintas zonas horarias y geográficas, una ventaja cada vez más importante a medida que se generaliza el trabajo a distancia.

Por qué migrar a un nuevo sistema de control de versiones

Pasar de un sistema de control de versiones a otro puede ser exigente, sobre todo si significa cambiar la tecnología en la que confía su equipo a mitad de proyecto. Pero tomar una decisión con conocimiento de causa antes de comprometerse puede merecer la pena.

He aquí algunas razones habituales para implantar o cambiar a un nuevo sistema de control de versiones:

  • Mejora de la colaboración entre equipos diversos
  • Rápida gestión de archivos binarios y activos de gran tamaño
  • Un flujo de trabajo basado en archivos para realizar cambios en archivos únicos sin descargar la compilación completa de un proyecto.
  • Soluciones de bifurcación flexibles y sólidas para que sus compañeros trabajen en paralelo (no sólo unos pocos)
  • Integraciones mejoradas con sus herramientas de desarrollo actuales
  • Mayor seguridad para proteger sus proyectos
Qué debe tener en cuenta al tomar su decisión

He aquí ocho factores clave que debe tener en cuenta a la hora de elegir su próximo sistema de control de versiones:

1. Su equipo

Implantar o cambiar a un nuevo VCS sirve sobre todo para reforzar el trabajo en equipo. Ya sea in situ o de forma remota, el control de versiones le permitirá a usted y a sus colegas coordinarse entre sí, al tiempo que trabajan de forma independiente. Para satisfacer las necesidades específicas de su equipo, pregúntese: ¿Cuántas personas utilizarán este nuevo sistema? ¿Cuál es su nivel de conocimientos técnicos? ¿Qué piensan de sus opciones actuales y qué les gustaría de algo nuevo?

Para mejorar la productividad, asegúrese de que todo el mundo está equipado para realizar cambios, sin necesidad de intervención técnica. Elegir un sistema que sea fácil de usar para todos los compañeros, incluidos los artistas no técnicos, puede reducir el coste emocional de cambiar a un nuevo VCS. Menos resistencia hace que la adopción sea rápida, seguida de resultados rápidos.

2. Tipos y tamaños de archivos

A medida que la industria del juego se expande, también lo hacen las expectativas de los consumidores. Los jugadores siempre esperan mejores gráficos, lanzamientos sin errores, actualizaciones posteriores al lanzamiento y un soporte estelar. Para los desarrolladores, hay mucho en juego, y cada vez más.

La creciente complejidad del diseño de juegos implica trabajar y gestionar proyectos más complejos con una mayor variedad de tipos de archivos, archivos más grandes y repositorios potencialmente enormes. Para establecer flujos de trabajo fluidos y fusiones rápidas, contrate un VCS que pueda gestionar sus proyectos a escala. Recuerde que elegir un sistema de Version Control es un juego largo. Aunque su equipo no maneje archivos de gran tamaño ahora, es seguro que sus necesidades cambiarán con el tiempo. Piensa en el futuro para conseguir un éxito duradero.

3. Facilidad de instalación y mantenimiento

Este factor nos remite al primer punto de nuestra lista: su equipo. ¿Dispone su equipo del tiempo, los conocimientos y el ancho de banda necesarios para implantar y mantener un nuevo sistema de control de versiones? ¿Con qué rapidez puede llevarse a cabo la aplicación? ¿Habrá asistencia técnica una vez que el sistema esté en funcionamiento?

No lo olvidemos: Una instalación más sencilla significa una instalación más rápida. Y un lanzamiento a tiempo significa dar a su equipo más tiempo para adaptarse y empezar a trabajar de forma más eficiente. Así que si los aspectos técnicos de la configuración y el mantenimiento son una preocupación, evalúe la tasa de éxito de los clientes de los paquetes que está considerando. Empieza por leer los comentarios para determinar cuál es el mejor VCS posible para tus objetivos.

4. Sus flujos de trabajo

Es fundamental tener en cuenta los procesos y herramientas que su equipo utiliza a diario. Elegir un sistema de control de versiones que se integre sin problemas con otras herramientas necesarias acelera la implantación y minimiza las interrupciones.

Otro factor relacionado con el flujo de trabajo en el que debe pensar es si su sistema de Version Control admite la ramificación. Se habla de ramificación cuando alguien que está trabajando en un conjunto específico de archivos del proyecto aísla esos archivos de la rama principal del proyecto, o "tronco". De este modo, pueden probar los cambios sin que afecten al tronco principal, al que pueden volver una vez evaluados y comprobada su estabilidad.

En el desarrollo de juegos, es probable que necesites facilitar un elevado número de ramas y crearlas con rapidez. Los sistemas basados en directorios pueden dar lugar a bifurcaciones inadecuadas y a frecuentes conflictos de fusión, ya que el equipo tiene dificultades para volver al tronco.

Con la bifurcación, puede dar prioridad a la estabilidad del proyecto para que su equipo continúe trabajando hacia sus objetivos compartidos, sin afectar al trabajo de los demás.

Ventana de plástico

5. El calendario de implantación de su sistema

Implantar un sistema de Version Control implica un riguroso proceso de adaptación. Al fin y al cabo, este cambio puede modificar por completo los flujos de trabajo y las herramientas existentes.

Programar estratégicamente la implantación de su VCS puede reducir su impacto en los proyectos actuales y acelerar la adopción de nuevos sistemas. Dicho esto, lo ideal es implantar el VCS elegido al inicio de un nuevo proyecto o durante la fase postmortem de un producto que se acaba de lanzar.

Por supuesto, las cosas no siempre salen según lo previsto. Es posible que te encuentres en la tesitura de migrar a un nuevo sistema de control de versiones en mitad de un proyecto. Aunque no es lo ideal, tampoco es imposible.

Obtenga más información sobre cómo migrar sus proyectos de Unity Collaborate a Plastic SCM a continuación:

6. Lo que gastará (y dónde ahorrará)

Los sistemas de Version Control figuran entre las herramientas DevOps más asequibles; los verdaderos costes residen en la implantación. Teniendo esto en cuenta, intenta evaluar un sistema por sus ventajas y por cómo puede ayudarte a ahorrar de otras formas.

También merece la pena elegir algo que sea fácilmente accesible para todo el equipo, independientemente de su formación técnica. Como ya se ha dicho, todos deben tener la posibilidad de contribuir de forma autónoma. Cuando no se satisfacen las necesidades de tus compañeros, pueden empezar a aflorar costes ocultos.

Si su sistema de control de versiones es difícil de entender, por ejemplo, tendrá que dedicar más tiempo a enseñar a los demás a utilizarlo, así como a crear una densa documentación interna sobre las mejores prácticas de control de versiones. Y cuando los compañeros de equipo no pueden trabajar de forma independiente, las frustraciones internas pueden empezar a aumentar. Elijas lo que elijas, no debe obstaculizar el éxito general de tu equipo.

7. Requisitos de seguridad

Version Control no se limita a gestionar el código fuente de un juego. El sistema que elija también almacenará otros activos, como documentación empresarial y de procedimientos, archivos de diseño, configuraciones de herramientas, etc.

Para mantener a salvo estos archivos, su VCS debe proporcionar múltiples niveles de protección y permisos. Esto le ayudará a proteger su código y sus activos de propiedad intelectual frente a intrusiones externas, y también frente a la posibilidad de filtraciones internas.

8. Nivel de flexibilidad

¿Considera que su equipo es grande o pequeño? ¿Trabajan en una sola oficina o están distribuidos? En función de estos factores, necesitará distintos niveles de flexibilidad de su sistema de control de versiones. Además, tendrá que decidir si va a operar con flujos de trabajo centralizados, distribuidos o multisitio. Veamos las ventajas de cada uno.

Flujos de trabajo centralizados

Un flujo de trabajo centralizado utiliza un flujo de trabajo check-in/push para conectarse a su servidor principal. Cada vez que se realizan cambios, se almacenan automáticamente en su repositorio como una nueva versión. De esta forma, se obtienen potentes ramificaciones y fusiones sin necesidad de clonar el repositorio en varias máquinas. Es una solución sencilla y segura.

Flujos de trabajo distribuidos

Con un flujo de trabajo distribuido, puede comprobar, ramificar y fusionar en su propio tiempo, sin conectarse a su servidor principal. La ventaja en este caso es que los compañeros de equipo remotos pueden trabajar aparte, a toda velocidad, sin tener que preocuparse por redes lentas o VPN.

Flujos de trabajo multisitio

Multisitio es como una mezcla de flujos de trabajo centralizados y distribuidos. En cada ubicación, los compañeros de equipo trabajan en una especie de mini flujo de trabajo centralizado, en el que comparten sus ramas y progresos, fusionando fácilmente, y empujando y tirando entre el equipo, hasta que finalmente empujan al servidor principal, en su propio tiempo.

Los flujos de trabajo multisitio son óptimos para equipos que trabajan en una base de código compartida en distintas ciudades o continentes. En esta situación, debes establecer un servidor host en cada lugar de trabajo y luego copiar los cambios entre esos servidores. Si no lo hace, los equipos que trabajan en sitios sin servidores experimentarán respuestas más lentas que los demás.

Principales sistemas de Version Control

Ahora que ya tiene una idea de lo que está en juego al elegir un sistema de control de versiones, es hora de evaluar algunas de las opciones más populares que existen.

Git

De código abierto, gratuito y fácil de usar, Git es uno de los sistemas de control de versiones más populares. Cuenta con repos distribuidos y potentes funciones de ramificación y fusión, pero no puede gestionar archivos binarios de gran tamaño con tanta eficacia como otras soluciones del mercado.

Perforce (núcleo Helix)

Helix Core es un sistema de control de versiones de nivel empresarial utilizado por estudios de juegos como EA y Ubisoft. Este VCS cuenta con repos centralizados y gestiona archivos binarios de gran tamaño. Sin embargo, no cuenta con repositorios visuales, por lo que su adopción puede resultar más complicada para los desarrolladores no técnicos.

Apache Subversion

Al igual que Git, Apache Subversion es un sistema de control de versiones gratuito y de código abierto. Cuenta con repos centralizados y puede manejar archivos binarios de gran tamaño, pero hay que estar conectado al servidor principal para utilizarlo, lo que no es ideal para trabajar sin conexión, y podría ser un obstáculo para los equipos más grandes o distribuidos.

Plastic SCM

Plastic SCM es un sistema flexible de Version Control que sirve de apoyo tanto a programadores como a artistas. Sobresale en el manejo de grandes repositorios y archivos binarios, y como solución basada tanto en archivos como en conjuntos de cambios, le ofrece la capacidad de descargar sólo los archivos específicos en los que está trabajando, en lugar de toda la compilación del proyecto.

Además, Plastic SCM es el único sistema de control de versiones del mercado que ofrece ramificación visual. Puede gestionar miles de sucursales a la vez y no te hace elegir entre flujos de trabajo centralizados o distribuidos.

¿Quieres saber qué más puede hacer Unity por ti? Descubra las soluciones de Unity para superar los retos en cada fase del desarrollo, desde la gran idea hasta el gran éxito.