欢迎光临【多玩游戏注册登陆】-首页网站!
公司名称:多玩游戏开发注册公司
公司地址:辽宁省鞍山市多玩游戏注册集团
公司邮箱:679596@qq.com
公司电话:400-123-3356
招商QQ: 679596
公司网址:http://www.hlxlzsm.com
新闻动态您当前的位置:【多玩游戏注册登陆】-首页 > 新闻动态 >

首页-(金亚洲注册)-首页

更新时间:2020-05-11 21:30

  

  首页-(金亚洲注册)-首页平台官网:【QQ679596】【微信kcwl996】从我自己3A开发程序的经验来简单回答一下这个问题,本人有幸在微软343 industries参与了引擎和管线),也有幸在索尼santa monica studio参与了gameplay的制作(新战神),算是参加过游戏开发的几个主要领域了,实际上游戏开发程序的工作主要分为三大块:gameplay,pipeline和引擎,这三块都有自己的难点和重点,下面分别稍微解释一下,解释之前,一个短小的结论,游戏开发的程序是软件开发中比较难的一块。

  1: gameplay,gameplay程序的难点在于,解决的问题非常广泛,从fps游戏里面的枪械,车辆,到战神里面的斧头,怪兽,再到uncharted 4里面的绳子,根据游戏的类型,需要解决的问题几乎涉猎所有领域,这对gameplay程序来说是一个很大的挑战。gameplay程序从技术的角度来说需要保证系统能运行,还需要很强的对游戏的理解,做出来的东西保证好玩,这就不是一个纯粹的技术问题了,需要本身对制作游戏的类型非常了解。另外gameplay程序特别是3d游戏的gameplay对数学的要求很高,还要求非常善于和策划还有美术动画沟通,最难最烦人的一点gameplay都不是一次性完工的,需要大量的推翻,迭代,重做,如何在质量和迭代速度之间找到平衡也是一大难点。gameplay是最靠近玩家的程序。

  2: pipeline,中文大家都把这个叫管线,基本上就是工作室内部用来制作游戏的所有工具,流水线的总称。这类程序打交道的主要对象就是自己工作室内部的各种开发人员,从美术,策划到动画,特效等等,他们对大型游戏开发非常非常重要,他们保证了开发流程的高效进行,他们开发的工具,流水线,包括小到bake light map的工具,给策划调整数据的工具,大到关卡编辑器,build system,等等,好的工作室和差的工作室的一大差距就是内部的管线先进性,我的弟弟@Ryan槐宏武是顽皮狗的引擎程序,顽皮狗的内部管线相当先进。这一类程序需要和gameplay部门打交道,需要和美术,动画等部门打交道,还需要和引擎程序打交道,需要满足内部用户的需求,也需要解决底层的技术,要求也非常高。很多工作室管线: 引擎程序(runtime)。这一类程序离玩家用户最远,技术的专业程度最高,对纯程序技能,底层优化都非常要求高,专业技能最窄但是最专精。渲染引擎需要你懂底层的计算机优化和图形的相关知识,物理引擎需要你物理知识和底层优化,动画引擎需要动画知识和底层优化,等等,一般这种底层的系统和gameplay最大的区别就是,他们实现的时间较长,跌倒的次数较少,但是非常非常稳定和高质量,引擎基本上是一个游戏的基石,是最核心最核心的技术。

  综合来说,这三个领域的程序,基本上不能简单的说“某一个比某一个难”,“某一个比某一个重要”,根据程序员自己的性格,技能,按照需求分配,才是最优化的解决方案,一般一个游戏studio的程序人数是最少的,但是工资也是最高的(平均),也基本不可能外包,裁员的时候一般最后才动程序组:p

  和it其它领域比起来,由于涉猎知识很广,要求很高,人才难找,所以算是软件开发中比较难的一块,特别是3A的游戏开发。

  我是参与过DOS/Windows/Xbox/Wii/Xbox360/PS3/Android/iOS游戏开发的程序员,觉得难以肯定或否定本命题,以下只简单列出一些游戏开发相对一般软件开发可能比较困难的地方:

  实时性:大部分游戏有实时性的要求,期望每一帧的运算不超过额定上限(如 16.6ms)。核心部分会采用底层的优化手段。在许多网络游戏中,信息同步的实时要求也高于大多数软件。

  互动性:一些游戏的操作和互动会比一些软件复杂,例如操控角色需要处理角色在不同状态下的动画处理,角色行走时也可能涉及三维碰撞检测和相关的物理模拟。一些游戏的游戏逻辑错综复杂,要考虑每个功能和其他功能之间的影响。由于实时性和互动的复杂性,一般比较难做自动单元测试。

  技术广度:游戏涉及的技术比较广,如计算机图形学、图像处理、计算机动画、计算机音频、计算物理、人工智能、人机界面、网络同步、内容创作工具开发等。鉴于实时需求,也需要CPU、GPU、内存分配、操作系统等底层知识。每个游戏几乎都会使用到多种编程语言来开发,如 C++、C#、汇编、着色器语言、脚本语言(如Lua)。有些游戏(引擎)还会自行实现专门的脚本语言,涉及编译理论。每次说技术广度都可以传送到miloyip/game-programmer。

  团队配合:游戏的制作需要多种专业共同合作,例如团队中的美术人员就比一般的软件开发多很多,程序员如何配合和对接策划、美术、音频、测试等多种专业人员,并提供各种专业所需的专门工具,也是其他软件行业中少有的情况。

  开发时间:有游戏项目几百人几个月完成上线,我觉得算是软件开发业界奇迹。

  当然其他某些开发也会面对上面部分的问题,而游戏开发也会面对许多软件开发共通的问题。另外,一些人认为容易的事,另一些人可能觉得是困难的。游戏的目的是娱乐,容错要求和准确性低于医疗设备、自动驾驶等软件。一些答案说到后台方面的技术,基本上网络游戏都会用到甚至要专门研发相关的技术,去支持千万上亿玩家同时在线。

  我认为游戏在未来还有很多可能性,每一次的进步都是靠很多人的努力,一步一步跨过来的。

  举个例子来说,你可能一开始继承了一栋条件不错房子。但是久而久之你就要对房子进行修理和改造。多年过去之后,你可能已经对房子的大部分都了如执掌。也替换了房子的几个重要部分。这时候你说你是不是就已经成为一个从平地就可以起房子的开发商了?我觉得并不是。

  但你说如果把上面的例子换成一辆自行车,如果你对一辆自行车拆拆装装好几年,那么你从标准配件从头组装一件也是可以的。归结起来,房子在重力和空间下的影响和自行车是不一样的。

  但是如果说作为持续开发,其实维护自行车和维护房子都是普通人能掌握的技能。这就是初始开发和持续开发的不同。

  其实大多数人可能没有意识到,我们说这个行业那个行业,其实很多人都在进行持续开发。比如说汽车业搞引擎的,大多是在一个有十多年历史的引擎上进行改进。而这十多年的历史凝固在已有的引擎上,已经没有人能在短时间内完全解释清楚。但是这并不妨碍持续开发是需要大量脑力,而且可以产生巨大效益的。

  从另一方面说,持续开发所需要的智力和系统掌控能力,在行业间差别并不大。辛苦上一两年当当学徒都能入门。而初始开发就不一样了。从头搭建一个大型系统,不但系统本身的运行模式要在你的脑袋里有,而且怎么构建脚手架去搭建它本身就是一个水平很高的技能。

  游戏开发,从需要的理论知识和现有的开发工具来说,需要程序员自己搭建脚手架的水平比其它类型的开发高很多。但是从头开发一个框架和引擎毕竟是小概率事件。大多数人都是在一个一个已经可以比较完美运行的系统上进行持续开发。

  说明:持续开发并不限制开发的规模,也就是说并不是小打小闹。可能你从一台引擎开始改,最后改出来的型号和以前差别很大,别人都看不出来是不是重新开发的了。但是你仍然不是「从头开发」的。因为一开始有没有一台可以比较完美运行的引擎,对开发的影响是完全不同的。

  游戏开发技术上的难点主要在于其涉及面非常之广泛,而且涉及到的每一个技术点都有相当的深度可挖,这点已经有很多答主提到过我这边就不展开了。

  更复杂的是,每种游戏类型,其涉及到的数据结构、基础算法、shader、UI架构、AI.....等等方面都有着大量的差异。即便是最有经验数十年的开发者,也只能敢说自己精通某一类型的游戏开发,换个类型也只能慢慢再积累经验。另外,游戏引擎的迭代速度相对于其它IT行业的开发工具相当之快,往往每隔两三年就能有较大的改进和性能提升。因此对开发者的学习能力有着相当高的要求,赖在某个技术或者引擎上吃老本是万万行不通的,这一点在游戏行业尤其突出。当然这也带来toolchain不稳定的弊端,很多人就是因此放弃游戏开发。

  在引擎之外的工程实现上面,游戏开发存在着需求多变的现实。在互联网行业,一个应用的核心功能一旦确定,架构上就很少会有大改动或者全部推翻重来的情况,同类型的网站甚至完全可以使用通用的框架和架构进行开发,也有很多高水平的开源架构可供学习。而在游戏行业,核心玩法在确定下来之前,进行反复修改试错甚至全部推倒重来是常见现象。即使渡过了确立核心玩法的阶段进入内容开发期,仍然要考虑到架构的稳定性、易用性和可扩展性。与互联网行业不同的是,策划的脑洞程度往往和黑洞差不多,你永远无法预料到需求会如何变化。因此在写游戏架构时,往往需要一些更高程度的抽象和模块化封装。

  但是,“更高程度的抽象和模块化封装”是需要花时间和人力成本的。在时间人力有限的情况下,是保证尽快出可用的demo,还是把时间花在这些基础和工具性质的开发上?这当中的选择本身就是一个难点,而且并没有任何通用的答案。

  当然,以上这几点在互联网、软件行业属于共性,但从我个人的体验上来说,游戏行业尤其突出。

  就好像“站在技术与人文的十字路口”一样。游戏本身是一种艺术形式,开发者的技术水平决定了游戏质量的下限;而艺术和人文修养,就决定了成就的上限。以上我提到的任何一个方面,要做到精通恐怕都需要用十年为单位的时间。何况每个方面都很重要呢?

  看是游戏的哪一部分,假如是拼接界面,或者是使用别人封装好的引擎来写代码的话,并不难。难的是封装引擎这一部分。是不是最难我不知道,反正是挺难的。

  我做的主要工作就是设计并编写工具和SDK来将flash的矢量和动画导入到手机游戏中使用。我们仅仅是做最简单的2d游戏,基于cocos2dx, 相当于在cocos2dx的基础上面在嵌入一个可以操作flash的动画引擎。这种情况已经是游戏引擎中最简化的情形了。其实我都不好意思称呼自己做的东西叫引擎。

  这个事情困难的地方,并非是某个算法的实现,而是怎么将现有的模块组积起来,不断重构和调整,适应项目的需求,必须运行快。就这样简单的东西,就涉及很多功能模块,比如:

  swf解析。有人会觉得swf开源库到处到是,随便找个就可以了。问题是那些开源库,swf解析跟绘画部分都绑得很死,真可以实际使用,还是需要对着文档将解析部分单独抽离出来。

  swf格式会慢,必须预先转换。下一步就涉及到导出格式的设计,简单的文本格式会慢,就需要设计二进制格式。单纯二进制格式,就设计了3版,需要在读取速度跟大小之间取平衡。

  动画导出和预览工具第一次使用Objective-C编写, 只可以在Mac上面运行。第二次用Qt编写,跨Mac和Windows。

  代码结构大调整了一次,将所有的平台相关的东西封装起来,移植到iOS,安卓,Qt。

  渲染部分,重写了一次,第一次基于cocos2dx的CCNode,实在太慢。第二次将动画的渲染全部改写,将动画节点集中起来,直接基于opengl来编写。

  还有一系列的功能,比如切换shader,纹理缓存,内存分配器,后台预加载,颜色混合(用来做光效,比如爆炸效果需要亮些),动画快进和慢放,角色换装换武器,UI界面支持(直接使用矢量来搭UI),lua脚本绑定等等。

  感觉上,最初一些基于现成模块写的东西,随着速度和定制的要求,慢慢被替换并重写。接下来还需要嵌入Box2d物理引擎,隔离opengl,支持metal等。现在回头看cocos2dx上的DragonBone,感觉它太弱了。

  上面这只是最最基本的,很多人看不起的2D引擎,还只是2D引擎中的动画部分,有人甚至觉得这些东西不值一提。对于我来说,从头做出那套东西,也值得骄傲的,可能我太菜了。上面每一部分都不难,难点就在于将上面所有的东西集成起来,将复杂性都封装起来,提供一个简单的接口给制作具体游戏的人来用,还要保证速度和可移植性。很多部分是相互矛盾的,需要权衡取舍,并非是网上找段代码,简单合并就成了。

  商业化的3D引擎,加上AI,物理等东西,那个困难程度很高的,我自问已经把控不了。当某人总说某样东西很简单,就需要小心了,他不会尊重你的劳动成果,因为太简单了,普通大学生也可以做出来。但实际上就算很看起来很简单的东西,你要做好,也是很难很难的一件事情。

  这个问题展开说其实挺有意思,可以从抽象的角度分析一下,就当是思维游戏了。

  先说下前提,单纯的游戏逻辑开发肯定说不上有很大难度。很多游戏单论程序方面并不复杂,但是整体来看,在美术或者某些设计方面很有独到之处而很受欢迎。

  多年以前,MMORPG网游是市场的主流游戏形式,丰厚的利润带来了技术的飞速进化,包括服务器承载力和客户端表现力两方面。而正当MMO演化至大型3D之时,智能手机突然兴起。手游崛起带来一个谁都没想到的结果,就是技术的内化发展。“内化”是借用的一个词,这里的意思是说技术进一步深化和攻坚暂停了,而转向了更好地利用现有技术、完善现有技术的方向。比如手游引擎往往是从端游和次世代引擎简化和定制性优化而来的。在手机上很多技术都有所“倒退”,比如画面真实性要求更低,同场景用户数更少,等等。

  ,是人类欲望的中坚力量。所以娱乐终究是一种无底洞一般的产业,永远不用担心娱乐技术(特别是游戏技术)会走在时代的后面。>

  编程就跟研究物理一样: 底层技术(基本粒子)和宏观架构(宇宙)是最难的。

  以前学编程的老师说过,相对于应用软件来说,游戏开发是编程里最不好学的。

  虽说算法在编程领域哪里都重要,但是在游戏开发中算法比应用软件更重要,这里面涉及了数学和几何图形学的各个方面。

  简单的即时通讯功能大学生也能写,但是承载量和稳定性能达到微信和QQ这个级别的全世界也没几个。

  电商网站大学生也能写,但是能撑得住双11流量的淘宝全世界可能真没有第二个。

  游戏开发的一部分难度在于需求多而复杂,的确一般的商用软件很少到达这种复杂度。但是其他的行业有其他行业特有的复杂度。这种单纯的比较意义不大。

  游戏图形:没前途,二十年前卡马克自己都说过,3D图形已经发展到瓶颈,除非有大数学家出来,颠覆整套以多边形为核心的实时渲染体系,否则再往下走都是细节上寻求突破,君不见这两年的图形都在搞什么树更好看点,水更真实点,云更自然些。但凡是个游戏程序手里都有几套图形引擎,所以才会说 “render is nothing” ,游戏图形再往下走,研究游戏图形的都是动物学家,植物学家了,细枝末节的东西做的更细致些都被当成创新了,但凡一个闲着蛋疼的人,四处看看抄抄,读读论文,只要不笨又肯花时间,都能做得出来,因为所有难题几乎都被别人解决完了,有啥意思呢?

  需要是「大数学家」级别才能有所突破了,否则只能修修补补,出不了什么大的成果。现在搞图形学的各个实验室基本没有几个还在搞理论了,大部分都转向可视化、虚拟现实或者更虚的东西去了。

  游戏业务:没前途,抄呗。只要游戏类型不创新,游戏业务永远都是苦力活,堆人就能弄出来的东西,然而游戏各种玩法的原型创新早在十多年前就结束了,现有各种类型游戏,基本都能从十多年前的游戏中找到原型。

  没有达到一定的高度,根本没法创新,只能抄来抄去。其结果就是现在国内这个鸟样。

  游戏引擎:别意淫了,飞机引擎的确是世界上的尖端技术,你想学都没地方教,游戏引擎?书店里到处是手把手教你写的书,网上到处是给你抄写的代码,大学生都能做出来,也好意思叫引擎?卡马克的时代也许可以叫叫,那时就那么几个人会,对于游戏而言的确是关键部位,现在还叫引擎就是在意淫了,不就是其他行业一套 development suit 嘛。说起难度还不如有些称为 library + utility 的东西,看人家的名字多低调。

  大学生都能做出来的那些东西,你也说了,「还好意思叫引擎」?不正是说明引擎并非人人能做的吗?引擎的每一个部分要精通都是大牛,你说它简单?

  你说了那么多「没前途」,正说明了一般人搞这些领域很难有所建树,只能是做苦力,除非是真正的神牛才有可能取得突破。这不叫难?

  难道因为大多数人以前需要学习如何使用算盘,现在可以无脑按计算器了,就说数学这个东西现在变得简单了??

  说这些只是觉得匿名用户黑游戏开发黑得不够高端,并不是说游戏开发编程算是it行业中难度最大的,对于题主的问题爱莫能助。答非所问求折叠。

【返回列表页】

地址:辽宁省鞍山市多玩游戏注册集团   电话:400-123-3356    传真:+86-123-4444
Copyright © 2002-2025 【多玩游戏注册登陆】-首页 版权所有 TXT地图 HTML地图 XML地图 招商QQ:679596