¿Cuál es la forma más efectiva de trabajar con un amigo en el mismo juego?

29

Necesitamos algo donde podamos extraer archivos, editarlos, volver a incorporarlos y luego construir a partir de ellos.

Algo como Google Docs, donde podemos editar el mismo código al mismo tiempo, sería ideal.

Ambos estamos usando Visual Studio 2010.

steakbbq
fuente
2
Siempre me pregunté por qué nadie hizo (o al menos no encontré) edición de código para documentos. Supongo que hay algunas dificultades inherentes, como la finalización del código y el hecho de que el código tiene que ser compilado, pero no parecen completamente imposibles de superar con alguna coordinación (y posiblemente trucos como estrategias de fusión de código retrasadas). Creo que son un Problema REAL en grandes proyectos. Tendré que buscar herramientas de codificación colaborativas de todos modos (o hacer una yo mismo: P)
kaoD
1
@kaoD SubEthaEdit ofrece ese tipo de funcionalidad por archivo (no estoy seguro de qué tan bien maneja grandes cantidades de archivos).
michael.bartnett
Si alguien puede encontrarme un programa como este para Windows y C #, te daré una cookie.
steakbbq
1
Emacs puede hacer esto, pero es torpe: emacswiki.org/emacs/CollaborativeEditing ; o MoonEdit: moonedit.com (aunque no sé si tiene un modo C #); o Gobby: en.wikipedia.org/wiki/Gobby
amitp
¿Qué tan difícil sería escribir un nuevo compilador IE sublime? Probablemente sea más fácil desarrollar un complemento para sublime, ¿verdad?
steakbbq

Respuestas:

19

Como dije en un comentario a su pregunta, tengo mucha curiosidad por la verdadera edición colaborativa . Investigué hace algún tiempo, pero la mayoría de las soluciones simplemente no cumplían con los estándares: eran editores de texto sin formato con resaltado de sintaxis, tenían costos locos o no estaban disponibles multiplataforma (como SubEthaEdit ...)

¡Hasta que me topé con Saros ! Es un complemento de Eclipse limpio, por lo que puede ser fácil de integrar con su flujo de trabajo actual. Puedes ver su video de demostración , es bastante impresionante. Está muy bien pensado para un verdadero entorno de edición colaborativa y tiene algunas características clave muy bien pensadas. Admite un número arbitrario de participantes, sincronización completa del proyecto, edición en tiempo real con marcadores y resaltado (por ejemplo, Google Docs), siguiendo la vista de su socio, varios métodos de concienciación de los participantes y mucho más (incluso puede compartir su pantalla usando este complemento. ) ¡Y aparentemente se integra con muchos otros complementos de Eclipse!

Todavía tengo que probarlo yo mismo, pero es uno de los pocos proyectos que aún se mantiene y parece muy prometedor. Inténtalo y avísame (lee estas pautas antes). Prometo volver aquí y publicar mis impresiones como comentario cuando lo intente yo mismo.

EDITAR: Además, como Gustavo señaló en un comentario, Cacoo también podría ser útil. Es una herramienta de colaboración en línea para dibujar UML (en realidad, cualquier tipo de diagrama). Saros admite una pizarra, pero no hay nada como una herramienta de diagrama si desea evitar la torpeza.

kaoD
fuente
3
La gente dio muchas respuestas, todas sobre sistemas de versiones, pero creo que esta es la respuesta real de la pregunta. +1 para edición colaborativa. Por cierto, pruebe Cacoo (google it) Es una herramienta de colaboración para hacer UML, me ayudó en un montón de proyectos, puede complementar su respuesta.
Gustavo Maciel
1
@ Gustavo-Gtoknu muy buena herramienta de hecho, ¿te importa si actualizo la respuesta con ella?
kaoD
2
¡Hazlo ahora! : D La respuesta merece.
Gustavo Maciel
Esto es genial, sin embargo, ¿Eclipse es para Java? Estoy ejecutando c #
steakbbq
@steakbbq hay algunos complementos que proporcionan soporte de C # ( Emonic y Mejorar ) pero desafortunadamente parecen carecer de soporte de depuración y refactorización.
kaoD
36

"solo necesitamos algo donde podamos retirar los archivos, editarlos y luego volver a incorporarlos y construirlos desde el mismo conjunto de archivos"

Usar control de versiones; un sistema de control de versiones (VCS) es exactamente lo que usted describió, con la ventaja adicional de que almacena un historial de cada cambio que alguien ha realizado. Existen muchos sistemas de control de versiones populares:

http://subversion.apache.org/

http://mercurial.selenic.com/

http://git-scm.com/

No uso Visual Studio personalmente, pero estoy completamente seguro de que Visual Studio tiene soporte para todos estos sistemas de control de versiones.

jhocking
fuente
11
Acabo de entregar un host Git / HG privado gratuito en el chat: bitbucket.org (gratis para hasta 5 colaboradores). Además, HG es más adecuado ya que tiene complementos que se ocupan de contenido binario grande (proyectos de contenido).
Jonathan Dickinson
2
+1 Un VCS es el camino a seguir. Uso AnkhSVN como mi complemento de Visual Studio para Subversion.
Richard Marskell - Drackir
2
+1 aquí. mi respaldo personal es TortoiseSVN. Para el alojamiento (suponiendo que el código abierto) mi recomendación es Google Code
PlayDeezGames
2
Por favor no subversión. El control de versiones distribuido es totalmente simple para las personas que no están acostumbradas a trabajar con sistemas centralizados. La gente acostumbrada a la subversión se pierde y se confunde.
rjmunro
9

Para mi equipo, utilizamos tres programas dependiendo de lo que necesitemos trabajar:

  • TortoiseSVN para el código (trate de que los programadores usen el mismo IDE, estandaricen las convenciones y fomenten los buenos comentarios)
  • Dropbox para multimedia (para modelos / sprites / archivos de audio, permite a los desarrolladores trabajar localmente hasta que los artistas / compositores / modeladores estén listos para entregar)
  • GoogleDocs para documentación (para documentos de diseño / maquetas / presentaciones generalmente para diseñadores, gerentes y productores)

Para coordinar los esfuerzos de los diferentes miembros (que trabajan en diferentes momentos) utilizamos el sistema de venta de entradas de Assembla . De esta manera, todos se actualizan sobre el estado de todo el proyecto o una avenida particular de su elección. También use Skype / Google Hangout / comunicación cara a cara para asegurarse de que todos estén en la misma página al menos semanalmente.

Este método generalmente funciona cuando un equipo consta de 3-5 personas que tienen roles establecidos (programador, artista, modelador, diseñador, etc.). Si esto no funciona, pruebe otros métodos o combine aspectos de trabajo para crear uno propio. ¡Buena suerte!

constructor de mitos
fuente
Solo hablé sobre el control de versiones para el código porque ese es el único aspecto del desarrollo sobre el que preguntó, pero mi estudio también usa Dropbox y Google Docs para los mismos propósitos que esta respuesta.
jhocking
Gran combinación
Bill K
7

Suena como si quisieras un cuadro desplegable, un sistema de control de versiones o ambos.

Dropbox es lo más conveniente. Simplemente haga sus cambios y guarde y Dropbox se sincronizará con los cambios en la máquina de sus amigos. Sin embargo, no piense que 2 personas pueden trabajar en el archivo al mismo tiempo sin sobrescribir el trabajo de los demás.

Sin embargo, le recomiendo que use un sistema de control de versiones. Subversion , GIT y Mercurial son actualmente los tres grandes. Hay muchas ventajas al usar un VCS: incluida la capacidad de automatizar copias de seguridad, cambios de reversión y verificar su código en cualquier computadora que tiene acceso a su servidor.

Después de usar los 3 que mencioné, encontré que Subversion es el más fácil para comenzar y Assembla permite repositorios privados gratuitos de SVN o GIT.

Trueno clásico
fuente
9
Realmente no me gusta Dropbox para este tipo de cosas. Si utiliza cualquiera de los productos Tortoise *, tiene un tipo similar de integración con el Explorador de Windows, pero puede controlar commit / push / pull / merge para que no tenga el problema de "2 personas sobrescribiéndose entre sí".
Jimmy
2
Yo tampoco, por eso recomiendo un VCS. Sin embargo, casi no hay curva de aprendizaje e instantáneamente tienes una copia de seguridad, así que considero que vale la pena mencionarlo.
ClassicThunder
9
Recomiendo no usar DropBox en lugar de un sistema de control de versiones. Si dos personas modifican el mismo archivo durante el mismo período de tiempo, DropBox duplicará el archivo. Para el código fuente, esto generalmente no es deseable y es más doloroso que solo usar un sistema de control de fuente.
John McDonald
La subversión no es más fácil de usar: la gente que solía tenerla la encontrará tan confusa como la gente que se va para otro lado.
rjmunro
Yo nunca dije que era. Dije que para mí era más fácil aprender aprendiendo. Es estúpido enunciar frases subjetivas como "Subversion no es más fácil de usar" en términos absolutos.
ClassicThunder
5

Como se menciona en otras respuestas, un VCS es el camino a seguir. Git es mi favorito, pero eso podría deberse a que fue el primero que usé.

Encontré este libro en línea muy útil para aprender Git. http://progit.org/book/ Cualquiera que sea el VCS con el que vaya, vale la pena dedicar unas horas a descubrir cómo usarlo.

Otra cosa que vale la pena mencionar: los VCS son excelentes para el código fuente (o cualquier archivo de texto), pero el almacenamiento de imágenes y archivos de sonido puede inflar su repositorio innecesariamente. Algunas personas recomiendan un repositorio separado para esto, pero creo que Dropbox funciona bien para este tipo de recursos.

Para un proyecto escolar, utilizamos una carpeta pública de Dropbox y utilizamos este script para mantener nuestros recursos actualizados https://github.com/dc2011/td/blob/master/tools/extrafiles.sh

Comprueba el hash md5 del archivo en Dropbox con el hash del archivo que ya está en el disco (si existe) para que solo se descarguen archivos nuevos o modificados.

Decano
fuente
1
Sí, solía usar svn. Ahora siempre uso Git. Aunque a muchas personas no les gusta la línea de comando, creo que es realmente cómoda. En Windows utilizo la consola, que envuelve el entorno git-bash. En OSx es solo Terminal con el tema Solarizado.
Prozaker
Estoy de acuerdo, ¡vivo en la terminal si puedo! A veces hay una curva de aprendizaje un poco más pronunciada, pero hace que la automatización sea mucho más fácil. Si usa OSX de forma regular, debe consultar iTerm2. Tiene soporte para 256 colores, así como el modo de pantalla completa y utiliza muy bien las divisiones.
Dean
4

Como muchos han mencionado, necesita control de versiones. Hay una buena oferta gratuita del software FogCreek (debe agradecerles por proporcionar stackexchange que hace posible este sitio). Se llama Kiln (construido sobre Mercurial ) y se integra con un buen producto de software de seguimiento de errores / características / tiempo que han creado llamado FogBugz . Para un equipo de 2 desarrolladores, proporcionan versiones gratuitas de estos productos (y los alojan para usted). Utilizo esta configuración para mis propios proyectos y las versiones pagas de todos los productos de software en los que trabajo para mi empleador (tenemos un equipo mucho más grande de desarrolladores, por lo que debemos usar las versiones pagas). Vale la pena mirarlo seguro.

Si decide usarlos, aquí hay algunos buenos tutoriales o enlaces útiles para comenzar:

Jason Down
fuente
1

Herramientas que mi equipo usa para una colaboración fluida:

• GitHub, que si tiene un poco de dinero es una forma extremadamente barata y fácil de alojar toda su fuente. Esta es la plataforma de control de versiones de la que la mayoría de la gente aquí ha estado hablando. Piense en ello como una cuenta de Pastebin que existe en su disco duro local y se actualiza cada vez que cualquiera de los miembros de su equipo realiza cambios. Los proyectos alojados se denominan depositarios. Hay muchos clientes Git gratuitos, algunos de ellos integrados directamente en Windows para mantener sus depósitos limpios y actualizados.

• Documentos de Google para documentos de diseño de juegos, ideas, conceptos artísticos.

• Uso ocasional de DropBox si uno de nosotros necesita un activo o script específico ... sin embargo, esto es raro y preferimos trabajar a través de GitHub.

Sam Loeschen
fuente
1

Si está usando Visual Studio, la mejor opción es Team Foundation, es de Microsoft y es el mejor control de versiones que conozco, lo negativo es que necesita un servidor, un servidor SQL y el servidor de Team Foundation para ejecutarse en el servidor (el cliente ya está con Visual Studio), si tienes la oportunidad, pruébalo.

Rudy_TM
fuente
Actualmente estoy usando Team Foundation. Tengo una pregunta sobre la ramificación y fusión de sucursales. Si hago dos ramas y alguien agrega algún código a una clase, y agrego un código diferente a la clase cuando las combino, agregará los cambios al archivo o obtendremos un error y tendremos que elegir uno de los cambios ?
steakbbq
No uso branch para eso, uso branch para diferentes versiones, si lo haces, el estudio visual posiblemente hará la fusión incorrecta (es como cuando alguien está usando una clase y otra echa un vistazo a la misma clase y los dos agregan código, visual studio le pedirá que haga una fusión manual), si desea hacer cambios en una clase al mismo tiempo, ¿por qué no usa clases parciales? use las ramas para las diferentes versiones, de esta manera tendrá más control sobre sus versiones
Rudy_TM
"Team Foundation, es de Microsoft y es el mejor control de versiones que conozco" Oh querido :) ¿Alguna vez has intentado algo más?
Andy M
1

Para la programación de pares virtuales, uso esta configuración (coordinando todo a través de Skype):

  1. Instale un servidor SSH en una de sus máquinas.
  2. Instalar tmux
  3. La otra persona ssh está en su computadora.
  4. Haga que el host inicie una sesión tmux
  5. Haga que su socio ejecute 'tmux at' en su conexión SSH

Ahora usted y su amigo verán exactamente la misma pantalla de terminal. Pero probablemente desee la capacidad de trabajar juntos fuera de su computadora, ¿verdad?

  1. Cree una cuenta de Bitbucket.org, cree un proyecto (prefiero Git) y siga sus instrucciones para crear un repositorio vacío.
  2. Copie los archivos de su proyecto con "git add. && git commit -m 'Initial commit'".
  3. Push to Bitbucket con "git push origin master"

Ahora usted y su amigo pueden trabajar en los cambios de forma independiente y llevarlos a Bitbucket cuando estén listos.

Esto no les permitirá a los dos editar juntos en Visual Studio de ninguna manera agradable, pero podrán editar el código fuente en sí mismo si están emparejando alguna nueva característica o depurando un problema. Mientras empuje sus cambios después, su amigo puede abrirlo en VS.

Michael Burge
fuente
1

Sugeriría el control de versiones de Bazaar . Es pequeño, práctico, muy bueno para proyectos pequeños / one2few men. Git y SVN se usan con mayor frecuencia para proyectos / equipos más grandes. Bazaar tiene en desarrollo el complemento VS, pero para ti no hace mucha diferencia usarlo fuera de VS. Es realmente fácil de usar una vez que lo conoces y lo configuras inicialmente. Tiene pocos complementos más que se vuelven útiles.

edin-m
fuente
-2

Ya hay muchas buenas sugerencias, pero si quieres buscar una solución simple y de baja tecnología, esto funciona para mí cuando colaboro:

  1. Utilice los comentarios al principio de cada secuencia de comandos para realizar un seguimiento de cuándo se editó, quién y cuándo, es decir:

    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 foro privado o, mejor aún, un Wiki es una buena manera de comunicar ideas y mantener a todos actualizados con el progreso.

Las ideas dadas ya son mejores que esta solución, pero es muy fácil de implementar con una inversión de tiempo mínima, para un proyecto pequeño con solo un par de personas trabajando juntas podría ser suficiente para sus necesidades.

Después de haber trabajado para una gran organización global, puedo decir honestamente que la cantidad de tiempo perdido debido a la burocracia que rodea su software de control de versiones (MKS) es un verdadero dolor.

davidjwest
fuente
ugh Odio comentarios como ese en la cabeza de cada guión. Y de todos modos eso no aborda la pregunta aquí; Las técnicas para rastrear cambios no le dicen nada acerca de cómo los miembros del equipo compartirán su trabajo entre ellos.
jhocking
Bueno, la comunicación no es un problema, mis compañeros desarrolladores se sientan en ventrilo todo el día conmigo y hablamos mucho jajaja.
steakbbq