ContractTools - ScutGame/Scut GitHub Wiki
此章节介绍如何使用协议工具平台
它提供开发人员在开发阶段快速生成客户端与服务器端的通讯协议代码,减少因通讯协议写错造成两边联调时间,提高开发效率;(注:在生产环境运行时,就不再需要它了)。也可模拟客户端发送Http或Socket请求,测试服务端Action协议,服务端是Console程序则使用Socket请求,Web程序则使用Http请求。
源码地址: https://github.com/ScutGame/Scut/tree/master/Source/Tools/ContractTools
-
IIS 7.0以上版本
-
VS2013 以上版本
安装遇到问题,请查看FAQ帮助
IIS安装注意
需要勾选 “万维网服务” ->"常见Http功能"-> “静态内容”,否则显示页面时会提示“因Mime类型不匹配而被忽略”造成排版错乱问题
采用批处理方式创建(批处理文件在当前下载Scut目录:Scut.svn\Source\Tools\ContractTools\db\mssql\必备库创建一键运行.bat);使用Sa帐号(安装MSSQL数据库时的帐号)创建数据库(或用DB维护者权限的帐号),配置需要相应修改;bat文件如下:
set dbServer=. SQL数据库服务地址,本机(.)号表示
set dbAcount=sa 帐号(有创建库权限的)
set dbPass=123 密码
set gameuser=game_user 需要创建游戏服使用的帐号
set gamepass=123 游戏服使用的密码
set dbpath=%cd%\Data 数据库存储位置目录(默认当前目录)
在Window平台使用Mysql数据库,只需要手动执行db\mysql\importdb.sql文件导入或使用Navicat for MySQL工具导入。
- 打开控制面板->管理工具-> Internet 信息服务(IIS)管理器;
- IIS网站根目录“功能视图”的“ISAPI和CGI限制”中“ASP.NET V4.0”配置允许。
- 在网站结点右击,添加站点contract.scutgame.com;
- 将站点路径指向到Scut:\Source\Tools\ContractTools\release目录;
- 设置应用程序池“Framework v4.0”和“经典”模式;
- 设置Everyone用户对C:\Windows\temp目录的读写权限;
- 设置C:\Windows\System32\drivers\etc\Host文件,添加配置“127.0.0.1 contract.scutgame.com”;
- 修改数据库连接,打开Web.config文件(如果使用MySql,设置成providerName=“MySqlDataProvider”)
SQL的配置如下:需要修改数据库连接串中相应的uid
与pwd
的值
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="Contract" providerName="" connectionString="server=.;database=ContractDB;uid=sa;pwd=123" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5.1"/>
<httpRuntime requestValidationMode="2.0"/>
</system.web>
</configuration>
MySql的配置如下:需要修改数据库连接串中相应的uid
与pwd
的值
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="Contract" providerName="MySqlDataProvider" connectionString="server=localhost;database=ContractDB;uid=sa;pwd=123" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5.1"/>
<httpRuntime requestValidationMode="2.0"/>
</system.web>
</configuration>
打开网站址http://contract.scutgame.com,显示画面如下:
小提示:
- 如果界面风格不是图中的样式,则使用的是旧版本的,可以从源码中下载新版本;
- 如果打开的界面下拉框都是空白的,检查数据库
ContractDB
是否有导入成功,或者配置的数据库连接串账号与密码是否正确;- 其它问题需要查看下Log日志目录下有没有异常信息;
编辑工具栏
- 项目管理
- 版本管理
在游戏开发中,策划会不断增加功能需求划分多个版本进行开发,因些协议接口也需要以版本划分,可以从1.0版本开始。
- 枚举管理
- 类别管理
- 协议管理
工具栏显示为“新增协议”、“编辑协议”;游戏客户的UI划分为:显示数据、按钮操作、触摸事件等,定义协议时可以按照显示数据的部分设计一个协议ID,按钮操作的设计一个协议ID;操作事件类的可能返回的结果类似,可以合并到一个协议,请求以Type参数区分。
- 协议参数增加
Scut提供的二进制协议格式,只能是以下类型:
其中Password类型在发送时DES加密密码;Void类型指此参数暂时不使用,Record、End类型参数需要成对出现,指进入循环体开始与结束标记,此范围之间定的参数将会循环下发,循环体标记内可以嵌套循环体;循环体常用在下发给客户端List的多行记录数据。
参数类型为“请求”时不使用Record、End类型标记,需要设置“必传参数”选项。
使用“自定义协议”选项,只需要增加协议ID后,不用另外增加参数,这里的参数只是Scut的二进制协议使用;会生成服务端与客户端代码的自定格式的模板。
- 单元测试
Http请求需要设置地址为http://127.0.0.1/Service.aspx;Socket设置为“127.0.0.1:9001”,点发送时会自动判断Http或Socket请求方式;请求的参数可以请求参数列表设置默认值,也可以在测试参数栏手动修改;Post参数框会显示发送请求并加签名后的参数字串。自定的协议不能使用协议调试功能。
注: Msgid是单一Client每个请求的唯一编号,编号以自增方式,服务器响应的头会携带请求的MsgId回来;Uid是玩家唯一编号,在登录成功后服务器会下发,未登录时传0;Sid是玩家请求的会话ID,当玩家连接成功后就会产生一个GameSession对象,服务器会下发Sid,在断连时通过Sid也可以复活GameSession对象来实现重连机制。