C++游戏开发前景讨论
C++游戏开发前景还是很不错的。
为什么「多数」游戏服务端是用 C++ 来写呢,我觉得这个「多数」很可能是错的,没有任何数据支撑C++写的游戏服务器占大多数。但是我自己进鹅厂以后一直是用C++写游戏服务器,而且是纯C++,我了解的不少团队都是纯C++,也有极少数团队换成了golang,我参加评审的时候还碰到过用java写游戏服务器的项目。
下面是个人的一些见解
1、游戏引擎不纯粹
游戏引擎并不是那种特别短小精悍、几个神奇的算法加起来构成稳定健壮的系统的那种程序。比方像Git、Lua、SVN类似的程序或者系统,虽然看似高深,但是功能边界非常清晰。
现代游戏引擎,除了一些小而美的2D引擎,都是无可避免地走向越来越复杂、越来越集成化的方向。很多功能早就脱离了“渲染”这个核心任务,而是要考虑逻辑扩展、编辑器接口、资源管理、资源编辑器的集成、嵌入脚本引擎等等繁琐的功能中去。而且很多引擎还要从底层支持UI系统,UI这东西可真不小,而且是典型的特别适合用经典面向对象实现的系统。
2、规范约束,释放C++的潜能
既然如此,如何进行良好的工程管理,如何让大量思想不完全一致的人协作起来,是更重要的任务。如果其他人的思路和你不一致,总不能指责别人“你语言没用对”吧……怎么才算用对,难道你用的就一定对?
C++在统一观念上不见得更好,甚至问题更大,因为支持多种编程范式……但是如果在工程中做出良好的规定,什么能用,什么不能用。经过限制之后C++的语法特性真的能解决很多问题,毕竟有原生的继承,好用的泛型,特别是C++11之后泛型变得越来越好用了。
C++语言特性过于太多,以至于很多地方都被人批判。但是实际工作中,我们总能通过交流沟通、制定规范、代码审查来避免绝大多数坑,其实某些“缺点”都是可以解决的。
反观C,在参与者多了之后问题挺大的。比如:1、用C写面向对象程序,每个guru都有自己独到的见解; 2、指针、类型的转换过于跳脱,互相审查代码有心智负担。当然guru不怕这个。
3、用的人少不见得就不好
话还要两面说,用的人少就不代表不好。如果进行良好的封装,不要考虑“大而全”,其实C+Lua的方式来制作引擎也特别好。兼顾了底层效率和灵活性。总之,具体用哪种技术路线其实还要看引擎的设计目标吧技术选型这事,说到最后更像是经济学问题,不是纯技术问题。
学习C++ 的 好处:
最大的好处是,学会了C++就学会了大多数语言的通用的大部分,而学其他语言则并不能。
C++是一门难度较高的语言,并且非常严肃严谨。
在高级语言满天飞的今天,很多人会问题主这个问题。
C++至少有以下几点优势:
- 和C语言兼容
- 近乎零开销抽象
- 极高的性能及运行效率
- 极高的可底层可控性
- 极高的成熟度
- 极高的兼容性
- 适合和硬件打交道
以上优势决定了C++在以下领域,依然是霸主和主流:
1.在游戏和工具领域仍然是主流
首先是游戏领域,Milo Yip表示——
程序员必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新。其次是工具领域,无论是网络安全还是杀毒软件,C++仍是主流语言。
2.很多领域需要极高的性能和控制性
需要程序员压榨每一分硬件性能的地方并不多,特别是现在的服务器核心数很多,只要能充分利用多核心,每个核心没有完全挖掘也是可以接受的。
一般来说,需要压榨硬件潜力的领域有:
1、操作系统
每个人每天都要用操作系统,这一块的性能哪怕提升1/1000,全球计算机加一起也是相当可怕的。
2、游戏引擎
更好更酷的游戏是主机硬件进化的主要推进器之一,而游戏一旦卡顿,基本就没法玩了,这个领域提升性能和可控性有无限需求。C++一直以来都是编写游戏引擎的首选语言,而且几乎是唯一语言。
3、嵌入式程序
单片机的硬件性能很弱,存储空间极小,C++就派上大用场了!
4、加密与安全方向
这个领域和操作系统类似,每个人每天都会用到。所以用C++来优化很有必要。
不要担心学习C++之后找不到工作,退一万步说,掌握了C++再去学习其他语言,只能说:非常容易。大家只知道程序员工资高,同样的,选择了程序员这条路也要做好付出更多努力的准备,未来的路很长,我们终身学习,共勉。另外,程序员多刷算法题好处多多,算法厉害的人进大厂非常容易。