1、先说结论:
现代各种领域的开发技术已经成熟,不再能随意选择开发语言和技术栈,绝大多数情况下只能使用比较流行的方案、工具、和语言。
以上观点不仅适用于游戏开发领域,其实更适用于网页前端、网站后端、爬虫、大数据、AI等等其它方向。
举个例子:用python开发游戏其实是很有趣的,特别是语法上比较便利。但是随着时代发展,采用python的游戏引擎越来越少、越来越边缘化,离主流技术越来越远。
现在有些人选择用python做游戏更多的就只是以学习为目的了,缺少很多常用的工具、技术支持,需要自己造轮子,离做出真正的游戏会比较远。
类似的,现在编写爬虫绝大多数情况下都会使用python;学习AI的课程 99%会采用python+TensorFlow;网页前端基本只能用javascript(以及js的衍生语言比如typescript)。
由于现在做技术非常有必要沿着前人的路继续走,所以只能选择相对成熟的技术和语言,没有太多自由选择的空间。
2、具体到游戏开发上,如何选择呢?
目前王道之选应该是Unity引擎,开发语言为C#。它也是在与Cocos2d、UE4等成熟引擎的竞争中脱颖而出的,在功能、效果、开发难度上取得了很好的平衡。优点不需多言,反正是大多数人的选择。
其次是UE4(虚幻4,unreal engine 4),UE4对于高性能设备(电脑和PS4等)支持更好,用于开发手游也不错。上手UE4的主要问题是知识系统相对繁杂。
比如Unity的物理系统,碰撞体、刚体组件都比较简单和统一,脚本联动也很好理解,初学者掌握起来很快。相比之下UE4的相关组件要多很多,且由于窗口比较多,初学者往往会迷失在一些奇怪的地方(当然熟悉了之后就没问题了)。
UE4的开发语言是C++,但是游戏逻辑可以不写一行代码,直接用“蓝图”解决。使用“蓝图”开发游戏的利弊就不展开说了,总之UE4为用户提供了“较低的门槛”与“较高的门槛”这两种选择;而Unity是提供了统一一种“适中的门槛”。具体好坏见仁见智了。
游戏开发还有另一个分支——H5游戏,也就是微信小游戏、网页游戏等,也可以打成app包。在这个领域中,cocos2d-h5又大有用武之地。但是目前这个领域主要还是服务于小游戏、简单类型的游戏的,离“现代游戏开发技术”有一点距离。
3、关于入门、熟悉和深入开发
现代引擎已经提供了很友好的开发方式和编程方式,Unity的C#,UE4的蓝图等等。建议初学者把绝大部分精力花在这些主流的开发技术上面。无论用哪种语言和技术,其思想以及解决问题的方法都是相通的,使用主流技术学习曲线更平滑、提高也更快。
另一方面,C/C++这些更底层、潜力更大的语言未来也要掌握。对于想走技术路线的人来说,这些底层技术是迟早要掌握的(初学者可以不急着先学这些)。不仅在UE4里面C++可以直接用到;即便是用Unity,掌握C/C++以及了解底层原理也会大有裨益,比如现在流行的tolua等扩展库就是把C/C++编写的库与C#做了结合。
总结来说:首先,一开始要跟上主流技术;其次,游戏开发的技术方面非常注重积累,底层技术这几十年来也一直在发展,C++的地位越发稳固而不可替代。