在同一个游戏中与朋友一起工作的最有效方法是什么?


29

我们需要一些可以检出文件,对其进行编辑,将其检入然后从文件进行构建的工具。

像Google Docs这样可以同时编辑相同代码的工具是理想的选择。

我们俩都使用Visual Studio 2010。


2
我一直想知道为什么没有人(或者至少没有找到)像文档一样的代码编辑。我猜想有一些固有的困难,例如代码完成和必须编译代码这一事实,但是通过一些协调(以及诸如延迟代码合并策略之类的技巧),似乎并没有完全克服这些困难。大型项目中的实际问题。无论如何,我都必须寻找协作编码工具(或者自己做一个:P)
kaoD

1
@kaoD SubEthaEdit在每个文件的基础上提供了这种功能(不确定如何处理大量文件)。
michael.bartnett 2012年

如果有人可以找到我这样的Windows和C#程序,我会给你一个cookie。
牛排bbq 2012年

1
Emacs可以做到这一点,但它是笨重:emacswiki.org/emacs/CollaborativeEditing ; 或MoonEdit:moonedit.com(尽管我不知道它是否具有C#模式);或Gobby:en.wikipedia.org/wiki/Gobby
amitp'2

编写新的IE崇高编译器将有多困难?开发用于Sublime的插件会更容易吧?
Steakhousebbq 2012年

Answers:


19

正如我在对您的问题的评论中所说的那样,我对真正的协作编辑感到非常好奇。我前一段时间进行了研究,但是大多数解决方案都不符合标准:要么是纯文本编辑器,带有语法突出显示,要么费用高昂,要么无法使用跨平台(例如SubEthaEdit ...)。

直到我偶然发现萨罗斯!这是一个简洁的Eclipse插件,因此可能很容易与您当前的工作流程集成。您可以观看他们的演示视频,这非常令人印象深刻。对于真正的协作编辑环境,这是经过深思熟虑的,并且具有一些非常完善的关键功能。它支持任意数量的参与者,完全的项目同步,带有标记的实时编辑和高亮显示(ala Google文档),跟随合作伙伴的视图,几种参与者感知方法以及更多(您甚至可以使用此插件共享屏幕)。 )并且显然它与许多其他Eclipse插件集成!

我尚未亲自对其进行测试,但这是仍在维护的少数几个项目之一,看起来很有希望。试试看,让我知道(以前请阅读这些准则。)我保证我会回到这里,并亲自尝试时发表自己的看法作为评论。

编辑:此外,正如古斯塔沃在评论中指出的那样,卡科也可能很有用。这是一个用于绘制UML(实际上是任何形式的图)的在线协作工具。Saros支持白板,但是如果您想避免笨拙,就没有像图工具那样的东西了。


3
人们在版本控制系统上都给出了很多答案,但是我认为这是问题的实际答案。+1进行协作编辑。顺便说一句,尝试Cacoo(用谷歌搜索)这是一个用于制作UML的协作工具,在很多项目中帮助了我,它可能会补充您的答案。
Gustavo Maciel '02

1
@ Gustavo-Gtoknu确实是非常好的工具,您介意我用它来更新答案吗?
kaoD 2012年

2
现在做!:D答案值得。
Gustavo Maciel '02

很棒,但是Eclipse是Java的吗?我正在运行C#
Steakhousebbq,2012年

@steakbbq有一些插件,其中提供支持C#(Emonic改善),但不幸的是他们似乎缺少调试和重构的支持。
kaoD 2012年

36

“我们只需要一些可以检出文件的内容,然后对其进行编辑,然后再检入并从同一组文件中构建”

使用版本控制;版本控制系统(VCS)正是您所描述的,它还具有存储任何人所做的任何更改的历史记录的额外好处。有很多流行的版本控制系统:

http://subversion.apache.org/

http://mercurial.selenic.com/

http://git-scm.com/

我个人没有使用Visual Studio,但是我完全可以肯定Visual Studio支持所有这些版本控制系统。


11
刚刚在聊天中提供了一个免费的私人Git / HG主持人:bitbucket.org(最多5位协作者免费)。HG也更适合,因为它具有处理大型二进制内容(内容项目)的插件。
乔纳森·迪金森

2
+1 VCS是必经之路。我将AnkhSVN用作Visual Studio Subversion插件。
理查德·马斯克

2
+1。我个人的认可是TortoiseSVN。对于托管(假设是开源的),我的建议是Google代码
PlayDeezGames


2
请不要颠覆。对于不习惯使用集中式系统的人们来说,分布式版本控制是完全简单的。曾经颠覆的人们会迷惑不解。
rjmunro

9

对于我的团队,我们根据需要从事的工作使用三个程序:

  • 用于代码的TortoiseSVN(尝试让程序员使用相同的IDE,标准化约定并鼓励进行良好注释)
  • 用于多媒体的Dropbox(用于模型/精灵/音频文件,允许开发人员在本地工作,直到艺术家/作曲家/建模者准备好交付为止)
  • 适用于文档的GoogleDocs(通常用于设计人员,经理和生产者的设计文档/模型/ 维修区

为了协调不同成员(在不同时间工作)的工作,我们使用了Assembla的票务系统。这样,每个人都可以更新整个项目的状态或选择的特定途径。还可以使用Skype / Google Hangouts /面对面的交流来确保每个人至少每周一次在同一页面上。

当一个团队由3-5个已确定角色(程序员,艺术家,建模者,设计师等)的人员组成时,此方法通常适用。如果这不起作用,请尝试其他方法或将工作方面结合起来以打造自己的一种。祝好运!


我只谈论代码的版本控制,因为这是他要求开发的唯一方面,但是我的工作室也出于与此目的相同的目的而使用了Dropbox和Google Docs。
jhocking 2012年

很棒的组合。
Bill K

7

听起来好像您想要放置框,版本控制系统或同时使用两者。

Dropbox是最方便的。只需进行更改并保存,Dropbox将在您的朋友计算机上同步更改。不要以为两个人可以同时处理文件,尽管不会互相覆盖。

但是,我建议您使用版本控制系统SubversionGITMercurial当前是大型3。使用VCS有很多优点:包括能够自动执行备份,回滚更改以及在任何计算机上签出代码的功能。有权访问您的服务器。

使用了我提到的3,我发现Subversion是最容易上手的,而Assembla允许免费的私有 SVN或GIT存储库。


9
我真的不喜欢Dropbox这样的事情。如果您使用任何Tortoise *产品,它都具有类似的Windows资源管理器集成,但是您可以控制提交/推/拉/合并,因此不会出现“两个人互相覆盖”的问题。
吉米

2
我也不是,这就是为什么我推荐VCS的原因。但是,几乎没有学习曲线,您会立即获得备份,因此我认为值得一提。
ClassicThunder

9
我建议不要在版本控制系统中使用DropBox。如果两个人在同一时间段内修改了同一文件,则DropBox将复制该文件。对于源代码,这通常是不希望的,而仅使用源代码控制系统就更麻烦了。
约翰·麦当劳

Subversion并不容易使用-只有习惯使用Subversion的人会发现它与其他方法一样令人困惑。
rjmunro 2012年

我从来没有说过。我说对我来说,学习是最容易的。用绝对术语表达主观陈述(例如“ Subversion较难使用”)是愚蠢的。
ClassicThunder

5

如其他答案中所述,VCS是必经之路。Git是我的最爱,但这可能只是因为它是我使用的第一个。

我发现这本在线书对学习Git很有帮助。http://progit.org/book/ 无论使用什么VCS,花几个小时弄清楚如何使用它都是值得的。

值得一提的另一件事-VCS非常适合源代码(或任何文本文件),但是存储图像和声音文件可能会使存储库不必要地膨胀。有人为此建议一个单独的存储库,但我发现Dropbox可以很好地用于这类资源。

对于一个学校项目,我们使用一个公共的Dropbox文件夹,并使用此脚本使资源保持最新https://github.com/dc2011/td/blob/master/tools/extrafiles.sh

它将检查Dropbox中文件的md5哈希与磁盘上已经存在的文件的哈希(如果存在),以便仅下载新文件或更改的文件。


1
是的,我曾经使用svn。现在我总是使用Git。尽管许多人不喜欢命令行,但我觉得它很舒服。在Windows上,我使用控制台,该控制台环绕git-bash环境。在OSx上,它只是带有Solarized主题的终端。
Prozaker

我同意,如果可以的话,我住在航站楼!有时学习曲线会稍微陡一些,但这使自动化变得容易得多。如果您定期使用OSX,则应签出iTerm2。它支持256色,以及全屏模式,并很好地利用了分色。
院长

4

正如许多人提到的那样,您需要版本控制。FogCreek软件提供了不错的免费产品(感谢他们提供stackexchange,这使该网站成为可能)。它被称为Kiln(在Mercurial之上构建),并且与他们已经构建的名为FogBugz的不错的bug /功能/时间跟踪软件产品集成在一起。对于由2个开发人员组成的团队,他们提供这些产品的免费版本(并为您托管)。我将这个设置用于我自己的项目,并为我为雇主使用的所有软件产品使用付费版本(我们拥有更大的开发人员团队,因此必须使用付费版本)。值得一看。

如果您决定使用这些工具,请参阅以下一些不错的教程或有用的链接以开始使用:


1

我的团队用于平滑协作的工具:

•GitHub,如果您有钱的话,这是托管所有源代码的非常便宜且容易的方法。这是这里大多数人都在谈论的版本控制平台。可以将其视为存在于本地硬盘驱动器上的Pastebin帐户,该帐户在任何团队成员进行更改时都会更新。托管的项目称为托管人。有大量免费的Git客户端,其中一些可以直接集成到Windows中,以使您的存储库保持清洁和最新状态。

•用于游戏设计文档,创意,概念图的Google文档。

•如果我们中的一个人需要特定的资产或脚本,则偶尔使用DropBox ...但这很少见,我们更喜欢通过GitHub工作。


1

如果您使用Visual Studio,最好的选择是Team Foundation,来自Microsoft,也是我所知道的最好的版本控制,否定的事情是您需要服务器,sql服务器和Team Foundation服务器在服务器中运行(客户已经在Visual Studio中),如果有机会,请尝试一下。


我目前正在使用Team Foundation,我对分支和合并分支有疑问。如果我创建了两个分支,并且有人在类中添加了一些代码,并且在合并它们时我在类中添加了一些不同的代码,那么它将同时将更改添加到文件中还是会出现错误,并且必须选择其中一项更改?
Steakhousebbq 2012年

我不为此使用分支,而是为不同的版本使用分支,如果您这样做,Visual Studio可能会造成合并不良(例如,当某人正在使用一个类,而另一个正在检出同一个类,并且两个都添加时)代码,Visual Studio会要求您进行手动合并),如果您想同时对一个类进行更改,为什么不使用局部类?使用不同版本的分支,这样您可以更好地控制版本
Rudy_TM 2012年

“ Team Foundation,来自微软,是我所知道的最好的版本控制。”噢,亲爱的:)您是否尝试过其他方法?
安迪M

1

对于虚拟对编程,我使用以下设置(在Skype上协调所有操作):

  1. 在其中一台计算机上安装SSH服务器。
  2. 安装tmux
  3. 对方ssh进入了您的计算机。
  4. 让主机启动tmux会话
  5. 让您的伙伴在其SSH连接中运行“ tmux at”

现在,您和您的朋友将看到完全相同的终端屏幕。但是您可能希望能够在计算机外部协同工作,对吗?

  1. 创建一个Bitbucket.org帐户,创建一个项目(我更喜欢Git),并按照他们的指示创建一个空的存储库。
  2. 使用“ git add。&& git commit -m'初始提交'”复制项目的文件。
  3. 使用“ git push origin master”推送到Bitbucket

现在,您和您的朋友可以独立进行更改,并在准备就绪时将其推送到Bitbucket。

这不会让你们俩都以任何不错的方式在Visual Studio中一起编辑,但是如果您要配对某些新功能或调试问题,则可以编辑源代码本身。只要您以后进行更改,您的朋友就可以在VS中打开它。


1

我建议Bazaar版本控制。它小巧实用,非常适合小型/单身男人项目。Git和SVN更常用于大型项目/团队。Bazaar具有开发中的VS插件,但对您来说,在VS之外使用它并没有多大区别。一旦了解并开始设置它,就非常容易使用。它还有几个方便使用的插件。


-2

已经有很多好的建议,但是如果您想寻求一个技术含量低且简单的解决方案,那么在我进行协作时,这对我有用:

  1. 在每个脚本的开头使用注释,以跟踪其编辑时间,编辑者和时间,即:

    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. 私人论坛,或者甚至更好的Wiki,是交流思想并使每个人保持最新状态的好方法。

给出的想法已经比该解决方案更好,但是用最少的时间投入却很容易实现,对于只有几个人一起工作的小型项目,这可能足以满足您的需求。

在大型的全球性组织工作过,我可以坦白地说,由于围绕其版本控制软件(MKS)的红色磁带而浪费的时间真是太痛苦了!


恩,我讨厌每个脚本开头的注释。无论如何,这里并没有解决这个问题。跟踪变更的技术不会告诉您有关团队成员如何彼此共享工作的任何信息。
jhocking 2012年

好吧,沟通不是问题,我的开发人员与我整天坐在文特里洛,我们聊了很多。
Steakhousebbq 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.