Scut快速开发(2)

Python脚本开发

1 开发环境

Scut Lib版本:5.2.3.2

需要安装的软件

a) IIS和消息队列(MSMQ)

进入控制面板,程序和功能

b) SQL Server2005

c) VS2010开发工具

d) Python2.6(ScutGame官网下载IronPython2.6.1 RC1 for .NET 4.0插件)

工具

a) 协议工具(目录Source\Tools\ContractTools)

2 游戏公告

2.1 创建项目

打开VS2010,新建一个控制台项目命名为GameNotice,并设置项目属性的目标框架为Net Framework 4.0;如图:

组件引用

项目

引用路径

HostServer

Lib\Newtonsoft.Json.dll

Lib\NLog.dll

Lib\protobuf-net.dll

Lib\ ServiceStack.Common.dll

Lib\IronPython.dll

Lib\IronPython.Modules.dll

Lib\Microsoft.Dynamic.dll

Lib\Microsoft.Scripting.dll

Lib\ZyGames.Framework.Common.dll

Lib\ZyGames.Framework.dll Lib\ZyGames.Framework.Lib.dll

Lib\ZyGames.Framework.RPC.dll

Lib\ZyGames.Framework.Game.Lang.dll

Lib\ZyGames.Framework.Game.dll

Lib\ ZyGames.Framework.Game.Contract.dll

(注:检查Python的DLL组件引用属性面版,”复制本地“属性为True)

增加GameHostApp类,继承至GameHost基类,在Main方法中调用

//Program.cs

static void Main(string[] args)

{try{

GameHostApp.Current.Start();

}catch(Exception ex)

{

Console.WriteLine(ex.Message);

TraceLog.WriteError("HostServer error:{0}", ex);

}finally{

Console.WriteLine("Press any key to exit the listener!");

Console.ReadKey();

GameHostApp.Current.Stop();

}

}

增加GameHostApp类中的OnRequested、OnStartAffer等方法处理代码:

//GameHostApp.cs

classGameHostApp : GameSocketHost

{private staticGameHostApp instance;staticGameHostApp()

{

instance= newGameHostApp();

}privateGameHostApp()

{

}public staticGameHostApp Current

{get { returninstance; }

}protected override void OnConnectCompleted(objectsender, ConnectionEventArgs e)

{

Console.WriteLine("Client:{0} connect to server.", e.Socket.RemoteEndPoint);

}protected override voidOnRequested(HttpGet httpGet, IGameResponse response)

{try{

ActionFactory.Request(httpGet, response,null);

}catch(Exception ex)

{

Console.WriteLine("{0}", ex.Message);

}

}protected override voidOnStartAffer()

{try{//时º¡À间?间?隔?更¨¹新?库a

int cacheInterval = 600;

GameEnvironment.Start(cacheInterval, ()=> true);

Console.WriteLine("The server is staring...");

}catch(Exception ex)

{

TraceLog.WriteError("The server start error:{0}",ex);

}

}protected override voidOnServiceStop()

{

GameEnvironment.Stop();

}

}

项目层次结构划分,增加Model目录存储数据实体类和PyScript目录存放脚本文件;修改App.config配置:

2.2 实体静态注入配置

用记事本打开GameNotice.csproj文件,在结尾增加如下配置:

... ...

... ...

(小提示:使用ILSpy工具反编译可以查看Model的Notice类属性会被修改)

2.3 创建数据库

使用SQL Server2005建立一个GameData库 ;

2.4 定义协议接口

打开协议生成器工具,增加一个“GameNotice”项目方案,接着在增加公告信息(接口编号2001)协议,请求参数和下发参数;如图:

2.5 编写脚本

导入脚本库

复制Scut/PythonLib/目录下所有文件到项目PyScript目录下,并包括到项目中,并修改路由配置表(Route.config.xml)的Python安装类库路径;如图:

新增脚本

在Action目录下创建脚本协议接口action2001.py,把协议工具生成的2001的脚本代码复制到action2001.py文件;接着将2001接口增加到路由表中,设置” ignoreAuthorize”为true;以下是需要修改的部分代码:

#注册DLL和引用命名空间

import clr, sysfrom action import *clr.AddReference('ZyGames.Framework')

clr.AddReference('ZyGames.Framework.Common')

clr.AddReference('ZyGames.Framework.Game')

clr.AddReference('GameNotice')from ZyGames.Framework.Common import *

from ZyGames.Framework.Cache.Generic import *

from ZyGames.Framework.Game.Cache import *

from ZyGames.Framework.Game.Service import *

from GameNotice.Model import *... ...

def takeAction(urlParam, parent):

actionResult=ActionResult()

noticeList=ShareCacheStruct[Notice]().FindAll()

result=MathUtils.GetPaging[Notice](noticeList, urlParam.PageIndex, urlParam.PageSize)ifresult:

actionResult.dsItemCollect= result[0]

actionResult.PageCount= result[1]returnactionResult

def buildPacket(writer, urlParam, actionResult):

writer.PushIntoStack(actionResult.PageCount)

writer.PushIntoStack(len(actionResult.dsItemCollect))for info inactionResult.dsItemCollect:

dsItem=DataStruct()

dsItem.PushIntoStack(info.Title)

dsItem.PushIntoStack(info.Content)

dsItem.PushIntoStack(info.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"))

writer.PushIntoStack(dsItem)return True

运行结果

按F5启动程序后,使用协议工具的单元测试功能发起请求测试;

开源地址:

python游戏服务器框架_Scut游戏服务器免费开源框架--快速开发(2)相关推荐

  1. 基于python的全部开源的快速开发平台

    真正的大师,永远都怀着一颗学徒的心! 一.项目简介 今天说的这个软件是一款基于python的全部开源的快速开发平台. 二.实现功能 系统管理 菜单管理 部门管理 角色管理 用户管理 常规配置 字典管理 ...

  2. 上线 Python 应用仅需一条命令的开源框架:Zappa(详细教程)

    本文面向有 Python Web 基础的小伙伴 作者:HelloGitHub-吱吱 这里是 HelloGitHub 推出的<讲解开源项目>系列,今天要向小伙伴们介绍一个 Python 无服 ...

  3. Pear Admin Layui - 基于 Layui 打造的免费开源、快速、高效的中后台管理系统前端框架

    代码量少.学习简单.功能强大.轻量级.易扩展,轻松开发从现在开始. 关于 Pear Admin Layui Pear Admin Layui 是一个快速,简洁且高效的 admin 前端框架,使用 La ...

  4. 干货!请码住——点此领取免费开源框架

    何谓框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法; 框架是可被应用开发者定制的应用骨架. 拥有一套企业级开发框架有哪些好处? 对于一个软件公司 ...

  5. python 图书馆管理程序下载_图书管理系统 免费开源代码 开发,分享 - CodeForge.cn...

    图书管理系统0.00 B01-08-04|10:06 test0.00 B01-08-04|10:06 _vti_cnf0.00 B01-08-04|10:06 news0.00 B01-08-04| ...

  6. dwr框架ajax验证账号,dwr-Ajax开源框架

    dwr全称Direct Web Remoting原理将java代码转化成js对象,实现跨域访问 web.xml<?xml  version="1.0" encoding=&q ...

  7. html中怎么在图片上做导航,如何给导航菜单添加图标 | Catfish(鲶鱼) CMS | 免费开源CMS - 快速建站系统 - 官方网站...

    我们访问某些网站的时候,会发现导航菜单的文字前面有一个小图标,如下图所示: 在鲶鱼系统里面我们怎么来添加这个文字前面的图标呢? 下面我们来介绍一下如何实现. 首先我们进入系统后台,在后台的侧边栏中找到 ...

  8. 如何通过 LeanCloud 快速开发实时对战小游戏?

    实时对战是 LeanCloud 专门针对多人在线对战游戏推出的后端服务.开发者不需要自己搭建后端系统,利用云服务就可以轻松实现游戏内玩家匹配.在线对战消息同步等功能.本期直播课程我们将通过此服务来实现 ...

  9. 真香!全场景AI计算开源框架MindSpore,我爱了

    [摘要] 本文主要通过两个实际应用案例:一是基于本地 Jupyter Notebook 的 MNIST 手写数据识别:二是基于华为云服务器的 CIFAR-10 图像分类,对开源框架 MindSpore ...

最新文章

  1. Java 方法重载 方法重写
  2. Linux socket关闭连接shutdown与close
  3. Dizzy Cows(拓扑)
  4. 【图像处理】——比特平面原理和实现方法(全网较全面,含所有比特位图的分层方法)
  5. 常用的搜索引擎dork (不断更新)
  6. 操作系统复习笔记 07 Process Synchronization 进程同步
  7. Nginx网站用户认证
  8. java 获取工程编码格式_java 获取获取字符串编码格式
  9. c语言堆栈基本代码入栈出栈_几道和「堆栈、队列」有关的面试算法题
  10. 如何在 GitHub 上大显身手?
  11. 正则表达式在java中的用法
  12. mdl文件是c语言,mdl文件扩展名,mdl文件怎么打开?
  13. 如何下载旧版本android NDK
  14. w ndows摄像头驱动怎么安,如何安装摄像头驱动?求安装步骤和方法!!!
  15. centos linux安装网卡驱动,如何在CentOS系统下安装网卡驱动
  16. python使用execjs时,编码gdk报错
  17. [初级理论]给老婆做测试培训-02
  18. Microsoft Edge浏览器网页改为纯黑色(将浏览器网页底色改为黑色)
  19. CDH集群执行任务报错:User xxx not found
  20. 中外合作计算机专业的大学排名,2017中外合作办学大学排名

热门文章

  1. ZooKeeper伪分布式集群安装及使用
  2. Abra宣布对BCH的原生支持
  3. SGU 332 Largest Circle(凸包内接圆半径nlogn)
  4. 168 Excel Sheet Column Title
  5. [Android] osx下如何使用SublimeText阅读Android系统源码
  6. HighCharts使用心得
  7. Nagios配置之交换机及路由
  8. [Spring MVC] - Spring MVC环境搭建
  9. mysql单机多实例——方法1
  10. UI设计实战篇——利用Bootstrap框架制作查询页面的界面