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