互联网时代,大数据分析已成为了一项极为有用且有意思的学科。用马云的话来说,通过大数据分析,“全中国胸罩最大的是哪个省?我都知道!” 那么,我们也来小试牛刀一下,通过数据分析看一看,游戏开发商最喜欢给游戏取什么名字。
▋
目标
通过分析Steam游戏库中的全部游戏名称,尝试罗列出出现频率较高的词汇。
▋
范围
一开始,我便将数据采集范围锁定在了Steam游戏库之上。事实上,对于本文要研究的问题, Steam也许并不是一个非常理想的数据库。相比起VGchartz等包含全平台和全年代的游戏数据的网站来说,Steam的游戏库容量有些太小了,但是Steam作为一个现象级平台,有很多除了标题以外其他有意思的数据可供挖掘。而且其数据量较小,分析起来也比较节省时间。
另外,为了方便分析,本次统计过滤了Steam App库中所有DLC、软件和视频等。一开始我并没有过滤这些内容,但发现结果偏差太大,并不合理。例如Steam的视频栏目下有很多动画和剧集,一放就是好几季(死神和行尸走肉啥的,国区貌似没有),导致了这些剧集的标题单词高频出现,影响统计可靠度。至于DLC,其标题也会重复出现其游戏本体名称,影响结果。
▋
工具/实现
分析程序基于Java语言,主要分为数据获取以及文本处理两大模块。程序引用了GSON与Jsoup两套API,分别用来解析Json以及HTML文本。
(对以下具体实现部分不感兴趣的同学请直接略过)
▋
数据获取
Steam对爬虫是比较友好的,但是本弱鸡一直没有解决锁区和年龄限制的问题,导致大量数据遗漏。被迫无奈,我只能曲线救国,在获取了Steam全部APP的ID之后,改到SteamDB之上运行爬虫程序。
SteamDB有着相对比较严格的防机器人手段。在添加了Header伪装成浏览器访问之后,我又在每次访问之间加了个1.5s-2.0s的随机间隔时间,防止被Ban。即便如此,一开始我仍被Ban了一次,原因是原程序中有一个访问失败则休眠20s之后尝试再次访问该网页的功能,导致受限后继续频繁访问,最终被ban。在换了个新IP之后,我把这个功能删除了,访问失败之后手动关闭程序再开即可(有中断记录),最终成功获取了所有数据。
▋
文本分析
在本程序中,我仅仅用了最简单且传统的单词分割方法作为统计标准。因为库中大多数游戏还是以英文名为主,所以对于每一个游戏名,首先将其中所有非A-Za-z的字符替换为空格,接着将改标题转化为小写,最后根据空格分割成单词。
当然,为了使统计更有意义,我添加了停用词列表(Stop Words),除了一般的“a,the, of, with”等介词冠词,我也在这个列表中加入了不少针对游戏的特殊高频词语,例如“edition, HD, remastered, episode”等等。
最后,我们就可以非常开心的把剩下的所有单词扔进HashMap中推算每一个单词的出现频率了。
▋
统计结果
闲话少说,咱们书归正传(这就说的不少了)。不过,在谜底揭晓前,大家不妨先猜一猜,哪些词最受开发商的青睐?
第一名:War
“War! War never changes.”
“战争”名至实归的拿到了本次分析中的冠军席位。在还没有电子游戏的时代,“战争”就已经是最古老的桌面游戏甚至是真实博弈的题材之一。大到军事模拟沙盘,小到各类棋牌,无一不是对战争的模拟重现。在电子游戏问世之后,游戏制作者也尝试将“战争”这一永恒的题材带给玩家。无论是射击游戏,经营游戏,即时战略还是角色扮演,也不管是奇幻,历史,科幻,写实,都可以在“战争”这一框架下编织出精巧的玩法与剧情。所以,War斩获今天统计的榜首,真是不足为奇了。
也不乏有游戏表现的是对战争的反思
第二名:Space
“人类的征途是星辰大海!”
事实上,我对“太空”出现在榜单的第二名是有些吃惊的。我相信这个结果带有了一些steam平台本身的气质。从坎巴拉太空计划(Kerbal Space Program),到太空工程师(Space Engineers),乃至无尽太空(Endless Space),都带着浓浓的Steam风格。对于这些游戏的制作人(很大一部分是独立游戏的开发者)来说,“太空”大概是他们最爱的题材之一。与第一名的真实感与厚重感不同,“太空”题材带有浓重的幻想精神与浪漫主义情怀。无论是太空歌剧,宇宙战争,还是太空飞船模拟,都可以在玩家群体中找到属于它们的一片天地。
坎巴拉太空计划
第三名:World
“一花一世界,一叶一菩提。”