2008-10-16 40 views
14

与大多数开发人员一样,我是一名业务开发人员,其实质上包括将UI简化为一些后端数据存储。 (我们都知道还有比这更多的东西,但这通常是它归结的原因。)游戏开发与业务开发有什么区别?

我知道游戏开发与业务开发有很大不同,但我很难解释它我的一个朋友。我希望SO社区能够帮助我。

对我来说,现代游戏开发人员处理很多操作三维图形。在游戏代码中(我在这里猜测),你正在装配多边形(或类似的东西),旋转它们等。这涉及到操纵关系数据的不同方式(例如)。我真的不知道。我只知道它不同。

编辑:

我要强调的是,“发展”我的意思是“编程”,而不是所有这一切进入创造商业软件的游戏或一块方面。对不起,我原本没有说清楚。

谢谢!

+0

系统开发怎么样?设备软件,国防和运输系统 - 软件比游戏和企业更多! – metao 2008-10-17 05:38:30

+1

真的!但那不是我朋友想知道的。他问我是否可以编写游戏,而且我说这是与我所知道的完全不同的一种开发。 – 2008-10-17 12:57:21

回答

12

我在游戏开发,但很久以前来自业务发展。如果你在物理或图形方面工作,游戏开发在数学上非常严格。即使人工智能可能需要相当多的低等级的数学。就屏幕上的绘图而言,硬件通常会处理大量的多边形操作数学运算。在预处理步骤中运行(通常)很多工具也会涉及到很多的游戏数据生成过程,如果您生成可见性数据,那么这些数据也可能是数学密集型的。

+1

在我看来,这是让游戏开发与众不同的数学。人们认为计算机编程通常涉及数学,但作为一名业务开发人员,除了偶尔的统计数据外,我几乎不会使用任何非常简单的数学算法。听到这个消息,大多数人都很震惊。 – 2008-10-16 22:24:57

+0

是的,我在业务发展中处理的唯一数学问题是美元和美分,也许是偶尔的百分比。 – 2008-10-16 23:12:00

5

业务发展和游戏开发之间的一个巨大差异是涉及的学科数量。大多数商业软件是由一组开发人员创建的,他们都具有相同的基本技能。相比之下,游戏由游戏设计师,视觉艺术家,3D模型师,动画师,音乐家和开发人员组成。

+0

你是对的,但我打算把我的问题集中在编程方面。我知道那不清楚,所以我会编辑我的问题。 – 2008-10-16 19:21:09

5

一个应该有无限循环,一个不应该。

+0

太短... – 2008-10-16 19:19:47

+0

实际上,在现代GUI环境下,这两种类型的应用程序都有无限循环。 – 2008-10-16 19:45:53

3

有关数学和团队中艺术家和其他专家的整合的好处。另外,我会这样说:

  • 游戏开发在某种程度上会依赖硬件。在很多情况下,游戏是同时建立到几个平台和控制台(更不用说手机),而且具有不同的体系结构。这被抽象到一定程度,但开发人员不能完全避免这个事实。

  • 游戏开发通常对性能更敏感,或者至少性能要求不同。你正在处理实时体验,所以花了很多时间来优化这些讨厌的fps。

  • 在很多情况下,游戏开发并不关心重用和可维护性。游戏引擎可能会被重用,但应用程序代码基础可能不会看到v2.0。在最后一个项目中,有很多快速和肮脏的调试正在进行。如果最终用户看起来不错,那么在发布前两天做出优雅的修复并没有什么附加价值。

9

在编程领域方面,除其他事项外,我们处理:

  • 图形编程(包括Shader发展)
  • 动画
  • 物理模拟
  • AI和游戏
  • 音频
  • Networking(typica lly相当低级的东西)

其中一些涉及非常严重的数学和算法知识。除此之外,我们面临极其严格的速度限制,并且通常也必须非常小心内存使用情况。我们面临着不断变化的硬件,并且由于我们试图将硬件推向极限,这可能非常艰难 - 您不能将其抽象化。大多数游戏开发仍然是相当低级的C++工作。我们现在处理的数据库可能比其他大多数程序员都要少(尽管在线游戏正在改变这种状况)!程序员往往是现代游戏项目中的少数派:它们都是关于内容创作(动画,建模,纹理,音频和设计)。这意味着许多游戏程序员致力于使内容创建过程高效,而不是在游戏代码本身上工作。这项工作可能会有更宽松的速度和内存限制,尽管它必须处理大量的数据集。

让游戏变得“有趣”是最难做的事情之一 - 在商业术语中,它意味着极度不稳定的要求,因为设计师不断改变自己的想法应该如何运作,追逐那些难以捉摸的乐趣因素。

最后,游戏通常是一次发货,没有机会解决某种交易。这实际上意味着很少涉及代码维护,所以传统上可能不太关注代码质量问题。随着发布后内容的增加,在线游戏和现代项目的庞大规模,这一情况正在发生变化。

总的来说,这是一个令人难以置信的令人兴奋的领域,缺点是它的收入通常不高(因为这对开发商来说是一笔非常艰难的财务支出,而且因为它很受欢迎,所以总是有新的人员寻找工作) 。

6

只是对游戏开发中不同的一些随机想法。请注意,其中可能有一些讽刺,尽管我试图压制这种冲动。

  • 除非你是其中一个新式工作室(如Eidos Montreal或Blizzard)的幸运雇员,否则总会有一个截止日期,恐怕太短。在商业编程中,您大多会为自己完成最后期限。
  • 业务应用程序服务于某些特定需求。游戏的目的是娱乐人们。你无法真正预测游戏是否会失败,直到游戏结束。
  • 性能至关重要,在游戏的每个方面。编写有利于维护的代码是第二优先级。在业务编程中,有效的代码是重中之重。
  • 对于商业应用程序来说,闪亮的用户界面是一项奖励。对于一款游戏来说,这是必须的。
  • 调试游戏比较困难,因为总会有一些硬件依赖,导致只能在某些机器上复制的错误,而这些错误都不在贵公司。和一个典型的商业应用程序相比,游戏吸收的性能要高得多。
  • 你有人致力于创造艺术,故事,音乐,声音,背景和设计,其中没有一定需要编程知识(脚本有点不同),即你有很多内容,这是用户球员)将看到。没有人关心你的代码有多好,除非性能不好或者有错误。其他人得到赞扬。
  • 对于较大的游戏,您只需要专门为3D图形,网络,音频,工具,脚本,物理等而设的程序员。他们中的大多数都是高度专业化的,他们每个人都可能导致游戏陷入灾难。如果你是图形或物理学家,你只需要高级数学技能。那么,或者AI。
  • 除了一些错误修正之外,大多数游戏都是不容忽视的,除非它是获得扩展包或续集的更成功的游戏之一。
  • 安全问题是网络游戏的一个重要问题,因为有更多恼人的人试图让人们失去商务应用程序,其中许多应用程序在客户的内部使用(或多或少)。
  • 与编写业务应用程序相比,您的工作量要多得多。
  • 土地为AAA头衔的职位,你需要有至少三个运AAA游戏的工作(没有,没有错字这里,读过暴雪或LucasArts的一些工作描述:P)

但是这里有好东西:

  • 当你玩游戏时,你可以假装工作。
  • 最后,编程游戏很有趣。无价。
1

商业软件必须是可靠的,可维护的,一致的,不会太烦人缓慢,并能建立在大量的已经写好的东西,如数据库,控件,窗体等

一个游戏程序员常从一张白纸开始 - 硬件参考手册,一些关于硬件的文档,以及围绕一些与上一份工作完全不同的高级硬件的瘦​​供应商库。

因此,他们必须建立您所看到的 - 并使其大部分工作在20ms的时间段内,可靠,并且通常在一个可笑的短时间内,面对不断变化的需求并且通常是一个非常艰难的最后期限,小时的比较微薄。

那更不用说经常有掌握一些相当复杂的数学和物理....

0

性能确实的区别,从我可以告诉。

技术上,游戏通常由Windows/C++驱动。

2

让我们从目标开始 - 游戏开发的目标是创造有趣的产品。它应该是准确的,它看起来不错并且运行平稳。商业软件解决方案的目标是对工作流程进行建模。它应该是一个足够快的工具。稳定的产品,执行绝对准确,并确保它应该做的任务。

由于我们针对不同的目标,我们使用不同的方法来构建游戏和商业软件。我们来看看需求。对于一款游戏,这些要求由游戏设计师决定。对于软件产品,业务定义了过程和需求。对于一款游戏来说,这些要求并不是最终的 - 我们是否会有小卡通人物或真人模特 - 例如,这对游戏引擎无关紧要。但是对于软件产品而言,在开发之前应严格遵循这些要求并尽可能清除最大可能的细节。

从不同的要求出现不同的软件设计和开发方式。对于游戏来说,性能和游戏性是至关重要的,图形和声音的质量(例如)可以被降低,以便与较弱的硬件兼容。此外,物理模型可以简化,只是为了运行更流畅并改善游戏性。对于商业软件来说,所有东西都应该是精确的,并且裁剪功能意味着您的产品不会像设计中那样功能强大。

对于一款游戏,安全性并不重要 - 没有应该保存的关键客户数据。对于商业软件来说,应该提供一个良好的安全系统 - 从数据加密(同时保存数据存储或通过网络传输)开始,通过备份系统并提及(但不是最后)与先前版本的兼容性。

我会继续与其他方面,但我想这已经是太多的一个帖子...

5

每个人都应该有无限的循环,一个不应该。 - Rich Bradshaw

Rich是对的。基本上,从编码的角度来看,游戏循环会根据游戏的状态(如控制器输入,对象碰撞等)创建一个动作“框架”,该动作可以无限重复,直到游戏元素的某些状态或输入告诉它停止或“退出”。这种方法可以让CPU和显卡非常繁忙,因此游戏机市场的处理器速度更快,显卡甚至更快。

业务应用程序没有活动循环。相反,他们坐着等待事件,如点击,来自Web服务客户端的消息,HTTP GET请求等,然后他们响应该事件。

当然,游戏通常比业务应用程序在几何上更密集,但这并非完全正确。考虑图像编辑,CAD和图形工具。对很多人来说,这些都是商业应用。但大多数情况下,业务应用程序都与查询数据,显示数据,接受用户输入以及根据用户输入修改数据有关。在许多情况下,商业应用程序通过网络甚至互联网来实现,但这简直就是一个简单的例子。

业务应用程序开发人员和游戏开发人员的技能和心态往往不同。游戏开发人员在创建用户体验方面需要考虑的输入结构数量有限,如果您愿意,可以无限选择上下文或“世界”。业务开发人员恰恰相反,其潜在背景有限,通常是网页或基本窗口,以及无限(或几乎如此)的输入和数据显示组合集合,以创造完全不同于游戏开发人员的用户体验着手实现。

0

游戏编程与科学编程有更多共同之处。您正在建模行为系统并根据有限的输入预测结果。

2

由于产品的质量和产品的可销售性之间的奇怪的脱节,商业软件(非收缩包装软件)通常可能写得很差,但仍然被认为是商业上的成功。另一方面,游戏软件实际上必须是好的才能在市场上生存下来。

专业商务软件的质量标准是,一般要低得多。

5

业务发展通常更宽容。

原因基本上是这样的;通常,人们付费使用商业软件。人们支付使用游戏软件。

这可能听起来像它不回答你的问题,但它确实是。当我的老板说“为这个文档使用微软的词”时,他们提供了这个软件,我有义务使用微软的词。所以,当它使用它时,当它决定重新编号我的所有章节标题“仅仅因为”或保存到磁盘需要30秒,而它解决OLE引用(这只是一个EXCEL电子表格,看在上帝的份上!),我只是砂砾我的牙齿,并提醒自己,我得到报酬来做到这一点。

鉴于,如果我在游戏中,我期待娱乐。我期望这些经验能够正常,顺利,干净地工作,不会出现大的口吃或问题。

再次回到为什么这是编程问题;游戏中的那些循环和结构最好是DAMN,以确保游戏引擎没有大幅放缓,没有停顿,没有任何东西让消费者只花了X美元的辛苦赚来的钱就说:“这是一块的废话“,然后走开。使用商业软件,您可以摆脱这种情况;在某些方面,这几乎是预期的。再次看看Microsoft Word的性能;如果这是一场游戏,它将会被取笑。

我知道我听起来像是在选择微软的Word,而且我一般都是这样,因为我觉得它很可怕,但是对于如此多的软件来说,这一点是正确的。 CAD软件是另一个例子。与游戏一样的基本事情正在发生,但总的来说,如果没有经过很多培训,工作就会变得很慢并且很难。

差异归结为波兰语,以及预期的波兰语水平。是的,商业软件通常比游戏更具灵活性;但更重要的是,从编码的角度来看,代码有GOT在游戏中高效而干净地工作;商业软件通常会更宽容潦草的代码。

在商业应用程序中,未经优化且速度慢的算法已被普遍接受;虽然他们从来不是可取的,但业务决策通常会增加另一个功能,而不是提高性能。但是在游戏中,性能是一个功能,而且是一种突破。