单独的开发人员项目应使用哪种项目管理?


49

我自己从事游戏项目的开发,该项目可以分为三个独立的部分(地图生成,“ Overworld”引擎和战斗引擎),但是随着开发的进行,我不确定应该如何处理该项目的管理,尤其是涉及以下三点:

  1. 由于我是独自工作,使用版本控制系统值得吗?

  2. 我应该使用一种正式的方法来注册计划中的功能/错误吗(我只记得现在需要做什么)

  3. 最重要的问题:我怎么知道首先要开发什么?现在已经完成了最基本的工作,我知道要编码的功能列表,但是我不知道应该按照什么顺序进行。


39
1)是,是,;我真的希望没有人告诉您不要使用VCS。
sam hocevar

3
有许多问题表明必须进行版本控制:(a)在本地副本被破坏的情况下进行备份的基本思想,以及(b)覆盖了代码和资产的思想不一定是您想要的。永远损失(本质上是(a),因为覆盖是一种破坏性的机制)。还有(c),它与(b)有关:您可能想要分支,以便尝试不同的方法。在处理对性能至关重要的代码时,我经常会分支,因为它可以帮助我描述不同的方法而又不会失去其他方法的地位。
工程师

我第二次评论@Sam-始终使用版本控制。从今年开始,我会很高兴您所做的。有很多便宜/免费的托管VCS和DVCS系统,它们还可以为您提供异地备份。我将颜色固定在Subversion桅杆上,但是如果我重新开始,我想我会使用Mercurial。
蒂姆·隆

1
这些问题中的每一个都应该是单独的问题,因为它们实际上是单独的主题。
Tetrad

Answers:


59

我会用:

1.代码管理

GIT(和很棒的参考资料),一个分布式的源代码管理器,用于管理我的代码,如果我想不受限制的话,可以将它作为私有项目托管在GitHub上

(这里有很多选项,只有google用于源代码管理,您甚至不需要使用GitHub或任何其他网站,Git在您的本地计算机上就可以很好地工作,但是使用GitHub将使管理备份变得很痛苦容易得多。

如果您有两台计算机,则可以在称为备份计算机的一台计算机上创建一个存储库,然后在本地网络上克隆该存储库并将其用于开发,完成某项功能后,可以将其推送到备份计算机,您将获得1:1备份!)

2.问题与功能管理

我将使用TrelloGitHub的内置问题管理来跟踪错误和要做的事情。

3.有一个设计过程

我会先设计游戏;

  1. 首先在我心中
  2. 然后在纸上
  3. 然后可能使用GameMakerpygame的原型我的想法,并遍历1-3,直到我有我喜欢弹奏。

4.以我的原型为指导并开发我的游戏

然后,我将原型放到一边,选择一个我希望开发的平台。然后寻找现有的引擎,并选择最适合我的游戏想法的引擎。然后,我将为我的项目制定明确的目标,将其组织为小任务,然后开始工作以完成任务。达到此状态后,您很可能会发现自己有适合自己的最佳工作方式,那就去吧!

您可以将几种不同的方法论/理念应用于您的开发风格,XP,Waterfall等。仅选择一种您认为会使您进步最快的方法论即可。

5.有很多游戏测试人员!

当您有可玩的​​东西时,请您的直属朋友尝试一下!如果他们使用Windows / Windows,请设置快速安装程序包,或者编写一些Shell脚本(如果他们使用Linux / Mac)可以自动为他们提供帮助,从而使他们轻松地为您提供帮助。在测试人员的反馈中要格外小心,不要忘了告诉他们您的游戏设计以及您要开发的游戏类型。

6.为我的游戏制作一个网站

一旦一切顺利,我可能会为我的游戏建立一个网站-在无法将其应用于游戏进度时(例如,如果我专注于学习)保持我的创造力和内容畅通或需要中断开发!

如果我使用GitHub,我将为我的游戏设置一个项目页面,否则托管一个WordPress / Jekyll博客或类似的博客,并以此撰写我的文章。

这将使您保持动力,并有地方推荐潜在的游戏玩家/测试人员!

7.参加比赛

几乎所有时间都有很多游戏开发竞赛。如果规则允许,我会尝试将其中之一加入我的游戏。这会增加动力,并使一切变得更有趣-谁不喜欢赢!

(如果您在严格的期限内进行开发,则可以至少跳过这一点。)


1
好答案。我建议对FogBugz进行问题跟踪。它对于像我这样的开发者是免费的。
notlesh 2011年

2
如此多的+1应该得到,但我只能给一个。
chaosTechnician 2011年

与Dropbox一起使用GIT / hg /其他使魔术。
zeroDivid

14

我强烈建议您使用版本控制系统,即使您一个人工作。一旦不小心删除了某项内容或进行了较大的更改,它可以为您节省很多时间,但后来才意识到这是一个坏主意,则必须撤消所有更改。

编辑:有许多免费的源代码控制解决方案。

  • 我使用了VisualSVN服务器,该服务器很容易在Windows下设置和使用。

  • 还有其他在线替代方案,例如Codeplex(带有SVNMercurial),SourceForgeGoogle Code。好处是您不必建立和维护存储库,并且您的数据在云中。问题是,您不能自由托管封闭源代码项目。

关于错误和功能跟踪:如果您已经有更多的用户可能对Beta测试游戏,报告错误和请求功能感兴趣,请继续。
但是,如果只有少数这样的人(或根本没有),那就没有必要了。

至于开发优先级,这是要决定的。谁比唯一的开发人员更了解在项目中做什么?


1
当你的硬盘驱动器的划痕,在删除了错误的文件等等等等+1 SVN是值得的
Valmond

5
上述许多VCS的问题在于它们是公开的。如果要免费私人托管,请访问assembla.com
ClassicThunder

12
bitbucket.org支持私有仓库
O0' 。

1
@ClassicThunder我在我的帖子中说过。另外,我上次检查时,Assembla看起来并不适合私人项目。在此期间发生了什么变化?(我怀疑这一点,但你永远不知道。)
版本

1
您可以根据需要在自己的HDD上设置私有SVN存储库。那将比根本没有VCS更好。。。OMG有多少重复的答案..
Kromster说支持Monica 2011年

7

由于我是独自工作,使用版本控制系统值得吗?

我认同。设置起来非常琐碎,而且我经历过多次疯狂的重构工作或做其他愚蠢的事情,并且回滚更改的能力节省了很多时间。此外,如果将其托管在服务器上,则可以备份我们的代码,以防万一发生问题

我应该使用一种正式的方法来注册计划中的功能/错误吗(我只记得现在需要做什么)

我认为没有必要。我会保留一份您打算做什么的书面清单,尽管只是为了确保您不会忘记一个小错误,而且我发现它可以帮助您从编码休息后重新开始。

最重要的问题:我怎么知道首先要开发什么?现在已经完成了最基本的工作,我知道了要编码的功能列表,但是我不知道应该按照什么顺序执行。

把上面的那个清单,闭上眼睛,随机戳它。使用您手指上的任何功能。除非项目之间相互依赖,否则与确保事情按任何特定顺序发生相比,保持流程继续前进更为重要。


5

绝对使用版本控制

版本控制就像走钢丝的人的安全网一样:它释放了您尝试疯狂事物的自由。如果您可以轻松地还原,那么删除大量代码的大型重构就没问题。如果您要在回购中的实验分支上并且可以决定不将其合并回去,那么情况就更不用说了。

如果您没有这种自由度,则可能会将注释掉的代码无处不在,以免担心您可能需要它。

我对Git进行了投票。语法有点奇怪,但是关于它的两件事很重要:

  • 低开销。转到一个文件夹中,然后键入内容git init,您就可以开始检入文件了。如果您确定根本不想rm -rf .git对该文件进行版本控制,请在该文件夹中,它不再是Git存储库。
  • 通过SSH分发。Git是分布式的,这意味着您可以在不同的地方拥有仓库的多个完整副本(所有历史记录等),并使它们保持同步。您可以在具有SSH访问权限的任何计算机上设置另一个Git存储库,然后将该其他存储库添加为远程存储库。之后,您随时可以只备份git push到该存储库。

    相对于Subversion来说,这是一个很大的优势,Subversion的整个仓库都位于一台计算机上,并且该计算机必须运行Subversion服务器。

Mercurial可能支持这些观点,但我没有使用过。


3
  1. 是! 既然您是在问,我猜您已经很好地接受了修订控制系统。必须的!

  2. 关于第二个问题,有注册错误的正式方法,您应该使用它。对于规划功能,我认为采取任何非正式的途径都不会造成伤害(当您一个人工作时)

  3. 首先执行这些功能,使您的游戏栩栩如生。大致了解最终的比赛方式。


3

1)是的,当然。我建议通过BitBucket和TortoiseHg使用Mercurial。BitBucket最多可免费使用5个用户,而且由于它托管在云中,因此您可以放心一些(无需备份)。

2)在实施新功能之前,应先修复错误。我将使用简单的可访问TODO列表来跟踪事情-未完成/完成。您可能只使用纯文本文件,但不要忘记将其添加到源代码控制存储库中。

3)做任何一天想做的事情,同时要记住,交付最终用户可以玩的东西是主要目标。例如,如果您厌倦了正确使用物理,可以进行渲染,或者为该AI添加一些缺失的单元测试。

工作量应该足够小,可以在大约几天内完成。保持动力并避免倦怠至关重要。

如果架构正确完成,您应该能够轻松添加引擎/游戏的修改部分,而不会影响其他多个部分(否则从重构开始:)。


2

1)大家都说:是的(我什至会说,在网上租一个便宜的东西)

2)保留一个简单的列表,或者如果您的项目变大并且您获得了Beta测试人员,请安装Mantis Bug Tracker

3)我不知道,但是我会告诉你我的工作方式:首先开发出最轻松和/或最难的事情。重复直到一切完成。这样一来,开发就会变得更加有趣和轻松(并且即使遇到这种情况,您也不会解决这个问题,也就无法解决得太晚)。


1

感谢您提出这个问题。这正是我目前正在做的事情。

1)版本控制:必须。目前,我正在维护手动备份。当运行良好的某些事物突然抛出错误(或无法按预期运行)时,它至少很有用。我比较版本并经常发现愚蠢的错误(主要是评论一些内容)

2)我创建了一个word文档,并按类别顺序列出了游戏将要拥有的所有功能,并列出了子功能的多级缩进(以及与客户端/服务器相关的功能或适用的功能)。

3)在获得列表之后(通常不会完整完成,不断添加一些内容),我想到了我的游戏流程,并高亮显示了使游戏运行并开始执行它们所必需的所有要点。我标记为黄色,表示正在进行中。完成时为绿色。橙色表示需要改进或存在一些已知的错误

希望这可以帮助


0

1.)值得对任何项目使用版本控制。如果您已经知道如何使用它,即使是很小的也可以。我已经在Linux和Windows上使用TortoiseSVN使用Subversion多年了。即使创建一个较小的项目(<500行),我也将为其创建一个存储库,以便撤消更改,跟踪我放弃该项目一段时间后正在执行的操作等。

2.)取决于项目的规模。如果您打算与团队一起进行游戏测试并分发,那么可能值得拥有一个错误跟踪系统。我目前正在一个超过2万行的项目中独自工作(尽管我有一位艺术家),而我的待办事项列表仅保存在一个文本文件中,该文本文件也位于我的SVN存储库中。尽管我现在还完全不需要与他人共享它,所以暂时没有错误跟踪很适合我的需求。除非有需要,否则我不会担心。可能发生的最糟糕的情况是,您必须输入已经记录下来的所有错误,然后删除/修订已修复的错误。当您开始失去对笔记的心理跟踪时,请获取一个错误跟踪器。

3.)将其绘制在纸上。从您希望最终完成的游戏开始,写下它的要旨。然后将其分解为制作过程:碰撞检测?网络代码?玩家和怪物的类型?类层次结构?从您的愿景中退后一步,以便您清楚地了解如何从头开始构建它。我想您正在使用一种面向对象的语言。首先,最关键的一步是以明智的方式建立这些类层次结构。尽您所能避免绝对没有多重继承(尽管有时是不可避免的),在图编辑器中绘制类关系(我使用Dia),等等。基本原理在避免以后出现麻烦方面大有帮助。


注意:TortoiseSVN是Subversion的仅Windows客户端。
2013年
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.