《服务端接入》

服务端接入概述和架构

概述

嘿西游服务端在逻辑上分为游戏服务器和中转服务器。

游戏服务器采用 C++ 编写,使用 Sql Server 2008 作为关系型数据库。

中转服务器基于 AnySDK 的 miniGameServer(miniGameServer 源码托管在 github 上,https://github.com/AnySDK/miniGameServer ),所以其采用了 PHP + MySQL 技术栈。中转服务器做为游戏服务器和 AnySDK 服务器通信的中间角色,负责提供如下图(图 1)所示的,AnySDK 所需的默认登录验证地址和默认支付通知地址。我们开源了中转服务器的源代码,并托管在 github 上。

游戏配置界面

图1:AnySDK 客户端游戏配置界面

除此之外,中转服务器还负责:

  1. 维护用户 session 以供游戏服务器验证;
  2. 存储 AnySDK 服务器通知过来的订单信息,并异步告知具体的游戏服务器发放道具。

游戏服务器和中转服务器既可以部署在同一台服务器上,也可以部署在不同的服务器上。目前我们将这 2 个角色部署在了同一台 Windows Server 2008 上面。

架构

下图(图2)是 AnySDK 的登录流程,在这个流程中,GAME-SERVER 由嘿西游服务端的中转服务器来担当。真正的游戏服务器只和中转服务器通信(如图 3 橙色箭头所示流程)。

登录流程

图2:AnySDK 登录流程

嘿西游登录流程

图3:嘿西游登录流程

安装 miniGameServer

我们执行的 miniGameServer 安装过程和 miniGameServer 文档所述的安装过程有些不同,miniGameServer 的 README.md 文档中是使用 nginx 或 apache 作为 web 服务器,而此处我们使用的是 IIS 7.5。

miniGameServer 安装在 Windows Server 2008 + IIS 7.5 + PHP-CGI 5.6.12 + MySQL 5.5 环境下。IIS + PHP 环境的搭建方式网上随便搜索一大堆,此处不再赘述。

1、在 IIS 中创建站点 hxy.chinacloudapp.cn (此站点为假站点,您无法访问),设置好站点根目录(此处设置的根目录 E:\www),将 miniGameServer 的代码上传到 E:\www\anysdk\hxy 目录下,操作完之后的目录结构如下图所示:

目录结构

2、安装 MySQL 并创建数据库。

3、接下来打开浏览器并访问 miniGameServer 安装地址 http://hxy.chinacloudapp.cn/anysdk/hxy/index.php/install ,按照安装页面提示安装 miniGameServer,安装成功之后,AnySDK 游戏配置界面所需要的默认登录验证地址和默认支付通知地址分别是:http://hxy.chinacloudapp.cn/anysdk/hxy/index.php/api/user/login http://hxy.chinacloudapp.cn/anysdk/hxy/index.php/api/payment/callback

基于 miniGameServer 实现中转服务器具体功能

安装好 miniGameServer 之后,要使它能够作为我们的中转服务器,就还需要对它进行一下编码修改,这其中包括:

  1. 修改原有登录验证转发接口,在登录成功之后创建用户 session;
  2. 新建 session 查询接口;
  3. 新建通知游戏服务器发放道具的异步脚本,这个脚本将由 Windows 任务计划程序来调用。

验证登录结果,创建用户 session

提供 session 查询接口

接收支付通知

异步告知道具发放

游戏服务器和中转服务器通信

查询用户 session

接收道具发放通知

评论区