引言
大家好,我是水昆,一名使用 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 的用法。
感谢分享。不过如果要在手机上测试游戏,是不是必须得要先购买GMS呀。免费版应该做不到吧。
@hackey:是的,必须是专业版以上且有安卓模块
很有帮助!