关键词: FGO 数据分析 爬虫
本研究通过分析国服攒石效率,为FGO国服攒石党提供攒石效率参考,并为今后的抽卡和氪金做好规划。
定义
攒石
攒石即指通过非付费手段获取尽可能多的扭蛋代币用于抽卡,由于FGO中最主要的扭蛋代币是圣晶石,所以又称为攒石。
扭蛋代币
圣晶石:FGO中的付费货币,1抽=3石头
呼符:FGO中的免费货币,1抽=1呼符
扭蛋代币来源
为了方便讨论,将发放扭蛋代币的运营活动分为以下几类:
此外,还有以下非运营事件的途径可以获取免费扭蛋代币:
- 英灵羁绊等级提升奖励
- 剧情/FREE/活动关卡通关奖励
- 御主周常任务奖励
- 连续、累计签到奖励
数据来源
数据来源1:FGO国服官网
- 爬取所有发放过圣晶石的活动内容,筛选其奖励内容、日期
- 对于类似“奖励有效期X天”的奖励描述,按用户在奖励发放第一天领取处理
- 根据活动内容,人工标注其对应事件等级
数据来源2:《我是如何把休闲手游玩成地狱难度的》——一张卡不抽攒石贴 by雷酒业
- 爬取所有楼主的屏幕截图,同时记录截图对应的发帖日期
- 人工记录发帖日期对应的持有圣晶石和呼符数量
对数据来源2做补充说明如下:
- 该记录贴记录了一个安卓国服玩家,在不抽卡不氪金的前提下积攒圣晶石和护符的情况;
- 自2016.11国服安卓开服起,截至2017.11.02,安卓区预约号,自开服首日登录起从未断签;
- 剧情奖励全拿,活动石头护符全拿,每周御主任务全部完成;
- B叔绊10清姬绊8,lily信长阿拉什R无毛斯巴达绊6,其他全绊5;
数据爬取
该爬虫实现比较简单,不再赘述,仅给出核心部分及注释
#!/bin/env python # by Fancydz # -*- coding: utf-8 -*- # FGO数据分析爬取 import …… #抓取html内容 def get_page(url): …… #抓取图片 def read_image(url): …… #得到图片url列表 def get_pictures_url_list(url): html = get_page(url) l = re.findall(r'([12][\d]{3}-[10][\d]-[0123][\d] [0-2][\d]:[0-5][\d])',re.S) pic_date = re.findall(mypattern, html) #由于文件名不支持'-'、':'等字符,替换为空 for i in range(0,len(pic_date)): pic_date[i] = pic_date[i].replace("-", "") pic_date[i] = pic_date[i].replace(":","") pic_date[i] = pic_date[i].replace(" ", "") if len(pic_date)>0: return pic_date #处理超时情形 else: print 'not found in ' + picsrc pic_date = '010' return pic_date #下载图片并存储到本地文件夹 def image_save(url,date,order): …… #准备存放图片的文件夹,并进入到指定路径 def folder_prepare(folder): …… #主函数(单页,稍加改动即可实现复数页循环) def main(): l = [] mydate = [] url = 'https://tieba.baidu.com/p/4956528970?see_lz=1&pn=1' l += get_pictures_url_list(url) for i in range(0, len(l)): mydate += get_pictures_date(url, l[i]) print 'finish date of'+str(i) folder_prepare('pics_fgostone_1') print 'amount=',len(mydate) print 'picnum=',len(l) for x in range(0,len(l)): image_save(l[x],mydate[x],x) print 'save pic'+str(x)+'success' if __name__ == '__main__': main() print '全部抓完啦'
数据分析
首先建立日期-圣晶石、呼符的x-y散点图观察其趋势:
可见基本呈一次线性分布,符合常识认知,护符类似。
故直接选取线性模型拟合,定义y为代币数量,x为攒石天数,易得到:
(圣晶石)y = 3.6554x - 56.236
(呼符) y = 0.7169x + 4.9172
其中R^2>0.95
类似的,可以得到排除了A,A+B类事件后的攒石期望,得到代币数量与天数的关系式后带入x=30即可得到单月对应的代币收益期望,不再赘述。
结果分析
误差因素
- 完成剧情、活动关卡获得的额外代币
- 羁绊等级提升获得的额外代币
- 累计及连续签到获得的额外代币
- 玩家生命周期
- 时间修正,理论拟合时间越长拟合结果越逼近真实结果
由上表可知,FGO的单月收益期望在50抽左右。