开发问题:
出现core,释放内存位置,检查了相关的代码,一个定时器初始化了两次,尴尬
还有一个坑,就是timer的描述符有问题,应该是public,如果是private的,在其他位置调用也会出问题。
开发的时候有一个逻辑问题,客户端的数据是通过大厅转发给游戏服务器的,这样的话心跳包在大厅才有,客户端的心跳包逻辑是无效代码,解决的方式有两种:1、修改大厅代码,透传心跳包 2、客户端直连游戏服务器,这里由于工期问题,暂时采用了方式2。在构造数据包的时候浪费了比较久的时间,提取的数据包一直是无效的,这块需要细心处理数据包新增字段和长度,以及游戏服务器的相关业务代码的改动,游戏服务器解析心跳包的时候没有大厅那种映射关系,uid是写在数据包中的,不能通过session查找用户实例,调用server的一个方法通过uid拿到table实例。
其他的就是分析业务逻辑找到 准备事件、开始事件、弃牌、下注事件、游戏当前操作者,桌子状态、用户状态的对应关系。
启用了一个1s计时器,用于判断是否托管,已经处理相应逻辑,好处是,不需要再数据包接受状态机中做改动,缺点是用户越多消耗的定时器资源越多。。
编译问题:
ACE编译参考 https://blog.csdn.net/sunny_ss12/article/details/52099427
non-trivially-copyable type错误:打印string需要转换为c格式字符串 .c_str()
提示mysql库找不到,修改Makefile 替换为实际mysql位置 即为:
mysql = /home/tools/mysql
#mysql = /usr/local/mysql
LIBS= -lz -lm -L/usr/local/lib/ -L$(mysql)/lib/mysql $(mysql)/lib/mysql/libmysqlclient_r.a -lACE ../hiredis-master/libhiredis.a
CCFLAGS = -g -I./ -I../Json -I../GameLib -I../hiredis-master -I../hiredis-master/adapters -I$(mysql)/include/mysql -fpermissive
部署问题:
当前运行:./TiandakengGroup -p 23258 -s 5609 -l 815 -d -v 1 -m 1 -t 1
是由start.sh启动的, 启动后报错:./TiandakengGroup: error while loading shared libraries: libACE.so.6.5.2: cannot open shared object file: No such file or directory
参考:https://blog.csdn.net/sean_xyz/article/details/55252229 增加ACE路径
部署命令:结束游戏进程 cd /home/serverBuildDirect/Tiandakeng/Game && make && cp /home/serverBuildDirect/Tiandakeng/Game/Tiandakeng /home/majiang_xianlaiyouxi/game/TianDaKeng/bin/TiandakengGroup && sh /home/majiang_xianlaiyouxi/game/TianDaKeng/bin/start.sh
可以qq群交流:623607229