Contrôle de version pour le développement de jeux - problèmes et solutions? [fermé]

106

Il existe de nombreux systèmes de contrôle de version disponibles, y compris des systèmes à source ouverte tels que Subversion , Git et Mercurial , ainsi que des systèmes commerciaux tels que Perforce .

Dans quelle mesure soutiennent-ils le processus de développement de jeux? Quels sont les problèmes d'utilisation de VCS, en ce qui concerne les fichiers non-texte (fichiers binaires), les grands projets, etc.? Quelles sont les solutions à ces problèmes, le cas échéant?

Pour organiser les réponses, essayons paquet par paquet. Mettez à jour chaque paquet / réponse avec vos résultats.

Indiquez également dans votre réponse de brefs détails indiquant si votre VCS est gratuit ou commercial, distribué par opposition à centralisé, etc.

Mise à jour : Nous avons trouvé un article intéressant comparant deux des VCS ci-dessous - apparemment, Git est MacGyver et Mercurial est Bond . Eh bien, je suis content que ce soit réglé ... Et l'auteur a une belle citation à la fin:

Il est correct de faire du prosélytisme à ceux qui ne sont pas encore passés à un VCS distribué, mais essayer de convertir un utilisateur Git en Mercurial (ou vice-versa) est une perte de temps et d'énergie pour tout le monde.

Surtout que le véritable ennemi de Git et Mercurial est Subversion . Dang, c'est un monde de code-manger dans FOSS-land ...

cyclopes
la source
Remarque - ceci est destiné à remplacer Question gamedev.stackexchange.com/questions/245/… . Dans 72 heures, je vais supprimer cette question - je laisse la parole pour le moment, pour donner aux gens le temps de copier leurs réponses / commentaires à cette question. :)
Cyclope
Ce sera probablement l'une de mes questions préférées si les gens suivent les instructions de montage. Nous travaillons actuellement sur une solution spécifique à Game Dev: D
Jesse Dorsey
@ Noctrine, vous avez dû ajouter l'avertissement si , n'est-ce pas? :) Bien sûr, les gens suivront les instructions ...
Cyclope
Ne supprimez pas l'autre question. Si c'est vraiment hors sujet (je ne pense pas que ce soit le cas), il peut être fermé et archivé. Il peut également être fermé comme un duplicata de celui-ci.
Firas Assaad
@Firas, il a été fermé - et rouvert :) Quoi qu'il en soit, je pense que cette formulation est meilleure (et oui, c'est un wiki) - et si les gens recopient leurs réponses, celle-ci devrait couvrir toutes les informations de l'autre question.
Cyclope

Réponses:

71

Git

Récemment, je suis dans le train Git (j'ai utilisé SVN et Mercurial). Jusqu'ici, j'aime beaucoup ce que j'ai avec Git. Il est loin d’être difficile à installer et de plus en plus d’outils de développement commencent à l’utiliser.

C'est un système de contrôle de version distribué. Cela nous permet d’avoir notre propre espace de type coffre indépendant. Je peux travailler dans ma propre région et vous inviter à visualiser très facilement les ensembles de modifications. Je peux revenir en arrière dans mon propre espace sans compromettre le dépôt central. Je peux valider, créer des branches et faire tout ce que vous pouvez faire localement avec SVN. J'aime vraiment avoir ce contrôle.

Avec SVN, vous devez avoir accès à votre rapport pour pouvoir vous engager. Que se passe-t-il si vous êtes sur la route ou dans un café sans internet? Pas bon.

Bien sûr, SVN est beaucoup plus simple à apprendre, mais je pense que les avantages du contrôle de source distribué l'emportent largement sur le fait qu'il a une petite courbe d'apprentissage.

J'aime aussi le fait qu'il soit plus intelligent de fusionner.

Un inconvénient majeur de GIT est qu’il stocke l’ensemble de l’histoire localement. (Oui, vous pouvez effectuer une intervention chirurgicale pour réduire cela, mais c'est le comportement par défaut). Ce n'est pas du tout un problème pour les fichiers source, mais si vous avez un grand projet avec des gigaoctets de données d'actifs, cela devient rapidement un problème. D'après mon expérience actuelle, je ne recommanderais GIT que pour les pensions plus petites ou uniquement à la source.

Si vous êtes toujours intéressé par GIT, consultez http://thkoch2001.github.io/whygitisbetter/ pour de bonnes informations / mesures. Voir aussi https://git.wiki.kernel.org/index.php/GitSvnComparsion

David McGraw
la source
1
J'adore l'idée d'une hiérarchie des branches permettant à l'AQ de tester les modifications avant qu'elles ne passent au processus principal, ou de créer et de valider facilement des démonstrations.
tenpn
@tenpn, s'agit-il d'une fonctionnalité de VCS distribué en général ou simplement de Git?
Cyclope
1
J'ai entendu dire que Git et Mercurial souffrent tous les deux de la manipulation de très gros fichiers. Des rumeurs émanant de personnes plus expérimentées que moi?
drhayes
6
Git est bon et tout, mais quand il s'agit de gérer de grands actifs graphiques ou musicaux, tels que plus de 100 Mo de Mo, il devient visiblement lent aux commits et aux check-out. Pour le moment, Mercurial, le concurrent de Git, a une extension "gros fichiers" qui résout ce problème spécifique. Si vous avez un projet de jeu qui ne contient pas beaucoup d’actifs, vous pouvez essayer Git.
Spoike
3
Pourquoi ne pas utiliser les sous-modules de Git pour gérer les fichiers binaires? De cette façon, vous pouvez créer des référentiels distincts selon vos besoins, puis les lier ensemble à l'aide de sous-modules. Toute modification future dans le référentiel principal ne devrait pas affecter les sous-modules.
Alex Schearer
62

Mercuriel

Principales caractéristiques:

  • VCS distribué
  • Gratuit, open source
  • Les scripts de plugins sont faciles à écrire - peuvent être écrits en Python ou en scripts shell
  • Il existe de nombreux scripts de plugin déjà librement disponibles
  • Beaucoup de documentation disponible, y compris ce livre (hautement recommandé)

En ce qui concerne l’utilisation de fichiers non-textuels, les dernières versions de Mercurial (> = 2.0) fournissent l’ extension largefile par défaut :

largefiles résout ce problème en ajoutant une couche client-serveur centralisée au-dessus de Mercurial: largefiles réside dans un magasin central quelque part sur le réseau, et vous ne récupérez que ceux dont vous avez besoin quand vous en avez besoin.

Il existe d'autres extensions offrant des solutions similaires, telles que l' extension bigfiles, qui vous permet de stocker vos ressources dans le même référentiel Mercurial, mais d'extraire uniquement les fichiers binaires dont vous avez besoin, le cas échéant.

Je ne suis au courant d'aucun problème concernant les grands projets au-delà de ceux liés à la présence de gros fichiers binaires. Le projet Python est un projet volumineux utilisant Mercurial .

Joel Spolsky a écrit un mini-tutoriel sur l’utilisation de Mercurial dans Subversion Re-education

hauteur
la source
4
Note intéressante à propos de l’extension Bigfiles - qui résout l’un des problèmes signalés dans le fil de discussion initial, à savoir que le VCS distribué ne s’adapte pas bien aux productions de jeux contenant un grand nombre d’actifs de fichiers binaires.
Cyclope
1
+1 pour Mercurial. C'est rapide, facile à utiliser et étonnamment puissant. :) Je l'utilise pour tout: développement Web, développement de jeux, projets privés à une personne et projets d'équipe. Merci d'avoir introduit l'extension BigFiles!
Jacmoe
En ce qui concerne les grands projets - TortoiseHg semble aller beaucoup plus lentement sur un grand dépôt avec 8 ans de révisions que sur un petit dépôt avec moins de 20 révisions. Je ne sais pas encore s'il s'agit de quelque chose de spécifique à Tortoise ou à Mercurial en général.
Kylotan
4
Il ne semble pas y avoir d’option comparable svn:needs-lock, et comme il n’existe pas non plus de savoir qui travaille localement sur quels fichiers , vous êtes de nouveau en train de passer un bol à l’équipe, littéralement (vous n’êtes pas autorisé à éditer sans bol sur votre bureau). BigFiles extension ou pas, ce VCS est inutile pour les fichiers binaires sans une solution pratique à cela.
Sam Harwell
3
Indépendamment du support de bigfile, si deux personnes modifient, par exemple, un fichier Maya à la fois, l’une s’enregistrer et l’autre devra refaire le travail. Avec Perforce, au moins, vous pouvez savoir que quelqu'un d'autre est en train de modifier le fichier (et a également un verrou automatique sur ce fichier).
dash-tom-bang
39

Forcément

Perforce (commercial / source fermée, centralisé) est la norme de l'industrie pour un certain nombre de raisons.

  1. C'est un produit commercial, ce qui signifie qu'il vient avec un support commercial. Les projets open source peuvent être éligibles pour une licence libre (sans le support technique).
  2. Il prend très bien en charge les espaces de travail , ce qui permet une présentation très flexible des répertoires de sources et d’actifs.
  3. Il supporte très bien les listes de modifications .
  4. Vous pouvez voir qui travaille sur quoi. Les jeux contiennent un nombre anormalement élevé de fichiers binaires (ressources) évoluant rapidement par rapport aux autres projets de développement. La plupart du temps, ils ne peuvent pas être fusionnés. Il est donc essentiel de savoir qui a quoi / où / quand. Les clients Subversion et DSCC évitent intentionnellement cette technique, mais elle est très bénéfique dans certaines applications.
  5. Il supporte des bases de code / actifs gigantesques . Il ne stocke pas les données en double sur les ordinateurs clients, ce qui est important lorsque votre sous-vue de l’arbre contient quelques dizaines de concerts.

Cela dit, il est douloureusement évident, presque quotidiennement, que Perforce ne pense pas que sa position dans le secteur soit menacée. Leurs outils visuels, notamment P4V et P4SCC (intégration à Visual Studio), sont lents et bogués, ce dernier étant connu pour geler Visual Studio pour le plus grand plaisir de celui-ci. AnkhSVN est en avance sur Perforce.

Commentaire de xan: Il est à noter cependant que leur outil de fusion, P4Merge (utilisé pour différencier et fusionner), est excellent et bien supérieur aux goûts de Tortoise Merge. Étonnamment, ce composant est disponible gratuitement dans le package P4 Visual Tools.

Commentaire de slicedlime: Un autre inconvénient de Perforce est qu’il est très pénible de se ramifier, en particulier si vous avez de grands arbres. Presque tous les autres vcs sont meilleurs pour créer des branches et fusionner. C'est généralement un petit prix à payer pour les avantages ci-dessus cependant.

Commentaire de roe: Perforce est extrêmement bavard. Il n'y a pas grand chose à faire sans le serveur impliqué. Plus particulièrement, vous avez besoin du serveur pour pouvoir ouvrir pour éditer, ce qui signifie que vous devez sauter quelques étapes si vous souhaitez interrompre la connexion au serveur.

Commentaire de jrista: En tant qu’utilisateur quotidien de Perforce depuis plus de deux ans, avec une équipe de développement et d’ingénierie de qualité de plus de 100 personnes, je le connais très bien. Bien que ce soit un système de contrôle de source décent, il présente des inconvénients que les évaluateurs de systèmes SCC devraient connaître:

  • Comme mentionné par d'autres, la création de branches / l'intégration est particulièrement lourde et difficile à faire. Vous avez un degré de contrôle impie, mais au prix d'une complexité excessive. D'un autre côté, l'outil de fusion visuelle est unique en son genre et présente une belle vue de fusion basée sur trois fichiers de votre travail. Perforce fournit certaines visualisations graphiques des chemins de branches (appelé graphe de révision), mais la manière dont il est visualisé rend souvent l'outil plutôt inutile. Si vous avez seulement besoin de voir un très petit segment de temps pour un ou plusieurs fichiers, cela peut être utile ... rien de plus, et il est presque impossible de naviguer dans le graphe de révision.
  • Perforce n’est pas non plus un outil très efficace, car presque toutes les opérations sur un fichier nécessitent la duplication de fichiers et de données: création de branches, étiquetage, listes de modifications, etc. Si vous n’avez pas peur d’utiliser une quantité considérable d’espace disque pour suivre vos modifications, vous serez sans doute bien servi. Sinon, je chercherais un autre outil.
  • Perforce utilise les espaces de travail, mais ceux-ci peuvent parfois être frustrants, car ils mettent en cache tous les états de votre espace de travail, plutôt que d'utiliser les fichiers réels sur le disque pour déterminer un état. Cela a souvent pour conséquence que les fichiers ne sont pas synchronisés car votre espace de travail indique qu'ils sont à jour, alors que, pour une raison quelconque, les fichiers physiques sur le disque NE SONT PAS à jour.
  • Un dernier ennui, Perforce est plutôt brutal sur votre réseau. C'est un programme extrêmement bavard qui consomme une quantité considérable de bande passante. Toute perte de connectivité réseau et vous courez un risque élevé de ne pouvoir effectuer aucun travail avec vos fichiers contrôlés par la source jusqu'à ce que la connectivité soit restaurée. À ce jour, je n’ai pas découvert d’activité pouvant être réalisée hors ligne dans Perforce.
280Z28
la source
2
Un autre avantage de Perforce est qu’il est gratuit pour les deux premiers utilisateurs, ce qui est idéal pour les petits projets de loisir, ou deux pour évaluer son adéquation à un projet plus important.
D'après mon expérience, le point 5 de votre réponse est très vrai. C'est extrêmement évolutif. Les erreurs sont rares, le support est rapide. Pas certain du prix, Yacine note que c'est gratuit pour les deux premiers utilisateurs. Pour les plus petits studios avec des jeux plus petits, il serait intéressant d’évaluer d’autres options. L'intégration de Visual Studio est un peu en dehors de la boîte; mais nous avons la chance d’avoir un passionné complet de Perforce dans notre studio et d’écrire un excellent fournisseur de source pour VS à partir de zéro.
Paulecoyote
Perforce est génial, si vous pouvez vous le permettre. Je n'ai pas utilisé tous les systèmes de contrôle de version disponibles, mais après 10 ans de développement commercial de jeux et plusieurs systèmes de contrôle de version, c'est le meilleur que j'ai utilisé de loin. Il gère les fichiers de données volumineux de manière rapide et fiable et, s’il est configuré correctement, fonctionne correctement dans une configuration multi-sites sur des connexions Internet relativement lentes. L'intégration de Visual Studio n'est peut-être pas parfaite, mais elle est plutôt solide.
bluescrn
1
Si je devais choisir un VCS pour le développement de jeux (à grande échelle), ce serait Perforce. Si je pouvais en choisir plusieurs, j’ajouterais un DVCS pour les ressources textuelles (code, scripts et autres fichiers de données divers), mais je garderais Perforce pour les ressources binaires.
dash-tom-bang
2
J'ai travaillé sur un grand projet de jeu qui utilisait Perforce et j'étais complètement déconcerté que quiconque paye pour cela. La nécessité d'être synchronisé avec le serveur est odieuse, même sur un réseau local. Je comprends la fonctionnalité "réconcilier le travail hors connexion", mais dans la pratique, le flux de travail est tellement intrusif que, lorsqu'il y a des problèmes de réseau, vous ne travaillez pas. Si vous n'utilisez pas d'EDI doté d'un plug-in P4, ou si vous souhaitez simplement éditer un fichier ici et là à partir de la ligne de commande ou d'un autre outil, vous devez revenir au client P4 et effectuer une comptabilité. Aucun autre VCS n'élève autant d'obstacles au travail.
Suboptimus
27

Subversion

  • Open-source, centralisé

  • Fichiers Blender - Je ne suis pas tout à fait sûr que les fichiers .blend soient binaires (ils en ont l'air), mais je n'ai eu aucun problème à les ajouter à Subversion. Après avoir effectué quelques expériences, l’augmentation de la taille du fichier pour les fichiers modifiés semble minime, il ne s’agit donc pas simplement de copier dans l’ensemble du fichier.

  • Grands projets - Cela fonctionne, même si cela peut devenir bizarre. Il est certainement capable de gérer des référentiels d'au moins 5,5 Go (taille totale du répertoire de référentiel sur le serveur; principalement des ressources binaires).

  • Données dupliquées sur le client - Subversion conserve une copie dupliquée de chaque fichier de l'espace de travail de l'utilisateur en tant que copie vierge. L'avantage de ceci est que vous pouvez faire un diff ou revenir en arrière sans retourner au serveur. L'inconvénient est que vos 10 Go de fichiers de travail prennent 20 Go d'espace disque.

  • La liste des ignorés est une propriété d'un répertoire (simple avec une interface graphique, ennuyeuse sur la ligne de commande).

  • Subversion permet le verrouillage de fichiers / fichiers - ce qui est très utile si plusieurs artistes et concepteurs travaillent sur les mêmes fichiers.

  • Les externes sont un excellent moyen de gérer le code partagé (par exemple, une bibliothèque ou une base) entre des projets.

cyclopes
la source
Grands projets - KDE, GNOME.
Matias Valdenegro
* La FSFS peut être très fragile pour la récupération - vous devez donc faire très attention aux sauvegardes. * Facile à comprendre, TortoiseSvn est un excellent client. * Les systèmes de suivi de bogues open source, les systèmes d'intégration continue, etc. prennent souvent en charge Subversion "out the box". * Il existe de bons livres sur l’utilisation de Subversion.
paulecoyote
1
@paulecoyote, ceci est un article wiki, n'hésitez pas à l'éditer avec de nouvelles informations, pas seulement des commentaires.
Cyclope
1
SVN est génial à utiliser avec Tortoise SVN ( tortoisesvn.net ), un client qui s’intègre parfaitement dans le menu contextuel et fournit un aperçu de toutes les actions. Tortue n’a pas de ports Linux / Mac OS (du moins pour l’écrire). Protip: si vous travaillez avec plusieurs personnes, mettez toujours à jour (et fusionnez / résolvez les conflits) AVANT de vous engager.
Exilyth
7

AlienBrain

De Avid :

Alienbrain est un système de gestion des ressources numériques destiné aux artistes de l'industrie du divertissement.

  • Commercial (plus cher que Perforce), centralisé
  • Conçu pour s'intégrer à d'autres outils professionnels de flux de travail 2D et 3D tels que Photoshop, Maya, 3ds Max, Microsoft Visual Studio, etc.

Je n'ai aucune expérience avec AlienBrain et je n'en ai entendu parler que dans le livre Game Coding Complete de Mike McShaffry. Il semble cependant y croire:

Les artistes et autres contributeurs utiliseront ce produit, contrairement à d’autres conçus principalement pour s’intégrer parfaitement à Visual Studio et non à des applications créatives telles que Photoshop et 3D Studio Max. L'un des gros inconvénients des autres produits est leur traitement plutôt naïf des fichiers non-texte. AlienBrain a été écrit avec ces fichiers à l’esprit.

Bien sûr, il le décrit également comme:

Pour ceux d'entre vous qui ont des problèmes de suivi d'actifs très sérieux et des budgets tout aussi importants ...

cyclope
la source
OUI! Enfin, ceux qui y parviennent: les ressources et le code nécessitent des outils différents! +1
jacmoe
3
Mon expérience avec AlienBrain est que les auteurs ne développent pas de jeux. Ce n'est pas une solution de contrôle de source robuste. Certaines des fonctionnalités sont utiles pour certaines des équipes, mais certaines des fonctionnalités les plus cool annoncées ne sont pas implémentées de manière à être utiles (par exemple l'interface de transfert, où quelqu'un peut archiver ses ressources "pour vérification". "Malheureusement" il n'y a aucun moyen de savoir ce qui est à vérifier et ce qui ne l'est pas, et quand vous synchronisez, vous l'obtenez quand même). De plus, il ne met rien en cache, de sorte qu'une synchronisation nécessite de tester chaque fichier. C'est lent avec de nombreux concerts d'actifs. :)
dash-tom-bang
La seule chose utile à propos d’AlienBrain est la fenêtre d’aperçu qui fonctionne avec les fichiers Max. Tout le reste est de la foutaise.
tenpn
1
Je ne suis pas sûr que ce soit constructif, car ce n’est pas une expérience de première main, mais j’ai travaillé sur quelques projets qui utilisaient AlienBrain avant le projet, et ne l’utilisais plus, et personne n’avait de bonnes choses à dire à propos de il. Si je me souviens d’avoir lu cela et que j’ai attrapé le bouche à oreille, cela a jailli sur la scène, cela sonnait vraiment cool et certaines personnes qui en avaient les moyens ont essayé et finalement réalisé que c’était une erreur.
Suboptimus
3

Team Foundation Server

de Microsoft

  • Commercial
  • Centralisé
  • S'intègre très bien avec Visual Studio
  • Bonne intégration de Windows Explorer pour les utilisateurs non VS (artistes)
  • Prend en charge les changesets "Shelved", ce qui est un peu analogue à "stashing" dans git, mais cela va jusqu'au serveur; vous pouvez également rendre ces étagères publiques, afin de permettre à d'autres utilisateurs de les intégrer pour vous.
  • Depuis 2012, il dispose de très bons flux de travail de révision de code directement intégrés à Visual Studio.
  • La dernière version de l'outil de fusion est très agréable. La fusion automatique fonctionne plutôt bien.
  • Prend très bien en charge les gros fichiers et les fichiers de liaison (évidemment, vous ne pouvez pas les fusionner)
  • Très bon serveur de compilation
  • Prend en charge les enregistrements synchronisés, qui permettent d'évaluer la qualité d'un plateau (via des versions automatisées, des tests unitaires, une analyse de code) avant son enregistrement dans le référentiel.
  • Très bons outils de gestion de projet (pas vraiment des fonctions de contrôle de source, mais vraiment utiles), permettant une traçabilité des exigences de haut niveau jusqu'au code.

J'ai beaucoup utilisé TFS sur des projets de simulateur MILSPEC, et c'est très bien. Probablement pas le meilleur si vous êtes sur un Mac, bien qu'il existe un plugin eclipse ces jours-ci. La version hébergée dans le cloud prend en charge les référentiels git pour le back-end de contrôle de source.

Il est gratuit pour un maximum de cinq utilisateurs de Visual Studio Online (autorise les sources fermées; aucune limite de taille du référentiel), où il est hébergé dans le cloud. Si vous souhaitez l'héberger localement, cela peut être coûteux.

Ce que j'aime le plus, ce sont les fonctionnalités de gestion de l’ingénierie logicielle et le fait qu’il gère très facilement les gros fichiers et les fichiers binaires.

garsherman
la source
1
Le nouveau Visual Studio Online est gratuit pour un maximum de 5 utilisateurs et est hébergé dans le cloud (bien sauvegardé, etc.). Vous pouvez utiliser TFS ou Git avec. Idéal pour le développement de jeux indépendants.
Robert Fraser