美文网首页Android开发经验谈Android开发android 开发程序员
android 游戏移植 (一) (文末有福利) | SDL 西

android 游戏移植 (一) (文末有福利) | SDL 西

作者: 代码GG陆晓明 | 来源:发表于2017-11-11 16:08 被阅读122次
    image

    游戏效果(不是真实画质)

    image

    有没有被惊艳到?你的内心肯定会说,我靠,画质这么渣,画面却如此熟悉。

    对的,就是如此渣渣的画面,却伴随了我们的童年快乐。

    下面我们就详细的讲讲这个移植过程,说得更加具体些,就是本身这款游戏的

    android

    版本并非我移植的,本身模拟器也是有开源项目支持的。西游释厄传有人已经移植

    ok了,但是市面上开源的只有

    SDL1.3版本,而这个版本有个大问题,就是使用的

    framebuffer

    实现的,这个实现版本,由于没有使用硬件加速,所以性能大大损失。

    因此,在原有项目的基础上,进行移植

    SDL2.0

    ,支持

    GPU

    硬件加速,如此之后,会发现性能直接上升三倍,此游戏在低

    CPU

    上,就不会出现卡顿,没法玩的问题了。

    下来简单讲下整个游戏的流程:

    c语言开发的程序,要在android上面跑起来,主要解决以下问题:

    <section class="" data-mpa-template-id="779275" data-mpa-color="null" data-mpa-category="fav" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">

    • c语言与java语言的jni接口

    • c语言的按键,触摸,以及手柄等事件传递

    • c语言的声音播放

    • c语言的绘制,显示

    </section>

    主要就是围绕这些,算法,逻辑等等,可以直接使用c语言已经实现的,可以直接使用。

    差异部分就是如何和

    android

    去对接,将事件传递过来,同时响应,将结果输出到屏幕。

    c版本的游戏,当前移植到

    android

    ,都不可避免的使用了

    surfaceView

    ,因为此

    View

    是在

    android

    的java端搭出一个框架,让事件可以传递给它,同时它又在独立的自己线程会去执行绘制动作,这样保证了它的绘制,不会影响

    android

    普通

    View

    的绘制流程,从而使得c语言的绘制变得可行。

    c语言开发这边,便可以拿到

    surfaceViw

    对应的一个绘制buffer,将这个绘制buffer封装,使用一组接口操作,便成了

    OpenGL es

    啦。如此之后,我们可以使用

    opeGL es

    的标准方法,进行操作这个buffer,从而将内容绘制到屏幕上了。

    声音,按键 ,以及触摸,都是通过标准的

    JAVA

    C C++

    语法之间的通道实现,即所谓的

    JNI

    ,用来打通两边的参数传递,方法调用。

    SDL

    在此款游戏里面,只充当绘制的动作,其余的声音这些,都是通过JNI打通的。同时,游戏模拟器的概念类似虚拟机,也就是我们的apk运行起来,模拟出来我们的16位游戏机当时使用的

    CPU

    ,以及内存地址空间,如此一来,我们将对应的游戏

    ROM

    ,加载起来运行,便可以在此虚拟环境下,正常运行。

    俄罗斯方块效果

    image

    这个是PC上面的效果,还未移植到android,主要是在考虑,到底该不该用贴图来实现更炫的画质,还是就保持绘制线条的方式,敬请期待吧! 再个原因就是:时间真的不充裕,毕竟这个是周末空闲时间来写的。

    下节来分析代码,以及讲解移植过程,想要查看下载代码的,可以先行阅读了。

    源码位置:

    https://github.com/Cpasjuste/afba

    https://github.com/Cpasjuste/libarcade

    俄罗斯方块源码:

    http://pan.baidu.com/s/1eSH7J6U

    <section class="" data-mpa-template-id="779275" data-mpa-color="null" data-mpa-category="fav" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">

    推荐阅读:

    福利:

    送书福利,不忘初心!

    image

    </section>

    相关文章

      网友评论

        本文标题:android 游戏移植 (一) (文末有福利) | SDL 西

        本文链接:https://www.haomeiwen.com/subject/stzwmxtx.html