J2ME游戏pc-安卓-java手机三端存档管理教程(含各平台间存档转换、备份)

查看 31|回复 0
作者:lydgs   
Created: June 9, 2023 5:47 AM
id: 497b90e270c3458282df916f3f461e59
上次编辑时间: June 29, 2023 9:06 PM
前言
我希望我的这个文章可以对玩j2me游戏的朋友们起到星星之火的作用,让j2me游戏游玩的圈子变得更加勃勃生机。
现在以前的孩子们长大了,怀旧j2me游戏的人越来越多了,大佬们分享出来的j2me游戏资源也越来越多,但在游玩过程中你是否会因为已经在安卓端游玩了一段时间,想在电脑上玩时因为要重新开始玩存档望而却步,又是否想要分享给大家你目前的游玩存档但又担心大家因为主要游玩平台软件和你不同而无法使用你的存档,亦或者是你想把自己通关一次的存档保存起来留着以后有空了继续玩,却苦于复杂多样的存档文件带来的麻烦备份成本,j2me游戏存档同步相关的这类问题在现在的我看来或许都可以用我的这篇教程解决!
有了此篇教程之后,大佬们或许就也可以开始分享自己的各种jar游戏存档了吧。
缘起
我也是一个对以前的java老游戏具有一定感情的人,也是苦于现在虽然电脑、安卓都有相应模拟器可以玩j2me游戏,也有java手机可以玩,但因为存档管理问题所以老是不敢轻易玩那种游玩流程过长的游戏,生怕又是游戏还没来得及玩完手机就死掉或被换了,以后再有机会玩想到又得重新玩的话估计很可能又会放弃,其实仔细想想的话,这本身又不是游戏的错,只是因为这些散乱、自由的j2me游戏不像现在游戏平台里的游戏那样有下载管理和云存档之类的功能,所以导致了j2me游戏的游玩过程总是不那么有保障,那如果有一种方法方便我们能够及时提取并统一化管理j2me游戏存档,会不会使得体验上升呢?答案或许是肯定的,因为本来j2me游戏就没多大,生成的存档就更小了,即便对老旧java功能机而言,20-30k/s的蓝牙传输速度估计也完全够用来快速传输存档,并且提前爆料一下,我会在后文中介绍可将存档文件缩减为最小的储存形式。
成就
  • 目前使用了两种方法,分别实现了java手机和安卓java模拟器之间、安卓java模拟器和PC端KE模拟器之间双向同步存档,因此按照这个路径打通也可理解为实现了三端之间存档的同步。手机虽然玩游戏方便,但玩着玩着出现了重大bug,游戏不能继续了,这时候找各大佬修复的话,就需要自己的存档 ,总不能让大佬把游戏玩到自己玩的进度甚至是马上通关吧^_^,而且转到PC端才能更好的测试游戏bug问题所在。
  • 本着将此文章既作为当下应时而动的教程,又作为完整留存的目的,教程中尽量会减少外链,图片采取个人图床,涉及到的有留存意义的软件下载资源也均在文章里附上个人链接供大家下载,如链接失效也可在发文所在平台或下载链接中等可让我看到的地方留言找我补,这样做还有一个好处就是方便在各大网站上发布。

    测试
    硬件
    长天一色大佬提供的3G索爱java智能机K800i、M2记忆棒索爱手机4G内存卡、运行Win10家庭中文版21H1系统的拯救者Y7000P笔记本电脑、安卓手机红米K50Ultra(Android12 MIUI13.0.5)
    软件
    测试所用所有工具类软件版本号均为当时找到的最新版
    Jar类:一键嵌入存档.jar(版本号4.0,下载点我)、用于制作存档的jar安装包(所以说jar游戏的安装包很重要,如需备份存档的话,就最好保存在手边,本文以吉他英雄3摇滚传奇的jar为例进行演示)、利用zcb大佬的“J2MECloudTools”工具在PC端生成的游戏对应jar替身文件(示例文件下载点我,注意:此示例文件用于转换PC端KE模拟器和安卓端JAVA模拟器之间的所有游戏存档而不仅限于吉他英雄3摇滚传奇,具体使用方法在“教程正文”的建议3,如无此需求可不下载)。
    安卓端:JL-iniche(版本号ver.221006.2130,下载点我)、BlueFTP(Bluetooth File Ttransfer,版本号5.666 ,下载点我)
    PC端:KE模拟器(KEmulator,版本号1.05,下载点我)、J2MECloudTools(zcb大佬开发的软件,首先电脑得有Java环境才可以运行,下载点我,解压后,去文件夹里面双击bat文件来运行,项目的github地址点我,他说有空就会把工具源代码之类的传上去)、java环境压缩包(jdk1.8.0_281x64绿色解压版,zcb大佬推荐的版本,如果电脑没java环境或已有java环境无法正常生成jar替身文件的话可下载使用这个,如果电脑已有可成功使用的java环境则不用下载,下载点我)
    目前发现安卓最新1.7.8-open版本的J2ME Loader模拟器因无法使用jar软件正常读写文件所以无法完成测试(建议大家暂时使用其他模拟器如JL-mod或JL-Iniche进行存档同步,如果存档已在J2ME Loader里则先移动到其他模拟器再操作即可,常见的几个模拟器存档位置见教程:地址1 地址2),也不知后续更新的版本的文件读写会更好还是更坏。
    教程正文
    准备工作
    首先本教程默认在java手机或模拟器里用于制作存档的jar游戏应用已经保存了进行到一定程度的游戏存档。
    然后关于工具软件的准备有以下总结:
  • 安卓和PC端之间的存档同步只需要设备主要安装了安卓端和PC端的java模拟器和“J2MECloudTools”即可
  • jar手机和安卓之间的存档同步则需准备“一键嵌入存档.jar”、安卓端java模拟器

    内存卡的必要性
    如果在java手机本地路径没有“其他”之类的文件夹,或者在“RMS备份$导入”插件里试不出用于存放其他文件的文件夹对应路径,甚至手机直接不允许写入任何文件的话,才建议买内存卡。
    用自带的文件管理器试了下可以建文件夹,但杂乱东西只能放“其它”里,在“RMS备份$导入”插件里对应的路径修改如下图所示,其实之前真没想到能探索出这个路径,我感觉此时的我就像个天才!(叉会腰)

    不过如果有内存卡的话,对于存档的导出都是在内存卡的E盘目录下完成的,不需要改盘符,默认路径也可以直接用,存档dat文件会存在内存卡根目录(如下图所示)。

    此外,zcb大佬指出:以前的支持java的手机安装内存卡一定要注意手机支持的最大存储,若安装了8G卡手机只支持2G可能会出现无法存档等情况
    BlueFTP软件的必要性
    测试所用的java手机java权限控制是很低级的那种程度,就连读写也要反复确认还不能设置总是允许。
    但最近又发现一个很有意思的事情,用那个blue ftp安卓端通过蓝牙控制java手机的时候删除或批量粘贴一些东西又可以在总是允许蓝牙连接之后绕过粘贴或删除每个文件都会出现的提示。
    感觉变相地用蓝牙权限破解了某些java手机反复读写确认的权限,神奇!
    更重要的是,对于我测试时使用的这类java手机而言,通过蓝牙直接发送jar安装包到java手机时并无法存到某个目录而只是打开安装程序,所以用BlueFTP的话不用借助电脑数据线传输也可实现对java手机本地存储内文件的操作(主要是截止到本文的完整文章形成之日都快十天了那个索爱的数据线也还没到所以也没法测试数据线连电脑的情况,幸亏借助了这个软件使得整个流程的进行没被因为数据线而搁置)。
    java手机和安卓java模拟器之间
    总的来说就是:先用一键嵌入存档.jar处理jar安装包,然后安装处理后的jar(即便是原来有存档的也可以覆盖安装,但注意要选择保留数据),打开后就可以导入导出存档了(甚至还带有存档修改功能,方便大家修改存档时不用另外开16进制编辑器寻找路径和解包,直接在游戏应用里就可以选择,修改前记得备份存档!!!)
    下面演示在java手机上的经典操作,安卓端java模拟器上对应的操作和其几乎一样,主要的不同可能是在安卓模拟器中安卓的路径“storage/emulated/0”被对应存储dat存档文件的盘符E,也就是说在模拟器软件中使用默认位置的设置也可以完成存档同步(此外如果对于安卓端java模拟器存档位置不太清楚的话可参考我的另一篇文章:java游戏存档管理教程of安卓模拟器)。
    修改版jar安装包制作
    java手机和安卓手机配对,在java手机设置配对安卓手机的连接权限为“总是允许”(如果有的话)
    通过数据线或BlueFTP软件里的FTP功能将安卓手机上下载的“一键嵌入存档.jar”、用于制作存档的jar游戏安装包都复制到java手机的“其他”文件夹里(测试的java手机无法复制到根目录,会消失,像黑洞一样神奇)
    依次给java手机安装两个安装包
    打开“一键嵌入存档.jar”(打开后可能会提示读取权限,一直点“是”让提示消失即可)
    找到“other”文件夹打开需要处理的jar游戏安装包文件(打开后可能会提示写入权限,一直点“是”让提示消失即可完成对存档文件的写入)
    完成写入后会在jar游戏安装包所在目录下自动建立文件夹“aying.tk”,里面装的就是嵌入了存档功能的jar安装包

    到java手机文件管理器找到嵌入存档功能的jar安装包覆盖安装,期间一定记得要记得选择“保留数据”,否则之前游玩的存档会消失(此步有误操作丢档风险,务必小心,或者如果有内存卡的话,也可在此步操作前把游戏安装位置先移动到存储卡里备份卡里系统文件夹下java存档数据后再操作,不同人手机上存档情况可能不同,我的“吉他英雄3摇滚传奇”的存档是被索爱手机放在内存卡隐藏的“system“文件夹里的”/ams/java/db”路径,大致的的存档样式可参考我在后面写的“存档文件具体情况”那节中“java手机”部分的截图)
    存档导出
    打开覆盖安装好的修改版jar游戏应用,会跳出三个选项,分别为游戏名(点击这个选项可直接进入游戏查看存档替换成功与否)、RMS修改$删除、RMS备份$导入。
    选择“RMS备份$导入”
    在框内修改想要存储dat存档文件的盘符和路径(默认的E表示内存卡,如没有内存卡则必须改为C,因为某些java手机可能不支持在本地存储直接生成所以放在其系统自带的“其它”文件夹,具体可参看“内存卡的必要性”一节),本次测试将完整路径由默认的“/E:/Guitar Hero III.dat”改为了“/C:/other/Guitar Hero III.dat”
    按确定然后按储存,允许可能会出现的几次写入权限弹窗后软件会退出,此时存档dat文件一般就已经成功生成到了之前框内填写的位置。
    在java手机上测试后发现成功导出了以jar内部游戏名命名的1098字节大小的存档dat文件。
    然后就可重新替换安装jar游戏应用原安装包继续游玩了(当然也可以继续用目前安装的修改版jar)。
    存档导入
    导入的逻辑和导出差不多,首先也是进入该插件选项后设置好存档dat文件所在路径然后点确定
    不同的是接着要选择“更多”里的“读取”,允许可能会出现的几次读取权限弹窗后软件会退出

    此时存档的导入工作便完成了。
    注意,在确认完允许读写权限后均会退出程序,但此时存档读写工作已完成,可以接着重新覆盖原安装包继续游玩了(当然如果不介意每次游玩都会出现选项的话也可以保留具有存档读取功能的版本)。
    经测试,在java功能机和jl-iniche上均可实现存档储存和读取功能,在储存和读取完备份的dat存档文件后均会退出程序,在jl-iniche上甚至刚开始制作完内嵌存档功能的jar安装包后也会退出,无法像java手机机那样制作完还可查看嵌入完成的详细结果。
    安卓java模拟器和PC端KE模拟器之间
    准备工作
    [ol]
  • 解压下载的J2MECloudTools压缩包到文件夹
  • 如电脑已预装java环境,则进入J2MECloudTools解压后的文件夹找到里面的“J2MECloudTools.bat”文件双击运行即可,无需进行下一步(如运行后无法成功生成替身文件,如报错Stream closed,则请进行下一步)
  • 如电脑未预装java环境(电脑cmd输入“java -version”然后回车,提示java版本信息就说明装了),则下载并解压文章开头提供的“jdk1.8.0_281x64绿色解压版”,然后通过电脑自带的文件资源管理器进入解压得到的“jdk1.8.0_281x64”存放路径文件夹里的“jre\bin”路径,然后地址框输入cmd回车,然后在cmd窗口输入start javaw -jar "E:/J2MECloudTools (1)/J2MECloudTools.jar”回车(注意"E:/J2MECloudTools (1)/J2MECloudTools.jar”是我解压的J2MECloudTools文件夹中“J2MECloudTools.jar”所在的路径,你们需参照其改为自己所放置的正确路径,注意斜杠方向)
    [/ol]
    PC端J2MECloudTools生成jar替身文件
    第一步:选择文件

    第二步:生成文件

    会在文件同路径下生成一个文件名后加了“(存档替身)”文字的几kb大小的jar替身文件。
    存档导出
    由于安卓端的存档导出比较傻瓜,因此主要以PC端为例进行讲解,安卓端是类似的
    PC端和安卓端二者都是需要首先在根目录建立用于存放存档的文件夹“J2MECloud”(不同的是安卓端是建立在安卓手机根目录,完整路径即“storage/emulated/0/J2MECloud”),PC端是建立在KE模拟器文件夹的“rms”文件夹里游戏对应机型分辨率的文件夹下,具体路径是:“你的存放路径\KEmulator-v1.0.5\file\root\J2MECloud”,每个游戏都分成了几个文件夹分别存了些小文件(存档文件路径以及样式可参考“pc端ke模拟器”后面这一小节)
    用ke模拟器打开制作好的存档替身文件,点击“Menu”里的“保存文件”选项,最终会提示存档输出位置,根目录的”J2MECloud“文件夹里生成了”rms.txt“存档文件。

    存档导入
    将导出的“rms.txt”文件放入根目录(安卓端即”/storage/emulated/0”路径)下的”J2MECloud“文件夹
    去模拟器安装替身jar文件并打开,选择“Menu”中的“保存记录”
    提示“记录保存完毕,请运行原版游戏”后,即可退出程序,下图为安卓模拟器中的大致界面

    电脑端KE模拟器导入存档好像麻烦一点,恢复备份的存档之前得先到rms下对应机型分辨率文件夹完全删掉游戏相关的文件和文件夹才可以成功,不然貌似无法直接对加载java原程序自动生成的存档替换
    而在索爱K800i手机上将jar替身文件覆盖安装后点击打开会应用程序错误(其他java手机欢迎自测并及时反馈),所以这个方法只能在安卓和PC间同步存档,要同步java手机的存档需返回继续使用上一个“java手机和安卓java模拟器之间”的教程先把存档同步到安卓模拟器上后,在从安卓模拟器上即可同步到PC端KE模拟器。至此便实现了jar游戏在java手机、安卓手机、PC三端的同步!

    建议
    [ol]

  • 后续备份通用存档时尽量保留安卓端java模拟器的存档或者安卓和java手机端之间的那个dat后缀的通用存档,理由如下:
    [ol]
  • 经此次测试,发现rms.txt和游戏名.dat中存储空间占用最小的是后者(虽然都很小,但为了往java手机发送更快还是尽量越小越好吧,但前者也并非无可取之处,zcb大佬指出:导出的rms.txt里面都是十六进制的字母和空格分割,所以文件大小比其他存档文件格式至少大三倍,但又方便了自己直接用文本编辑器搜索十六进制修改并导入。从而就不需要用到十六进制编辑器),可将存档文件缩减为最小。
  • 从本文的教程中可看出,安卓模拟器的存档在三端的存档同步中可以起到枢纽的作用(比如你保留安卓模拟器存档的话,给PC或java手机转换存档就只需要用到一个方法及其相关的软件,而你要是保留的java手机或PC端KE模拟器的存档的话,给安卓端转换故人也是只需要采取两种方法中的其中一种,但java给PC或PC给java同步存档估计就会麻烦一些)
    [/ol]

  • PC端KE模拟器在平时游玩游戏时如果有存档备份需要的话,最好不要装太多游戏,建议最好是玩一个游戏,玩完以及备份完存档后删掉其在rms文件夹生成的存档文件(或直接把整个rms文件夹都删掉,更省事),这么建议是因为PC端的KE模拟器备份存档时会把游戏所在rms下对应机型分辨率文件夹内所有存档文件都提取备份出来,所以基于这个逻辑,或许对于KE端每个游戏分别设置一个与其他不同的机型就可以避免这个问题(这个尚未测试,如有此需求可自行操作),但估计还是得固定好每个游戏对应的jar包路径,可能同一个jar游戏路径改变也会引发一系列问题,对于KE模拟器玩家的一些担忧大概就先说这么多。

  • 如在给电脑端进行存档同步时,不想给电脑装java环境,以及不想老是用“J2meCloudTools”为每个游戏都生成替身文件,可以完成pc和安卓间的jar游戏存档转换吗?我可以给出肯定的答案,得益于KE模拟器对于存档文件存储方式的特殊设计(相对于其他平台,可以实现存档一对多的备份和读取而非一对一,经尝试,很遗憾,java手机和安卓端java模拟器之间的存档同步无法成功使用此偷懒方法提取出正常的中间文件),使得这个偷懒技术的实现变成了可能,但此技术比之前的教程更要求动手能力。
    下面只给出大致操作思路,如果有许多人实现这个方法有困难的话记得及时反馈,我后续再更新下详细做法吧。
    首先假设你已厌烦了用zcb大佬开发的J2MECloud工具频繁生成jar替身文件,那么此时你手头应该至少有一个替身文件,如果没有也没关系,可以用我在前文“前言”里“测试”软件jar部分上传的jar替身示例文件(基于吉他英雄3摇滚传奇的jar安装包制作)
    在rms文件夹里建立目录然后从你游玩的游戏对应机型分辨率目录中把里面的存档文件全复制到这个文件夹里(如果你游戏存档所在文件夹也为此目录则请忽略此步,如果你使用的替身文件是你自己对应游戏生成的也请忽略此步)
    用KE模拟器的“文件”-“载入jar”按钮打开jar存档替身文件
    和之前说的一样,点击“Menu”里的“保存文件”即完成了rms.txt的导出,后续就可像之前说的那样导入安卓模拟器了,不同的是,游戏存档会生成在这个jar替身文件对应的存档目录(比如我提供的jar替身文件会把存档生成在吉他英雄3的目录),相对于之前的pc和安卓间的存档导入教程还需从此文件夹中将转换成功的存档文件再复制到对应真正游戏的目录覆盖即可。
    至于从安卓向KE模拟器只用jar替身文件同步存档的话,只需首先使用安卓java模拟器打开jar运行替身文件,然后将游戏存档复制到替身文件对应游戏的存档文件夹,然后点“保存文件”即可,向PC端KE导入的话就把rms.txt文件放到前文提到过的KE模拟器根目录的“J2MECloud”文件夹,然后清空KE模拟器的rms文件夹(或备份好里面可能有用的存档后删除),用KE模拟器运行jar替身文件点“Menu”中的保存记录即可在rms下生成的文件夹(本文提供的jar替身示例文件对应的机型分辨率文件夹名称为之前也提到过的“SonyEricssonK800_240x320”)里发现存档文件。
    由于之前电脑突然出现的神奇bug,导致我一度以为zcb大佬提供的这个pc和安卓之间jar游戏存档的方法无法推广了,但最终这个bug被zcb大佬推荐使用的jdk1.8压缩包解决了,我也就是在边请教zcb大佬边尝试其他方法的过程中1不小心发现了这个神奇偷懒方法。

  • 大家使用我的教程提供的方法分享存档时最好把对应的游戏安装包也一并分享,避免可能出现的别人导入你存档不能用的情况,比如有些游戏的改版变动较大的话可能不同版本的存档就不太能通用了,不过一般来说主要是同类型游戏,存档可能还是比较通用的,最多可能改个名字?
    [/ol]
    统计信息
    对两种方法的探讨
    PC到安卓和安卓到java手机的存档同步逻辑基本上是一致的,或许较大的不同就是jar端生成的存档同步工具jar安装后也带了游戏文件,不替换也可直接游玩,而pc端生成的那个不带。此外PC端生成的存档同步工具被叫做“替身”而另外一个在软件内部尚未定义明确的名称(咱也不懂为啥要叫替身,或许是玩让子弹飞的梗?不过这样雀食也和java手机端生成的那个jar文件可以区分开),另外PC到安卓之间的存档同步可使用前文提到的偷懒方法。
    三种设备上存档文件具体情况(以吉他英雄3摇滚传奇为例)
    存档大小顺序:PC端KE模拟器>java手机>安卓端jl-iniche模拟器
    pc端KE模拟器
    可以看出是被放在了两个文件夹里的许多rms后缀文件,并且每个文件的大小都在1kb左右及以上



    安卓端JL-Iniche模拟器
    可看到有4个几十b到1k的文件,后缀为rsr或rsh(上面那个db文件夹是从java手机用BlueFTP下载过来的,里面存放着java手机上的游戏存档,具体可见后面“java手机”部分那张图)

    java手机
    可看到java手机中“吉他英雄3摇滚传奇”的存档为两个大小为1-3k,j51开头的文件(后缀为r或者d)

    没用的统计
    提到较多的几个关键词有:存档(123次)、java(75次)、jar(58次)、j2mecloud(23次)、zcb大佬(9次)
    致谢
    感谢zcb大佬,感谢长天一色大佬,感谢璟大佬,感谢武大佬,感谢91,感谢塞班论坛的大佬们,感谢CCTV
    也正是为了感谢你们,我才加班加点地写出了这篇教程,欢迎大家对本文多提建议、转发,让它帮到越来越多的人。
    lydgs
    完稿于2023.6.12

    模拟器, 文件

  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部