MaNGOS服务端采用典型的三库分离架构:realmd(鉴权与服务器列表)、mangos(世界静态数据)、characters(角色动态数据)。三者通过account_id、guid、entry三类主键串联,服务端启动顺序读realmd→mangos→characters,DBC文件补静态客户端常量。任何自定义怪物、任务、物品、副本、声望、拍卖、行会开发,本质都是在改这三库里的表关系。
一、realmd库:登录与服务器路由层
核心表与字段:
•account:id(自增主键)、username、sha_pass_hash(SHA1加盐散列)、gmlevel(0普通/1GM/2超级GM/3开发)、sessionkey/v/s(登录握手校验)、email、joindate、last_ip、failed_logins、locked、last_login、active_realm_id、expansion(0经典/1TBC/2WLK)、mutetime、locale
-realmlist:id、name、address(IP)、port、icon、realmflags(0正常/1满/2离线)、timezone、allowedSecurityLevel、population、realmbuilds(允许客户端版本)
-realmcharacters:realmid+acctid+numchars(每账号在各服建角数上限校验)
•account_banned:id、bandate、unbandate、bannedby、banreason、active
-ip_banned:ip、bandate、unbandate、bannedby、banreason
•account_access(部分分支):account_id、gmlevel、RealmID(按服务器区分GM权限)
-realmd_db_version/uptime:版本校验与在线时长统计(starttime、maxplayers)
二、mangos库:世界静态模板层(原型模式)
模板表只定义“类型”,不存地图实例;运行时由creature/gameobject等实例表引用entry生成具体对象。
1.creature_template(生物/NPC蓝图)
entry(唯一身份证,.npcadd后数字)、name、minlevel/maxlevel、minhealth/maxhealth、rank(0普通/1精英/2稀有精英/3Boss)、unit_flags、dynamicflags、AIName(EventAI/SmartAI)、ScriptName、lootid(关联creature_loot_template)、equip_template(关联creature_equip_template)
2.creature(地图实例刷怪)
guid(全局唯一实例ID)、id(→creature_template.entry)、map、position_x/y/z、orientation、spawntimesecs、MovementType
3.gameobject_template(对象蓝图)
entry、type(宝箱/矿脉/草药/门/传送器)、displayid、data0~dataN
4.gameobject(实例)
guid、id(→gameobject_template.entry)、map、position_x/y/z、rotation
5.item_template(全物品定义)
entry、name、Quality、RequiredLevel、class/subclass、InventoryType、stat_type1~10、dmg_min1/max1、delay、flags(含ITEM_FLAG_QUEST_ITEM位掩码)、displayid
6.quest_template(任务骨架)
entry、Method、ZoneOrSort、MinLevel、QuestInfoID、ReqItemId1~6、ReqKillNpcOrGo1~4、RewItemId1~4、RewXP、RewRepFaction1、RewRepValue1
7.关系表(把实体粘成玩法)
creature_questrelation(NPC给任务)、creature_involvedrelation(NPC交任务)、gameobject_questrelation、areatrigger_teleport(区域触发传送)、battleground_template、achievement_criteria_requirement、spell_template(部分分支在mangos库加载)
8.掉落与奖励表
creature_loot_template(entry+item+Chance+GroupId)、gameobject_loot_template、fishing_loot_template、disenchant_loot_template、achievement_reward
三、characters库:角色动态数据层
以guid为主键链,account字段回连realmd.account.id。
1.characters(核心角色行)
guid(全局唯一)、account、name、race、class、gender、level、xp、money、map、position_x/y/z、orientation、zone、online、totaltime、logout_time、playerBytes/playerBytes2(外观位)、health、power1~5、death_expire_time、watchedFaction
2.背包与装备
character_inventory(guid、bag、slot、item→item_instance.guid)、item_instance(guid、itemEntry→item_template.entry、owner_guid、enchantments)、character_equipmentsets
3.技能与状态
character_spell(已学技能)、character_action(技能栏/宏绑定)、character_aura(持久BUFF/DEBUFF)、character_talent(天赋,部分分支在character_talent或外挂表)
4.任务与进度
character_queststatus(任务状态机:未接/进行/交付)、character_queststatus_daily(日常重置)、character_reputation(声望standing值计算)
5.社交与经济
guild/guild_member/guild_rank、arena_team/arena_team_member、character_social(好友)、mail(邮件)、auctionhouse(拍卖行挂单)、character_homebind(炉石绑定点)、corpse(尸体坐标与墓地映射)
6.副本与PVP
character_instance(副本绑定记录)、group_member/groups(组队)、battleground_data(部分分支)
四、三库主键关联图(开发必背)
realmd.account.id
└─characters.account→同账号下多角色
└─characters.guid→character_inventory.guid/character_spell.guid/character_queststatus.guid
mangos.creature_template.entry
└─mangos.creature.id→地图实例
└─creature_questrelation.entry→quest_template.entry
mangos.item_template.entry
└─item_instance.itemEntry→character_inventory.item
mangos.gameobject_template.entry→gameobject.id→gameobject_loot_template.entry
五、典型开发操作映射
•加新BOSS:creature_template插entry=100000,rank=3,AIName=SmartAI→creature表写地图坐标guid→creature_loot_template绑掉落→重启世界服加载
-加任务链:quest_template写ReqKillNpcOrGo→creature_questrelation绑起始NPCentry→creature_involvedrelation绑交付NPC→RewItemId指向item_template新物品
-改账号GM:realmd.account改gmlevel/account_access写RealmID+gmlevel
•清卡死角色:characters表置online=0、position回主城、删corpse表对应guid记录
-多服务器共存:realmlist插多行,realmcharacters按realmid隔离角色数,characters库可按realm分库或同库用map/zone区分
六、版本校验机制
服务端源码revision_sql.h定义三套常量:REVISION_DB_REALMD、REVISION_DB_MANGOS、REVISION_DB_CHARACTERS;对应库内*_db_version表记录最后应用SQL更新编号,启动比对不一致直接拒起,防止表结构错位导致字段读写崩溃。
七、与TrinityCore分支差异提示
MaNGOS原版mangos库表名偏长(creature_questrelation、areatrigger_involvedrelation);TC分支合并为world库且部分表改名(creature_template_addon、smart_scripts替代AIName字符串驱动)。跨版本搬SQL先看db_version再改字段映射,别直接导表。
MaNGOS数据库设计本质是“模板表(mangos)+实例表(mangos/characters)+账号路由表(realmd)”三层原型模式,所有玩法扩展都绕不开entry→guid→account_id这条主外键链。
一、realmd库:登录与服务器路由层
核心表与字段:
•account:id(自增主键)、username、sha_pass_hash(SHA1加盐散列)、gmlevel(0普通/1GM/2超级GM/3开发)、sessionkey/v/s(登录握手校验)、email、joindate、last_ip、failed_logins、locked、last_login、active_realm_id、expansion(0经典/1TBC/2WLK)、mutetime、locale
-realmlist:id、name、address(IP)、port、icon、realmflags(0正常/1满/2离线)、timezone、allowedSecurityLevel、population、realmbuilds(允许客户端版本)
-realmcharacters:realmid+acctid+numchars(每账号在各服建角数上限校验)
•account_banned:id、bandate、unbandate、bannedby、banreason、active
-ip_banned:ip、bandate、unbandate、bannedby、banreason
•account_access(部分分支):account_id、gmlevel、RealmID(按服务器区分GM权限)
-realmd_db_version/uptime:版本校验与在线时长统计(starttime、maxplayers)
二、mangos库:世界静态模板层(原型模式)
模板表只定义“类型”,不存地图实例;运行时由creature/gameobject等实例表引用entry生成具体对象。
1.creature_template(生物/NPC蓝图)
entry(唯一身份证,.npcadd后数字)、name、minlevel/maxlevel、minhealth/maxhealth、rank(0普通/1精英/2稀有精英/3Boss)、unit_flags、dynamicflags、AIName(EventAI/SmartAI)、ScriptName、lootid(关联creature_loot_template)、equip_template(关联creature_equip_template)
2.creature(地图实例刷怪)
guid(全局唯一实例ID)、id(→creature_template.entry)、map、position_x/y/z、orientation、spawntimesecs、MovementType
3.gameobject_template(对象蓝图)
entry、type(宝箱/矿脉/草药/门/传送器)、displayid、data0~dataN
4.gameobject(实例)
guid、id(→gameobject_template.entry)、map、position_x/y/z、rotation
5.item_template(全物品定义)
entry、name、Quality、RequiredLevel、class/subclass、InventoryType、stat_type1~10、dmg_min1/max1、delay、flags(含ITEM_FLAG_QUEST_ITEM位掩码)、displayid
6.quest_template(任务骨架)
entry、Method、ZoneOrSort、MinLevel、QuestInfoID、ReqItemId1~6、ReqKillNpcOrGo1~4、RewItemId1~4、RewXP、RewRepFaction1、RewRepValue1
7.关系表(把实体粘成玩法)
creature_questrelation(NPC给任务)、creature_involvedrelation(NPC交任务)、gameobject_questrelation、areatrigger_teleport(区域触发传送)、battleground_template、achievement_criteria_requirement、spell_template(部分分支在mangos库加载)
8.掉落与奖励表
creature_loot_template(entry+item+Chance+GroupId)、gameobject_loot_template、fishing_loot_template、disenchant_loot_template、achievement_reward
三、characters库:角色动态数据层
以guid为主键链,account字段回连realmd.account.id。
1.characters(核心角色行)
guid(全局唯一)、account、name、race、class、gender、level、xp、money、map、position_x/y/z、orientation、zone、online、totaltime、logout_time、playerBytes/playerBytes2(外观位)、health、power1~5、death_expire_time、watchedFaction
2.背包与装备
character_inventory(guid、bag、slot、item→item_instance.guid)、item_instance(guid、itemEntry→item_template.entry、owner_guid、enchantments)、character_equipmentsets
3.技能与状态
character_spell(已学技能)、character_action(技能栏/宏绑定)、character_aura(持久BUFF/DEBUFF)、character_talent(天赋,部分分支在character_talent或外挂表)
4.任务与进度
character_queststatus(任务状态机:未接/进行/交付)、character_queststatus_daily(日常重置)、character_reputation(声望standing值计算)
5.社交与经济
guild/guild_member/guild_rank、arena_team/arena_team_member、character_social(好友)、mail(邮件)、auctionhouse(拍卖行挂单)、character_homebind(炉石绑定点)、corpse(尸体坐标与墓地映射)
6.副本与PVP
character_instance(副本绑定记录)、group_member/groups(组队)、battleground_data(部分分支)
四、三库主键关联图(开发必背)
realmd.account.id
└─characters.account→同账号下多角色
└─characters.guid→character_inventory.guid/character_spell.guid/character_queststatus.guid
mangos.creature_template.entry
└─mangos.creature.id→地图实例
└─creature_questrelation.entry→quest_template.entry
mangos.item_template.entry
└─item_instance.itemEntry→character_inventory.item
mangos.gameobject_template.entry→gameobject.id→gameobject_loot_template.entry
五、典型开发操作映射
•加新BOSS:creature_template插entry=100000,rank=3,AIName=SmartAI→creature表写地图坐标guid→creature_loot_template绑掉落→重启世界服加载
-加任务链:quest_template写ReqKillNpcOrGo→creature_questrelation绑起始NPCentry→creature_involvedrelation绑交付NPC→RewItemId指向item_template新物品
-改账号GM:realmd.account改gmlevel/account_access写RealmID+gmlevel
•清卡死角色:characters表置online=0、position回主城、删corpse表对应guid记录
-多服务器共存:realmlist插多行,realmcharacters按realmid隔离角色数,characters库可按realm分库或同库用map/zone区分
六、版本校验机制
服务端源码revision_sql.h定义三套常量:REVISION_DB_REALMD、REVISION_DB_MANGOS、REVISION_DB_CHARACTERS;对应库内*_db_version表记录最后应用SQL更新编号,启动比对不一致直接拒起,防止表结构错位导致字段读写崩溃。
七、与TrinityCore分支差异提示
MaNGOS原版mangos库表名偏长(creature_questrelation、areatrigger_involvedrelation);TC分支合并为world库且部分表改名(creature_template_addon、smart_scripts替代AIName字符串驱动)。跨版本搬SQL先看db_version再改字段映射,别直接导表。
MaNGOS数据库设计本质是“模板表(mangos)+实例表(mangos/characters)+账号路由表(realmd)”三层原型模式,所有玩法扩展都绕不开entry→guid→account_id这条主外键链。

