为什么游戏服务端用开发效率低的C++来写,其他语言无法胜任吗?

说java性能差,垃圾收集会造成stw,不存在的。别说现在的zgc和shenandoah,就是老掉牙的G1,停顿也就几毫秒到几十毫秒,对用户体验毫无影响,玩家肯定没卡的感觉。至于是出现fullgc的情况,那是代码有问题,合格的代码就不应该出现救命的fullgc

如果使用c#,性能会更好,你要是敢往死里优化,可以做到无GC,这点比java强得多

至于为什么c++多,关键看游戏类型

比如一些采用帧同步的游戏,dota、撸啊撸、王者之类的,因为游戏的特殊性,有一部分代码是需要客户端的服务器都可以运行的,也就是代码写好,即要能在客户端跑,也要能在服务器跑,比如一些战斗逻辑。

那采用什么技术方案?客户端Java+服务器java?不可能,先不说java能不能好好的做游戏客户端,尤其是3D的。服务器java也吃不消,moba类游戏和mmo不一样,mmo你卡几十毫秒卡顿没影响,moba在一些高手那里,几十毫秒就能定胜负了

至于采用客户端c#+服务端c#,那倒是可以,c#可以无GC,但那是unity起来之后的事情了,所以在零几年那会,c++开发实时性要求高的游戏的唯一选择。

而现在,有的游戏架构会多语言结合。我参与过的一个moba项目,客户端c#+lua+cpp,服务器go+cpp,为什么一定要有c++,因为有一部分代码客户端和服务器都要用

如果是现在,开发新游戏,不考虑使用复用旧代码库,客户端c#,服务端c#,是最好的,即有性能保证,代码又可以复用。比如某个库,客户端和服务端都可以用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值