这里记录下网络游戏服务器开发中,要注意的事项。
逻辑问题
==判断限制太死了,少用点
使用while true时,可能造成死循环,应该添加保险措施,必现因为逻辑问题导致的死循环
1 | while weaponType ~= sword do |
递归调用也有可能会出现堆栈溢出,也需要加上保险措施
禁止广泛采用param arg等表示某一类参数,统一加上对应的模块或功能特性声明,比如:CreateRole(roleParam)
热更
local不能热更,用local时,要考虑会不会有热更的情况
协议
协议字段要小,省宽带
协议接口目录统一,方便热更新
检查验收
查看传入参数判空,长命名,默认值,参数检测,snsaerro中断会发生的问题
用户登录时,不要有中断发生
用户登录时,所有下推合成一个包发送
所有的物品接口是遵循这个规律的(物品先扣再发):
1.检测
2.扣钱、资源
3.发物品,修改数据
数据库
mongodb
odm不要设计成第一层就用map,后续加字段会很困难
mysql
数据库用cache,定时存入
因为mysql写入的数据都是冷数据(只增,部分读),所以处理比较简单
(核查记录,邮件)这些业务交给网页部门,服务器拿网页接口
配置文件
配置文件转换时,不要出现值为2.0这种错误
编写validate.lua
每新增配置表,策划有可能会配置错误的项目都需要添加检测。确保跑validate时,不会因配置错误,而出现程序出错。
国际化
时间戳
因为不同语言的版本会共用一套代码,不同时区发时间会有问题(linux时区),同步会有问题,改用发时间戳
字符编码
代码中不要写死中文,使用配置表映射编码。
计量
尽是用‱,少用%