找回密码
 立即注册
查看: 183|回复: 5

游戏开发的编程算不算是 IT 行业中难度最大的?

[复制链接]
发表于 2024-7-15 17:19 | 显示全部楼层 |阅读模式
游戏开发的编程算不算是 IT 行业中难度最大的?
发表于 2024-7-15 17:20 | 显示全部楼层
我是参与过DOS/Windows/Xbox/Wii/Xbox360/PS3/Android/iOS游戏开发的程序员,觉得难以肯定或否定本命题,以下只简单列出一些游戏开发相对一般软件开发可能比较困难的地方:

  • 实时性:大部分游戏有实时性的要求,期望每一帧的运算不超过额定上限(如 16.6ms)。核心部分会采用底层的优化手段。在许多网络游戏中,信息同步的实时要求也高于大多数软件。
  • 互动性:一些游戏的操作和互动会比一些软件复杂,例如操控角色需要处理角色在不同状态下的动画处理,角色行走时也可能涉及三维碰撞检测和相关的物理模拟。一些游戏的游戏逻辑错综复杂,要考虑每个功能和其他功能之间的影响。由于实时性和互动的复杂性,一般比较难做自动单元测试。
  • 技术广度:游戏涉及的技术比较广,如计算机图形学、图像处理、计算机动画、计算机音频、计算物理、人工智能、人机界面、网络同步、内容创作工具开发等。鉴于实时需求,也需要CPU、GPU、内存分配、操作系统等底层知识。每个游戏几乎都会使用到多种编程语言来开发,如 C++、C#、汇编、着色器语言、脚本语言(如Lua)。有些游戏(引擎)还会自行实现专门的脚本语言,涉及编译理论。每次说技术广度都可以传送到 miloyip/game-programmer。
  • 团队配合:游戏的制作需要多种专业共同合作,例如团队中的美术人员就比一般的软件开发多很多,程序员如何配合和对接策划、美术、音频、测试等多种专业人员,并提供各种专业所需的专门工具,也是其他软件行业中少有的情况。
  • 开发时间:有游戏项目几百人几个月完成上线,我觉得算是软件开发业界奇迹。
当然其他某些开发也会面对上面部分的问题,而游戏开发也会面对许多软件开发共通的问题。另外,一些人认为容易的事,另一些人可能觉得是困难的。游戏的目的是娱乐,容错要求和准确性低于医疗设备、自动驾驶等软件。一些答案说到后台方面的技术,基本上网络游戏都会用到甚至要专门研发相关的技术,去支持千万上亿玩家同时在线。
我认为游戏在未来还有很多可能性,每一次的进步都是靠很多人的努力,一步一步跨过来的。
发表于 2024-7-15 17:21 | 显示全部楼层
从我自己3A开发程序的经验来简单回答一下这个问题,本人有幸在微软343 industries参与了引擎和管线的制作(光环5),也有幸在索尼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部门打交道,需要和美术,动画等部门打交道,还需要和引擎程序打交道,需要满足内部用户的需求,也需要解决底层的技术,要求也非常高。很多工作室管线开发属于引擎组。
3: 引擎程序(runtime)。这一类程序离玩家用户最远,技术的专业程度最高,对纯程序技能,底层优化都非常要求高,专业技能最窄但是最专精。渲染引擎需要你懂底层的计算机优化和图形的相关知识,物理引擎需要你物理知识和底层优化,动画引擎需要动画知识和底层优化,等等,一般这种底层的系统和gameplay最大的区别就是,他们实现的时间较长,跌倒的次数较少,但是非常非常稳定和高质量,引擎基本上是一个游戏的基石,是最核心最核心的技术。
综合来说,这三个领域的程序,基本上不能简单的说“某一个比某一个难”,“某一个比某一个重要”,根据程序员自己的性格,技能,按照需求分配,才是最优化的解决方案,一般一个游戏studio的程序人数是最少的,但是工资也是最高的(平均),也基本不可能外包,裁员的时候一般最后才动程序组:p
和it其它领域比起来,由于涉猎知识很广,要求很高,人才难找,所以算是软件开发中比较难的一块,特别是3A的游戏开发。
发表于 2024-7-15 17:21 | 显示全部楼层
其实你要从初始开发和持续开发来考虑这个问题。
举个例子来说,你可能一开始继承了一栋条件不错房子。但是久而久之你就要对房子进行修理和改造。多年过去之后,你可能已经对房子的大部分都了如执掌。也替换了房子的几个重要部分。这时候你说你是不是就已经成为一个从平地就可以起房子的开发商了?我觉得并不是。
但你说如果把上面的例子换成一辆自行车,如果你对一辆自行车拆拆装装好几年,那么你从标准配件从头组装一件也是可以的。归结起来,房子在重力和空间下的影响和自行车是不一样的。
但是如果说作为持续开发,其实维护自行车和维护房子都是普通人能掌握的技能。这就是初始开发和持续开发的不同。
其实大多数人可能没有意识到,我们说这个行业那个行业,其实很多人都在进行持续开发。比如说汽车业搞引擎的,大多是在一个有十多年历史的引擎上进行改进。而这十多年的历史凝固在已有的引擎上,已经没有人能在短时间内完全解释清楚。但是这并不妨碍持续开发是需要大量脑力,而且可以产生巨大效益的。
从另一方面说,持续开发所需要的智力和系统掌控能力,在行业间差别并不大。辛苦上一两年当当学徒都能入门。而初始开发就不一样了。从头搭建一个大型系统,不但系统本身的运行模式要在你的脑袋里有,而且怎么构建脚手架去搭建它本身就是一个水平很高的技能。
游戏开发,从需要的理论知识和现有的开发工具来说,需要程序员自己搭建脚手架的水平比其它类型的开发高很多。但是从头开发一个框架和引擎毕竟是小概率事件。大多数人都是在一个一个已经可以比较完美运行的系统上进行持续开发。
说明:持续开发并不限制开发的规模,也就是说并不是小打小闹。可能你从一台引擎开始改,最后改出来的型号和以前差别很大,别人都看不出来是不是重新开发的了。但是你仍然不是「从头开发」的。因为一开始有没有一台可以比较完美运行的引擎,对开发的影响是完全不同的。
发表于 2024-7-15 17:22 | 显示全部楼层
游戏开发技术上的难点主要在于其涉及面非常之广泛,而且涉及到的每一个技术点都有相当的深度可挖,这点已经有很多答主提到过我这边就不展开了。
更复杂的是,每种游戏类型,其涉及到的数据结构、基础算法、shader、UI架构、AI.....等等方面都有着大量的差异。即便是最有经验数十年的开发者,也只能敢说自己精通某一类型的游戏开发,换个类型也只能慢慢再积累经验。另外,游戏引擎的迭代速度相对于其它IT行业的开发工具相当之快,往往每隔两三年就能有较大的改进和性能提升。因此对开发者的学习能力有着相当高的要求,赖在某个技术或者引擎上吃老本是万万行不通的,这一点在游戏行业尤其突出。当然这也带来toolchain不稳定的弊端,很多人就是因此放弃游戏开发。
在引擎之外的工程实现上面,游戏开发存在着需求多变的现实。在互联网行业,一个应用的核心功能一旦确定,架构上就很少会有大改动或者全部推翻重来的情况,同类型的网站甚至完全可以使用通用的框架和架构进行开发,也有很多高水平的开源架构可供学习。而在游戏行业,核心玩法在确定下来之前,进行反复修改试错甚至全部推倒重来是常见现象。即使渡过了确立核心玩法的阶段进入内容开发期,仍然要考虑到架构的稳定性、易用性和可扩展性。与互联网行业不同的是,策划的脑洞程度往往和黑洞差不多,你永远无法预料到需求会如何变化。因此在写游戏架构时,往往需要一些更高程度的抽象和模块化封装。
但是,“更高程度的抽象和模块化封装”是需要花时间和人力成本的。在时间人力有限的情况下,是保证尽快出可用的demo,还是把时间花在这些基础和工具性质的开发上?这当中的选择本身就是一个难点,而且并没有任何通用的答案。
当然,以上这几点在互联网、软件行业属于共性,但从我个人的体验上来说,游戏行业尤其突出。
最后,当在游戏行业历练过一段时间之后,就会发现游戏开发最大的难点并不在技术本身,而在于如何把技术和艺术结合起来,就好像“站在技术与人文的十字路口”一样。游戏本身是一种艺术形式,开发者的技术水平决定了游戏质量的下限;而艺术和人文修养,就决定了成就的上限
以上我提到的任何一个方面,要做到精通恐怕都需要用十年为单位的时间。何况每个方面都很重要呢?
发表于 2024-7-15 17:22 | 显示全部楼层
对于IT行业来说,难度高不高,只在于需求到什么程度,与行业无关
2048也是游戏,魔兽世界也是游戏,这两个难度的区别大家都看得出来。
简单的即时通讯功能大学生也能写,但是承载量和稳定性能达到微信和QQ这个级别的全世界也没几个。
电商网站大学生也能写,但是能撑得住双11流量的淘宝全世界可能真没有第二个。
游戏开发的一部分难度在于需求多而复杂,的确一般的商用软件很少到达这种复杂度。但是其他的行业有其他行业特有的复杂度。这种单纯的比较意义不大。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-1-22 21:36 , Processed in 0.104344 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表