最近新找了份工作,还是做游戏,但是自己不是很喜欢,因为都是同样的逻辑开发,已经腻味了。准备说要走了吧

说下我理解的游戏服务器的设计

1.gate_server 负责和客户端保持链接,在切换地图时不需要和玩家断开链接。有gate后的好处:game_server宕机对玩家没有影响,不会断开链接,感觉这是一个较为重要的功能,但如何保证在宕机后,怎么最大程度的恢复玩家的数据是一个要考虑的问题,这主要要和db_agent结合考虑。保证内部服务器的安全,对外只有一个ip,这也是一个好处,屏蔽了内部实现。这里我有个问题没想明白:玩家在game之间切换时,gate也需要将发送给玩家的消息进行切换路线,怎么保证在切换的瞬间保证消息发送路线是正确无误的(一种方式是让客户端在切换地图时暂停发送消息)?

2.game_server:实现逻辑功能处理了

3.db_agent:实现数据层,有种方式是通过共享内存来实现,game宕机了数据还是存在的,不会丢失,可以在重启后立即执行一次保存,但一个问题是怎么保证game重启了,玩家还会分配到上一个相同的共享内存地址??????

4.log_server:需要实现的功能有:变长参数、支持多线程、文件大小控制、隔天切换等

5.ai_server:就是一个机器人处理逻辑。有种方法是ai_server变成插件模式的,没有启动ai则game里monster都是无动于衷的,没有智能的。这时启动ai后monster就立马变活了。这种插件式的ai_server实在太酷了。而且game中monster是由ai创建的。所以只启动game和启动game、ai后关闭ai效果是不一样的

posted on 2012-05-01 21:49  brucexu  阅读(487)  评论(0编辑  收藏  举报