剖析《口袋妖怪复刻版》技术架构


前言

由于一次偶然的机会,使我发现了一款国内目前为止我认为对Pokemon还原度较高的一款产品——《口袋妖怪复刻版》。这款游戏无论是战斗画面,画风,技能,甚至是宠物的叫声,基本跟原著一模一样,而且已经在线上各大平台推了起来。由于画风上非常接近原著,我猜想假如在没有官方的支持下,能模仿得如此的高,恐怕这项目的原画已经可以直接去画漫画了。而且最近这么火的一个IP,要是没有没有版权,估计渠道也不敢花这么多资源去推。所以综合上述的理由,我认为这款《口袋妖怪复刻版》,有很大的可能性是已经获得了授权,也因为这个原因,所以我决定要对这款游戏进行一次简单的分析。


结构分析

库结构

要了解一款游戏的框架结构,从库文件入手,能更快速地看出这游戏所使用的引擎,让我们初步来了解下这款游戏链接库目录结构:

libbspatch.so

首先说libbspatch这个库,是友盟SDK所需要依赖的其中一个库,主要是做增量更新,其配套的工具还有bsdiff和bspatch,分别是负责生成差分版本和打补丁,在这里就不再细说了,有兴趣的读者可以独自去了解下。

libcocklogic.so

阿里云App SDK其中一个依赖库,主要负责幽灵进程相关接口。

libtnet-2.0.17.1-agoo.so

阿里云App SDK其中一个依赖库,主要是提供网络连接的相关接口。

libentryexstd.so

银联的计费SDK所依赖的库文件

libluajava.so

java层调用lua的库文件

libysshared.so

提供一些最基础接口的库,其中包括以下接口:
memcpy
memset
strncmp

libstagefright_froyo.so

针对Android Froyo(Android 2.2)的StageFright硬件解码库

libstagefright_honeycomb.so

针对Android Honeycomb (Android 3.X)的StageFright硬件解码库

libCore.so

实现Adobe AIR框架基础接口的库

分析

相信有不少熟悉游戏开发的读者看完这些库之后有跟我一样的诧异。因为作为一款手机精品游戏,它并没有使用我们的主流引擎,而是选择使用Adobe AIR。我认为这款游戏之所以选用AIR,很大可能是由于游戏的客户端主程之前是做页游出身,对AS有一定的依赖性,所以当准备手游项目的时候,就优先地选用了以AS为开发语言的AIR作为开发框架。但是,我建议如果可以选择的话,还是尽量不要选用AIR作为手机游戏开发框架,因为从性能上来看,不见得比其他手游开发引擎有优势,哪怕是做性能条件没真么高的休闲类游戏,在耗电量方面还是会有所影响。

第二个让我觉得兴奋的点是在java层调用lua这个地方。既然使用了AIR,其主要逻辑应该是使用AS,但是这里有多了一层Java调用lua的需求,所以不得不让我顿时产生了好奇心。后续我们将会开始分析应用层结构。

应用层结构

在应用层中,负责主要业务逻辑的分别是:

  • AppLoader.swf
  • Pocketmon.swf

从名字上基本可以看出,Pocketmon.swf是游戏的主程序。游戏的逻辑都基本写在Pocketmon.swf(在这里我要纠正一下《口袋妖怪》的官方英文其实应该叫《Pokemon》)。那么AppLoader.swf主要是做什么的呢?在资源路径里,我们发现了一个叫做AssetsConfig.json文件,文件内容大部分都是一些资源文件,以及一些远程资源路径,其中也包括Pocketmon.swf。由此可见
AppLoader.swf的工作主要是负责把资源与应用更新独立出来,方便日后其他项目的功能重用。

再说说另一个比较重要的文件xpkg.cra。xpkg.cra是一个资源包,解包后,我们可以看到里面大部分的资源文件都是计费相关的,比如移动,电信,联通,银联,微信等图片Logo,以及一些lua的脚本文件,终于我们在这里发现了lua的踪影:

通过这文件列表,我们可以大概得知,这部分的脚本内容,主要是负责处理支付,登陆,注册等运营平台相关的业务逻辑。


总结

通过上述的分析,我们可以大致确定《口袋妖怪复刻版》客户端的技术架构大致可分为三大层:

------资源加载层(AppLoader.swf)
    |    ||    ------AssetsConfig.json|--游戏应用层(Pocketmon.swf)
    |--平台SDK适配层
         |------xpkg.cra

到目前为止以我掌握到的信息,这游戏充分利用了AIR的特性,在模块化管理方面做得相当的不错,同时配合lua的使用,以最大限度降低平台移植的成本。虽然使用的框架并非主流框架,但总体来说,还是有不少地方值得我们参考。

剖析《口袋妖怪复刻版》技术架构相关推荐

  1. 口袋妖怪复刻怎么在电脑上玩 口袋妖怪复刻电脑版玩法教程

    重温经典,激情不减!高还原GBA手游力作<口袋妖怪复刻>进入第四世代,加入超过100只全新超强小精灵,更有新增神秘精灵(超进化)震撼来袭,引爆最强宿命对决!与此同时,数个新都市的开放.数十 ...

  2. 3310复刻版 java_终于等到你:诺基亚3310复刻版开箱简评

    终于等到你:诺基亚3310复刻版开箱简评 2017-08-19 20:14:21 60点赞 42收藏 222评论 自打今年年初说是诺基亚要出3310复刻版手机,心情是激动的.因为遥想10多年前第一次用 ...

  3. 愚人节谁最皮?华为宣布攻克兽语,小米6复刻版官宣,微信发万元红包...

    今天是4月1日,也是愚人节.因为疫情,全球都在渡过最严峻的时期,国外不少公司都宣布取消今年的愚人节彩蛋环节,但国内互联网大厂们还是在这个日子送上了有趣的彩蛋.适当地皮一皮,也让大家放松开心一下. 温馨 ...

  4. Bombermaaan-最好的开源炸弹人游戏(支持AI人机对战,SFC复刻版)

    关键词:炸弹人源代码,炸弹人AI算法 目录 一.游戏截图 二.基本信息 三.游戏设计介绍 四.道具说明 五.下载 一.游戏截图       二.基本信息 语言:C++ 平台:Windows / Lin ...

  5. 3310复刻版 java_诺基亚3310复刻版评测:经典回归 情怀满满

    诺基亚3310复刻版评测:经典回归 情怀满满转眼又到毕业季,一张张青春洋溢的笑脸挥别了高中生活,带着对未来的憧憬奔向了更美好的明天.对于00后来说,微信微博是他们的青春,智能手机更是伴随着他们长大的的 ...

  6. java奇缘幻境_奇缘幻境按键机版app下载-奇缘幻境复刻版安卓客户端v1.1.0 - 找游戏手游网...

    奇缘幻境按键机版下载是一款角色扮演类修仙手游.游戏中玩家可以自由的选择门派,每个门派都有不同的武学任你选择.游戏内容十分丰富,玩法多样. 游戏介绍: 奇缘幻境按键机版下载,功能机有史以来最经典的RPG ...

  7. 摩托罗拉v3android,摩托罗拉V3安卓复刻版真机登场!网友:居然真做出来了

    原标题:摩托罗拉V3安卓复刻版真机登场!网友:居然真做出来了 就在前不久,国外曝出了一张疑似摩托罗拉V3复刻版的外观专利设计图.从这张图片可以看出,这手机中间有一个轴承,仍然是一部翻盖手机. 结合20 ...

  8. 3310复刻版 java_情怀满满的经典之作 诺基亚3310复刻版评测体验

    情怀满满的经典之作 诺基亚3310复刻版评测体验 2017年06月30日 00:04作者:王瑞编辑:王瑞文章出处:泡泡网原创 分享 作为一名95后,我也经历过那个被诺基亚统治的时代,那时几乎所有人都在 ...

  9. 罗技发布MX518复刻版 性能升级定价299元

    罗技近日发布MX518鼠标的复刻版,MX518这次回归是名正言顺地进入G系列游戏外设旗下,并且在保留XP时代的蛋形经典模具的同时,将模具的材质和上色更换为"Nightfall"风格 ...

  10. 在VPS上搭建Aria2+Aria2NG+OneIndex+Pandownload复刻版(CentOS8)

    目录 环境 Aria2 一键脚本安装 yum安装 编译安装 设置Aria2 安装screen(踩坑) 启动Aria2(踩坑) 查看Aria2配置 Aria2NG(待更) 安装 配置 OneIndex( ...

最新文章

  1. WIN7自定义管理员账户无法创建或使用设备
  2. 使用 trait 时报PHP Parse error: syntax error, unexpected 'use' (T_USE) 这个错误
  3. 使用Swagger2Markup实现API文档的静态部署(一):AsciiDoc
  4. 聚宽macd底背离_MACD指标图解!如何解决滞后性,规避盲目买进卖出!
  5. NOIP 2012 同余方程
  6. 钉钉小程序封装请求地址
  7. 一个请求多个响应_一个TCP连接到底可以发多少个HTTP请求?
  8. 多元统计分析及R语言建模_自定义函数: msaR.R
  9. 做VB的,经常注册和反注册OCX控件和DLL链
  10. flash我中学时的梦想
  11. javamail 解码 base64 html格式邮件_Spring整合javaMail
  12. java 反解析cron_Cron表达式解析
  13. HighTec安装教程
  14. Python 分析电磁学
  15. 《动手学深度学习》(PyTorch版)代码注释 - 54 【Text_sentiment_classification(RNN)】
  16. 2022年机修钳工(中级)考试题库及模拟考试
  17. uboot分析:uboot的启动过程分析
  18. FFHQ数据解压问题记录
  19. Socket详解-socket建立
  20. 困惑了很久的函数D3DXCreateTextureFromFileInMemoryEx

热门文章

  1. SubsamplingScaleImageView + Glide显示网络超大图片
  2. WIN7搭建web服务器的步骤
  3. WEB服务器的配置与管理
  4. 如何搭建ftp服务器实现文件共享
  5. Python操作MongoDb与Redis以及ODM
  6. 怎么让照片里的人嘴巴动起来_动嘴app最新版(让照片说话的软件)|动嘴app安卓版下载v1.0.0-乐游网安卓下载...
  7. iOS集成twitter分享
  8. OutMan——Foundation框架中的常用结构体、NSNumber类和NSValue类
  9. 2022软考高项十大领域知识整理(四)-人力资源管理、干系人管理、采购管理
  10. WPS文字表格自动填充序号