From Zero To X

zTrix's Blog

积木的欢乐旅程

3 年前的一个月黑风高夜,大家都还很年轻,我们几个小朋友聚在一起,想尝试做点 Android 游戏开发。我拉来了同班同学诚哥,拉来了高中同学张光耀。两个程序员加一个美工,开始了一番离奇刺激又不乏艰辛的奇幻旅程。

大家一番讨论之下,决定做一款简单好玩的益智类游戏。我一拍大脑想到了几年前曾经玩过的一个叫做 superstacker2 的 Flash 游戏(现在这个游戏已经有了 Android 版本,当时还没有,想玩 Flash 原版请戳这里 ),于是想把这个游戏做到手机上一定很好玩,而且,我们可以增加重力感应关卡,微创新嘛!当然我们还想了其他很多乱七八糟好玩又离奇的功能,但是最终都没有付诸实践。

初期的开发是很快的。我们用了 AndEngine 作为游戏引擎,用了 box2d 作为物理引擎。糙快猛的一番鼓捣之后,第一个版本就做完了,那个时候张光耀还没工作,学工业设计出身和对漫画感兴趣的他,对现代界面和游戏界面设计其实也没有很强的感觉,于是第一个版本的界面很是粗糙。关卡方面,我匆忙设计了 20 个初始关卡,放在一个屏幕里面,重力感应和普通关卡是混杂的,也没有音乐和音效。就这样,我们就称之为第一个版本做好了吧。

第一个版本做好之后,我们就拿去参加谷歌 Android 应用开发中国大学生挑战赛。真好赶上 2011 年,谷歌刚办第二届。

哦,忘了说了,最开始的名字还不叫欢乐积木,叫做快乐积木,版本是 1.0。

比赛分区域进行,抱着试试看的心态提交了游戏,拉上康总作为指导老师,没想到,结果下来之后,居然是北京赛区一等奖

Google-Android-University-Contest-2011

当时还是有点小激动的。于是就为了决赛又做了一系列优化,把当时有能力做的事情都做了,发布了 1.1 版本,满心期待的参加决赛。

version 1.1 changelog

1,增加到了40个关卡
2,增加了菜单按钮的点击状态
3,关卡存储增加了加密措施
4,重画了程序开始画面的背景,标题更加清晰明亮
5,修改了三角形碰撞检测的 bug
6,动态检测积木是否可以放,如果在不能放的地方,那么积木变红,表示不能放置
7,修复了多点触摸带来的bug
8,增加了指向当前积木的箭头,增加了待放积木移动的动画
9,重新做了关卡选择页面的美工图片,增加了关卡屏幕切换效果
10,解决了三角形积木显示附带一条白线的bug
11,修复了积木可放置性判断不在积木中点的bug
12,修复了待放积木移动时,最后一个直接出现的bug
13,修复了 monkey 测试出错的bug
14,为每关增加了最高分显示,在选择关卡界面增加了星星数量显示
15,增加了退出确认对话框
16,修复了大屏幕下,关卡选择页面出错的问题
17,增加了来电话等情况游戏自动暂停的处理
18,增加了指向当前待放积木的箭头
19,增加了游戏暂停的积木动画
20,修复了积木并未下落但是关卡失败的bug(多线程未加锁)
21,不允许将积木放在deadline上的判断,积木会变红示意玩家不能放置。
22,修复了积木缩略图造成的崩溃
23,修复了menu里面积木表情跳变的bug
24,增加了跳动的开始游戏文字
25,增加了纯色长条的长度,避免太大的失真
26,计算分数考虑了积木的稳定性
27,增加了教学步骤
28,给重力关卡增加了 G 标志
29,给游戏中的所有积木增加了许多种表情
30,修复了长条表情模糊的问题
31,增加了过关显示星星数量
32,过关如果是新最高分增加了最高分显示
33,增加了通关恭喜画面
34,增加了menu中的 help 按钮,用于帮助用户玩游戏
35,对关卡背景做了调优
36,增加了内存优化,尽量少占用内存
37,前面的20个关卡根据用户反馈做了调整
38,重构了所有代码

满心期待等来的结果是无尽的失望,在总决赛中最终只获得了优秀奖。可能是评委口味不同了吧,决赛的名次非常出乎意料,大家都看好的几款软件都没有得到好名次,一等奖二等奖反而不是那么有说服力,而我的积木,作为预赛北京赛区一等奖,决赛中名次反而比北京赛区的其他作品名次低很多。

埋怨太多有没有用,现在看来,当时的作品确实是十分粗糙的,至少我现在自己都看不下去。比赛也就如此了,生活还要继续。于是积木就暂时放在那里了,没有管它。

2012 年,我认识了大神张泽清。他是 teambition 的创始人之一,设计天才,难得的是,他其实是学编程开发出身的,我记得是上海交大某计算机相关专业,所以,写代码也不在话下,综合起来看,张泽清是我认识的各路大神中,设计+开发综合技能值最高的。

他玩了玩这个游戏之后,觉得玩法还不错,于是花了一个下午(真的只用了一个下午!3D 建模乱七八糟的都是顺手拈来啊,看的我眼花缭乱),做了现在的界面。

这里放图对比一下,左边是老界面,右边是新界面:

对比1

对比2

既然界面终于感觉能看了,我顿时又有了把游戏好好再重构一下,做一个足够质量的,可以放到市场给大家玩的版本的信念。

由于一直都是抽空在做,这个过程是漫长的,断断续续做了很久。一种做东西就要做好的奇怪感觉充斥在我心里,我做了非常多的细节上的优化工作,从代码质量,到文件大小,到界面细节,我都做了力所能及的精细打磨。

后来我增加到了 100 个关卡,为此,我还专门制作了关卡编辑器,每个关卡的设计都经过精心的调试,保证趣味性和难度的统一(作为趣味游戏来说,其实是难度太高了,一般人真玩不动。。)。

我还做了游戏音乐和音效(是的!现在游戏音乐音效听起来如此不专业的原因就是,是我做的!),凭着对音乐的一点点感觉,学习了一下 GarageBand 就做了其中的开场音乐和过场音乐,以及每个积木的不同音效。虽然很挫,但也是完成了一桩心愿。

长久的拖沓与不能忍受残次的某种怪癖导致,两年过去了,我才最终把积木扔到了 Play Store 上。这个时候,版本号终于变成了 1.2,也就是说,1.1 版本到 1.2 版本,就这么零零散散断断续续絮絮叨叨疯疯狂狂的过了 2 年。

引以为豪的是,在界面适配上做了大量工作之后,现在积木的界面可以适配我遇到过的所有 Android 机型和平板。后来,我遇到了 Samsung 变态 1080p 分辨率的 Galaxy S4,我尝试运行了一下,界面适配仍然是十分完美。甚至在兼容性方面,我一直做到了兼容 Android 1.6,在 Play Store 上发布的时候,Play Store 就会显示,本次发布的 Apk 兼容 6387 种 Android 设备,不兼容的设备为 0。后来我们在 360 的 testin 云测上进行了测试,发现除了联想的第一代 Android 手机不能正常运行之外,其他手机都可以正常运行无压力。

除此之外,Play Store 上的统计显示,在数十万的 session 中,Crash and ANR 总 report 仅为 2,而且还是因为加载图片导致 OutOfMemory 导致的。

1.2 版本放上去之后,我既没有宣传,也没有做推广。对于一个只懂开发的团队来说,似乎事情已经做完了,下一步该怎么办呢?我没有思路。于是就在 Play Store 上那么放着吧。国内的各种山寨菜市场我觉得太乱,都没有放,于是相当于放弃了国内用户。

于是就那么放在那里了,没有任何波澜,但是生活还要继续。

一段时间之后,当我打开 Play Store 控制台的时候,惊奇地发现,游戏居然还是有点用户的,虽然不多,只有 4000 多一点,但是遍布世界各地几十个国家,还有不少用户写了很长的评论来骂我,说游戏玩了半天,结果发现有 bug,游戏进度不能保存,前面玩过的都白玩了,真是愚蠢的游戏。我顿时感动的痛哭流涕,积木还是有一点存在感的,好吧既然有存在感我就修复一下 bug 吧。

一番检查发现,进度不能保存居然是由于 Android 系统升级造成的密码函数默认参数变化导致的,修复了之后,就发布了版本 1.3 。这个时候,又是大半年时光过去了。后来,当我想升级游戏引擎的时候,发现 AndEngine 已经接口大变,根本没法适配到以前的接口了,而且,我还改过一部分 AndEngine 代码,于是,便不再改了,当我想升级 Google Analytics 代码的时候,也发现真是各种麻烦,甚至我想升级 Android Studio 的新 Gradle 系统的时候,都各种不能正确解决。一个项目就这样横跨多年,时过境迁,经历 Android 生态的变革,真是感慨万分,算了,都不升级了,就这样罢。

到了 2014 年,又遇到几个小朋友。几个小朋友一玩游戏就是爱不释手,又给我一种似乎游戏不是那么挫的假象。后来,遇到了另外一位朋友,他也觉得很好玩,说想帮我做推广。我想了想说好,反正不会有什么结果,就当做推广练习吧。

于是,在他的要求之下,加上了分享过关截图和社交分享功能。本来积木只需要网络权限的,为了集成 ShareSDK,一下子添加了七八个敏感权限,真是痛心。

我还做了一个官方主页,哎,只花了一个小时你们就别吐槽不兼容手机,不好看,啥玩意了,虽然我也不忍吐槽说这是我做的,但是夜里 2 点不睡觉来写网页真的已经是怀着无限的美好向往和全人类繁荣发展的美好信念了。

终于弄好了,再次升级版本上线,这次注册了人人、新浪微博、facebook、twitter 等各种官方账号,并且,新浪微博还专门找了水军转发,感觉好激动呢。只不过,等等,同学,水军质量堪忧啊!

water-army

water-army

唉,我都看不下去了,赶紧让同学帮忙转发起来,终于把第一页转发和评论弄和谐了。。

让我非常诧异的事情是,盗版猖獗啊,速度快过 Chrome 版本号啊!就在不久前,我看到清华美院同学的设计作品在各个市场被盗版和抄袭的事情,还在想盗版何以如此之快,哪知道两天后就体会到了啊。先来看一下盗版的量:

pirated

豌豆荚你是怎么想的啊。。这么多长得一模一样的应用上线,怎么对得起豌豆荚高质量的名号啊,好在正版的下载量位居第一,稍微有点安慰(咦真的是没有刷榜吗就上万下载量了?不敢相信啊。。)。

再看这家盗版

anzhuoapk

这位盗版同学,你盗版都好意思把公司名称写出来吗?你上传个游戏截图,能不能保持比例不变形啊!还有,第三关根本不是你那么玩的啊!!!你盗版也好好玩一下啊!!

注意上面这张图的时间,2014 年 6 月 13,也就是我发布国内版本刚刚 1 天就被盗版,速度之快令人咂舌。

我在 google analytic 后台,看到了至少有 5 家不同的盗版,甚至还有盗版占据了更高版本号!

img

我只想吐槽,盗版商你们不给力啊!盗版了不宣传不推广怎么赚钱啊!本来还指望你们盗版商给我免费推广呢啊!你们现在还没我正版下载多,怎么赚钱啊!玩毛啊!摔!

其实,除了业界良心无广告正版之外,我曾经还上线过一个有广告 1.5 版本,想看看广告收入情况如何,结果 1.5 版本最终收益是。。当当当当,50 块钱,于是瞄了一眼盗版应用在我这里的记录。。还不到我 1.5 版本的使用数。。盗版商童鞋,你那么辛苦盗版一下,才挣不到 50 块钱,真是感觉为你们心寒呢!

盗版就不说那么多了,我会再写一篇盗版技术分析的文章来说这个事情。

最终的最终,当这个欢乐的旅程走向终点的时候,我依然想吐槽,想做一个好游戏是多么累的一件事情,大家花了大量的精力、时间,玩过的人都说好,评论质量也很高(Play Store Rating 在 3.8 左右),但是没有推广、没有运营,游戏就是没人玩,也不会有收入,更没法抵挡盗版大军的随意侵袭(当我向豌豆荚投诉盗版应用的时候,豌豆荚表示需要我提供软件著作权才能下架对方盗版)。还有市场如此混乱,各个市场各有各的奇葩要求,真是累觉不爱,人艰不拆。

现在回顾这一切,心态早已不同,也不会再去做曾经的这些事情了。

感谢诚哥、张光耀、张泽清大神、刘超、董玲曾经的付出,这是一个欢乐的旅程,虽然最终没有多少回报,但是能与各位并肩作战,完成一个有存在感、看起来萌萌傻傻、玩起来却又挑战智商的游戏,还是幸福感爆棚的!

谨以此文纪念曾经的少年热情。

最终放上游戏下载链接 官方主页,求别吐槽,自己下载玩就行,好人一生平安!

Comments