找回密码
 立即注册
查看: 1377|回复: 20

最适合游戏开发的语言是什么?

[复制链接]
发表于 2021-1-9 13:39 | 显示全部楼层 |阅读模式
最适合游戏开发的语言是什么?
发表于 2021-1-9 13:43 | 显示全部楼层
如果只能選擇一個語言,我會選C++。我二十多年前的答案和現在一樣,估計還可以延續多至少十年。
发表于 2021-1-9 13:48 | 显示全部楼层
对于初学者来说,语言的选择并不重要。

游戏开发者作为一个群体包括很多不同的分工,从游戏性编程、界面交互到服务器编程、架构设计和图像渲染。对于开发者的要求有很大区别。由于有着成熟商业游戏引擎和负责引擎研发的专业团队,在这个行业里的很大一部分程序员都不需要掌握太复杂的编程思想和算法就可以进行游戏开发的工作。当然想要做优秀的程序员和优秀的作品,对技术和思想的深入掌握是不可或缺的,不过如果是刚入行就考虑这些问题,反而会让学习的难度加大很多。

个人认为,选择编程语言就是这样一个“专家级”的问题,由于有大量商业引擎和库,在应用层面上,不同语言之间的差距并不大,基本上同样的事情,借助合适的库就可以通过不同语言来实现。作为初学者尤其是游戏开发初学者,根本没必要关心底层的东西,相比于其他软件,游戏开发在内容生产、细节打磨、体验优化方面需要做的事情太多了,而这些工作都不需要底层的知识就可以去做。而当初学者经过多年实践经验的打磨,到了要自己做引擎做架构或者为他人编写实现库的时候,才需要根据具体需求的情况选择实现最容易效率最高的语言。

===========

最后说下结论,先选择一个引擎或开发框架,再学习这个框架支持的语言,开始的时候不用学的很深,掌握基本语法,会查api就够了。当然宏观的编程逻辑和面向对象之类的思想还是要掌握。拿题主的例子来说,因为先接触了cocos2d-x,所以从C++开始学没有什么问题,学习材料可以选择浅显易懂一些的,看不懂的部分不用硬着头皮看,以能解决问题为主导思想就好。
发表于 2021-1-9 13:55 | 显示全部楼层
虽然是个老问题了,还是留个爪,让更多人少走弯路。
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++的地位越发稳固而不可替代。
发表于 2021-1-9 13:55 | 显示全部楼层
大致列举一下
2D页游:AS3 JS
3D页游:AS3 C#(Unity)
IOS游戏:Obj-C js/lua(Cocos-2d-x) js/C#(Unity) AS3
安卓游戏:java js/lua(Cocos-2d-x) js/C#(Unity) AS3
在线小游戏:AS3 JS
大型单机游戏/客户端MMORPG::C++ C#

其中AS3 JS C#(Unity)都是跨平台的。AS3(flash)目前被唱衰,JS目前又比较翔,Unity还不错。

如果你没有非要万事亲力亲为的强迫症,用游戏工具来做游戏是个不错的选择。
游戏制作软件比较
发表于 2021-1-9 14:03 | 显示全部楼层
别局限在语言上面。就手游来讲,10年前是J2ME的java语言,和看起来很高大上的C语言。现在都是C++、Object-C、C#、Java以及各种脚本语言。这些语言被使用的背后是硬件的升级(不要忘记摩尔定律)和更好的解决方案的推出。举例来讲,Unity3d流行使很多C++阵营的人一夜之间用上C#,Cocos2d-x的流行又使人离不开C++。苹果的手机漫天都是的时候,Object-C也就成为了很多开发者必须要会的东西。

所以,选择的时候,首要的不是语言,而是你选择用什么东西做游戏。语言只是其中的一部分,不能本末倒置。
发表于 2021-1-9 14:10 | 显示全部楼层
性能敏感部分:c++
一般逻辑:c#
供非技术使用脚本:易语言(或者类似的中文脚本,我没有开玩笑。不过这只限于中国公司。全球公司用lua或者basic)


这是理想状态下的正确选择。
发表于 2021-1-9 14:14 | 显示全部楼层
Unity-Technologies/EntityComponentSystemSamplesWe want the majority of our engine code to be written in C#
Previously most of our engine code was written in C++, which creates a disconnect with how our customers write code and how programmers at Unity write code. Due to the Burst compiler tech & ECS, we can achieve better than C++ with C# code and as a result we can all write code exactly the same way.
所谓 DOTS == C# Job System + Entity-Component-System + Burst compiler
发表于 2021-1-9 14:16 | 显示全部楼层
谢 @王校长 邀请

我来唱个反调吧,对于初学者来说,是有Lua及类似的脚本语言才是最适合开发游戏的语言,初学游戏开发的人需要的是快速开发出游戏原型,保持住对游戏开发的热情,其他东西的学习可以延后考虑。

现在包括Unity3D和Cocos2d-x都有Lua binding,同时Cocos2d-x有存在quick-x这种更加方便的引擎,对于初学者来说,没有理由不使用Lua了,不是吗?
发表于 2021-1-9 14:21 | 显示全部楼层
C++ 结合 Lua。
C++做底层和核心功能层,如网络数据库底层,图形渲染, GUI管理等部分,并提供游戏功能接口和Lua调用
Lua负责游戏逻辑,界面逻辑,网络消息处理等部分。


如果觉得C++上手实在太难,可以考虑C#,WPF做图形和界面还是比较灵活的。况且即使开发不出来独立游戏,还可以积累点经验去做Unity
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-16 00:26 , Processed in 0.098797 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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