游戏合区的一点独家小小的建议,对于精通的人可以绕过,只是一点小建议;
首先为什么游戏要合区?
开新区为了吸引更多的玩家进入游戏,新区新玩家玩到一定等级普遍心理都想和更高级别的玩家进行同场竞技,所以就需要合区处理,将新区合到老区以便更好的留住玩家!
游戏合区的误区!
有的人认为一个游戏合区合服是认为这个游戏走向"终结"了?首先这是一个错误的认识,合区合服并不是出现"鬼服"才合,当然,出现"鬼"服合区合服的也有,其实"鬼"服也好,装备便宜、充值便宜等等,"鬼"服合区合服合起来,这样"鬼"区少了,相对资源占用就少了,可以空出更多的资源来配给新区或旺区,这样就又能吸引新的玩家;
有的GM放任了很多"鬼"区不合区,能吸多少金?
而合区合服对于"鬼"区多的游戏而言无疑是一种游戏的重生之路!
下列是一些合区合服的一些通用小教程!
首先在1和2区合区之前,备份好这两区的各自数据库(这一点不用说肯定是避免在合区过程中误操作损失数据库);
关闭服务器:将2区合并到1区,首先关闭2和1区的服务器,当然现在技术成熟,一台服务器可以开N多个区
清理数据:2区和1区中可能存在一些无效的数据(一些游戏日志产生的无效数据也在清除之列),比如name为null,playerid=0等,这些数据需要在合服之前进行清除掉(使用sql语句对每个表进行检测),比如delete from t_player_table where playerid =0;将类似语句存放在sql文件中,方便下次使用。一些日志记录没有必要进行合服的可以删除掉或者在导出数据时候直接忽略某个记录日志表的数据导出。
数据更新:2区中的数据表只要是导入到1区中的都要进行数据的更新,主要是对字段id,name的更新(其他按需更新)。以角色表t_player_table 为例:获取a服t_player_table中最大id 作为maxid,更新b中t_player_table的id,使得id=id+maxid;作为b中t_player_table的新的id。
name的更新是为了防止1,2区中出现重名,可以使用区服的编号作为name的后缀进行更新。
数据库中的其他表都可以按照此方法进行数据更新。
导出导入:2区数据更新之后进行新数据的导出,其中一些无关紧要的数据(log记录,公共配置数据等)可以忽略不导。
将b服导出的数据导入到1区中完成数据的导入。
数据检查:将2区中的数据导入到1区后,1区t_player_table的最大id应该和2区t_player_table的最大id一样,对比两个数据,如果不一样,说明数据出错了,需要手动去查找了。
数据合并完成后,客户端列表需要将指向b服的连接修改为指向a服。
忽略表的导出参数为--ignore-table;数据更新是对b操作,不需要对a操作;无效数据清理是对1和2操作;