Language agnostic 什么';游戏开发和业务开发的区别是什么?

Language agnostic 什么';游戏开发和业务开发的区别是什么?,language-agnostic,Language Agnostic,和大多数开发人员一样,我也是一名业务开发人员,本质上就是将UI应用到某个后端数据存储上。(我们都知道,事情远不止这些,但通常归结起来就是这样。) 我知道游戏开发与商业开发有很大不同,但我很难向我的一个朋友解释。我希望SO社区能在这里帮助我 对我来说,现代游戏开发者在处理三维图形方面做了很多工作。在游戏代码中(我猜是这样),你正在组装多边形(或类似的东西),旋转它们,等等。这涉及到一种与操作关系数据(例如)不同的思维方式。我真的不知道。我只知道这不一样 编辑: 我应该强调的是,我所说的“开发”是指

和大多数开发人员一样,我也是一名业务开发人员,本质上就是将UI应用到某个后端数据存储上。(我们都知道,事情远不止这些,但通常归结起来就是这样。)

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

对我来说,现代游戏开发者在处理三维图形方面做了很多工作。在游戏代码中(我猜是这样),你正在组装多边形(或类似的东西),旋转它们,等等。这涉及到一种与操作关系数据(例如)不同的思维方式。我真的不知道。我只知道这不一样

编辑:

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


谢谢

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

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

我从事游戏开发,但很久以前就来自商业开发。如果你在物理或图形方面工作,游戏开发在数学方面是非常严格的。即使是人工智能也需要相当多的数学知识来处理低级的东西。在屏幕上绘图时,硬件通常会处理很多多边形操作数学。在游戏数据生成过程中,还需要(通常)使用许多在预处理步骤中运行的工具(通常)大量参与,如果您正在生成可见性数据,那么这些工具也可能是数学密集型的。

关于数学以及团队中艺术家和其他专家的集成的优点。此外,我要说:

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

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

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


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

  • 图形编程(包括着色器开发)
  • 动画
  • 物理模拟
  • 人工智能与游戏性
  • 音频
  • 网络(通常是相当低级的东西)
其中一些涉及相当严肃的数学和算法知识。最重要的是,我们面临着极其严格的速度限制,通常也必须非常小心地使用内存。我们面临着不断变化的硬件,由于我们正试图将硬件推向极限,这可能非常困难——你不能把它抽象掉。大多数游戏开发仍然是相当低级的C++工作。如今,我们可能比大多数其他程序员更少处理数据库(尽管网络游戏正在改变这一点)

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

让游戏变得“有趣”是最难做到的事情之一——用商业术语来说,这“意味着极不稳定的需求”,因为设计师们不断改变他们对事物应该如何工作的想法,以追求那难以捉摸的有趣因素

最后,游戏一般都是一艘船一次,没有机会修复东西之类的交易。这实际上意味着很少涉及代码维护,因此传统上可能很少关注代码质量问题。随着发布后内容添加、在线游戏和现代项目规模的不断扩大,这种情况正在发生变化


总的来说,这是一个令人难以置信的令人兴奋的领域,但它的缺点是收入往往较低(因为对于开发者来说,这是一个财务上非常困难的行业,而且因为它很受欢迎,总是有新的人才在找工作)。

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

  • 除非你是那些新型工作室(如艾多斯蒙特利尔或暴雪)的幸运员工,否则总有一个期限太短。在商业编程中,你主要是为自己弥补最后期限
  • 业务应用程序服务于某些特定需求。游戏的目的是娱乐人们。在游戏结束之前,你无法真正预测它是否会失败
  • 在比赛的各个方面,表现都是至关重要的。编写易于维护的代码是第二优先事项。在商业编程中,好的代码是最重要的
  • 对于业务应用程序,一个