为什么多数游戏服务端是用 C++ 来写呢,是历史原因还是性能方面的考虑?

用 C++ 是历史原因还是性能方面的考虑?感觉 C++ 开发效率相对较低,对开发人员的要求也高,用 C++ 写出一个健壮的服务端确实比较难,为什么很多…
关注者
3,142
被浏览
1,285,380

119 个回答

首先现在游戏服务端都是用得多语言组合开发的,不仅仅是C++,还有Java,Python,Golang, Erlang,C#以及各种脚本语言。

一个项目在做技术选型时把C++作为游戏服务端的主要开发语言大概有以下几个原因:

1.就如题主所言,有一定的历史原因,因为国内的游戏行业是在最近10来年催生起来的,加之很多项目要的是快速上线,所以就沿用了以前的老代码老框架,自然而然的继承了前辈的C++代码;

2.需要做实时战斗的游戏至少会把战斗服务器使用C++来做,尽管现在有非常多的语言适合开发游戏服务端,但是在实时性这一块依然没有多少语言能与C++相抗衡;

3.服务端需要集成物理引擎和高强度AI逻辑的也需要C++来做,这两者都依赖于非常高的CPU计算,那么在CPU利用率这一块,在上述语言中无疑也只能选择C++;

4.项目中大部分人包括后端技术Leader都是C++大神,他们有非常完备的工具链,他们用C++开发比用脚本开发更有效率,也更稳定。

至于其他如易开发、IO框架、高并发和稳定性(高稳定性是建立在团队水平上的)这些C++跟其他语言已经没什么大的优势。


最后夹一点私货,仅供参考:

游戏逻辑常常具有某些特定的模式,一旦模式固化下来之后,用合适的STL容器加上合适的操作,就能规范的写出很好的C++代码,开发难度并不高。例如,在某个战略游戏复杂系统中,我们曾经开发了近万行代码一次new都没有用过,对象全都使用unordered_map或vector管理,逻辑看起来仍然是非常简单清晰的,虽然是C++但维护难度并不高。

换句话说,当游戏项目相对成熟、大家普遍熟悉了系统之后,C++的开发效率并没有想象的那么低。

感觉很多人对C++的看法根本是道听途说或者想当然的啊……


也就是所谓的诸如

- c++开发效率低
- c++语言复杂臃肿
- c++难以维护,容易出错
- c++只适合开发需要极端压榨性能的程序,但是现在硬件性能溢出blahblah

种种如此……


很多人根本不知道c++开发并不需要用到c++的所有特性,只需要根据情况运用其中的一小部分就好了

很多人根本不知道c++在有完整编译环境支持下维护效率要比脚本类语言高到不知那里去了

很多人根本不知道开发效率只和程序员的技术水平有关

很多人根本不知道现在硬件性能远远谈不上溢出的程度,说句难听的,家用PC连个4k VR都得顶级配置还带着吃力,更别说服务器端动辄上万的并发