FGO国服圣晶石攒石效率研究

Avatar
admin

关键词: 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抽左右。