Quelle est la façon la plus efficace de travailler avec un ami sur le même jeu?

29

Nous avons besoin de quelque chose où nous pouvons extraire des fichiers, les éditer, les archiver à nouveau puis les construire à partir d'eux.

Quelque chose comme Google Docs où nous pouvons modifier le même code en même temps serait un idéal.

Nous utilisons tous les deux Visual Studio 2010.

steakbbq
la source
2
Je me suis toujours demandé pourquoi personne n'avait (ou du moins je n'ai pas trouvé) d'édition de type Docs pour le code. Je suppose qu'il y a des difficultés inhérentes comme l'achèvement du code et le fait que le code doit être compilé, mais ils ne semblent pas tout à fait impossibles à surmonter avec une certaine coordination (et peut-être des astuces comme des stratégies de fusion de code retardées). VRAI problème dans les grands projets. Je vais quand même devoir chercher des outils de codage collaboratif (ou en créer un moi-même: P)
kaoD
1
@kaoD SubEthaEdit offre ce type de fonctionnalités par fichier (vous ne savez pas dans quelle mesure il gère de grandes quantités de fichiers).
michael.bartnett
Si quelqu'un peut me trouver un programme comme celui-ci pour Windows et c #, je vous donnerai un cookie.
steakbbq
1
Emacs peut le faire, mais c'est maladroit: emacswiki.org/emacs/CollaborativeEditing ; ou MoonEdit: moonedit.com (même si je ne sais pas s'il a un mode C #); ou Gobby: en.wikipedia.org/wiki/Gobby
amitp
Comment serait-il difficile d'écrire un nouveau compilateur IE sublime? Il serait probablement plus simple de développer un plugin pour sublime non?
steakbbq

Réponses:

19

Comme je l'ai dit dans un commentaire à votre question, je suis très curieux de voir une véritable édition collaborative . J'ai fait des recherches il y a quelque temps, mais la plupart des solutions ne répondaient tout simplement pas aux normes: soit il s'agissait d'éditeurs de texte brut avec mise en évidence de la syntaxe, avaient des coûts démentiels ou n'étaient pas disponibles sur plusieurs plates-formes (comme SubEthaEdit ...)

Jusqu'à ce que je tombe sur Saros ! C'est un plugin Eclipse soigné, il peut donc être facile de l'intégrer à votre flux de travail actuel. Vous pouvez regarder leur vidéo de démonstration , c'est assez impressionnant. Il est très bien pensé pour un véritable environnement d'édition collaboratif et possède des fonctionnalités clés très bien pensées. Il prend en charge un nombre arbitraire de participants, la synchronisation complète du projet, l'édition en temps réel avec des marqueurs et la mise en évidence (ala Google Docs), en suivant la vue de votre partenaire, plusieurs méthodes de sensibilisation des participants et bien plus encore (vous pouvez même partager votre écran en utilisant ce plugin. ) Et apparemment, il s'intègre à de nombreux autres plugins Eclipse!

Je dois encore le tester moi-même, mais c'est l'un des rares projets encore maintenu et semble très prometteur. Essayez-le et faites-le moi savoir (lire ces lignes directrices avant.) Je vous promets de revenir ici et de poster mes impressions en tant que commentaire lorsque je l'essayerai moi-même.

EDIT: En outre, comme l'a souligné Gustavo dans un commentaire, Cacoo pourrait également être utile. C'est un outil collaboratif en ligne pour dessiner des UML (en fait, tout type de diagramme.) Saros prend en charge un tableau blanc, mais il n'y a rien de tel qu'un outil de diagramme si vous voulez éviter la maladresse.

kaoD
la source
3
Les gens ont donné beaucoup de réponses, toutes sur les systèmes de versioning, mais je pense que c'est la vraie réponse à la question. +1 pour l'édition collaborative. BTW, essayez Cacoo (google it) C'est un outil collaboratif pour faire des UML, m'a aidé dans un tas de projets, il peut compléter votre réponse.
Gustavo Maciel
1
@ Gustavo-Gtoknu très bon outil en effet, ça vous dérange si je mets à jour la réponse avec ça?
kaoD
2
Fais le maintenant! : D La réponse mérite.
Gustavo Maciel
C'est génial mais Eclipse est pour java? Je cours c #
steakbbq
@steakbbq il y a quelques plugins qui fournissent un support C # ( Emonic et Améliore ) mais malheureusement ils semblent manquer de support de débogage et de refactoring.
kaoD
36

"nous avons juste besoin de quelque chose où nous pouvons extraire des fichiers, les éditer, puis les réintégrer et les construire à partir du même ensemble de fichiers"

Utilisez le contrôle de version; un système de contrôle de version (VCS) est exactement ce que vous avez décrit, avec en prime qu'il stocke un historique de chaque modification effectuée par quiconque. Il existe de nombreux systèmes de contrôle de version populaires:

http://subversion.apache.org/

http://mercurial.selenic.com/

http://git-scm.com/

Je n'utilise pas Visual Studio personnellement, mais je suis absolument certain que Visual Studio prend en charge tous ces systèmes de contrôle de version.

jhocking
la source
11
Je viens de distribuer un hôte Git / HG privé gratuit dans le chat: bitbucket.org (gratuit pour jusqu'à 5 collaborateurs). HG est également plus adapté car il dispose de plugins qui traitent de gros contenus binaires (projets de contenu).
Jonathan Dickinson
2
+1 Un VCS est le chemin à parcourir. J'utilise AnkhSVN comme plugin Visual Studio pour Subversion.
Richard Marskell - Drackir
2
+1 ici. mon approbation personnelle est TortoiseSVN. Pour l'hébergement (en supposant l'open source), ma recommandation est Google Code
PlayDeezGames
2
Veuillez ne pas subversion. Le contrôle de version distribué est totalement simple pour les personnes non habituées à travailler avec des systèmes centralisés. Les gens habitués à la subversion passent à côté d'une confusion.
rjmunro
9

Pour mon équipe, nous utilisons trois programmes en fonction de ce sur quoi nous devons travailler:

  • TortoiseSVN pour le code (essayez que les programmeurs utilisent le même IDE, standardisent les conventions et encouragent les bons commentaires)
  • Dropbox pour le multimédia (pour les modèles / sprites / fichiers audio, permet aux développeurs de travailler localement jusqu'à ce que les artistes / compositeurs / modélisateurs soient prêts à livrer)
  • GoogleDocs pour la documentation (pour les documents de conception / maquettes / emplacements généralement pour les concepteurs, les gestionnaires et les producteurs)

Pour coordonner les efforts des différents membres (qui travaillent à des moments différents), nous utilisons le système de billetterie d'Assembla . De cette façon, tout le monde est mis à jour sur l'état de l'ensemble du projet ou d'une avenue particulière de leur choix. Utilisez également Skype / Google Hangout / Communication face à face pour vous assurer que tout le monde est sur la même page au moins une fois par semaine.

Cette méthode fonctionne généralement lorsqu'une équipe est composée de 3 à 5 personnes qui ont établi des rôles (programmeur, artiste, modeleur, designer, etc.). Si cela ne fonctionne pas, essayez d'autres méthodes ou combinez les aspects de travail pour en créer un. Bonne chance!

mythbuilder
la source
J'ai seulement parlé du contrôle de version pour le code parce que c'est le seul aspect du développement qu'il a demandé, mais mon studio utilise également Dropbox et Google Docs aux mêmes fins que cette réponse.
jhocking
Grande combinaison.
Bill K
7

On dirait que vous voulez soit une boîte de dépôt, un système de contrôle de version, ou les deux.

Dropbox est le plus pratique. Effectuez simplement vos modifications et enregistrez et Dropbox se synchronisera sur les modifications sur la machine de vos amis. Ne pensez pas que 2 personnes peuvent travailler sur le fichier en même temps sans écraser le travail des autres.

Cependant, je vous recommande d'utiliser un système de contrôle de version Subversion , GIT et Mercurial sont actuellement les 3 grands. qui a accès à votre serveur.

Après avoir utilisé les 3 que j'ai mentionnés, j'ai trouvé Subversion le plus facile à démarrer et Assembla permet des référentiels privés SVN ou GIT gratuits .

ClassicThunder
la source
9
Je n'aime pas vraiment dropbox pour ce genre de chose. Si vous utilisez l'un des produits Tortoise *, il a un type similaire d'intégration de l'Explorateur Windows, mais vous pouvez contrôler le commit / push / pull / merge afin que vous n'ayez pas le problème "2 personnes se remplaçant".
Jimmy
2
Je ne le fais pas non plus, c'est pourquoi je recommande un VCS. Cependant, il n'y a presque pas de courbe d'apprentissage et vous avez instantanément une sauvegarde, j'ai donc jugé utile de le mentionner.
ClassicThunder
9
Je recommanderais de ne pas utiliser DropBox à la place d'un système de contrôle de version. Si deux personnes modifient le même fichier au cours de la même période, DropBox dupliquera le fichier. Pour le code source, cela est généralement indésirable et plus pénible que l'utilisation d'un système de contrôle de source.
John McDonald
Subversion n'est pas plus facile à utiliser - les gens qui avaient l'habitude de le trouver trouveront aussi déroutant que ceux qui vont dans l'autre sens.
rjmunro
Je n'ai jamais dit que ça l'était. J'ai dit pour moi que c'était le plus facile à apprendre après avoir appris. Il est stupide de formuler des déclarations subjectives telles que "Subversion n'est pas plus facile à utiliser" en termes absolus.
ClassicThunder
5

Comme mentionné dans d'autres réponses, un VCS est la voie à suivre. Git est mon préféré, mais c'est peut-être parce que c'est le premier que j'ai utilisé.

J'ai trouvé ce livre en ligne très utile pour apprendre Git. http://progit.org/book/ Quel que soit le VCS avec lequel vous allez, cela vaut la peine de consacrer quelques heures à découvrir comment l'utiliser.

Une autre chose à noter - VCS est idéal pour le code source (ou tous les fichiers texte), mais le stockage d'images et de fichiers audio peut alourdir inutilement votre référentiel. Certaines personnes recommandent un référentiel séparé pour cela, mais je trouve que Dropbox fonctionne bien pour ce type de ressources.

Pour un projet d'école, nous avons utilisé un dossier Dropbox public et utilisé ce script pour maintenir nos ressources à jour https://github.com/dc2011/td/blob/master/tools/extrafiles.sh

Il vérifie le hachage md5 du fichier dans Dropbox par rapport au hachage du fichier déjà sur le disque (s'il existe) afin que seuls les fichiers nouveaux ou modifiés soient téléchargés.

doyen
la source
1
oui, j'utilisais svn. Maintenant, j'utilise toujours Git. Bien que beaucoup de gens n'aiment pas la ligne de commande, je la trouve vraiment confortable. Sur Windows, j'utilise la console, qui entoure l'environnement git-bash. Sur OSx, c'est juste un terminal avec le thème Solarized.
Prozaker
Je suis d'accord, j'habite dans le terminal si je peux! Il y a parfois une courbe d'apprentissage légèrement plus abrupte, mais cela rend l'automatisation beaucoup plus facile. Si vous utilisez régulièrement OSX, vous devriez consulter iTerm2. Il prend en charge 256 couleurs, ainsi que le mode plein écran et utilise très bien les séparations.
Dean
4

Comme beaucoup l'ont mentionné, vous avez besoin d'un contrôle de version. Il y a une belle offre gratuite du logiciel FogCreek (vous devez les remercier d'avoir fourni stackexchange qui rend ce site possible). Il s'appelle Kiln (construit sur Mercurial ) et il s'intègre à un joli logiciel de suivi de bogues / fonctionnalités / temps qu'ils ont construit appelé FogBugz . Pour une équipe de 2 développeurs, ils fournissent des versions gratuites de ces produits (et les hébergent pour vous). J'utilise cette configuration pour mes propres projets et les versions payantes pour tous les produits logiciels sur lesquels je travaille pour mon employeur (nous avons une équipe de développeurs beaucoup plus importante, nous devons donc utiliser les versions payantes). Ça vaut vraiment le coup d'oeil.

Si vous décidez de les utiliser, voici quelques bons tutoriels ou liens utiles pour vous aider à démarrer:

Jason Down
la source
1

Outils que mon équipe utilise pour une collaboration fluide:

• GitHub, qui si vous avez un peu d'argent est un moyen extrêmement bon marché et facile d'héberger toute votre source. Il s'agit de la plate-forme de contrôle de version dont la plupart des gens ici ont parlé. Considérez-le comme un compte Pastebin qui existe sur votre disque dur local et qui est mis à jour chaque fois qu'un membre de votre équipe apporte des modifications. Les projets hébergés sont appelés dépositaires. Il existe de nombreux clients Git gratuits, certains s'intègrent directement dans Windows pour que vos dépôts soient propres et à jour.

• Google docs pour les documents de conception de jeux, idées, concepts art.

• Utilisation occasionnelle de DropBox si l'un de nous a besoin d'un actif ou d'un script spécifique ... ceci est cependant rare et nous préférons travailler via GitHub.

Sam Loeschen
la source
1

Si vous utilisez Ara Visual Studio, la meilleure option est Team Foundation, est de Microsoft et est le meilleur contrôle de version que je connaisse, la chose négative est que vous avez besoin d'un serveur, d'un serveur SQL et du serveur Team Foundation pour fonctionner sur le serveur (le client est déjà avec visual studio), si vous en avez l'occasion, essayez-le.

Rudy_TM
la source
J'utilise actuellement Team Foundation. J'ai une question concernant la création et la fusion de succursales. Si je crée deux branches et que quelqu'un ajoute du code à une classe, et que j'ajoute un code différent à la classe lorsque je les fusionne, cela ajoute-t-il les deux modifications au fichier ou allons-nous obtenir une erreur et devons choisir l'une des modifications ?
steakbbq
Je n'utilise pas de branche pour cela, j'utilise une branche pour différentes versions, si vous faites cela, Visual Studio fera peut-être mal la fusion (c'est comme si quelqu'un utilise une classe et une autre, consultez la même classe et ajoutez les deux code, visual studio vous demandera de faire une fusion manuelle), si vous voulez faire des changements dans une classe en même temps, pourquoi n'utilisez-vous pas des classes partielles? utilisez les branches pour les différentes versions, afin que vous ayez plus de contrôle sur vos versions
Rudy_TM
"Team Foundation, est de Microsoft et est le meilleur contrôle de version que je connaisse" Oh mon cher :) Avez-vous déjà essayé autre chose?
Andy M
1

Pour la programmation de paires virtuelles, j'utilise cette configuration (coordonnant tout sur Skype):

  1. Installez un serveur SSH sur l'une de vos machines.
  2. Installer tmux
  3. L'autre personne ssh est dans votre ordinateur.
  4. Demandez à l'hôte de démarrer une session tmux
  5. Demandez à votre partenaire d'exécuter «tmux at» dans sa connexion SSH

Maintenant, vous et votre ami verrez exactement le même écran de terminal. Mais vous voulez probablement pouvoir travailler ensemble en dehors de votre ordinateur, non?

  1. Créez un compte Bitbucket.org, créez un projet (je préfère Git) et suivez leurs instructions pour créer un référentiel vide.
  2. Copiez les fichiers de votre projet avec "git add. && git commit -m 'Initial commit." "
  3. Push to Bitbucket avec "git push origin master"

Maintenant, vous et votre ami pouvez travailler indépendamment sur les modifications et les envoyer à Bitbucket lorsque vous êtes prêt.

Cela ne vous permettra pas de modifier ensemble dans Visual Studio de quelque manière que ce soit, mais vous pourrez modifier le code source lui-même si vous vous associez à une nouvelle fonctionnalité ou déboguez un problème. Tant que vous pousserez vos modifications par la suite, votre ami pourra l'ouvrir dans VS.

Michael Burge
la source
1

Je suggérerais un contrôle de version Bazaar . C'est petit, pratique, très bon pour les petits projets / one2few men. Git et SVN sont utilisés plus souvent pour les grands projets / équipes. Bazaar a en développement un plugin VS, mais pour vous cela ne fait pas beaucoup de différence de l'utiliser en dehors de VS. Il est vraiment facile de l'utiliser une fois que vous l'avez appris et configuré initialement. Il a quelques plugins supplémentaires qui deviennent pratiques.

edin-m
la source
-2

Beaucoup de bonnes suggestions déjà mais si vous voulez opter pour une solution simple et low-tech, cela fonctionne pour moi lorsque je collabore:

  1. Utilisez les commentaires à la tête de chaque script pour savoir quand il a été modifié, par qui et quand, c'est-à-dire:

    Vers      Date      Author   Note
    
    1.0.1     12/10/11  Paul     Added a new boss to level 12
    1.0.2     22/11/11  Frank    Fixed the bug introduced by Paul
  2. Un forum privé ou mieux encore un wiki est un bon moyen de communiquer des idées et de tenir tout le monde au courant des progrès.

Les idées données sont déjà meilleures que cette solution, mais elles sont très faciles à mettre en œuvre avec un investissement de temps minimal, pour un petit projet avec seulement quelques personnes travaillant ensemble, cela pourrait être suffisant pour vos besoins.

Ayant travaillé pour une grande organisation mondiale, je peux honnêtement dire que le temps perdu à cause de la paperasserie entourant leur logiciel de contrôle de version (MKS) est une vraie douleur!

davidjwest
la source
ugh je déteste les commentaires comme ça en tête de chaque script. Et de toute façon, cela ne répond pas à la question ici; les techniques de suivi des modifications ne vous disent rien sur la façon dont les membres de l'équipe partageront leur travail.
jhocking
Eh bien, la communication n'est pas un problème, mes collègues développeurs sont assis dans ventrilo toute la journée avec moi et nous parlons beaucoup lol.
steakbbq