我正在使用GatewayWorkerk开发一个游戏,每一回合会有很多游戏运行产生的相关数据变量,如何存放和获取这些数据很费脑筋。我是这样做的,高手们帮参考一下,给点建议。
玩家数据,比如分数,个人信息等,这一部分数据目前是使用Redis存储。
游戏公共数据,游戏是回合制的,每一回合都很多数据,这些数据是参与游戏的玩家都有关联的。新开一回合的时候需要把上一回合的结果数据存入数据库,只存个结果。那么在回合进行过程中的数据到底应该怎么存放比较合理?放Redis还是全局变量好一下?还有没有其他办法?
还有,我想每个回合都new round(),创建一个回合类来保存数据和处理业务,但是同时会有很多回合的游戏在进行,我该怎么区分和获取每个游戏进程对应的round类,这个round类用全局变量来存储吗?
我觉得个人信息数据可以直接放GatewayWorker的$_SESSION里。
数据是否需要保存在redis中,可以简单的这样判断。
1、对数据库的操作量有多大,比如每秒上万次读写的不重要的临时数据,可以放在php内存变量里
2、有一些重要的结果数据,比如回合结果,金钱变化等信息,由于比较重要并且读写数据看不多,必须每次读写数据库
3、游戏中的一些过程数据,比如坐标 状态等信息可以存到内存变量
4、一些公共的信息,由于每个进程都需要读取,放入到redis mysql等存储会更容易共享一些
这里有个飞机游戏坐标类的问答,也可以参考
http://wenda.workerman.net/?/question/523
非常感谢walker的指导。我思路又清晰了很多。然后我又查看了之前的很多帖子。我发现很多人和我是一样的情况,之前是从事web开发,思维都是php瞬发请求然后完毕释放。所以对现在的开发模式有很多盲区。 准备多看看附带的源代码,提升提升。
不客气,加油