使用Golang实现万人同服的游戏服务器
17 .0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战
数据读写频度高
//购买道具 相关的模块:6个
func (dm *BlackMallMgr) uint32) cl.RET {
if dm == nil {BuyGoods(goodID
相关的需要存储的属性:8个
log4go.Warn("[BlackMallMgr] BuyGood dm nil")
return cl.RET(entity.RET_ENTITY_NOT_EXIST)
}
//安全检查
if dm.ptrUser == nil {
log4go.Warn("[BlackMallMgr] BuyGood ptrUser nil")
return cl.RET(entity.RET_ENTITY_NOT_EXIST)
}
//安全检查
if dm.outData == nil {
log4go.Warn("[BlackMallMgr] BuyGood outData nil, UID:%d",
dm.ptrUser.UID())
return cl.RET(entity.RET_ENTITY_NOT_EXIST)
}
//功能是否开启
if !dm.ptrUser.UserModuleM.RoleMgr().UserFunction.IsFuncOpen(uint32(entity.FunctionId_FunctionId_BlackMall)) {
log4go.Warn("[BlackMallMgr] BuyGood func not open, UID:%d goodID:%d",
dm.ptrUser.UID(), goodID)
return cl.RET(entity.RET_FUNCTION_NOT_OPEN)
}
//物品的配置信息是否存在
cfg := configparse.ParseShopConfigM.BlackGoodInfo(goodID)
if cfg == nil {
log4go.Warn("[BlackMallMgr] BuyGood config nil, UID:%d goodID:%d",
dm.ptrUser.UID(), goodID)