做一个简单的游戏服务器

来源:互联网 发布:如何优化简历库 编辑:程序博客网 时间:2024/06/05 03:09

  为什么其实不重要!

做一个简单网游服务器。

  服务由两部分构成,网关和世界服务器,绞尽脑汁,还没有想到一个好听的名字,可以肯定的是要code n行,就暂定CodeN {N >= 0}。

  语言选用C++和lua,其实也蛮像选scala的,但小众了点,自己也没有java基础,怕有搞不定的问题,c++ lua会更有信心一点。db redis和mongodb 比较,倾向于redis,他大代码量比mongodb少,也更有信心一点点,但是redis的查询、运维,好像不是那么方便,forget it,运维不是我现在考虑的事,哈哈,mongodb query也一般。

  网络协议采用protocol buffer, 和同事交流,他们觉得这个太大了了,不适合游戏,但我喜欢他的表达能力、非常省带宽编码的编码方式。我深信消息协议一定是应该用一种语言中立的声明方式。我第一次读protocol buffer的时候,这就是我想要的。恨透了直接用 c struct 做消息,没有collection,没有移植可言,甚至没有string,全部依靠sctruct的offset。这种方式唯一的好处是没有encode,decode,但太原始了非常不科学。

网关,功能比较简单,负责保持连接,消息转发,后续会加聊天功能。对网关有一构想:

    1、在服务器宕机的时候,自己重启世界服务器,在线就玩家会主城,这样服务器的可用性高一点。

   2、不停机维护,新服务器起来的时候,网关做服务器切换,玩家还是登陆主城,玩家不用下线。

上述两点或许是一个东西,想得还不是特别明朗。网关基础基本没有运算,压力主要来自网络io,代码、功能都会比较简单。除基础部分外,准备都要lua实现,还能热更新,啦啦啦,德玛西亚!

   世界服务器主要用C++, lua只负责灵活的计算无关的功能,作为系统的plugin,系统开放部分接口。这个太大了,容下N回分功能聊起。

服务器状态方便或或许会参照mongodb,搞一个http的方式查询,具体的内容由lua来做。


现在的想法是山寨(Copy To China?)一个《神仙道》,客服端可能用object c/ cocos2d-iphone先实现,后面一点自己重新写2d图像引擎。理由?我还没这样的一个轮子,所以我要整一个出来,哈哈!cocos2d也不完美,在我看来。他有点肥,我比较欣赏他action的设计,每个action很灵活,在加上一些修饰action的action,如速度控制,action queue, forever这些流程控制,粒度相当合适,超有装配游戏的feel。非常适合坐小游戏,现在还有不少工具。

  Can I ? just do it .

原创粉丝点击