游戏业务必须处理的一个问题就是:处理多设备登录同账号的问题。一般说来,业务都是需要把之前登陆的账号踢下线。我们的游戏底层业务是一个tcp_agent和player进程一一对应:tcp_agengt处理网络层:收发数据、解析数据,向player进程收和发消息;player进程处理游戏业务逻辑。
踢下线的处理有两种方式: 新启和绑定,介绍如下
新启
所谓新启,意思就是新启一个一样的进程来处理,把之前的进程退出。如下图所示:
幻灯片2.jpg
注意启动p2的时候,从db中获取到的一定保证是p1持久化的最新数据,这里需要同步等待,不能异步执行。
绑定
绑定不需要启动p2, 把t2对应的player进程绑定为p1即可。
幻灯片1.jpg
两种方法区别
- 新启逻辑更简单,更直观;绑定的逻辑比较复杂,代码一定要清洗
- 绑定稍微优雅些,不用写db,不用启一个player进程
- 两种区别也是需要权衡考虑,享受好处的时候,必然要承受义务










网友评论