查看: 5244|回复: 7

[原创发布] RM游戏APK傻瓜打包,移动端性能优化,APK错误调试教程。

[复制链接]
梦石
2
星屑
5065
在线时间
706 小时
注册时间
2018-12-11
回帖
213

MZ评测员

发表于 2021-7-12 10:51:45 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 lisliz 于 2021-7-12 11:08 编辑

RM本身是做回合制或者剧情向的引擎,这类游戏即时性不是很强,一般这类游戏移植到手机上不会有太大问题。

不过我的新作换了类型,变成横板类银河恶魔城,最近移植到手机上的时候发现了比较大的掉帧问题。

以下分为几个栏目来介绍打包调试的过程和性能优化建议。

游戏:https://store.steampowered.com/app/1478160/_/


[fold=webgl的渲染效率问题]目前PC的硬件性能已经相当强大,即使是我这种即时ACT也能无压力的满帧运行。但是手机就不好说了,本身webgl的渲染效率就远远落后与原生应用,加上我自己游戏的物理设计比较复杂(怪物和怪物之间有碰撞,相比其他游戏怪物之间重叠穿透),这一块使得游戏的物理引擎运行开销更大。
这一切再加上一台三年半前的老手机,问题就来了。[/fold]

[fold=超级傻瓜的安卓打包教程]
首先,你需要下载一个Android Studio,地址:https://developer.android.google.cn/studio
安装完毕之后,新建工程,在模板中选择“Empty Activity”,命名你的工程名字。
QQ截图20210712093918.png
初次创建新工程之前最好把翻*软件开启,因为Android Studio要下载很多组件才能正常运行,这个过程可能需要较长时间,你会看到软件界面右下角会有进度条,请等待进度条消失后再进行下一步操作。

在软件右侧的面板中逐个双击展开文件夹,找到MainActivity.java文件,先删除第一行之后的代码,然后把下列java代码粘贴上去。


[pre lang="java"]import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import java.util.List;

public class MainActivity extends Activity {

    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        WebView webView = new WebView(this);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setAllowFileAccess(true);

        webSettings.setDatabaseEnabled(true);
        webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        webSettings.setAllowFileAccessFromFileURLs(true);
        WebView.setWebContentsDebuggingEnabled(true);
        webSettings.setMediaPlaybackRequiresUserGesture(false);

        webView.loadUrl("file:///android_asset/www/index.html");
        setContentView(webView);
    }
}[/pre]

右键点击app,如下图找到最后的assets folder,点击创建。
QQ图片20210712093443.png

如下图右键创建出来的assets文件夹,点击New -> Directory,弹出的对话框内输入www按回车。
QQ截图20210712093905.png

把你的工程在RM里勾选web模式部署,把部署出来的www文件夹内的全部文件都拖动到刚刚创建出来的www文件夹内。

至此,一个最简单的RM工程打包APK已经完成并且可以运行。我这里只负责傻瓜式,如果要自定义APP图标,以及界面样式这些,下次再说吧。

[/fold]

[fold=如何为RM游戏开启真机调试?]
首先,我们要启动手机的调试模式,才能让手机接受电脑端的调试软件的连接。
网上可以搜索出很多傻瓜教程,例如:https://jingyan.baidu.com/article/574c521961b8b66c8c9dc16b.html
这里我就不再赘述。
如果你成功开启手机的调试模式,用USB线将手机连接到电脑之后(最好用原装USB线),Android Studio右上角应该会显示出你的设备名称(有些手机还要在手机上二次确认开启调试模式)。
如下图,我的手机是华为荣耀V10,三年半前的老机器了。
QQ截图20210712095521.png

成功显示真机设备之后,保持手机不处于息屏状态,点击设备名称旁边的绿色的三角形按钮,你可以看到你的RM游戏已经在手机上跑了。
[/fold]

[fold=使用电脑上的Chrome或Edge浏览器调试手机上的RM游戏]
按之前的教程成功在手机上运行RM游戏之后,在chrome浏览器输入chrome://inspect(或者在新版edge浏览器上输入edge://inspect)
注意:如果使用chrome浏览器,必须要开启翻*软件,否则不会成功!

你会看到类似以下的界面:
QQ截图20210712100544.png
找到有file:///android_asset/www/index.html的这一项,点击下面的inspect按钮,至此APK上的开发者工具已经打开,可以进行断点调试,查看报错详细信息。
[/fold]

[fold=性能优化建议]
如果要求玩家必须达到60FPS的流畅体验,那每一帧的处理时间必须小于16毫秒,可以通过开发者攻击里的性能选项卡来查看算力究竟消耗在了哪里。
QQ截图20210712102633.png
上图的Game_Map.update函数开销主要是游戏的物理引擎,之所以你会看到并排两个Game_Map.update函数,是因为此时游戏渲染帧率只有30FPS,但MZ会优先维持60FPS物理帧,所以在此时1帧内算了两次物理帧。
render函数的性能开销最大,其中包含uniform1v等函数(shader),[wasm-function](Effekseer粒子特效)
总结:物理引擎消耗4ms,渲染消耗12ms,其他游戏逻辑消耗3ms,无法维持60FPS帧率

以性能分析结果为例,我会给出几点优化建议:
1.慎用shader:比如隔壁drill写的滤镜插件,那个就是shader,主要是因为shader和mask这一类的东西在渲染时会打断批处理,增加对显卡的drawCall,详见pixijs源码里的render函数和renderAdvance函数,不过更大量的性能开销并不来源于drawCall,更多的还是来源于shader本身的计算量,MZ相比MV把“更改画面色调”一类的事件指令改成了shader实现,有些耗性能,为此我将MZ倒退回了MV的实现(PIXI.Graphics)。

2.慎用mask(蒙版):和shader原理类似,不过小型mask不会有太大问题,主要是大范围的mask很可能会有问题。

3.不要用非硬件加速的绘图方法进行实时渲染,Canvas内建绘图对象就不是硬件加速的,以前的TerraxLighting光照插件就是这样的实现,这东西在电脑上都时有变卡的问题。

4.Effekseer粒子特效,这东西底层貌似也用了shader,一开始十分的卡,卡到没朋友,前段时间我已经和作者联系了,虽然作者打算出一个高性能版本,我也有幸提前获得了这个版本,不过看起来性能开销还是有点大(两个特效,在我的手机上每帧消耗4ms以上)

最后其实我多嘴说两句,其他游戏手机上粒子特效都丝滑流畅,同样是硬件加速,怎么到了webgl这里用个shader都战战兢兢的?到底是webgl效率的问题还是我手机太老了?RMMV当时出的时候,H5和webgl还不够广泛成熟,因此MV内部没用shader,渲染都是普通的2D绘图,到了MZ问题就多了。
反观目前web上基本没有3D大作,更别说硬件性能羸弱的手机了。我现在很累,是真的累,为了带动这个横板ACT到旧手机上也能维持60FPS,我是不是在挑战webgl+H5游戏的性能天花板?不说了,继续挤牙膏式优化去了。

[/fold]

评分

参与人数 3赞 +3 收起 理由
tuxyin + 1 塞糖
青衣blackcloth + 1 塞糖
石林尘影 + 1 精品文章

查看全部评分

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
发表于 2021-7-12 11:33:06 | 显示全部楼层
我是从drill群里转过来的!!
回复

使用道具 举报

梦石
18
星屑
13373
在线时间
1525 小时
注册时间
2020-3-21
回帖
334

MZ评测员极短23获奖

发表于 2021-7-12 11:43:21 | 显示全部楼层
支大佬!
回复

使用道具 举报

梦石
0
星屑
5497
在线时间
825 小时
注册时间
2019-11-7
回帖
328
发表于 2021-7-12 13:18:20 | 显示全部楼层
大佬牛批
回复

使用道具 举报

梦石
0
星屑
9191
在线时间
1557 小时
注册时间
2015-2-7
回帖
114
发表于 2021-7-12 16:09:13 | 显示全部楼层
大佬太厉害了,顺便去B站看了大佬的游戏相关视频,更加佩服了
回复

使用道具 举报

梦石
0
星屑
4739
在线时间
436 小时
注册时间
2008-1-18
回帖
429
发表于 2021-7-12 16:48:11 | 显示全部楼层
谢谢大佬分析,请问如何更改APP的图标呢?
回复

使用道具 举报

梦石
0
星屑
4584
在线时间
369 小时
注册时间
2020-1-29
回帖
211
发表于 2021-7-12 22:40:19 | 显示全部楼层
大佬太厉害了
回复

使用道具 举报

梦石
0
星屑
683
在线时间
81 小时
注册时间
2021-6-3
回帖
37
发表于 2021-8-3 21:36:56 | 显示全部楼层
大佬 手机进行菜单操作时偶尔会反应迟钝或者点击没反应咋办
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部