ARK安装配置

ARK小白教程(傻瓜式教程)

Windows教程

一、介绍

ARK很强大!

请加ArkGameFrame交流QQ群:540961187

二、下载安装

1. 从github下载ARKGameFrame源码(可以是zip包解压出来的或者通过github PC端clone下来的)

2. Windows环境如下:

检查自己的电脑

A. Windows 10, 8.1, 或者 7,更低就不行了!

B.  必须安装 Visual Studio 2017 或者 Visual Studio 2015 Update 3 ,不同的版本在添加依赖库时需要不同的配置,一定注意!

C.   必须安装Git

我的是VS2017,也就用该版本举例子。

打开“VS 2017的开发人员命令提示符”,位置在”开始->Visual Studio 2017->VS 2017的开发人员命令提示符”。


如果没有的话在VS安装目录下找到这个这个文件就是了:

Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat。


输入git --version,查看版本,如果有版本信息:


如果没有安装,就马上安装吧。

下载地址:https://git-scm.com/downloads

下载完成后要重启电脑哦。

D.   必须安装CMake 3.0 +

同样方法检查cmake是否安装,在VS开发人员命令提示中输入 cmke --version


如果安装了就会出现版本信息,否则提示错误。

下载地址:https://cmake.org/download/

安装成功后一定要重启电脑。


三、启动Demo

1. 打开VS 开发命令提示,我的ARKGameFrame 工程放在G:\MyWork\Ark 目录下:

进入项目根目录:


进入Dep目录,执行build_dep.bat文件,这可能会消耗较长时间,下载工程依赖的库文件。需要注意的是,VS2017和VS2015 使用的build_dep.bat文件内容是不一样的。

当执行结束成功后就可以打开ARKRoot/Frame/ARK.sln 工程了。

对ARK工程进行编译,如果第一次出错,再编译一遍,再出错那就真错了,就不用编译了。

执行ARKRoot/Shell/GenerateConfigXML.bat 文件,生成工程需要的配置文件。


至此,ARK工程就配置完成了。

点击执行ARKRoot/Bin/Server/Debug/Run.bat,就跑起来了。

3. 。。


四、第一个完整流程

一个完整的流程即:客户端向服务器发送一条消息,服务器根据消息的类型进行正确数据处理,并给客户端相应的回复。

对于理解ARK还处于小白状态的同学,就要分开理解其中的各个模块了。

接下来是以英雄模块(HeroModule)例子来介绍的。

玩家登陆游戏后,请求已解锁的英雄列表(HeroList),玩家选择(select)解锁的英雄(Hero),进入游戏场景进行游戏。当玩家有钻石充足了,接着可以解锁(Open)新的英雄。

为了完成这个模块,又要划分出几部分:

1. 数据部分

包括英雄静态表(Property),玩家拥有的英雄结构数据(Record/)和网络之间的传输数据(Protobuf)。

英雄静态数据表(Property):

在Bin\Server\DataConfig\Excel目录下创建Hero.xlsx表格并打开。



编辑Hero.xlsx表格:

表格内容格式从Item.xlsx文件中拷贝即可。


因为是Property类型的数据,所以工作表页签要以Property开头命名,用于生成工具辨别数据类型。

必须将多余的工作表删除,否则生成数据表会失败。

结构数据表(Record):

在Bin\Server\DataConfig\Excel目录下打开Player.xlsx文件,这里面是玩家Player的数据配置。

打开Player.xlsx下Record_Hero工作表:


编辑PlayerHero模块,完成后:


只剩下GUID和ConfigID两个字段了。删除其他字段必须删除干净,不能留下备注等其他痕迹。

第一行第二列是这个数据结构的名字,也就是类名。

第2行Row表示内存分配多少行这样的结构,比如一共有64个不同的英雄,那么Row就是64。

第3行Col表示这个数据结构中有几列,很显然是两列,需要改成2。

下面几行中Public 表示是否广播给周围人,Private表示是否要同步给自己,Save表示是否要存档 ,Cache表示??

ConfigID对应Hero.xlsx文件中ID,而GUID表示内存中游戏世界中的唯一标识。

Hero是Property,是静态的;PlayerHero是Record,是动态的;Player.xlsx表中PlayerHero配置了玩家持有Hero的数据结构,一会会通过文件转换工具将xlsx表格转换成xml表格供工程加载到内存中。

通过Record类型的结构数据生成的xml文件会存储到Bin\Server\DataConfig\Struct\Class目录下面,通过Property类型的静态数据生成的xml文件会存储到Bin\Server\DataConfig\Ini目录下面。

静态数据和结构数据都已经配置完成,需要使用Bin\Server\DataConfig\Tool目录下面的FileProcess_d.exe工具生成xml文件,双击执行吧。

生成过程中如果有错误,读一读看看能否解决,不行的话联系我们吧。

成功后会生成新文件和更新文件:

Proper类型的静态数据文件:


Record类型的结构文件:


打开Hero.xml后查看一下吧:

Property静态配置文件:


Record结构配置文件:


原来是这样,有了这两个配置文件,Server启动时就可以根据结构配置生成相应的内存结构,并加载静态数据到内存中。


通过Protobuf生成类(class):

本例生成Hero C++ 和 C# 类文件。

在Frame\SDK\Proto目录下创建AFMsgHero.proto文件并编辑如下代码。


syntax = "proto2";//固定格式


package AFMsg;    //包名为 AFMsg


message Hero //定义Hero类

    required int64                id = 1;   //类型为 int64 变量名为 id 的字段。

                                  //required 为必须字段

    optional string     name = 2; //类型为 sting 变量名为 name 的字段。 

                                  //optional 为可选字段

}


message HeroList //定义HeroList

{

    repeated Hero   heroList = 1; //类型为 Hero 变量名为 heroList 的列表。

                            //repeated 表示该类型为重复数据,所以为列表。

}

如下图:


这是定义了两个类,分别是Hero和HeroList。

Hero类包含了两个成员变量:int类型的id和string类型的name。

HeroList包含了一个成员变量:Hero类型的列表heroList。

客户端向服务器请求的英雄列表,就是HeroList类型的对象。


编辑保存后打开同目录下的gen-proto.bat文件:


将新建的AFMsgHero.proto文件添加进去并保存:


双击执行gen-proto.bat文件,即可生成名为C++和C#类文件。

在同目录下生成了C++文件:


在cs目录下生成了C#文件:



配置协议ID:

没有协议,不成方圆。协议是客户端与服务器之间通信的桥梁。

本例子中需要增加3条协议:

A.获取解锁英雄列表(GetHeroList)、

B.解锁指定英雄(OpenHero)、

C.选择指定英雄(SelectHero)。


协议ID的配置也是通过protobuf生成的。

打开Frame\SDK\Proto目录下的AFDefine.proto文件:


在enum EGameMsgID中添加了6条协议ID:

        EGMI_REQ_HERO_LIST                                                        = 140;                        // 申请英雄列表

        EGMI_ACK_HERO_LIST                                                        = 141;                        // 回复英雄列表

        EGMI_REQ_OPEN_HERO                                                        = 142;                        // 申请解锁英雄

        EGMI_ACK_OPEN_HERO                                                        = 143;                        // 回复解锁英雄

        EGMI_REQ_SELECT_HERO                                                = 144;                        // 申请选择英雄

EGMI_ACK_SELECT_HERO                                                = 145;                        // 回复选择英雄


REQ表示客户端向服务器发送请求;

ACK表示服务器向客户端回复请求。

再次执行同目录下的gen-proto.bat文件,生成更新后的程序文件。


至此,Server需要的所有数据都已配置完成。

总结一下包括:英雄的静态数据Hero(Property),玩家拥有英雄的数据结构PlayerHero(Record),以及通过Protobuf生成的C++/C#类文件。



2. 服务器拓展模块

ARK拓展模块能力是非常强大的。

今天多了一个需求需要增加一个模块,明天删除一个需求减少一个模块,模块变更很正常。

本例中需要增加HeroModule模块。

打开Frame/ARK.sln工程,我们将在解决方案下Server/GameServer/AFGameLogicPlugin插件中工作。

创建目录HeroModule,并创建AFIHeroModule.h接口类,



注册Modulle:

在AFGameLogicPlugin.cpp中注册HoroModule:

代码如下:

REGISTER_MODULE(pPluginManager, AFIHeroModule, AFCHeroModule)

你可能感兴趣的:(ARK安装配置)