go hive skynet_云风的skynet在国内外来看究竟算什么水平?可以一统国内游戏服务端框架吗?...

它和云风过往放出来的东西一样,是非常具有实践性的,可以解决实际开发问题的。目前我所在的手游项目使用 Erlang 进行服务器端开发的,如果重新开始,我会选择使用 skynet。

游戏服务器开发中的难点,上面 @无瞳已经提到了两个,我再加一个:隔离性。比如说,在C/C++写的服务器中,一行代码中的空指针访问,就会导致整个服务器进程crash,这就是很差的隔离性,在服务一个玩家的过程中发生的错误,会影响到对其他玩家提供服务的能力。

传统的端游服务器开发中,性能是硬性指标,语言上几乎没有选择,必须使用C/C++。但是页游和手游对单机性能的要求降到了非常低的水平。这个时候,Erlang在解决异步通信以及强隔离性上的优势就体现了出来。

但是 Erlang 也有它的问题。

首先,就是很难招人。

一方面,国内小公司很难招到靠谱的程序员。Erlang 本来就比较小众,所以大多数情况下只能是招进来不会 Erlang 的,让他自学+一些指导。

在我从某大厂出来以后面试的十几个人中,能好好用C语言写完一个 atoi 函数的,只有一两个。倒不是 Erlang 有多难学,只是功底差成这样的人,他会不会有意愿去学就是个很大的问题,你敢不敢相信他能学好都是其次了。

其次,Erlang 的一些特性确实降低开发效率。

这是一句非常招黑的话,我也没有时间写太详细,只是一些个人感受。

首先就是 Immutable。这个特性对游戏发开来说非常头疼。目前的手游服务器里数值计算占的比重不多,更多的是对状态的修改。玩家要升个级,你要Level+1,玩家做做这,做做那,最终体现到代码上的,都是对状态的修改。而 Erlang 的 Immutable,配合很费键盘的Record语法,让写这些代码的过程非常繁琐。

另外就是 Erlang 不支持在函数中间直接return,在写很多游戏逻辑的时候,是非常蛋疼的。

因为上面这些原因,我觉得最适合目前手游的服务器开发语言是这样的:

(1). 和 Erlang 一样的进程模型,强隔离性。

(2). 类似 C 的命令式语言。

但是要写出这样的一门语言,需要非常大的工作量(可以参考 Erlang 虚拟机的代码量。)

skynet 在我看来是做了一个trade off。它不支持如 Erlang 般便宜的进程(因此在隔离性上有所降低,但依然比C/C++强。),但是开发 skynet 本身所需的工作量大大降低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值