playjava吧 关注:343贴子:996
  • 7回复贴,共1

【转载】手机游戏全攻略(申精)

只看楼主收藏回复

一楼给度娘


IP属地:江西来自Android客户端1楼2018-02-25 20:45回复
    作者: 我爱畅 时间: 2005年10月23日 10:54
    标题: [转帖]手机游戏全攻略(申精)
    1.修改META-INF
    首先 你要安装winrar 用它来打开你的jar文件
    打开之后你可以看到里面有个文件夹 叫做 “META-INF”
    这个文件夹内有个文件叫做“MANIFEST.MF”
    它就是我们要修改的对象
    而它的默认打开方式是“windows查看器”,用它是无法编辑的
    所以我们要首先把它关联到记事本或者写字板
    (xp或者2003用户建议关联记事本,另存很方便)
    那么我们先把它解压到一个文件夹
    双击它 会询问我们打开方式
    我们指定“记事本”为打开方式
    并勾上“以后都用该程序打开”的选项
    打开以后你会看到类似如下的内容
    Manifest-Version: 1.0
    MicroEdition-Configuration: CLDC-1.0
    MIDlet-Name: 王者无敌
    Created-By: 1.4.1_04 (Sun Microsystems Inc.)
    MIDlet-Vendor: digifun Newmegagame
    MIDlet-1: MT40, mt.png, MTGame
    MIDlet-Version: 1.0
    MicroEdition-Pro文件: MIDP-1.0
    Nokia-MIDlet-Category: Game
    MIDlet-Description: upload by joyes
    而你需要改的就是“MIDlet-Name: 王者无敌”这一行
    后面的“王者无敌”就是你需要改的游戏名称
    你可以按自己喜好随意的改 不过如果是中文名最后记得另存为“UTF-8”格式
    不然无法正确显示 记事本就可以另存
    另存之后再打开jar文件并切换到“META-INF”文件夹下
    把改好的“MANIFEST.MF”拖进去
    确认更新压缩文件 然后就搞定了:)
    如果你要使GPRS下载后的游戏自动放进“游戏”文件夹
    只需要在文件中加上
    “Nokia-MIDlet-Category: Game”这一行就可以了


    IP属地:江西来自Android客户端2楼2018-02-25 20:50
    回复
      2.更改游戏参数
      这里拿风云剑侠来举例子。
      所需工具:
      1)opm (oxygen phone manager)
      2)任何支持hex的文件编辑,我使用的是ultra edit.
      3)hex calculator
      流程:
      1)先用模拟器在电脑上运行游戏
      2)游戏存档
      3)去jam-apps档案夹里找rms档,用ultra edit打开。如:
      c:\nokia\devices\nokia_7210_midp_sdk_v1_0\bin\jam-apps\
      4)在游戏里,记录一些参数。如攻击力,防御力。
      5)将参数转换成hex,如:攻击力:60,转换成hex就是3c。
      6)在rms档里,寻找3c这个数值,然后将它更改成你要的数值。如:ff -> 256
      7)储存rms档,关掉模拟器再重新进入游戏,读取存档,如果这时攻击力变成了256,那你就成功了。
      8)将rms档copy到你的游戏档案夹,再把档名改成和游戏档一样的名字。如:
      abc.jar
      abc.jad
      abc.rms
      9)用opm把游戏传到手机里,载入游戏,bingo,你就变成英雄无敌了~! :)
      用这个方法,你可以改好多东西哦,攻击力,防御力,金钱,经验,等级,全都能改!:)


      IP属地:江西来自Android客户端3楼2018-02-25 20:51
      回复
        3.关于S40,S60,MIDP及其他教学贴
        先介绍一下目前的手机上的2d开发平台
        最热的当然是J2ME,J2ME经过几年的发展,现在主要有两大平台,MIDP1.0和MIDP2.0。
        然后就是Symbian啦,这个东东用C++写程序的,游戏包的后缀就是SIS的啦。一般容量画面都比较强,不过能跑的平台比较有限。
        再来就是brew,unjia,mophun等,这里接触比较少,先不介绍。
        对nokia手机来说,主要分两大系列,S40和S60。
        但是到底是Sxx和使用那个MIDP平台是没有关系的,也就是说,只要nokia愿意,可以为所有的S40配置MIDP2.0的解释器。那么MIDP2.0有什么用?大家看看那个might&magic,那个就是MIDP2.0的游戏,写的是索爱版,但是我用OT756不需要任何改动,只要下个jar包就可以玩。也就是,只要是符合MIDP2.0的手机,都可以运行。当然如果开发商针对某个机型的屏幕写死了屏幕大小,那么可以在你的手机上就显示不全或者不能全屏啦。
        一般来说,S40的机器都装的是MIDP1.0的解释器,只有6230,3220是MIDP2的,那为什么很多nokia的游戏不能在同样支持MIDP1.0的T618,T628上跑?因为nokia针对自己的机器,扩展了MIDP1.0的标准,引入了自己的类库,所以有些游戏只要在jar包里加入com类就可以在其他机器上玩了,当然,如果使用了nokia底层的东西就不行了。
        前面说到6230和3220是MIDP2.0的手机,那么有什么好处呢?那就是。。所有S40的游戏都能跑,基于MIDP2.0的S60游戏也能跑,有什么用呢?那就是索爱版的might&magic也能在6230,3220上跑。假如你把他传到3650,7650上看看呢?肯定不能跑啦,为啥强机确不能跑。。没办法啦,虽然是S60的机器,装的确是MIDP1.0的解释器啦:)
        好了,回头看看那个square。enix出的龙魂什么啊,这个是标准MIDP1.0的,只要加上com类,理论上就可以在其他机器上跑,但是ot756不能,为什么,因为这个游戏的内存需求很大,我测试的结果是必须大于512K,等于不行:)这个内存是什么?大家记住啦,java运行时需要的内存就叫heap size。。而ot756的heapsize只有512k,所以。。。heapsize大于1兆的朋友,加上com包就可以试试这个游戏啦:)比如K700,K500之类的啊。
        既然这个游戏是标准MIDP1.0,那么在6230,3220上能不能跑呢。。很可惜,不能,因为heapsize不够。。。
        好了总结一下nokia的机器就是,S40大部分是MIDP1.0的,只有6230和3220是2.0的(记住只有这两个目前),从3系列出现2.0看出,nokia开始在中低端机中推广MIDP2.0了,S60系列中呢,目前只有6600,7610是MIDP2.0的。而新推出的几款即将上市的机器中,全部都是MIDP2.0,s60机器将是MIDP2.0的天下咯。
        以上是行货市场,水货中5140,6620,6630,n-gage QD都是MIDP2.0的手机,QD还是S60机器,可以说是最超值的60机器啦:)
        索爱方面,从索爱的开发包可以看出,索爱是坚定的标准MIDP支持者,当然还有自己的mophun。单从MIDP标准来看,索爱版的java游戏除去屏幕原因外,可以在同样只支持标准midp1.0的手机上跑,比如我下的索爱版的很多小游戏在我得ot735i上都能运行的很好,而因为ot735i是支持midp2.0的,所以,might&magic也能跑啦:)顺便说一下,MIDP是向下兼容的。
        目前市场上,T618,T628是索爱方面主打的MIDP1.0手机,K700以后的全部索爱手机都是MIDP2的。包括之前的Z608也是咯:)各位可以用Z608跑一下修改后的那个黑暗龙什么魂,就是squareenix的。
        三星方面机型比较多,具体支持MIDP2.0的手机不是很清楚,但是三星手机的heapsize普遍比较小,跟松下有的一拼。但是最近三星的新机基本都是2。0的
        moto的就比较爽了,从C650到E395/398,v系列从180开始到600全部是MIDP2的。
        罗里罗嗦一堆,其实就想告诉大家,想卖玩游戏的手机,先看是不是MIDP2.0的,再看是Sxx的,一般来说,现在买S40里支持MIDP2.0的手机能玩的游戏最多,其次是S60里支持MIDP2.0的手机,然后就是索爱的强机系列..:)
        如果你买了3100之类的,那么到明年估计很多游戏你都无法运行了。。。


        IP属地:江西来自Android客户端4楼2018-02-25 20:51
        回复
          4.手机汉化
          简单的说,汉化的工作就是把游戏中所有的文本都替换成中文的。在一个手机游戏里,修改文本大概存在以下3种形式:
          图片字。 就是指所有以图片形式存在的文本,比如游戏的splash,文字背景或特效等等。替换的方法很简单,找个美工做图,然后直接把原图换掉。有很多过去的游戏都是把这些图片不经过任何处理或者只去掉扩展名放到jar里,替换这些很简单;但是为了减容,现在的很多游戏则是把n张图片打包放在一个文件里,要准确的替换这些文件就有些麻烦了。
          首先要弄清文件的储存格式。按程序的画法,可以大体分为drawImage和drawRGB两种形式。
          drawImage就是直接把图片打包,不破坏任何图片的格式,drawRGB则是以RGB格式保存图片的象素信息。前者比较容易,除了PNG以外,有的手机还支持GIF,JPG等格式,只要保证图片格式正确就可以了。后者稍微麻烦一些,因为形成的RGB象素信息的数组很大,有的还经过压缩,因此准确的替换会比较困难。
          写在程序里的字符串。 处理方法也很简单,反编译源文件之后替换相应的字符串就ok了。别问我什么是反编译,这贴里不讲编译原理。再详细的说一下,有2条路,第一就是直接修改class文件。直接把汉字写在源程序里的话,生成的class文件里的汉字字符串应该是标准的utf8编码,一个简单的做法就是自己编译一个写好中文字符串的java文件,再把生成的class文件里面对应的字节copy到原class文件里。第二就是反编译之后生成的java文件,由于扰码的原因,会有地方编译不过,一般是因为反编译后生成的文件有问题。由于扰码工具的不同,存在的问题也不一样。有的地方没有反编译成功,还有的地方使用了伪汇编指令(如goto等),有的构造函数的名称被隐藏。。等等,还有的扰码工具还会故意增加不合理代码来给反编译设置陷阱-__-|| 因此就得进行很麻烦的修改。。。当然改来改去也就是那么几种错误,就是很麻烦。扰码和反编译技术是一魔一道,没有万全之策。总之在没有彻底排除扰码的干扰的时候,不推荐用这种方法。
          写在外部数据里的字符串。 如果这个游戏的程序结构好的话,所有的字符串都应该是放在外部的某个文件里的。不知道是哪个文件的话,直接把所有文件都用文本编辑器打开查看就能发现储存字符串的文件。很多游戏都是用readUTF()这个通用函数来读取文件中的数据的。因此确保所用的新字符串都是utf-8编码,由于没有原xml文件来重新生成这个数据文件,可能需要通过替换字符串的16进制编码才能正确的替换原来的字符串。一般的说,uft-8每个字符比Unicode大一个字节,因此替换完成的字符串文件可能会比原来要大一点。如果不是utf8格式,也有可能是unicode或其他格式,但如果程序本身都没有考虑到多字节文本的读入,那么除非修改源代码否则是无法解决的。
          到此基本上大功告成,替换这些字符串所带来的jar大小和游戏运行时内存的变化可以忽略不计。最后一步,请确认要运行此程序的手机支持中文:)


          IP属地:江西来自Android客户端5楼2018-02-25 21:03
          回复
            5.S40游戏修改和移植
            有了移动就有了箱子,箱子里东西虽多虽好,可是都是以NOKIA S40的居多,那么其他手机用户就只能干巴巴的看了吗?
            当然不是,有政策必有对策,不过要玩S40的游戏,首先你必须有一部比S40的JAVA功能更强的手机以保持兼容性。这里推荐一下MOTO的MIDP2.0系列,MOTO的手机以时尚娱乐定位,价格低廉功能较强,屏幕和系统速度都不错。低端直板的可以选择C系列,翻盖的V18X、V22X;中高端的直板E、翻盖V系列都属于此列。
            当然,你还得保持自己的手机屏幕标准至少有128*128。
            STEP1 破解NOKIA游戏
            这个大家都知道了,将网上流传的COM文件包(内含class文件)拖进JAR压缩包内就可以了,不过正由于拖进了这个COM包,所以游戏体积会稍大,所以,这就是我们之前强调兼容性的问题,JAVA程序至少得支持到70K哦~
            用模拟器运行一下游戏看看,是不是可以了呢?呵呵,当然,不是所有的S40游戏都可以这样破解,但是90%没有问题。
            PS:索爱的游戏也能破解,方法雷同
            STEP2 全屏
            游戏运行是可以了,但是最下方通常会被菜单栏所挡住(MOTO、三星均有此问题,其他机型未知),少了一大块啊。
            以MOTO为例,使用FULLJAVA工具,就能进行全屏的破解(俄罗斯人的强悍工具…),还能自动生成JAD,以及上一步的class文件也能一并加入,只要这一个工具,简单的一拖,我们就能完成了2步的工作,真是方便快捷
            在用模拟器运行看看,下面的菜单栏没有了吧~这样一来,大部分的射击、动作游戏在这一步就算是破解完成了~超级easy吧
            STEP 3 修改
            可是情景类游戏(箱子上这么分……无语),例如RPG、SLG、TAB等操作比较复杂,而且多用到左右软键,这下拿到别的平台上就失效了……左右软键是箱子的那些供应商们最喜欢设置功能的键,汗,所以我不得不再佩服一下国外游戏的兼容性,多用#键确认,数字0键取消。
            这里简单讲一下按键失效的原理:
            每个手机的按键差不多,但是自己的键值(KEYCODE)却差很多。以MOTO和NOKIA的为例子作比较:
            MOTO C系列 NOKIA
            左软键 -21 -6
            右软键 -22 -7
            中键 -20 -5
            拨号键 -10 -10
            方向下 -6 -2
            数字键盘 2者相同
            这里仅举这么多,可以看到,完全不同的键值,游戏设计在在编制S40的游戏程序时,如果将键值设定为了-6、-7,那么就不能顺利的运行在其他平台上了……而且从上表可以看到,MOTO的下方向键和NOKIA的左软键的键值相同,这就是为什么许多S40游戏破解后按下就会变成确定的原因。
            一些射击和动作类的游戏没有方向上的困难是因为使用了getgameaction()的方法,这样得出来的结果在各种机型上基本都是相同的,所以保持了其兼容型,为了帮助消化,这次先不作详述了。
            所以,原理上只要修改了这些键值就可以了,有2个办法
            (1) 修改手机原设键值。可以通过修改SEEM文件,不过这样一来……手机原本的正常操作就88了……比较麻烦哎
            (2)修改游戏程序的键值。将-6改成-21,-7修改成-22等就可以使左右软键的功能恢复!而为什么MOTO C系列的游戏在V系列上能运行但按键没效果也就是此原因(V系列大多数的左右软键值是21、22)


            IP属地:江西来自Android客户端6楼2018-02-25 21:04
            回复
              6.手机游戏单机版修改
              将本需联网下载内容的手机游戏改为单机是个节约GPRS流量费以及为部分神州行用户考虑的好方法。目前游戏通过网络下载资源主要是2种:
              1、图片资源
              主要是一次性的图片资源,下载完毕后就不需要再次下载了
              2、场景文件
              类似仙剑这种游戏进行到一定的时候通过下载场景文件来将游戏内容灌输入程序中。
              无论哪种,所用的无非都是HTTPCONNECTION的方法,不过在细节上,有很多不同,这里就不多说了。
              基本原理:
              将需要通过HTTP下载的文件下载后拖入jar文件包内,并且修改其下载路径。
              例如我们把原本需要联网下载的img.dat先下载后拖入jar包根目录,然后将其原本的下载路径:http://xx.xxx.xxx.xxx/img.dat更改为文件:///img.dat就行了。
              OK,这是最基本的原理,但不是说每个游戏都是这么简单的。基本上这样做能够成功的游戏很少,《江湖侠情》(下载场景类)这样做就可以成功了。
              有的游戏则十分另类,例如《蝴蝶迷案》,他的程序在载入图片时会自动搜索根目录下是否有此文件,如果有则就自动载入,这样的游戏通过上面的办法也可以轻易搞定。
              游戏有验证:
              大多数游戏还是会在游戏中进行验证,不过关的坚决不会通过。这样做是为了防止程序出错。这个时候我们不得不分析原代码进行进一步修改。以《古玩收藏家2》为例:
              //这一段是图片下载的路径,我们可以用IE敲入以下2个地址直接下载到图片资源。程序判定在下载成功时ch=1,地址错误则ch=2,内存空间不够则ch=3


              IP属地:江西来自Android客户端7楼2018-02-26 07:54
              回复



                IP属地:江西来自Android客户端10楼2018-02-26 07:57
                回复