游戏开发中遇到的一些问题

  来新公司做游戏开发已经差不多有两年的时候,期间遇到各种问题,作此纪录,以免重复犯相同的错误。

  1:游戏后台采用的mysql数据库,大部分的游戏信息用blob字段表示,在blob信息里加上版本号,这样可以动态修改游戏信息,而不需要频繁的修改数据结构。随着游戏的来断开发,游戏内容越来越多,blog数量越来越多,直到有一天,保存数据时会偶尔发生mysql 139错误或mysql crash。上网查了一些资料,据说是由于mysql的每页长度不能超过8K,超过8k有可能导致msql crash。如果游戏一开始就注意这一点,减少blob字段的数量,将表的每一行合理的限制在8K以内就不会产生这种问题,而我们的游戏直到不删档时才发现这个问题,我们不得不重新研究游戏之间的数据关系,将一些blob字段合并,然后修改游戏的逻辑以适应新的变化,这个痛苦的过程实在是不好言语。

  2:游戏封测之后,有一天更新版本后,发现有一些用户的城池不见了,为了查找城池失踪的原因,在城池加载的时候,将城池加载失败的日志打印出来。经过分析之后,发现原来是有些城池的建城点冲突了。那为什么会冲突呢?所有的城池点的座标是放到一个城池列表中,一旦某个建城点被使用,该城池点就会标上已使用的标志,逻辑上不可能生成重复的建城点。最让人恼火的是在本地服务器上测试了N次也没有出现此问题。于是我把数据全部导到本地,发现城池加载非常慢,于时我查了一下池城加载的逻辑,城池是分了N次加载。进程启动非常快,一些用户登录之后,好长时间才看到加载城池完成的晶志。会不会是由于城池数据未加载完,用户登录之后就迁城了,导致城池点数据重复呢?于是,我修改了一下逻辑,城池数据不加载完成之前,禁止用户登录。观察一段时间之后,发现问题果然解决了。我得出一个结论,初始化完成之前,尽量不要让用户登录,以免造成一些不可预知的问题。

你可能感兴趣的:(linux)