Gre*_*ley 14 language-agnostic
像大多数开发人员一样,我是一名业务开发人员,其实质上包括将UI打到一些后端数据存储上.(我们都知道它还有很多,但这通常归结为它.)
我知道游戏开发与业务开发有很大不同,但我很难向我的朋友解释它.我希望SO社区可以帮助我.
对我来说,现代游戏开发者在操纵三维图形方面做了大量工作.在游戏代码中(我猜这里),你正在组装多边形(或类似的东西),旋转'em等等.这涉及到一种不同的思维方式来操纵关系数据(例如).我不知道,真的.我只知道它有所不同.
编辑:
我应该强调,"开发"是指"编程",而不是创建游戏或商业软件的所有方面.对不起,我原本没说清楚.
谢谢!
Jim*_*uck 12
我从事游戏开发,但很久以前就来自业务开发.如果你在物理或图形方面工作,游戏开发在数学方面是非常严格的.对于低级别的东西,即使AI也需要相当多的数学.就屏幕上的绘图而言,硬件通常会处理大量的多边形操作数学.使用(通常)许多在预处理步骤中运行的工具来生成游戏内数据也很多,如果要生成可见性数据,这也可能是数学密集型的.
在编程领域方面,除其他外,我们处理:
其中一些涉及非常严肃的数学和算法知识.最重要的是,我们面临极其严格的速度限制,通常也必须非常小心内存使用.我们面临着不断变化的硬件,因为我们正在努力将硬件推向极限,这可能非常困难 - 你不能只是将它抽象出来.大多数游戏开发仍然是相当低级的C++工作.我们现在可能比大多数其他程序员处理的数据库少(尽管在线游戏正在改变这一点)!
程序员通常是现代游戏项目中的少数:它完全是关于内容创建(动画,建模,纹理,音频和设计).这意味着许多游戏程序员致力于使内容创建过程高效,而不是致力于游戏代码本身.尽管它必须处理大量数据集,但这项工作可能会有更宽松的速度和内存限制.
让游戏变得"有趣"是最困难的事情之一 - 在商业术语中,它"意味着非常不稳定的要求",因为设计师不断改变他们对事物应该如何运作的看法,追逐难以捉摸的有趣因素.
最后,游戏通常是一次性的,没有机会修复某种交易.这实际上意味着涉及的代码维护非常少,因此传统上可能对代码质量问题的关注较少.随着发布后内容增加,在线游戏和现代项目的庞大规模的增长,这种情况正在发生变化.
总的来说,这是一个令人难以置信的令人兴奋的领域,其缺点是它的薪酬通常不那么高(因为对于开发人员而言,这是一项非常艰难的业务,而且因为它很受欢迎,所以总会有新的供应商寻找工作).
关于游戏开发的不同之处,只是一些随意的想法.请注意,虽然我试图抑制这种冲动,但可能会有一些讽刺.
但是好的东西来了:
业务发展通常更宽容.
原因基本上是这样的; 通常,人们都在使用商业软件.人们支付使用游戏软件.
这听起来好像没有回答你的问题,但确实如此.当我的老板说"使用微软词来获取该文档"时,他们提供的是软件,我有义务使用micosoft字.因此,在使用它时,当它决定重新编号我的所有章节标题"只是因为"或者保存到磁盘需要30秒才能解析OLE引用(为了天堂的缘故,这只是一个非常快的EXREEL SPREADSHEET!),我只是坚持不懈我的牙齿,并提醒自己,我得到了报酬.
然而,如果我在游戏中,我期待娱乐.我期待这种体验能够正常,顺畅,干净地工作,没有严重的口吃或问题.
再次,了解为什么这是编程的问题; 游戏中的那些循环和结构最好是DAMN好,以确保没有重大减速,游戏引擎没有口吃,没有什么能让消费者只花费他辛苦赚来的X金额说"这是一块废话"走开了.使用商业软件,你可以逃脱这种事情; 在某些方面,它几乎是预期的.再看一下Microsoft Word的性能; 如果它是一场游戏,它就会被淘汰出局.
我知道我听起来像是在挑选Microsoft Word,而且我一般都是,因为我发现它很可怕,但对于这么多软件来说,这一点确实如此.CAD软件是另一个例子.与游戏相同的基本事情,但总的来说,如果没有大量的培训,它会很慢而且难以使用.
差异归结为抛光,以及预期的抛光程度.是的,商业软件的灵活性通常比游戏更灵活; 但更重要的是从编码的角度来看,代码让GOT在游戏中高效,干净地工作; 通常,商业软件对草率代码更加宽容.
在商业应用程序中,通常接受未经优化和慢速的算法; 虽然它们永远不可取,但经常做出的商业决策是增加另一个功能而不是提高性能.但在游戏中,性能是一个特征,也是一个成败的特征.
业务开发和游戏开发之间的一个重要区别是涉及的学科数量.大多数商业软件都是由一组开发人员创建的,他们都拥有相同的基本技能.相比之下,游戏由游戏设计师,视觉艺术家,3D建模师,动画师,音乐家和开发人员组成.
小智 5
一个应该有无限循环,一个不应该. - Rich Bradshaw
富是对的.从编码的角度来看,游戏循环基本上根据游戏的状态(如控制器输入,对象碰撞等)创建动作的"框架".这个循环无限重复,直到某些游戏元素的状态为止或输入告诉它停止或"退出".这种方法使CPU和显卡非常繁忙,因此游戏机具有快速处理器甚至更快的显卡市场.
业务应用程序没有活动循环.相反,他们闲置等待诸如点击,来自Web服务客户端的消息,HTTP GET请求等事件.然后他们响应该事件.
当然,游戏通常比商业应用更加几何密集,但这并不完全正确.考虑图像编辑,CAD和图形工具.对于许多人来说,这些是业务应用程 但在大多数情况下,业务应用程序与查询数据,显示数据,接受用户输入以及根据用户输入修改数据有关.在许多情况下,业务应用程序通过网络甚至Internet进行此操作,但这是一个简单的说法.
业务应用程序开发人员和游戏开发人员的技能和思维方式通常不同.游戏开发者在创建具有无限选择的上下文或"世界"的用户体验方面需要考虑有限数量的输入结构.业务开发人员是相反的,具有有限的潜在上下文集,通常是网页或基本窗口,以及无限(或几乎如此)的输入和数据显示组合,以创建与游戏开发人员完全不同的用户体验着手实现.