前阵子我一直在研究基于B/S架构的网络游戏开发(网页网络游戏),并写了一个Web版的盛大富翁客户端Demo。今天看到盛大网络出了一款基于B/S架构的网游:纵横天下,我感到很兴奋,同时,我也想谈一下个人的看法。
传统的网络游戏是C/S架构的,通俗点说,就是大家在玩游戏之前,先要安装游戏的客户端,然后才能进行游戏,也就是客户端(Client)/服务器(Server)模式。而B/S架构是什么意思呢?B就是Browser,浏览器,也就是说,大家只要打开浏览器,登陆到相关的网站,就可以玩的网游。
B/S架构的网络游戏,它最大的好处就是大家可以在任何联网的电脑上玩游戏,只要这台电脑上有浏览器。我曾经卸载过Vista,因为在Vista下不能玩盛大富翁。但如果盛大富翁变成B/S架构了,那我就算安装了Linux,我也可以放心的玩了。对于开发者而言,他们开发跨系统的网游代码会更加方便,因为几乎每个操作系统上都有浏览器,他们就不必去关心Linux下创建Socket的代码是怎么样的,他们也不必去考虑到底是用OpenGL还是DirectX。
当然,B/S架构的网游也有很多不成熟的地方,我下面列举几点
1:通讯方式有待改善
B/S游戏在通讯方面的能力,比C/S要弱很多,主要还是因为浏览器的通讯方式:我们发送一个URL给服务器,然后接收服务器返回的网页信息,连接就结束了,最后浏览器把网页信息显示出来。这样的通讯过程没有持久性可言,而网游的通讯最好是有持续性的,这样才可以有效降低服务器的负荷,提高带宽利用率,并使程序架构更合理,通讯更安全。
2:客户端技术功能有限
按照目前的技术,B/S架构的网游,一般只使用Javascript或Flash Action Script做客户端,Javascript尽管功能强大,但是运行效率能力很低,大家可以用一下Google的记事本,当你处理一篇比较长的文章时,你就会感到很恼火,因为很卡,CPU占用率一直是100%。另外,Javascript的绘图能力不好,不过用Javascript做交互性控件还是不错的选择。Flash的的计算能力也有限,但是Flash有很多比Javascript出色的地方,首先它可以全屏,然后,它的通讯方式要比Ajax好,最后,Flash的2D绘图能力相当出色。用Flash开发B/S架构的网游客户端是最好的选择,纵横天下也是这样做的。不过,我还是会先使用JS进行开发,因为我喜欢JS,而且JS的潜力无限,无需安装插件。我的盛大富翁网页版Demo也完全是用JS写的。个人猜想,以后的B/S架构的网游,可能是JS+Flash的整合,各取所长。
3:安全性问题
Javascript代码是完全公开的(虽然可以加密),Flash也有反编译工具,这样,客户端的代码就很容易被克隆,进而产生外挂程序,破坏游戏的公平性,并对服务器产生危害,不过这个问题目前只能通过增加验证机制,对游戏数据进行加密来解决。
我刚刚去体验了一下盛大的纵横天下,感觉做的还不错,是比较优秀的战略网游,不过不是很生动,还是以文字为主,没有很靓丽的视觉效果,上手不太容易。毕竟是第一款网页游戏,我相信今后会越做越好的。
纵横天下给了我不少动力,我会抓紧研究B/S架构的网络游戏,尽早推出我开发的网页游戏,给大家带来网络游戏的全新体验。
P.S:我下学期的毕业设计课题正好是“基于B/S架构的网络游戏开发”,能选到自己喜欢的课题真是开心。 ^_^
Ferris
2008-1-22
2007-1-28
注:今天我了解到Flash的Actionscript3.0提供了良好的,基于TCP/IP协议的socket支持,这样就可以为网页游戏提供良好的通讯支持,当然,就不会存在我上文中提到的无持久性的问题。而且,Flash可以和Javascript交互,看来,Flash将注定成为网页网络游戏技术
的主角。