今天给大家伙儿唠唠我搞的这个“赛尔号全天版”,说白了就是想让咱这些老玩家,随时随地都能过把瘾。折腾了好几天,总算弄出个大概,现在就跟大家伙儿分享分享我的血泪史!
我寻思这玩意儿肯定挺简单,不就是把以前的FLASH小游戏搬到手机上嘛结果一上手,直接傻眼。FLASH那玩意儿太老了,跟现在的手机系统压根不兼容。得!换思路!
我先是到处找资料,看看有没有啥现成的轮子可以用。结果发现,大部分都是些过时的教程,要么就是一堆乱七八糟的广告。真叫一个头大!后来终于找到个靠谱点的框架,叫啥名字来着...,对了!叫Egret!
有了框架,总算能开始干正事儿了。我先把赛尔号的FLASH资源扒了下来,一个个文件解压,然后放到Egret里。结果发现,这资源也太老了,很多图片格式都不支持。还得一张张转换!
- 第一步:资源转换。我用PS批量把图片转成PNG格式,然后用Egret自带的工具压缩一下,省点空间。
- 第二步:代码重写。FLASH的代码是ActionScript,得改成JavaScript才能在Egret里跑。这一步是最费劲的,很多逻辑都要重新写,还得考虑手机屏幕适配的问题。
- 第三步:UI调整。以前FLASH游戏的分辨率太低了,放到手机上肯定糊。我得把UI元素放大,重新排版,保证在各种手机屏幕上都能 нормально отображаться。
就这样,吭哧吭哧地写代码,改BUG。遇到不会的就上网查,或者去论坛里问。有时候,一个BUG能卡我好几天。记得有一次,我为了解决一个精灵技能的显示问题,整整熬了个通宵!
过程
我打算直接用Egret把整个游戏完全复刻一遍。但是后来发现,这工作量太大了,凭我一个人根本搞不定。于是我改变了策略,只复刻了几个经典的场景和玩法,比如精灵对战、挖矿、还有那个..忘了叫啥了,反正就是以前经常玩的几个。
在做精灵对战的时候,我遇到了个大麻烦。以前FLASH游戏里的伤害计算公式太复杂了,我得把这些公式全部搞清楚,然后用JavaScript重新实现。为了这个,我翻遍了以前的游戏攻略,还自己做了很多测试,才总算把公式给搞对了。
还有UI适配,真是个让人头疼的问题。不同的手机屏幕尺寸不一样,分辨率也不一样,我得用各种方法来保证UI元素在各种屏幕上都能正常显示。我试过用百分比布局,试过用自动缩放,还是觉得用Flex布局最靠谱。
为了让游戏更流畅,我还做了很多优化。比如,我把一些不常用的资源放到了服务器上,需要的时候再下载。我还用了对象池来减少内存分配,提高性能。
最终效果
经过几个星期的努力,我的“赛尔号全天版”总算弄出来了。虽然还有很多BUG,还有很多地方需要完善,但是已经可以正常玩了。我把游戏发给了几个朋友测试,他们都说找回了以前的感觉!
我已经把游戏放到我的个人网站上了。虽然访问量不高,但是看到有人玩我的游戏,我就觉得特别开心。这就是程序员的乐趣!
这回的经历让我学到了很多东西。我不仅掌握了Egret框架的使用,还提高了我的JavaScript编程能力。更重要的是,我体会到了做游戏的乐趣!以后有机会,我还会继续做一些自己喜欢的小游戏!
就跟大家伙儿唠到这儿!希望我的分享能对大家有所帮助!下次再见!