网络游戏服务器开发注意事项

这里记录下网络游戏服务器开发中,要注意的事项。

逻辑问题

==判断限制太死了,少用点
使用while true时,可能造成死循环,应该添加保险措施,必现因为逻辑问题导致的死循环

1
2
3
4
5
6
while weaponType ~= sword do
check = check + 1
if 1000 < check then
return
end
end

递归调用也有可能会出现堆栈溢出,也需要加上保险措施
禁止广泛采用param arg等表示某一类参数,统一加上对应的模块或功能特性声明,比如:CreateRole(roleParam)

热更

local不能热更,用local时,要考虑会不会有热更的情况

协议

协议字段要小,省宽带
协议接口目录统一,方便热更新

检查验收

查看传入参数判空,长命名,默认值,参数检测,snsaerro中断会发生的问题
用户登录时,不要有中断发生
用户登录时,所有下推合成一个包发送

所有的物品接口是遵循这个规律的(物品先扣再发):
1.检测
2.扣钱、资源
3.发物品,修改数据

数据库

mongodb

odm不要设计成第一层就用map,后续加字段会很困难

mysql

数据库用cache,定时存入
因为mysql写入的数据都是冷数据(只增,部分读),所以处理比较简单
(核查记录,邮件)这些业务交给网页部门,服务器拿网页接口

配置文件

配置文件转换时,不要出现值为2.0这种错误

编写validate.lua

每新增配置表,策划有可能会配置错误的项目都需要添加检测。确保跑validate时,不会因配置错误,而出现程序出错。

国际化

时间戳

因为不同语言的版本会共用一套代码,不同时区发时间会有问题(linux时区),同步会有问题,改用发时间戳

字符编码

代码中不要写死中文,使用配置表映射编码。

计量

尽是用‱,少用%


A falta de pan, tortillas.Lack of bread, tortillas.