Social Game服务器开发随笔

 

Social Game服务器开发随笔

         前几天看了一篇博客Scaling FarmVille,其中谈到了一种服务器设计的理念。FarmVille是由著名的social game运营商zynga开发的。这款游戏创造了750万人月活跃的惊人成绩,做为同行的我当然要关注一下。

         从毕业开始到现在做social game7个月的时间了,先说说我自己的体验。

要完成一款成功的Social game对于服务器开发者来说有很大的挑战。从social game本身的特点来说,由于“病毒式”的传播方式,social game在发展的过程当中用户的安装量往往呈指数级增长。以FarmVille为例,其游戏上线4天后的日活跃用户为一百万,60之后就达到了一千万。9个月之后,FarmVille有两千八百万的日活跃,七千五百万的月活跃用户,也就是说其月活跃用户甚至超过了法国的人口数量!做为一款facebook的应用,其与facebook之间的通信峰值在3Gbps左右

另外,由于social game对于大部分用户提供的是免费的服务,只靠一小部分玩家花钱购买游戏道具获得收入,这样在开发social game服务器的时候既需要我们提供尽量可靠的服务以提升用户的游戏体验,同时还要注意节约成本,尽量减少不必要的计算消耗。

第三,同其它所有互联网应用一样,social game的开发周期要求很短。想在激烈的互联网行业取得先机,你就必须赶在竞争对手之前获得更多的用户,因此时间是一个产品成功的关键性因素之一。

第四,social game的精髓在于简单和互动。前者导致了social game可能竞争对手被快速的复制,以一款经典的游戏《开心农场》为例,其在前年年底发布之后引发了互联网的一阵农场热潮,一时间,农场游戏满天飞。从技术上来讲,《开心农场》的客户端为flash,后台是一个web框架。Flash可以进行完全的反编译,而后台也有比较成熟的高性能Web框架(LAMP),因此换换美术素材,复制一款social game技术上并不存在很高的瓶颈。另外,为了满足互动,游戏需要实现用户规模的高速增长,以使得用户不会因为没有更多的好友参与而失去互动的乐趣,最终离开游戏。这两个“精髓”都会导致运营商不希望刚刚开发好的游戏进行外网测试,因为测试可能会引发竞争对手的copy,而且测试的规模限制也会导致游戏用户数量无法满足需求。但是,如果不进行外网测试,可能会增加服务器出现问题的机率,而不稳定的服务势必造成很多新玩家的流失,因此这对于服务器开发者来说无疑难度会增加。

Balabala的说了一大堆,下面回来说说服务器的设计。对于FarmVill来说,用户的状态包含大量的数据信息,而且它们之间还存在着比较复杂的关系。这样,如果改变用户在游戏当中的状态,可能需要操作更改一批的数据。对比GoogleFacebook这样以读操作为主的应用来说,FarmVill需要更多的写操作,其读写数据的比例大约为31,这是一个很高的写入率了。此外,FarmVill还在不断的维护更新,以提供更多的游戏功能扩展,这样无疑会在很大程度上增加服务器的负载。前面提到,social game的开发要注意节约资源,所以计算资源可能在服务峰值时做不到完全充裕,新增服务与大规模的用户数量可能导致服务器在服务峰值阶段出现问题。FarmVill引入了一种机制叫做:graceful degradation mode(降级服务)

所谓降级服务就是指应用程序可以随时动态的关闭或者打开一个服务。在实际应用中,为了保证低延时,以及服务器的正常运转,在负载的峰值阶段关闭某些服务。这种服务的核心观点就是尽量的保证用户可以进行基本游戏,即使有时需要降低某些用户体验。按照这种原则,在设计服务器的阶段,需要通过回调错误处理与超时等机制,将某些高负载的服务以及一些扩展服务分离出来,并且在必要的时候关闭某些功能服务。

参考文章:

http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html

http://perspectives.mvdirona.com/2010/02/13/ScalingFarmVille.aspx

http://highscalability.com/blog/2010/3/10/how-farmville-scales-the-follow-up.html

 

你可能感兴趣的:(游戏,互联网,服务器,Facebook,Social,web框架)