Beginners Guide What Everything Is - vanrhy/linguister GitHub Wiki
下面从初学者的角度解释所有的模块是如何工作的. 你可以按照说明一步一步来, 你可以得到一台运行的服务器但是你不会知道它是如何运作的或者遇到问题你也不知道怎么去解决.
Github
像之前说的,Github是一个用来储存数据的网络工具.在大部分情况下,这些数据都是各种应用的代码.用户可以跟随某个项目并且做出评论,贡献代码,反馈以及与其他人合作.
CMaNGOS Repositories (CMaNGOS 仓库)
CMaNGOS 有一个仓库位于 https://github.com/cmangos ,它包含对应每一个WOW游戏版本的项目.每个储藏库都包含要创建一个WOW服务器端的所有文件和代码.
你可以按照安装指南查看代码并将它下载到本地电脑上.然后你可以用一个编译器来编译代码生成一堆文件以及运行程序.
Commits (提交)
当仓库发生一些改变被称为一次提交并且会分配一个唯一标识来标记这次修改.只有拥有特定权限的用户才可以提交改变.任何用户都可以提交更改建议,但是只有项目的开发人员才能更新储存库.
Issues/Bugs (问题/Bugs)
Bugs和问题追踪通常是在Github里的"Issues Tracker"里,CMaNGOS 在这里使用一个集中的问题追踪器对所有储存库进行追踪.直到你真正知道自己在做什么,建议不要随便提交问题追踪器.因为大多数时候(新手上路),只是漏掉了安装或者配置的某个过程.真正掌握CMaNGOS以后,当你遇到BUG就可以通过问题追踪器提交这些BUG(并且你要知道,这是开发者唯一知道他们需要修复BUG的路径).
cmangos.net Forums (cmangos.net 论坛)
cmangos.net 论坛是你提交问题,获得帮助,提交建议以及获取反馈的地方.过来注册个账号看看吧!这里大家都很友好,乐于助人并且能回答大部分的问题.话虽如此,在此之前还是请您先到"issues",安装指南或者论坛上搜索下是否有重复的问题以避免重复提交.
MySQL Server and Databases
首先在安装指南里要求在进行其他操作前安装MySQL服务器并且运行.这里没有指导安装MySQL服务器的方法,因为MySQL是没有专门针对CMaNGOS的.事实上它是由不同的应用程序使用的.你可以在互联网上找到许多安装和配置MySQL服务器的指导,去Google上搜索应该能找到一个你需要的.
MySQL服务器将大量的信息存储在数据库中.这些数据库告诉CMaNGOS每台服务器实际存放的信息:登陆用名和密码,角色信息,数据,对象,物品,NPC,敌对目标,战利品,boss信息,任务信息,工会信息,资源节点等等.基本上如果你有个空的数据库并且你登陆到你的游戏服务器,那么什么都不会存在.只是一个大的什么都没有的世界.你可以想象游戏服务器就像一个城堡,但是没有地形,没有护城河也没有城墙以及其他的物件.当你将游戏服务器连接到一个存在信息的数据库,然后城堡增加了城门,吊桥,窗户,守卫,武器,食物和其他一些玩家可以看得到的对象.
你会发现每个数据库中有很多表,你可以把它看成不同的Excel表.下面是由上往下的数据库分析图:
MySQL Server > Database > Table > Information
强烈建议你获取一个SQL的客户端(比如 SQLyog),它将帮助你了解什么事结构化数据库.
Where is this server?(这个服务器在哪里?)
MySQL应用服务是后台运行着(Windows中可以从任务管理器的服务中查看).
你可以启动和关闭MySQL服务器除此以外需要运行游戏服务器来访问数据库.你可能需要一个管理SQL服务器的工具来启动和停止它.
CMaNGOS Databases (CMaNGOS 数据库)
一旦你安装运行MySQL服务器并完成 CMaNGOS 安装指南 你会发现有4个新的数据库:realmd, characters, mangos以及scriptdev2(有的数据库可能会将scriptdev2里的表放在mangos中).接下来将简单介绍下每个数据库中包含的信息.
realmd database (realmd 数据库)
该数据库包含服务器以及玩家账号信息.在这个数据库里你可以看到一张'realmlist'的表用来引导游戏客户端连接游戏服务器的信息.数据库也包含玩家登陆服务器的账户信息以及禁止登陆等信息.
characters database (characters 数据库)
该表包含许多表对应游戏相应的角色信息:他们的技能是什么,他们选择的天赋,属于的工会,以及他们的物品清单等等.
mangos database (mangos 数据库)
该数据库包含实际游戏世界里的所有事物:物品,资源,NPC,敌对生物,任务;这些东西最后组成了暴风城角落里的箱子.显然这是最大的一个数据库.
scriptdev2 database (scriptdev2 数据库)
该数据库记录在游戏中触发的的脚本.一个脚本就像:一组指示,只有非玩家的生物和对象使用(想象着就是这个脚本的受众在玩一样).暴风城的守卫怎么知道巡逻的路径以及攻击敌对的生物呢?一个脚本就可以搞定.一些脚本构建在游戏本身而有些则在mongos数据库中.ScriptDev2 是一个更加高级的系统用于复杂的脚本,比如boss战斗和一些大的事件.
可执行应用程序
可执行应用程序(通常被认为是一个'二进制程序')是当你完成编译后生成的文件的一部分.你可以注意到电脑上的许多应用程序特点都是以.exe为文件名后缀的.CMaNGOS其实产生的有两个很重要的可执行文件:realmd.exe和mangosd.exe.当你想要启动服务器你需要两个程序都正确的运行.如果你的配置或者数据库存在问题,它们会显示你所需要知道的错误信息.这两个程序正常运行你的服务器就可以一直运行.
realmd
realmd.exe是WOW客户端连接服务器的第一个关口.当游戏启动会尝试连接一个realmd类的服务器,并且提交登陆信息后会尝试与数据库中的账号进行匹配匹配通过后会选择对应的服务器.
mangosd
mangosd.exe是真正的游戏服务器(通常被称为一个领域).当你运行它以后会看到许多事件的消息产生,你甚至可以在控制台中输入命令以执行它们.
配置文件
安装指南中有一部分提到将几个.conf的文件移动到"run"文件夹中.这些就是用来决定你的服务器怎样去运行的配置文件.你所需要做的就是按照提示的参数修改配置参数以按照你的想法去运行服务器.
realmd.conf
这个文件是用来告诉realmd.exe程序应该用哪个数据库来储存账户信息.你还可以配置一些基本的锁功能,以禁止一些IP的和没有安全证书的机器登陆.
mangosd.conf
这也许是最重要的一个配置文件,mangosd.conf包含了许多变量以告诉你mangosd.exe使用哪个数据库读取角色,账户以游戏的世界信息.你可以调整不同的属性值来调整如 XP率, PVP设置等(只要看看文档说明就可以明白该怎样改变相关的设置).
scriptdev2.conf
这个文件就只有一件事,那就是告诉mangosd.exe程序scriptdev2数据库在哪里.
ahbot.conf
这是一个可选的配置文件,如果添加到了你的"run"文件夹中你将可以使用拍卖行机器人(机器人系统可以模拟一个活跃的拍卖系统进行买卖,就像有许多玩家在服务器中一样).
mods.conf
另一个可选配置文件,用来启动和禁用与标准游戏不同的内容.
#游戏资源 在安装指南中的最后一步是从WOW客户端中提取"资源".你需要将产生的四个文件夹移动到"run"文件夹下使得游戏服务器能够运行: dbc, maps, vmaps, 以及 mmaps.
DBCs
DBC文件提供游戏的细节如法术.你可能知道大多数法术和物品的简单信息都包含在数据库中,而更详细的信息则包含在DBC文件中.
MAPS
非常直接:maps文件夹下包含的是服务器需要用的所有地图文件(实际的世界环境).
VMAPS
Vmaps类似是覆盖在地图上的物件,从而告知玩家和生物哪些物件是横向阻塞的如树木,建筑物以及箱子等.
MMAPS
Mmaps类似告诉生物和npc不能越过的边缘.它不是必须的,但是能增强游戏体验,没有理由不使用它.注意,创建mmaps需要几个小时,你可以离开或者小睡一会儿.当你运行ExtractResources.sh脚本提取资源时,会提示你是否提取mmaps.
#好了,现在我们该干些什么呢? 现在我们继续探讨这些类容是如何在一起工作的.
Next: 所有事物如何相互配合