突然就理解了我爸经常在微信上跟我说的:“多给我发两张你的照片"......
你知道它会离开,也知道它会回来,但是无论如何(花钱也好,看攻略也好),你都无法完完全全掌控它的一切,让它按你的想法生活;
但你依然会在它回来之前准备好吃的用的,时不时打开门看看它在干什么;
在它外出的时候猜测它去了哪,然后一遍遍翻着邮箱,看它寄回来的一幕幕风景;
有时候想去陪伴它,有时候又怕打扰了它,有时候各自忙碌着,有时候彼此牵挂着;
日复一日...
这不就是我们的生活吗?有时候是在路上的它,有时候是在家里的你,归根到底就是我们。
这几天朋友圈被蛙刷屏了。
普通版:
视频版:
恶搞版:
改编版:
老杜的咱就不贴了……
无力吐槽(sang xin bing kuang)的广告版:
也是佩服设计师们的脑洞,此刻心情…%#@¥*&…
旅行青蛙爆火(据说实际上是日本生育部门联合游戏公司开发的一款“生育意愿测试器”?),短时间内就有相继不下9款山寨版游戏上线,我们也讨论了一下这款游戏火爆的原因,总结下来,基本涉及到以下几点:
1、界面风格“不走寻常路”——清新治愈系
不同于国内市场上色彩绚丽的游戏界面,这款游戏界面风格偏治愈系,以带有强烈的性冷淡风格的绿色为主,整体上简朴、清新,让人看着感觉非常舒服,游戏主角是一只非常萌的青蛙,寥寥数笔的简单勾勒就将蛙的萌态尽显,治愈系风格、森系场景和萌系青蛙三个元素结合在一起戳中很多人的少女心。
2、游戏规则设置简单,无需花费太多脑力
和竞技类手游不同,旅行青蛙不需要投入太多精力、不需要花费太多脑力、不需要费劲心思提高排名,每天只需要花一点点时间收集院子里的三叶草、给蛙打包、接待蛙来访的朋友、查看信箱就可以,让很多人乐在其中。
3、满足了人一定的社交需求
人是有强烈社交需求的群居动物,当身边很多人在讨论某一项事物的时候,为了和他们有共同话题也会去了解一下,这点在女孩子身上表现得尤为明显。当身边的朋友都在讨论旅行青蛙时,自己听不懂是不是有种失落感和局外感?当自己也玩旅行青蛙时,是不是忽然发现朋友间话题多了?
旅行青蛙的大热让大伙的社交互动活跃起来,给大家带来更强的社交满足感,再通俗一点说就是:某种程度上找到了存在感。
4、好奇心和不可控的期待
这款游戏让很多人想起了以前的QQ宠物,有些人的QQ宠物养了许多年,从孵蛋出生到吃喝拉撒睡、成长、结婚、生蛋又离婚,全程由主人操控;而旅行青蛙则是失控状态——主人无法操控蛙的动态和去向,连旅行的出发时间、持续时间都无法控制,只能通过明信片了解蛙去过哪。就是这种不确定性,让人充满好奇心,时不时地查看一下“儿子”在干嘛。
5、从小就有的“收集欲”
关于游戏中的明信片,是日本知名景点的照片,小时候我们会有买零食集卡片的行为,现在养蛙,一定程度上也存在这种情愫——我们希望能收集更多明信片,这个过程充满快乐和惊喜。
6、理想寄托——一场说走就走的旅行
游戏里的青蛙是很多人生活的镜子——单调乏味的生活现实,和说走就走的旅行梦想……“世界那么大,我想去看看”,如今我们却只能将希望寄托在一直青蛙身上,自己无法实现的,就算氪金也要让蛙儿子代替自己去实现。
关于高票赞中所说的“终于明白了做父母的心情”,这扎心的一点就不再提了。蛙火的原因,暂且分析这么多,有很多朋友私信慕课网能不能分析一下这款游戏的代码,当然要满足大家的心愿啦~因为代码比较长,这里只摘取部分,有兴趣的可以自己下载看一下。
《旅行青蛙》是由日本HitPoint的4人用10个月时间开发出来的精致小作品。游戏本身除了内购和接受蜗牛赠礼(看广告)需要联网外,是个彻彻底底的单机游戏。下载旅行青蛙原版1.0.4版本安卓端的安装文件,由于apk文件实质是个zip打包的压缩文件,可以直接对其解压缩。观察内部结构,包含一个assets目录,同时也很容易在lib目录下发现libmono.so和libuntiy.so,由此可以推断——旅行青蛙是一个使用Unity,以C#为脚本的游戏。
快速查阅源码,发现写得非常规范精巧,变量和类名都遵循了具有明确含义的特点。
首先是场景
可以看到,除了NONE默认空量,_Reload重加载时的场景,以及_Prev指示上的场景以外,其余部分应当就是这个游戏中主要包含的场景内容了——初始化、室内、室外、商店、抽奖、礼物(信箱)、相册、snap场景,以上是根据名字进行的推测。同样的,我们能找到这些场景的对应UI类,可以验证推测。
然后是一个常量类Define
在这里可以发现很多与游戏相关的常量,例如:看广告可能给的礼物,包括三叶草、四叶草和抽奖卷(可以放弃期待蜗牛君给你其它东西了),奖券抽奖概率从低到高依次是60%、27%、9%、3%、1%(所以抽到金色小球真的是运气超好,而有60%几率抽到白色球,所以没啥好可惜的),以及蛙在家时总是在循环三种行为模式(①吃—读书—读书(打瞌睡)—做手工;②吃—读书—读书(打瞌睡)—写东西;③写—吃—做手工—写东西)。诸如此类。
然后来看一些细节:
1、关于蛙的行为模式
到这里可以推测的内容就越来越多了,比如SuperGameMaster统管了游戏中的许多状态(例如这里的GetFrogMotion),又例如蛙的休息动作是一个小时换一次的(所以吃饭吃俩小时也不稀奇了)。
2、关于蛙的旅行
蛙会去哪里,会干些什么,又是怎么确定的呢?在SuperGameMaster类中,有一个TravelSimulator,旅行模拟器,其名字明确指出这是于蛙出行有关的内容。
先看枚举量
可以看到这里指出了一些事件状态,包括旅行开始、结束、时间到、到达某处、休息、休息结束、扎营、走近道、拍照……看来旅行会发生什么事情,还真是模拟出来,而并非单纯的随机。结合商店物品的说明,不同食物影响旅行时间长短,不同装备会产生不同事件,在这里即有所体现。
TravelSimulator类中有个DNode类,包含edges等相关的成员;同时TravelSimulator类中有个Dijkstra方法,参数包含DNode列表及开始ID。熟悉图论或者数据结构又或者算法的同学自然能够根据这些名字想到,DNode是图上点的数据结构,而Dijkstra则自然是单源最短路算法中的Dijkstra算法的实现。这昭示着两个信息:1.游戏里是有一张大地图的;2.蛙不傻,在一定条件下它会走最短的路线,并且应该还是有限制的,可能会因为补给不足而走不了太远的地方,也可能会因为某些因素的影响,更快或者更慢地走到某些地方。
那么蛙会去哪里呢?这个可以看看getGoal方法
在这个方法中,它选择了蛙旅行的目的地。目的地被分为了东南西北四个区域(对应日本的东南西北四个方向,大体上可以感觉蛙活在东京)。结合代码,可以推算出根据携带的物品不同,蛙会有倾向地选择目的地。选择目的地之后,通过GoTravel方法模拟旅行。
具体逻辑比较复杂,简单来说即:在蛙带好装备出门时,先会通过TestTravel尝试一下旅行流程看看有没有可能到达目的地,然后开始按照规划旅行,把途径的一系列将要发生的事情加入事件列表,然后逐一触发事件。我们的蛙在旅行途中可能遇到各种稀奇古怪的事情,包括HP空了需要休息(额外增加旅行时间但并不会移动)、遇到小伙伴、各种拍照等等。
这么看起来,蛙可是真真的去旅行了呢!但唯一的疑问是……蛙似乎到达目的地之后直接就嗖地一声回家了,大概是有魔法吧……
3、关于地图以及各类数据
地图、物品数据、事件、照片等等相关数据是序列化后存储在Assets中的,通过提取Assets以及依照其格式反序列化可以获取。但是为了保留一点点神秘感,这里还是不全列出来吧。实在感兴趣的各位,可以尝试自己解析一番。
4、关于三叶草的生长
另一个有意思的事情是三叶草的生长。
实际上三叶草地里每一支三叶草都是独立计算生长的,长出四叶草的概率是1%,地里最多长20支,其生长时间是一个以秒为单位,7200为均值(两小时),1800为方差,取截断最小为300(五分钟),最大为14400(四小时)的正态分布随机数。
5、关于仿制青蛙旅行
青蛙旅行火爆之后,各种AppStore出现了大量仿制品。然而几乎所有的仿制品都只是仿了个壳,里面根本不是类似的游戏模式。尽管此游戏的源码比较复杂,甚至让蛙的旅行有了一整套的逻辑规律,但实际上如果只是要作一个相似的产品,大可以在旅行机制上作很多简化。不排除可能后续版本中,HitPoint会加入旅行路线和地图显示的可能,不然如此繁杂的旅行模拟机制着实有些浪费。
这个游戏做得如此精致,无论是以玩家的角度看,还是剖开看源码,都让人觉得十分浪漫,这大概就是日本人执着精神的体现吧?
顺带一提,代码中发现了MapPanel这样的类,但却并没有被调出的接口,它有明确的对不同节点带有不同颜色的图形绘制代码。或许这是个隐藏的彩蛋,又或许在以后的版本里真的能看到蛙在地图上走呢?
推荐阅读:
哇,这真是一觉醒来,好多赞啊。我都没认真答题,只是分享了我看到的图,惭愧惭愧呀。没有耐心去翻日文的翻译,乱七八糟的操作后,我的呱儿子老是不在家。不过刷刷微博,看看各位母亲段子,看看网友脑洞,感觉这游戏吸引我的点在于这周边带来的治愈系吧
经评论提醒,前两张微博良牙,后边微博Wu朳,最后没有水印的是番长
太疲惫了。
真的太疲惫了。
我们这一代的年轻人,没有兄弟姐妹,多少人背井离乡在外一个人孤独打拼。
每天日出而作,日落而归。
世界发展太快,要学的东西太多,每天很多事情要做,要发光发热呀,把自己烧成太阳。
然而回到家里,空无一物,一床一桌一电脑一根网线罢了。
好像并没有谁在等待着自己,好像并没有谁在期盼着自己。
那些等待,那些企盼,仿佛总要做些什么,才能有这些等待,才能,有这些企盼。
希望是什么呢?希望获得什么呢?实在想不明白。
所以养个猫吧,或者养个狗吧,实在不济,养一侏植物吧。
这些是专属于我的,为我而存在的。
就像这个蛙蛙一样,它是属于我的,为我而存在的。
它去旅行,去看书,去睡觉,去忙着写着什么,它吃饭总是很慢很慢。
这都是为我而存在的,我也不要去干涉它。
就这么看着,就挺好。
好像这么做着,疲惫就没有了。
这种疲惫,是心灵上的吗?不知道。是身体上的吗?好像越夜思绪越远。
偶尔看看这只属于我的蛙蛙。
这是另外一个世界,像是另外一个我。
只是不知道,是否也有这样的一个人,全神贯注的看着我。
有时候觉得很好笑,这只蛙蛙
讨厌,旅行这么久还不回来,跑哪儿去了呀。
好像傻乎乎的?
呀,终于回来了呢,居然还带回来了照片!
不知道为什么心里暖暖的呢。
好吧,那些失去的不知道的什么的东西
就通通由我来填补吧,我一定会慢慢的把你养大。
终有一天,那些等待着的,那些期盼的
都会回到我的身边。
这些自说自话,好像是要说给谁听似的。
并没有谁要听嘛
月下灯晚,小小的屏幕,一只傻乎乎的蛙蛙
就是我的全部世界嘛,剩下的
统统给你们啦!
——走心,是不能问为什么的。
我可能玩了个假游戏。
你们的青蛙都是在家里看书,写字,吃东西。
有时旅行,常常在家,偶尔还有朋友上门!
可是!我这只青蛙简直了,下载6天了,除了开始看见过它之外,
这些天,我!从!来!没!见!到!过!青!蛙!一!次!
我的青蛙,它一直在外鬼混,
而我像个小怨妇一样的望着空空的家……
庭院外的四叶草长了又拔,拔了又长。
讲真,这游戏对我来说感觉就是偷菜!!
上线,收完四叶草,然后就没有然后了。。。
-你们看-
吃的我是放了的!
四叶草好像是收菜的时候捡的!
因为这熊孩子长时间不回家!
我伙食标准都是100的了!
养个这不省心的娃总算明白小时候我皮不回家,不见我人时我妈各种担心害怕!一旦找到我了铁定胖揍!
还有!明信片都没几张!估计它真的离家出走了!/
--我要为所欲为!为我娃写一首诗-
你被远方诱惑,
风景,或传说。
于是你将期望装进行囊四处奔波,
偶尔寄我明信片,藏满了思念的寄托,
期待让人担心又害怕。
外面会冷吗?你什么时候回家?
真希望你能快快长大又长不大。
你想我吗?像黑夜期盼着晨曦带来的回答。
你想我吧?如黄昏的夕阳告别初升的月亮。
我们,今天,再见啊。
我们,明天,再见吧!
-感动中国-
它回来了,2018年一月二十五号下午一点!
回家就开始写信…
一次性带回来这么多东西…
我朋友说我这个不是旅行青蛙…
带的东西完全是打工青蛙既视感…
怎么没人提《圣斗士星矢》啊?
这个系列作品的特色不就是回回都是一部的戏就半天时间么?
黄道十二宫篇:纱织中了天箭座的箭,必须12小时内突破圣域十二宫。
北欧篇:奥丁代言者希露达被海皇戒指蛊惑令冰川融化,纱织代替希露达阻止冰川融化但是只能坚持12小时,必须在时限内摘下希露达的戒指。
海皇篇:纱织代替人类承受波塞冬的洪水,应该也是只能支撑一天之内的时间。
冥王十二宫篇:被哈迪斯复活的圣斗士要在12小时内取下雅典娜的首级,实际目的则是为了雅典娜去冥界并且唤醒女神圣衣,12小时候被复活的圣斗士们就消失了。
冥界篇:记不清打了多长时间,但从纱织被塞到缸里抽血开始到解决应该也是一天之内。
黄金魂:在本篇剧情里有好几天,但对应到冥界篇时间仅仅发生在冥界篇12黄金击破叹息之墙到打死神之间。
火星篇:马尔斯获得阿丽娅的权杖后建立起巴别塔吸引火星,会在12小时内毁灭地球,主角们必须在12小时内突破新十二宫。
土星篇:这篇好像打了很多天……