引言
大家好,我是水昆,一名使用GMS的开发者。
谈起独立游戏开发,Unity是大多数开发者的首选,但是GMS凭借其更低的门槛,更快的开发流程始终占有一席之地,随着GMS支持了安卓平台的导出,使用GMS的开发者也可以进行安卓游戏的开发,而且,像Crashlands和Downwell这样的上乘之作也证明了其可行性。
这篇教程将面向GMS使用者,总结一下使用GMS进行安卓游戏开发的方法以及可能会遇到的问题。在阅读本篇文章之前,需要读者已经了解了GMS基本的使用方法。
另外需要提前说明的是,笔者并非安卓方面的专家,我只是对于使用GMS制作安卓游戏有一些值得分享的经验,所以,本文中涉及到安卓环境搭建等的部分,还请您辩证地阅读。
安卓开发环境的搭建
要在你的安卓设备上测试游戏并最终打包生成安卓应用,首先需要搭建安卓开发环境。
你要做的只是照着官方的帮助页面下载、安装一系列组件,如果你看不懂SDK、NDK、JDK这样的名词,无须担心——你没必要看懂它们。这个过程虽然麻烦,但确实是必不可少的准备工作。(如果你不是这方面的专家,那么这一部分最重要的就是“按部就班”,确保每一步都按照说明进行,保持网络稳定,关掉杀毒软件等可能会产生影响的程序,耐心。)当然,如果你真的觉得麻烦或是搞不定,不妨考虑万能的淘宝,只用搜索安卓环境搭建就可以了。
完成安卓开发环境的搭建后,继续按照帮助页面完成Gamemaker Studio 内的相关设置,试着连上你的安卓手机运行一次游戏,成功的话,恭喜!你已经可以开始使用GMS进行安卓游戏的开发了。
安卓设备上的输入
安卓设备和PC在形态上有很大的不同,因此也要使用不同的输入方式。
在安卓设备上的“手指”就相当于鼠标左键。如果你想要在安卓设备上实现多点触控操作,就应该用Device Input来代替原先的输入操作。当然,如果你的游戏不需要多点操作,你也可以使用传统的Mouse Input来进行输入。你还可以使用device_get_tilt函数来获取设备的空间朝向信息。
另外,你也可以使用virtual_key_add函数向屏幕上添加虚拟键,添加后的虚拟键同样支持多点触控,注意虚拟键的位置GUI层上的位置,(如果你不了解GUI层不妨看看这里)。
值得一提的是,GMS默认会将安卓设备上的快速双击当做右键单击处理,这意味着有时你只是想快速的点击两下(相当于左键)却被当做是右键点击了一下,要取消这个烦人的功能,只需在游戏开始时执行这段代码:
device_mouse_dbclick_enable(false);
最后,安卓设备上的返回键就相当于Backspace键(index 8, vk_backspace),现在已经很少用到的菜单键和搜索键分别相当于"M" (index 77, ord("M"))和Control 键(index 17, vk_control)。
提升游戏性能
如果你想要保证你做出的游戏能够在大多数安卓设备上流畅运行,你就必须考虑到控制游戏的性能需求。
由于Gamemaker Stuido 1.4版本以上的新的基于surface的绘制逻辑并不能满足移动端的性能需求,所以如果你发现你的游戏在没有大量复杂内容时就有卡顿的现象(比如一个空房间不能以60FPS运行),请将这段代码加入到游戏中,并确保它在游戏开始时被执行。
application_surface_enable(false)
事实上,因为某种原因,这一设定对游戏在安卓平台的性能有着巨大的影响,因此我强烈建议将它加入到任何你制作的安卓游戏中,这样做的代价是surface相关的函数将不能使用,这也是Gamemaker Studio开发移动端游戏的局限之一。
除此之外,你还是要考虑到移动端和PC的性能差异,提升性能的方式很多。包括但不限于:
避免大量的碰撞检测
及时删除不再需要的实例
通过使用shader等方式来减少不必要的贴图数量
不绘制屏幕外的内容
……
(更多提高性能的方式,可以参考这篇文章)
相关全局设定
安卓游戏的全局设定和PC游戏大同小异。关于sdk版本、支持的架构等的设置通常只需要维持默认就可以了。总体来说我发现的值得注意的问题有一下几点:
如果你开发的是类似像素风格的游戏,需要图像边缘清晰锐利,请一定记得勾选Graphics选项卡中的Interpolate colors between pixels.
如果你的单张图片素材大小长或宽超过Graphics选项卡中所设定的纹理页大小,则会出现模糊,这时你应该考虑增大纹理页大小。
如果你感到渐变色有明显的颜色梯度,或者低透明度下颜色不准确等现象,将Graphics选项卡中将默认的16位颜色改为24位,事实上,除非是为了特殊的视觉效果,我强烈建议在一开始就修改这一设定。
总结
以上内容就是我对使用GMS进行安卓游戏开发的相关问题的总结,来源都是我自己在尝试使用GMS开发安卓游戏的过程中所遇到并解决的问题。总的来说,使用GMS开发安卓2D游戏绝是绝对可行的。
另外这也是我第一次写作教程,请多包涵。下次有时间的话,打算总结一下GMS中shader的用法。
暂无关于此日志的评论。