一直以来,这个游戏的生怪机制有多种猜测
大致上,对于生怪机制的猜测最直觉可以想到的有下面两种
(本文只讨论野生怪,不讨论樱花、薰香)
1、每个生怪点都有一支(或是多个点共用)的程式在运作,每隔固定的时间决定生什么怪
2、每一种怪都有一支或多支程式在负责生怪,生完成后,再查表依权重随机分配出现地
由这次的乘龙事件和上次的万圣节活动
几乎可以确定N社用的是偏向第二种的方式实作生怪系统
而从程式的角度,第二种方式也比较合理一点
以下会一一分析为什么第二种方式会优于第一种
而乘龙和万圣节的活动就是这篇文论点有力的旁证
首先来看第一种方式
以第一种方式,那么会有一种纪录出怪机率的表存在
比方说南竂的表大概会长这样:乘龙: 1%,波波:1%
而一般道路上的表大概是这样:乘龙: 0%,波波:15%
稍微有这个概念后,来看一下程式的流程:
查表生怪→每隔一定的时间重复
OK,超简单的,接着看第二种
第二种一样是会有一种表,但是个表是纪录出怪点的权重
基本上表只有142张,一种怪一张表
表大概长成这样:
乘龙用的表:南寮: 1%,台北市中心: 0%
波波用的表:南竂: 2%,台北市中心:15%
而程式的流程会长这样
生怪→查表决定要把这只怪丢到哪个点→每隔一定的时间重复
接下来来看几个可以在游戏设计之时必然就会想到的问题
第一种方法 第二种方法
调整巢穴 需调整所有和巢穴有关的表, 将某一类的点交换,最懒可以
每张表怪的权重要重新写过 将两张表对调
注:我猜最初换巢的INDEX规律
就是这样来的
增加出怪点 两种方法,让新的点和旧点共 将新的点写到表里
用程式,或是开新的程式
调整出怪比率 调整相关表所纪录的权重 调整每支生物的程式数量
(EX:万圣节) EX:波波平常5支程式,鬼斯1支
万圣节时波波1支,鬼斯5支
重生点 需有支程式负责重生 就只是那个点在表里的权重较高
稍微列举几个比较单纯且和这几次的现象相关的问题
会发现第二种实作几乎都比第一种优秀
比较的基准点在于第二种的实作不需要去频繁地调整表
调整表意味着需要去大规模地改动数据库
而改动数据库这件事是非常耗成本、没有效率的
能避免才应该避免
特别是像pokemon GO 这种全球性的游戏
刷数据库这种事耗的资源铁定非常巨大
第二种实作方式必然是比较好的选择
那么现在来回答大家最关心的问题吧
Q:为什么日本出现一堆乘龙,台湾的乘龙就消失了?
A:表中的权重为这次活动,全部集中到那个地区,其它地区的权重都被调很低
而且以这次活动带来的现象来看,负责生产乘龙的程式很有可能全球就只有不到五支
甚至可以考虑只有一支程式在运作的可能性…毕竟乘龙真的很少
可以确定的是,至少台湾和日本共用同一支生乘龙的程式
Q:万圣节的机制是?
A:我个人猜测只是将平常波波使用的表与程式的运作数量和鬼斯对调而已
可以完美的解释为什么鬼斯一出波波就死光了
Q:如果这个机制是真的,那对攻略游戏有什么帮助?
A:如果资料量够大,也许可以反推出哪些点在表里的权重
可以用期望值的方式去估算稀有怪的重生时地
并且对那种“某某地常出沙瓦郎,可以考虑去蹲看看”一类的意见给予正面肯定
依码农的惰性,表是不会太常改的,有出过某一种怪的点(及附近)
必有机会再出一样的怪
因此,预报是有可能成为现实的,比方说
“A地出现卡比兽的机率
明天下午三点到四点间的机率为68%
下午两点到五点间的机率为95%
下午一点到六点间的机率为99%
”
之类的预报可能会出现
甚至我觉得如果雷__的制作者有将数据全部留下的话
应该是已经可以做了,只是要不要花力气去解析数据而已
如果预报出现,将会大大提升收集稀有种的效率