开发者社区> 问答> 正文

游戏盾SDK接入指南的介绍

云栖大讲堂 2017-10-20 11:00:51 3377

概述


通过本文,您可以了解到如何使用游戏盾产品的SDK,接入游戏盾。
[backcolor=transparent]典型接入场景


集成准备


  1. 获取appKey。集成游戏盾SDK之前,首先需要在阿里云游戏盾管理控制台中添加新应用,获得appKey。

  2. 下载SDK并解压缩。


接入说明


在游戏盾管理控制台页面,下载对应版本的SDK文件后,进行SDK接入。

Unity3D SDK接入

  1. 打开unity3d,编辑游戏脚本。

  2. 打开MonoDevelop,在类文件定义部分定义SDK外部方法 ALSDK_GetNextIPByGroupName。

  3. 定义SDK方法外部引入。
    DllImport("__Internal")]private static extern long ALSDK_GetNextIPByGroupName(string gName);

  4. 在工程启动函数中,调用函数 ALSDK_GetNextIPByGroupName。调用参数为 fighterServers.GameName.aliyunID.AliYunCeng.com,调用参数即为分组的ID。

  5. 函数返回的即为配置在 fighterServers.GameName.aliyunID.AliYunCeng.com 分组中分配的游戏盾IP。

  6. 保存后对项目工程进行编译,编译为 Xcode 工程文件。

  7. 将SDK文件中的 AISDK.framework 文件拖动到工程中,直接进行编译及运行。

  8. 在console里查看编译结果。

    1.152.55.120就是客户端连接游戏盾获取当前可用的IP地址。


Window SDK接入


游戏盾提供三种形式的Windows平台SDK:
  • 嵌入式SDK
  • 代理式SDK(非独立进程形式)
  • 代理式SDK(独立进程形式)

这三种形式的SDK分别满足不同的需求。

嵌入式SDK


嵌入式SDK在形式上表现为一个动态链接库,共包含三个文件:YunCeng.h YunCeng-WINDOWS.dll YunCeng-WINDOWS_dll.a。宿主应用程序运行的时候,加载SDK,在连接宿主应用程序的服务器前,调用SDK接口,获取group id对应的next IP,然后使用获取到的next IP完成所有的通讯。
[backcolor=transparent]Code demo

[backcolor=transparent]编译链接方法
  • 编译时不需要特殊选项。
  • 链接时,需要链接 YunCeng-WINDOWS_dll.a 库。


代理式SDK(非独立进程形式)


被宿主应用初始化之后,SDK在后台启动若干代理线程,代理宿主应用和其服务器之间的通信,宿主应用只需连接本地端口即可,游戏盾的IP获取逻辑对宿主应用透明。
SDK在形式上表现为动态链接库,共包含 YunCeng-Agent.dll YunCeng-Agent.h YunCeng-Agent_dll.a YunCeng-WINDOWS.dll 这四个文件。YunCeng-Agent.dll 运行时依赖 YunCeng-WINDOWS.dll。
[backcolor=transparent]Code demo

[backcolor=transparent]编译链接方法
  • 编译时不需要特殊选项。
  • 链接时,需要链接 YunCeng-Agent_dll.a 库。


代理式SDK(独立进程形式)


启动一个独立进程,代理应用程序和服务器之间的通信,游戏盾的IP获取逻辑对应用程序透明,代理表项通过配置文件传递给SDK。
代理式SDK(独立进程形式)由三个文件组成,YunCeng-Agent-daemon.exe, YunCeng-Agent.dll, YunCeng-WINDOWS.dll,其中exe文件的运行依赖另外两个动态库。
配置文件使用ini文件格式,示例如下。

进程启动示例如下:


Android SDK接入


  1. 初始化。调用其它接口前,需要调用此函数进行初始化。[backcolor=transparent]函数说明:
    [backcolor=transparent][font=微软雅黑, &][backcolor=transparent]int YunCeng.init(String appKey)
    • 参数appKey为集成准备中获取的appKey。
    • 返回值0表示成功,其它返回值说明参见附录:返回值定义。

  • 获取nextIP。 建议您先在游戏盾管理控制台上建立分组及分组使用IP列表。通过此函数动态地返回可访问的IP地址。[backcolor=transparent]函数说明:
    [backcolor=transparent][font=微软雅黑, &][backcolor=transparent]String YunCeng.getNextIpByGroupName(String groupName)
    • 参数groupName为控制台上配置的分组名。
    • 返回值为对应的可访问的IP地址。


  • IOS SDK接入


    [backcolor=transparent]运行环境
    • iOS 5.1及以上系统版本
    • 3G、4G或Wi-Fi网络

    [backcolor=transparent]前期准备
    在使用SDK前,需要先将SDK添加到应用的工程中,步骤如下:
    1. 将SDK压缩包解压缩,得到 YunCeng.framework。
    2. 使用XCode打开应用工程,将 YunCeng.framework 从 Finder 中拖到应用工程的Project Navigator 中。

    [backcolor=transparent]SDK接入

    1. 初始化。在请求动态IP之前,应用需要调用SDK的初始化函数,初始化函数的原型如下:
      /! @brief 初始化int YunCeng_Init(const char app_key);@param app_key@return YC_CODE/
      [backcolor=transparent]注意:参数app_key是在游戏盾管理控制台申请的appKey。app_key如果被泄露,可能会被攻击者用来伪造应用请求从游戏盾控制中心获得动态IP,对应用的后端服务器发起DDOS攻击。建议将 app_key 保存在keychain中。

    2. 请求动态IP。在初始化完成之后,应用可以通过下面的函数向游戏盾控制中心请求一个动态IP。
      /! @brief 获取动态IP地址int YunCeng_GetNextIPByGroupName(const char group_name, char ip);@param group_name@param ip 出参,动态IP地址@return YC_CODE/
      • 参数group_name是在云盾控制台创建的分组名称。
      • 参数ip是输出参数,在函数执行成功之后保存动态IP地址。

      • 返回值说明参见附录:返回值定义。
        使用样例:
        char ip[16];int ret = YunCeng_GetNextIPByGroupName("group1", ip);


    附录



    返回值定义

    返回值定义
    [tr=rgb(239, 251, 255)][td]0 成功 1000-1999网络通信错误 2000-2999appkey及初始化错误 3000-3999游戏盾控制中心错误 4000-4999与游戏盾控制中心数据交换错误 9000-9999SDK自身错误
    如果问题未能解决,请联系 售后技术支持
    网络安全 开发工具 Android开发 图形学 iOS开发 Windows
    分享到
    取消 提交回答
    全部回答(0)

    集结各类场景实战经验,助你开发运维畅行无忧

    推荐文章
    相似问题