# game 游戏服
1. 测试gate
   1. 每10分钟新起1000个连接，发送登陆，然后关闭。检查是否有内存及协程泄漏。(已修复)
   2. 启动1000个链接，每小时固定发送登陆消息，一天后查看连接是否还在。检查心跳机制。(已修复)
   3. 修改完后清除调试日志。(已完成)
   4. 客户端stop关闭连接，触发服务端连接崩溃。(已修复)
   5. 偶现网络关闭，服务端此时传来数据，网关会因为conn为nil触发协程崩溃，不影响程序运行。(已修复)
   6. 客户端反复关闭重连会触发gate退出，无崩溃日志。(最近没有遇到)

2. 编写db服
   1. login服向db服请求数据及向log db服写入日志。测试rpc机制。(已验证)
   2. db创建表时，主键不会自增，而是随机增加。(已修复)
   3. 首次创建帐号，redis没有写入帐号数据。 (已修复)
   4. 第二次登陆，login还会走创建帐号逻辑，导致db服返回重复建号失败。 (已修复)
   5. redis写入数据的字段名有误。(已修复)
   6. struct序列化到redis中时需要处理时间格式。(已修复)
   7. 清理登陆相关调试日志。(已完成)
   8. login服切换到其它地方启动后，gate服会路由失败。(已修复，etcd没有删除失效节点导致。)
   9. login在创建帐号时，还需要创建user。(已验证) 
   10. 优化各服务的call,send，将服务节点查询放到call,send方法内部，调用者提供serviceTypeId即可。(已完成)
   11. 优化各服务的send方法，除gate,login服，其它服不需要传connId。(已完成)
   12. 在玩家登陆时，需要将玩家数据及玩家资源写入redis。

3. 编写color game玩法
   1. 房间配置。(已完成)
   2. 创建房间、加载玩家数据。(已实现)
   3. 玩家进出房间及房间信息同步。(已完成)
   4. 玩家向db服请求修改金币等rpc请求。common.rpc层实现，提供接口。(已完成)
   4. 停服时能及时关闭服务。(已验证)
   6. 定制消息。(已完成)
   7. 具体业务实现。
      1. 开始游戏、通知下注、通知下注结束、开骰子、结算。(已实现，待测试)
      2. 玩家下注、每秒更新投注区域信息。(已实现，待测试)
   8. 机器人实现。(未开始)
   9. 经常从etcd掉出，不会重试etcd。(已修复)

4. 编写大厅lobby服
   1. 玩家上线时通知玩家他所在的玩法。方便玩家重连进入该玩法服。(已实现，待测试)

5. 编写match服
   1. 初步实现框架，并转发匹配消息。(已实现，待测试)
   2. color无需匹配，匹配服直接转发给color game。(已完成)

6. 编写管理后台
   1. 玩法配置
   2. 玩家查询及添加玩家资源。(已完成)
   2. 金流查询
   3. 牌局日志

7. log服
   1. 使用clickhouse做存储。(已实现，待测试)
   
8. 客户端编写 u3d
   1. 网络连接
   2. ui，动画等
   3. 玩法逻辑

9. 优化计划
   1. etcd重试机制。(已优化)
   2. 节点注册时加上自己是有状态还是无状态还是有序。每个服务注册时加上自己能接收的消息范围。(节点是否有状态参考service.proto来处理，无需注册到etcd。服务消息范围也没必要加上，类似于EnterRoom消息所有玩法都需要处理。还是交给客户端发消息时自行决定发到哪类节点)
   3. gate根据消息id决定路由给哪类节点，根据节点是否状态服选择节点。（同上）
   4. 通过广播机制，将玩家在哪个状态服里同步给所有服，保存到内存里。(后续优化，暂不考虑)
   5. 优化rpc及send通过serviceTypeId来处理向哪一个节点发送消息。(已优化，避免每次都要查找node)