这篇教程是为了解决 GameMaker 游戏接入 Taptap 和 TapSDK 时的问题。
如果可以,请赞助我:爱发电 。TapSDK 的插件制作和该文档的编写花费了我大量的时间踩坑。
那么,请开始吧!如果你的游戏已经上架 Taptap ,只是想要接入 TapSDK,请跳过关于游戏审核
。
关于游戏审核
在使用本教程之前,首先需要成功注册厂商并尝试过一次游戏上架。具体文档请参考:https://developer.taptap.cn/docs/store/
GameMaker 游戏在审核期会出现一个普遍问题,即因为“非法收集信息”而被审核失败。类似于陀螺仪信息
的采集需要在用户协议与许可
之后。因此,你的游戏必须在最一开始有一个用户协议的查看与确认环节。至于这一环节的实现方式请自行发挥。
在解决问题之前,请先查看你的 IDE 版本,启动你的 GameMaker 并进入到主界面,在窗口的右上角会出现一个Runtime: vx.x.x.x.x
,请记住最后的这个版本号。随后请打开文件夹:
C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-[版本号]\android\runner\ProjectFiles\src\main\java\YYAndroidPackageDomain\YYAndroidPackageCompany\YYAndroidPackageProduct
这个文件夹所处的位置很深,且路径很长,在该文件夹中找到RunnerActivity.java
这一代码文件打开。
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME);
将以上代码删除。
mSensorManager.unregisterListener(this);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME);
将以上代码改为:
if(mSensorManager != null) mSensorManager.unregisterListener(this);
if(mSensorManager != null) mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME);
清理后重新编译游戏,现在应该可以通过自动审核了,至于人工审核就需要自行和taptap方面沟通。
接入 TapSDK
首先,你需要下载TapSDK的GameMaker插件:蓝奏云 密码:ej62 。解压出yymps格式的插件文件后可以用工具(Tools)->导入本地包(Import Local Package)
进行插件导入。插件内有两个文件夹:Extensions
和TapDemo
,前者是插件本体,后者是演示房间。我推荐最开始使用 GMTapSDK 的人可以看一看演示,了解异步事件-社交的用法。
准备工作
TapSDK 不能直接使用,需要进行一些准备。首先请在GameMaker中查看游戏配置(Game Options)->安卓(Android)
,在通用(General)一栏中将包域名(Package Domain),包公司(Package Company),包产品(Package Product)
三项修改为你自己的值(而不是使用默认的com.company.game)。然后将最小SDK(Minimum SDK)
一项调到21,否则无法正常编译。
然后,你需要编译游戏并将其安装到你的手机上(最好是真机,模拟器有时会出现问题),并安装另外一款软件:TDS签名工具(点此下载)。打开这个软件,点击选择应用
按钮,稍等片刻后,在下方的应用列表中选中你的游戏。然后点击获取签名
按钮。
编译游戏之前务必使用
清理(Clean)
按钮清理之前的编译缓存,否则大概率无法编译成功。
现在,你需要复制包名和签名。包名是选择应用
下方框中的值,而签名是包名下方的值(你可以通过复制签名
按钮很轻松的复制这个值。)
然后,来到 Taptap 开发者中心。依次进入 TapTap 开发者中心 > 你的游戏 > 游戏服务 > 应用配置,点击「立即开启」,获得当前应用的基本信息。你需要拿到五个值:
- Client ID: 在基本信息中有
- Client Token: 在基本信息中有
- Server Url: 在基本信息的右侧,有个
域名配置
,点开,其中有个服务器地址,复制它。 - Game Channel: 游戏频道
- Game Version: 游戏版本
你可以将以上五个值填写到演示物体obj_testtap
的创建事件中。然后我们需要进行登录前的准备。
注意:游戏频道和游戏版本用于后台数据统计,不需要可以随便填。但尽量还是能填啥填啥。
配置签名证书
Android 和 iOS 应用需要在 TapTap 开发者中心进入你的游戏,依次选择 游戏服务 > 开发与构建 > TapTap 登录 配置应用的相关信息(如下图所示),否则测试登录功能时会返回 signature not match
报错信息,无法正常使用 TapTap 登录功能。
签名和包名在上文已经给了获取的方法。直接复制进去即可。如果没有正确配置签名证书,那么你在登录时会出现Taptap客户端闪退的情况。
现在,你可以在手机上运行演示房间,检查是否可用了。
其他功能
登录状态和退出登录
taptap_login_status() 函数可以用于获取登录状态,返回"null"是没登录,如果登录了则返回玩家的验证密钥。
taptap_logout() 函数可以登出游戏,没有返回值。
篝火计划
taptap_gouhuo() 可以检测玩家是否加入篝火计划,返回值为 true 或 false。
taptap_license() 可以检测玩家是否购买了游戏,即是否拥有游玩许可。
taptap_license必须与YYC编译搭配使用,否则阻拦不住任何人。
第三方
taptap_binding(int expires_in, String openid, String access_token, String taptap_name) 用于绑定账号。类比米游社的Taptap账号绑定。
taptap_binding_again(int expires_in, String openid, String access_token, String taptap_name) 重新绑定。
taptap_login_third(int expires_in, String openid, String access_token) 第三方登录
taptap_login_third_again(int expires_in, String openid, String access_token) 第三方重登录