首先现在游戏服务端都是用得多语言组合开发的,不仅仅是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++的开发效率并没有想象的那么低。