游戏开发和业务开发之间有什么区别?

时间:2008-10-16 19:00:40

标签: language-agnostic

与大多数开发人员一样,我是一名业务开发人员,实质上是将UI打到一些后端数据存储上。 (我们都知道它还有很多,但这通常归结为它。)

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

对我而言,现代游戏开发者在操纵三维图形方面做了大量工作。在游戏代码中(我猜这里),你正在组装多边形(或类似的东西),旋转'em等等。这涉及到一种不同的思维方式来操纵关系数据(例如)。我不知道,真的。我只知道它有所不同。

修改

我应该强调,“开发”是指“编程”,而不是创建游戏或商业软件的所有方面。对不起,我最初没说清楚。

谢谢!

13 个答案:

答案 0 :(得分:12)

我从事游戏开发,但很久以前就来自业务开发。如果你在物理或图形方面工作,游戏开发在数学方面是非常严格的。对于低级别的东西,即使AI也需要相当多的数学。就屏幕上的绘图而言,硬件通常会处理大量的多边形操作数学。与(通常)许多工具在预处理步骤中生成游戏数据也有很多参与,如果您要生成可见性数据,这也可能是数学密集型的。

答案 1 :(得分:9)

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

  • 图形编程(包括着色器开发)
  • 动画
  • 物理模拟
  • AI和游戏玩法
  • 音频
  • 网络(通常是相当低级的东西)

其中一些涉及非常严肃的数学和算法知识。最重要的是,我们面临极其严格的速度限制,通常也必须非常小心内存使用。我们面临着不断变化的硬件,因为我们正在努力将硬件推向极限,这可能非常困难 - 你不能只是将它抽象出来。大多数游戏开发仍然是相当低级的C ++工作。我们现在可能比大多数其他程序员处理的数据库少(尽管在线游戏正在改变这一点)!

程序员通常是现代游戏项目中的少数:它完全是内容创作(动画,建模,纹理,音频和设计)。这意味着许多游戏程序员致力于使内容创建过程高效,而不是致力于游戏代码本身。尽管它必须处理大量数据集,但这项工作可能会有更宽松的速度和内存限制。

让游戏变得“有趣”是最困难的事情之一 - 在商业术语中,它“意味着非常不稳定的要求”,因为设计师不断改变他们对事物应该如何运作的看法,以追逐难以捉摸的乐趣因素。

最后,游戏通常是一次性的,没有机会修复某种交易。这实际上意味着涉及的代码维护非常少,因此传统上可能对代码质量问题的关注较少。随着发布后内容增加,在线游戏和现代项目的庞大规模的增长,现在情况正在发生变化。

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

答案 2 :(得分:6)

关于游戏开发的不同之处,只是一些随意的想法。请注意,虽然我试图抑制这种冲动,但可能会有一些讽刺。

  • 除非你是其中一个新式工作室(如Eidos Montreal或Blizzard)的幸运员工,否则总有一个期限可能会让人觉得太短暂。在商业编程中,你主要是为自己制定截止日期。
  • 业务应用程序满足某些特定需求。游戏的目的是娱乐人们。你无法真实地预测游戏是否会失败,直到游戏结束。
  • 在游戏的各个方面,表现都是必不可少的。编写有利于维护的代码是第二优先。在业务编程中,优秀的代码是最重要的。
  • 对于商业应用程序,闪亮的UI是一个奖励。对于游戏来说,这是必须的。
  • 调试游戏要困难得多,因为总会有一些硬件依赖会导致错误,这些错误只能在某些机器上重现,而这些错误都不在贵公司。与典型的商业应用程序相比,游戏的性能要高得多。
  • 你们有致力于创作艺术,故事,音乐,声音,背景和设计的人,这些都不一定需要编程知识(脚本有点不同),即你有很多内容就是用户(球员)会看到。没有人会关心你的代码有多好,除非性能不好或有bug。其他人得到了赞誉。
  • 对于大型游戏,您的程序员专门致力于3D图形,网络,音频,工具,脚本,物理等。他们中的大多数都是高度专业化的,每个人都可以将游戏带入灾难中。如果你是图形或物理人,你只需要高级数学技能。好吧,或AI。
  • 除了一些错误修正之外,大多数游戏都是“一劳永逸”,除非它是更成功的游戏之一,它可以获得扩展包或续集。
  • 安全性对于网络游戏来说是一个重要的问题,因为有更多令人烦恼的人试图让人们关闭而不是商业应用程序,其中许多是(或多或少)内部用户。
  • 与编写业务应用程序相比,您的工作要多得多。
  • 要获得AAA级职位的工作,你需要至少参与三次发行的AAA级游戏(不,这里没有拼写错误,曾经在暴雪或LucasArts看过一些职位描述?:P)

但是这里有好事:

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

答案 3 :(得分:6)

业务发展通常更加宽容。

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

这听起来似乎没有回答你的问题,但事实确实如此。当我的老板说“使用微软词来获取该文档”时,他们提供的是软件,我有义务使用micosoft字。因此,在使用它时,当它决定重新编号我的所有章节标题“只是因为”或者保存到磁盘需要30秒才能解析OLE引用(为了天堂的缘故,这只是一个快速的EXCEL SPREADSHEET!),我只是坚持不懈我的牙齿,并提醒自己,我得到了报酬。

然而,如果我在游戏中,我期待娱乐。我期待这种体验能够正常,顺畅,干净地工作,没有严重的口吃或问题。

再次,了解为什么这是编程问题;游戏中的那些循环和结构最好是DAMN好,以确保没有重大减速,游戏引擎没有口吃,没有什么能让消费者只花费他辛苦赚来的X金额说“这是一块废话“走开了。使用商业软件,你可以逃脱这种事情;在某些方面,它几乎是预期的。再看一下Microsoft Word的性能;如果它是一场游戏,它就会被淘汰出局。

我知道我听起来像是在挑选Microsoft Word,我一般都是,因为我发现它很可怕,但对于这么多软件来说,这一点确实如此。 CAD软件是另一个例子。与游戏相同的基本事情,但总的来说,如果没有大量的培训,它会很慢而且难以使用。

差异归结为抛光,以及预期的抛光程度。是的,商业软件的灵活性通常比游戏更灵活;但更重要的是从编码的角度来看,代码让GOT在游戏中高效,干净地工作;通常,商业软件对草率代码更加宽容。

在商业应用程序中,通常接受未经优化和慢速的算法;虽然它们永远不可取,但经常做出的商业决策是增加另一个功能而不是提高性能。但在游戏中,性能是一个特征,也是一个成败的特征。

答案 4 :(得分:5)

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

答案 5 :(得分:5)

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

答案 6 :(得分:5)

  

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

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

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

当然,游戏通常比商业应用更加几何密集,但这并不完全正确。考虑图像编辑,CAD和图形工具。对于许多人来说,这些是业务应用程但在大多数情况下,业务应用程序与查询数据,显示数据,接受用户输入以及根据用户输入修改数据有关。在许多情况下,业务应用程序通过网络甚至Internet进行此操作,但这是一个简单的概述。

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

答案 7 :(得分:3)

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

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

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

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

答案 8 :(得分:2)

让我们从目标出发 - 游戏开发的目标是创造有趣的产品。它应该是准确的,它看起来很好并且运行顺畅。业务软件解决方案的目标是为工作流程建模。它应该是一个工作得足够快的工具。一种稳定的产品,可以绝对准确地执行并确保应该完成的任务。

由于我们针对不同的目标,我们使用不同的方法来构建游戏和商业软件。让我们转向要求。对于游戏,要求由游戏设计者决定。对于软件产品,业务定义过程和要求。对于游戏来说,要求不是最终的 - 我们是否应该有小型卡通人物或真实的人体模型 - 例如,这对于游戏引擎无关紧要。但对于软件产品,应严格遵循要求,并在开发之前将其清除到最大可能的细节。

从不同的要求出来不同的软件设计和开发方法。对于游戏而言,性能和游戏玩法至关重要,并且可以降低图形和声音的质量(例如),以便与较弱的硬件兼容。此外,物理模型可以简化,只是为了运行更顺畅,并改善游戏性。对于商业软件,一切都应该是准确的,切割功能意味着您的产品将不再具有设计功能。

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

我可以继续其他方面,但我想这对于一个帖子来说已经太多了......

答案 9 :(得分:2)

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

专业商业软件的质量标准通常低得多。

答案 10 :(得分:1)

商业软件必须可靠,可维护,一致,不要太慢,并且可以建立在许多已编写的东西上,例如数据库,控件,表单等。

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

由此他们必须建立你所看到的东西 - 并使其大部分时间在20毫秒的时间内可靠,并且通常在一个非常短的时间内,面对不断变化的要求,并且通常是一个非常艰难的截止日期,工作无数的相对微薄的时间。

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

答案 11 :(得分:0)

从我所知道的,性能确实是不同的。

技术方面,游戏通常是Windows / C ++驱动的。

答案 12 :(得分:0)

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