彩虹城堡吧 关注:2,106贴子:35,203

询问一下,有没有曾经对《彩虹城堡》做过反向工程的大神

取消只看楼主收藏回复

我玩彩虹城堡也有很久了,一直都对这个系列非常喜爱。最近发现了这个贴吧,进来看,果然有不少自制彩虹城堡4的大神。
但我看大部分吧友都是在用RMVA之类的软件进行制作,虽然都做得不错,但都与原作的风格有一些差别的。我也一直有制作彩虹城堡4的念头,希望做出一个完全保留原作风格的彩4。
最近我正在对老版本的彩虹城堡进行反向工程,并在研究它的游戏引擎(如果完成了,便可以借助原版的引擎制作彩4,也可以对彩3等进行重制啥的)。但我明显感觉到这是一件工程量浩大的事情。
我不清楚吧里有没有哪些大神,以前尝试过彩虹城堡的反向工程的。如果有的话,希望能够参考一下你的成果/接继你的工作。我必将感激不尽。


1楼2018-04-20 21:31回复
    求不沉帖


    2楼2018-04-20 21:32
    收起回复
      2026-10-01 04:15:09
      广告
      不感兴趣
      开通SVIP免广告
      说明一下,我已经对彩3进行了反编译,修正了反编译得不正确的代码,现在对源码重新打包后可以正常使用了(也就是说代码无错)。我现在正在进行的是反混淆工作。


      5楼2018-04-25 10:30
      回复(3)
        额……没人了


        6楼2018-04-27 20:19
        回复
          真正工程量巨大的是反混淆工作(即将a、b、c、d…这种函数名与变量名等改正常(比如改成:getPlayerInfo、loadMap之类)),而不是修正反编译器的错误。(约350个重名错误、约30个try-catch块错误,以及一两个由于逻辑过于复杂导致无法反编译的函数,只耗费了我四个下午的时间去修正。)
          我进行反混淆工作,是为了更好地研究引擎机制,也便于我之后制作彩4。但进行反混淆,又需要对游戏机制有所把握,所以我实际上是在双线并行。
          现在工程中的代码量约有9,500行、200,000个字符,已经被我处理的不到¼,工作难度较大,所需时间很长。


          来自Android客户端9楼2018-04-29 19:33
          回复
            我之后会陆续上传一些容易下手的源代码,有兴趣的可以与我一起研究。


            来自Android客户端10楼2018-04-29 19:59
            回复
              准备开个新帖专门用于记录反向工程进度。
              附几张图:
              解密后的cfg.bin

              目前的工程组织图,可以看到我以对部分进行了反混淆(修改日期表明最近几天我没做正事)

              MIDletNirvana.java(Nirvana是工程名,至于为什么取这个名字我会在以后解释)

              在模拟器上运行效果(剩余内存是我为了调试方便加上去的……)


              12楼2018-05-11 13:52
              回复
                目前已处理了约⅓的代码,游戏能够稳定运行。


                来自Android客户端20楼2018-06-15 15:52
                回复
                  2026-10-01 04:09:09
                  广告
                  不感兴趣
                  开通SVIP免广告
                  最近几周忘了上贴吧,于是也就没有更帖子…现在补上吧。
                  大约一周前,反混淆工程已进行了约⅓了。然而,随着处理的深入,我也越渐发现:彩虹城堡本身的代码写得并不是很好(反正比RMVA生成的游戏脚本差了不少)。
                  于是乎,我便决定中途改变计划:停止反混淆工作,直接根据这段时间的经验,重写游戏引擎(本来我是计划在做彩4时再重写引擎的)。
                  这么做肯定有好有坏。好处很明显:新引擎不受原代码束缚,可以自行发挥,自行调整。坏处嘛——工程量大的事情全都压过来了,工期自然就更长了。
                  但不管工程量如何,我都会继续做下去。最后说说目前的进度吧:
                  将此游戏引擎定名为Nirvana(涅槃);
                  完成了一份列举重要类、方法、变量的工程大纲,共204行(仅用于规划工程,之后可能有调整);
                  完成了主类、程序控制类、按键管理的编写:
                  部分完成了显示控制、数据管理等模块的编写。
                  总代码量25,771字符(不含注释),约整个引擎的15%。


                  来自Android客户端29楼2018-08-01 01:35
                  收起回复
                    数据管理模块和显示控制已经完成——基础类的编写也就暂告一段落了。目前,我正在写主界面。当前代码量约42,100字符,约整个引擎的25%。


                    来自Android客户端33楼2018-08-14 07:29
                    回复
                      最近半个月在外学习,就没发什么帖子,现在马上要开学了,于是就来更新一下。
                      我最近主要在研究彩3的数据结构,游戏引擎也断断续续地在写(但毕竟时间有限,进度肯定没有之前快了)。
                      目前已完成了地图数据读取/渲染的模块,完成了物品/装备数据的读取(但还不能使用),主界面也基本完成了。
                      另外,我对数据管理等底层模块又做了一些修改与优化。
                      总代码量已超80,000字符,进度约45%。我估计将在不久后在贴吧里发布一个alpha版本,供各位研究。
                      另外,我会在今天发布一个详解彩3地图数据的帖子。


                      来自Android客户端41楼2018-09-01 12:24
                      收起回复
                        给各位看看目前工程文件夹的样子:

                        (注:res是资源,src是源代码)


                        42楼2018-09-09 12:36
                        收起回复
                          最近一段时间我基本在划水…不过还是写了几十行代码的。
                          代码大小即将达到100,000字符,到时候会详细说明一下整体情况。


                          来自Android客户端46楼2018-10-01 18:27
                          回复
                            喜闻乐见的代码大小


                            47楼2018-10-01 18:32
                            回复
                              2026-10-01 04:03:09
                              广告
                              不感兴趣
                              开通SVIP免广告
                              终于赶在国庆开学前写完了一堆东西…
                              开发连载的新帖子已经发表出来了,以后的更新都将在那里面发了。


                              来自Android客户端52楼2018-10-07 16:52
                              回复