Skip to content
ScutGame edited this page Jan 9, 2015 · 16 revisions

此章节介绍如何搭建服务端项目工程

新建立项目

Scut的开发环境要在VS2013以上版本

  1. 首先打开VS2013,创建一个“类库”类型的项目;

Project add

  1. 选择Scut最新的Lib类库,将Lib目录和Console目录下的所有文件复制到新创建的类库项目中;

  2. 添加dll引用,切换到VS解决方案管理器中,将所有dll引用到项目中;

  3. 在VS解决方案管理器中,选择项目点击“显示所有文件”,将Script目录与GameServer.exe.config和Nlog.config文件包含到项目中;

  4. 调试项目,右击项目选“属性”,打开“调试”栏选择“启动外部程序”设置为“GameServer.exe”路径,并将工作目录设置成与GameSession.exe文件同级目录;

Project property

下面是Scut服务端项目的目录结构:

ScutProject

理解目录结构

  1. 第一部分: Script脚本目录

包括:Model、CsScript、PyScript和LuaScript子级目录;不能有含有其它自定义的目录或文件,自定义的目录或文件是不会被监听的。

  • Model目录: 所有脚本统一使用的数据实体类目录,它是单独编译的子项目;此目录下的脚本不能调试,因此不要在脚本内写业务处理代码;

  • CsScript目录: C#脚本的业务逻辑目录,C#开发者使用,包括以下子目录和文件:

    Action子目录: 与客户端对接的通讯协议处理接口类,包括:处理请求包,响应封包等方法;

    Locale子目录: 本地化的多语言化处理类,如:提示语;

    MainClass.cs文件: C#脚本启动入口,包括:程序启动,程序停止,接收请求,打开连接,关闭连接和心跳包接收等方法;

    扩展子目录: 可以根据需要在CsScript目录下划分子目录,如以功能划分:Chat(聊天)、Plot(副本)、Task(任务)等。

  • PyScript目录: Python脚本的业务逻辑目录,Python开发者使用,包括以下子目录和文件:

    Action子目录: 与客户端对接的通讯协议处理接口类,包括:处理请求包,响应封包等方法;

    Lib子目录: Python脚本开发者的类库

  • LuaScript目录: Lua脚本的业务逻辑目录,Lua开发者使用;

  1. 第二部分: Scut类库与第三方类库

包括所有的dll文件,ZyGames名称开头的是Scut的类库,其它的是第三方类库。

  1. 第三部分: GameServer宿主程序与ScutSMS工具

包括以下文件:

  • GameServer.exe文件: 以Console控制台方式运行的宿主程序;

  • GameServer.exe.config文件: 宿主程序的配置文件;

  • Nlog.Config文件: 第三方错误跟踪Log日志类库的配置文件,包括:输出的目录位置,错误级别输出控制和Log输出的类型控制(输出的类型:文件,控制台,Trace和Azure第三方存日志储等);

  • ScutSMS.exe文件: Scut提供的工具,可以方便配置游戏的参数和Redis数据的操作;

Config配置文件

  1. NLog.config文件: 游戏服日志文件配置,使用第三方的Nlog类库,结点"logDirectory" 是配置日志文件输出的路径,其它结点按默认配置。
#!xml
    <variable name="logDirectory" value="d:\NLog\XXgame"/>

  1. GameServer.exe.config文件: 游戏服的主要配置,包括:数据库连接配置,Redis连接配置和其它游戏环境配置等;可以打开当前目录下的ScutSMS工具进行配置。
#!xml

<?xml version="1.0"?>
<configuration>

  <!--基本参数配置,其它详细参数通过ScutSMS工具查看参数-->
  <appSettings>
    <add key="Redis.Host" value="127.0.0.1:6379"/> <!--Redis服务的连接串,格式:password@host:port -->

    <add key="Script_IsDebug" value="True"/> <!--开启脚本调试模式-->
  </appSettings>

  <!--数据库连接串配置-->
  <connectionStrings>
    <!--
    @name: 连接串的标识Key,是Entity类配置的EntityTable属性的ConnKey参数值,两者要对应上
    @providerName: 连接的数据库驱动类型;SqlDataProvider是SQL数据库的连接,MySqlDataProvider是MySql数据库的连接
    @connectionString: 数据库连接串,与SQL或MySql数据库的连接串相同
    -->
    <add name="ConnData" providerName="SqlDataProvider" connectionString="Data Source={服务器地址};Database={数据库名};Uid={登录帐号};Pwd={登录密码};"/>
  </connectionStrings>

</configuration>

C#开发注意: 类与类之间的交叉引用问题,如:Model目录中的类不能引用CsScript中的类,但CsScript目录下的类可以引用Model中的类。

Clone this wiki locally