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

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

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

Author:Fancydz

Publish:2018.01.26 15:01

Update:2018.01.31 21:01

Path:https://fancydz.github.io/2018/01/26/2018012601/

License: Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) This work is licensed under a Creative Commons Attribution 4.0 International License.