搜索
热搜: 活动 交友 discuz
查看: 8682|回复: 14

[教程] 用Playfab平台做一个无代码后端

[复制链接]

54

主题

539

帖子

3419

积分

魔导师

UID
2370
金币
3452
精华
0
节操
-363

创世者隐修议员扛把子脑洞大开教程大师开拓者我是鸽手黑科技玩的6平妖侠士

发表于 2018-9-20 02:49:10 | 显示全部楼层 |阅读模式

前方高能预警!非战斗人员请尽快登录!

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
好久没写教程了-_-当了游戏策划后技术方面的东西研究的越来越少了

应该不少作者都有存读玩家数据的需求,自己撸后端不仅麻烦,需要不少技术支持,安全性也不太容易得到保证(玩家拆一下你的包就能搞出你没加密的http请求)

playfab是一个方便的自动后端平台,用户少的时候免费,注册即可使用,还拥有各种数据显示和数据分析工具。

注册后的dashboard:

可以看到功能很多,包括玩家列表,自动排行榜,经济系统监控等等,甚至有自动锦标赛
坏处也是功能太多,大部分功能我们用不到,读API很蓝瘦

本篇教程主要也是讨论哪些API是比较重要的

后续挖个坑 有些功能我还在研究 这几天写完
jc1.png

评分

参与人数 2荣誉 +7 金币 +100 创造力 +6 求知欲 +6 互助 +6 智慧 +8 节操 -4 收起 理由
Demon + 6 + 100 + 6 + 6 + 6 + 6 + 6 鸽老师牛逼!
无双 + 1 + 2 -10 合鸟老师牛逼

查看全部评分

回复

使用道具 举报

0

主题

1

帖子

4

积分

Lv:1 隐谧贤者

UID
15489
金币
7
精华
0
节操
0
发表于 2020-2-18 10:28:04 | 显示全部楼层
....PlayFab是微软的。基于微软云。
用户少是免费的,10W还是20WMAU 都是免费的。
国外google 的firebase也很不错。
国内腾讯也有相应的serverless。
上面说的都在 上线的项目使用过。。。还是google最便宜。最好用。。。
回复 支持 1 反对 0

使用道具 举报

54

主题

539

帖子

3419

积分

魔导师

UID
2370
金币
3452
精华
0
节操
-363

创世者隐修议员扛把子脑洞大开教程大师开拓者我是鸽手黑科技玩的6平妖侠士

 楼主| 发表于 2018-9-20 05:50:14 | 显示全部楼层
本帖最后由 kzhang9 于 2018-10-1 17:07 编辑

最重要的3个API:

1 Login with custom id
https://api.playfab.com/document ... thod/LoginWithCustomID
用玩家的steam id登陆playfab 如果没有playfab号就为玩家创建一个 登陆后可以拿到登陆的session ticket
2 UpdateUserData 存储玩家信息
https://api.playfab.com/document ... thod/UpdateUserData
用session ticket来为玩家存储json体信息
3 GetUserData 读取玩家信息
https://api.playfab.com/documentation/Client/method/GetUserData
和2差不多

后面放例子和实战
回复 支持 反对

使用道具 举报

1

主题

2

帖子

78

积分

Lv:1 隐谧贤者

UID
13150
金币
55
精华
0
节操
0
发表于 2018-9-21 10:27:49 | 显示全部楼层
顶一下,求后续
回复 支持 反对

使用道具 举报

76

主题

697

帖子

3044

积分

大摸导师

热爱让我们并肩

UID
4
金币
3463
精华
0
节操
-232

隐修议员

QQ
发表于 2018-9-21 19:23:59 | 显示全部楼层
等于说 先开个坑 等下就鸽
如果一个人尽可能做好能做的事情,那这个世界就一定会因为这件事情而变得更美好一点。
回复 支持 反对

使用道具 举报

54

主题

539

帖子

3419

积分

魔导师

UID
2370
金币
3452
精华
0
节操
-363

创世者隐修议员扛把子脑洞大开教程大师开拓者我是鸽手黑科技玩的6平妖侠士

 楼主| 发表于 2018-9-24 16:32:38 | 显示全部楼层
周中太忙只能周末弄弄了 又赶上感冒拖了好几天
登陆:
http request这部分真坑 很多api连官网都没有 deepprint了才能看到
CreatHTTPRequestScriptVM这个API也不能在initgamemode里直接call 目测是global还没初始化完全
下面上代码,弄了个timer3秒后在initgamemode里call的,用玩家的steamid做custom id登陆,没有steam id登陆是playfab的steam登陆很麻烦要搞各种验证
  1. Timers:CreateTimer(3, function()
  2.                 local req = CreateHTTPRequestScriptVM("POST", "https://b438.playfabapi.com/Client/LoginWithCustomID")
  3.                 req:SetHTTPRequestHeaderValue("Content-Type", "application/json")
  4.                 local encoded = '{"CustomId": "'..tostring(PlayerResource:GetSteamID(0))..'","CreateAccount": true,"TitleId": "B438"}'
  5.        
  6.                 req:SetHTTPRequestRawPostBody("application/json",encoded)
  7.                
  8.             req:Send(function(res)
  9.                 print("[STATS] Received", res.Body)
  10.                         local resbody = json.decode(res.Body)
  11.                         local data=resbody["data"]
  12.                 local session_ticket=data["SessionTicket"]
  13.                 local playfab_id=data['PlayFabId']
  14.                 print(session_ticket)
  15.             end)
  16.         end)
复制代码

比较粗糙,不过能用……
13.png
可以看到print出了session ticket
代表玩家成功登陆
去我们的playfab控制台看看
14.png
好的 成功记录了
之后就是读写数据了 后面再写
回复 支持 反对

使用道具 举报

54

主题

539

帖子

3419

积分

魔导师

UID
2370
金币
3452
精华
0
节操
-363

创世者隐修议员扛把子脑洞大开教程大师开拓者我是鸽手黑科技玩的6平妖侠士

 楼主| 发表于 2018-10-1 17:06:25 | 显示全部楼层
获得数据和更新数据的代码我就全放这了
感兴趣的可以自己看
具体逻辑是 login后会get数据 如果数据不存在就update新数据(新玩家创建)
update和get函数可以在游戏里的其他地方随时调用 存好session ticket即可

  1. function player_database:login(rep)
  2.     --login
  3.     local req = CreateHTTPRequestScriptVM("POST", "https://b438.playfabapi.com/Client/LoginWithCustomID")
  4.         req:SetHTTPRequestHeaderValue("Content-Type", "application/json")
  5.         --local encoded = '{"CustomId": "'..tostring(PlayerResource:GetSteamID(0))..'","CreateAccount": true,"TitleId": "B438"}'
  6.         local encoded = '{"CustomId": "'..tostring("AMHCtester")..'","CreateAccount": true,"TitleId": "B438"}'
  7.         req:SetHTTPRequestRawPostBody("application/json",encoded)
  8.                
  9.     req:Send(function(res)
  10.                --print("[STATS] Received", res.Body)
  11.                 local resbody = json.decode(res.Body)
  12.                 local data=resbody["data"]
  13.                local session_ticket=data["SessionTicket"]
  14.                local playfab_id=data['PlayFabId']
  15.                    print(session_ticket)
  16.                 PlayerData[0]={}--init player data
  17.                 PlayerData[0][0]=session_ticket  --store session ticket
  18.                 player_database:getplayerdata(session_ticket)
  19.     end)
  20. end

  21. function player_database:getplayerdata(session_ticket)
  22.     --login
  23.     local req = CreateHTTPRequestScriptVM("POST", "https://b438.playfabapi.com/Client/GetUserData")
  24.         req:SetHTTPRequestHeaderValue("Content-Type", "application/json")
  25.         req:SetHTTPRequestHeaderValue("X-Authentication", session_ticket)
  26.         local encoded = '{"Keys": ["Gold","TimeSaved"]}'
  27.        
  28.         req:SetHTTPRequestRawPostBody("application/json",encoded)
  29.                
  30.     req:Send(function(res)
  31.                print("[STATS] Received", res.Body)
  32.                 local resbody = json.decode(res.Body)
  33.                 local data=resbody["data"]
  34.                 local datadata=data["Data"]
  35.                 local gold=datadata["Gold"]

  36.                 if gold==nil then                        --First time player
  37.                         player_database:updateplayerdata(session_ticket,0)
  38.                 else
  39.                         print("current gold is")
  40.                         local goldnum=tonumber(gold["Value"])
  41.                         PlayerData[0][1]=goldnum
  42.                 end
  43.     end)
  44. end

  45. function player_database:updateplayerdata(session_ticket, goldnum)
  46.         --login
  47.         print(goldnum)
  48.     local req = CreateHTTPRequestScriptVM("POST", "https://b438.playfabapi.com/Client/UpdateUserData")
  49.         req:SetHTTPRequestHeaderValue("Content-Type", "application/json")
  50.         req:SetHTTPRequestHeaderValue("X-Authentication", session_ticket)
  51.         local encoded = '{"Data":{"Gold": '..(tostring(goldnum))..',"isPayed": true},"Permission": "Public"}'
  52.        
  53.         req:SetHTTPRequestRawPostBody("application/json",encoded)
  54.                
  55.     req:Send(function(res)
  56.                print("[STATS] Received", res.Body)
  57.                 local resbody = json.decode(res.Body)
  58.                 local data=resbody["data"]
  59.                local dataversion=data["DataVersion"]
  60.                    print(dataversion)
  61.     end)
  62. end
复制代码
回复 支持 反对

使用道具 举报

0

主题

9

帖子

430

积分

Lv:3 空明术士

UID
8879
金币
189
精华
0
节操
0
发表于 2019-1-5 14:02:41 | 显示全部楼层
感谢,帮助很大。
回复 支持 反对

使用道具 举报

4

主题

6

帖子

417

积分

Lv:3 空明术士

UID
12643
金币
230
精华
0
节操
0
发表于 2019-1-21 20:09:08 | 显示全部楼层
请问一下刀塔自走棋用什么后端
回复 支持 反对

使用道具 举报

0

主题

9

帖子

184

积分

Lv:2 长袍法师

UID
2639
金币
315
精华
0
节操
-1
QQ
发表于 2019-1-23 09:30:36 | 显示全部楼层
uway 发表于 2019-1-21 20:09
请问一下刀塔自走棋用什么后端

自用服务器,先出图吧,有图你在考虑服务器的问题
回复 支持 反对

使用道具 举报

0

主题

5

帖子

139

积分

Lv:1 隐谧贤者

UID
13073
金币
195
精华
0
节操
0
发表于 2019-6-5 13:22:49 | 显示全部楼层
非常感谢!!!!
回复

使用道具 举报

0

主题

2

帖子

459

积分

Lv:3 空明术士

UID
14738
金币
115
精华
0
节操
0
发表于 2019-8-25 03:37:17 | 显示全部楼层
这个服务器国外的??
讲真 这种第三方的服务器真的很少有靠谱的。。。要么很贵,还不稳定,慎用吧,学习成本也摆在那。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

5

积分

Lv:1 隐谧贤者

UID
15621
金币
7
精华
0
节操
0
发表于 2020-3-9 20:55:22 | 显示全部楼层
请问大佬,像是自走棋或者塔防的排行榜,积分,用户宠物皮肤之类的数据,是用的V社的服务器存的,还是自己搭建后端存的呢?
回复 支持 反对

使用道具 举报

0

主题

24

帖子

29

积分

Lv:1 隐谧贤者

UID
15701
金币
43
精华
0
节操
0
发表于 2020-3-25 14:48:57 | 显示全部楼层
彩票虽然是无规律的,但只要依据统计学和概率学,还是有规律可寻。建议彩民们养成看走势图和遗漏数据的习惯.购买前哪怕是看上一小会,都能有灵感。
欢迎收藏我们168开奖网,在这里您可以查到最新最快的彩票开奖信息,更有:福彩双色球福彩3D上海快3,等丰富彩种,而且免费提供每期的玩法给大家参考.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|Archiver|手机版|小黑屋|AMHC!dota2rpg~ ( 闽ICP备14009209 )

GMT+8, 2020-9-27 04:57 , Processed in 0.063605 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Theme.Yeei

快速回复 返回顶部 返回列表