捣蛋猪吧 关注:33,062贴子:1,247,392

「回忆录」垂星——新创历程录

只看楼主收藏回复



IP属地:广东1楼2020-05-02 22:30回复
    从新创的诞生到现在,陆陆续续也有近两年时间了。本文所记录的基本上是与新创的发展经历相关的东西,同时也有与捣蛋猪吧相关的历史内容,算是我的一个回忆录吧。
    一路走来,只是想记录些什么,谨作怀念。各位可以把本文当作一篇回忆录看,也可以当作一篇科普文看,或者当作一篇故事性质的随笔看也是可以的。
    星垂平野阔,月涌大江流。


    IP属地:广东2楼2020-05-02 22:30
    收起回复
      1. 捣蛋猪逆向工程的初期尝试
      这一部分的内容,是新创出现之前的故事。
      捣蛋猪的修改形式,大致分为三类。
      第一类,内存修改型。使用CE(全称CheatEngine)、八门神器等软件工具来对捣蛋猪游戏的内存数据进行修改,以实现无限部件、无限道具等功能。内存修改的优点是无需修改文件,修改难度不大;缺点是大部分情况下只能一次性修改(当然也存在着例外,比如用CE修改存档),修改范围有限,部分难以被内存寻址的数据难以修改。
      第二类,存档修改型。通过存档修改,以实现关卡解锁、无限道具、无限部件等功能。存档修改一般有两类方式,一类是在游戏运行时中进行内存修改,修改范围依然较局限;另一种是解密存档文件,直接修改解密后的XML文件,修改范围较广。存档修改的优点是修改范围较广,存档替换后只要不清除数据即可一直保留修改效果;缺点是修改困难,而且存档路径难以寻找。
      第三类,逆向工程型。通过解包修改游戏本体文件,来实现修改。逆向工程的优点是修改范围最广,只需安装应用而无需其余替换操作;缺点是修改较困难,开发难度较高。逆向工程一类是修改源素材(如通过修改TextAsset来实现大格子),一类是修改源代码(如通过修改脚本代码来实现新创部分功能)。逆向工程的相关应用实例有素材解包、大格子修改、游戏模组(如新创)等。


      IP属地:广东3楼2020-05-02 22:30
      回复
        这三类修改形式,早在2012年就已经陆续出现。2012年11月,在一篇由xingxx3166发表的帖子中,已经出现了经过修改的存档与脚本程序集。但是初期的存档修改,仅仅是依靠内存修改来实现;而脚本程序集的逆向工程,也仅仅止步于破解等方面,并未对游戏机制作进一步的修改,存在局限。2012年至2013年的修改形式依然以内存修改为主,而且CE等软件的使用方式也较简单,受大众的青睐。
        2013年之后,吧内的主流修改形式转向存档方面,而CE等内存修改形式开始衰落。存档的修改范围逐步扩大,无限部件、关卡解锁等功能开始得到实现。
        2015年3月,大格子技术在吧内出现。毕斯塞提、捣蛋猪王雀斑猪等人制作了大格子版本,同时捣蛋猪王雀斑猪翻译了外网大格子教程。捣蛋猪逆向工程的技术得到突破。
        之后,直到新创出现前,捣蛋猪的主流修改形式一直是存档+大格子。相关内容的主要提供者为杨花萝卜(即Tile_Turnip),同时AEK3000、原野与森林等人也分别制作过大格子版本。捣蛋猪存档文件经过了AES256加密,而解密捣蛋猪存档的技术究竟是什么时候出现,目前暂未确定。但可以确定的是,杨花萝卜已经可以通过逆向工程来获得存档密钥,并将存档文件解密后修改。迄今为止,我们所使用的捣蛋猪修改存档,基本上都是由杨花萝卜制作的。


        IP属地:广东4楼2020-05-02 22:31
        回复
          数年来,经过几代技术党的探索与发掘,捣蛋猪逆向工程的拼图被不断完善,捣蛋猪修改技术不断发展。在这探索过程中的学术讨论氛围,也可从过去的帖子中有所窥见。过去的捣蛋猪修改技术,虽有所局限,但实际上也已经达到了非常完善的地步。.NET程序集修改技术,从2012年开始就已经有人使用;而在Unity方面的逆向工程,对捣蛋猪资源文件的解包与修改,也已经得到实现。
          至2017年,捣蛋猪修改技术已经得到了长远而充分的发展。以杨花萝卜为主的程序技术党,已经制作并提供了捣蛋猪修改存档与大格子版本,也成功实现了对捣蛋猪的材质贴图替换,对捣蛋猪的源素材有了充分认识。


          IP属地:广东5楼2020-05-02 22:31
          回复
            参考资料(第一部分)
            [1]xingxx3166.小坏猪PC免安装破解版.小坏猪吧,2012-11-14.
            https://tieba.baidu.com/p/1984796269
            [2]乐nlytz.【额,CE?只是浮云罢了】CE修改器使用说明书.小坏猪吧,2012-12-13.
            https://tieba.baidu.com/p/2043217278
            [3]GhostLyk.GhostLyk捣蛋猪v1.5完美破解存档.捣蛋猪吧,2013-10-19.
            https://tieba.baidu.com/p/2657627069
            [4]毕斯赛提.【MOD(?)】捣蛋猪 1.5/1.6沙盒14x9修改版.捣蛋猪吧,2015-03-02.
            https://tieba.baidu.com/p/3613298280
            [5]捣蛋猪王雀斑猪.【翻译】捣蛋猪中如何编辑关卡、扩大建造格.捣蛋猪吧,2015-03-03.
            https://tieba.baidu.com/p/3614136051
            [6]杨花萝卜.【修改】关于Bad Piggies v1.7以及以上版本的修改.捣蛋猪吧,2016-02-27.
            https://tieba.baidu.com/p/4377678700
            [7]AEK3000.【非官方作品】使用需断网1.9A2+存档+存档使用教程.捣蛋猪吧,2016-03-25.
            https://tieba.baidu.com/p/4436365982
            [8]杨花萝卜.【萝卜】v2.0存档.捣蛋猪吧,2016-06-06.
            https://tieba.baidu.com/p/4593959645
            [9]杨花萝卜.【萝卜】v2.0.5原版apk+可编辑数据包apk+存档.捣蛋猪吧,2016-07-26.
            https://tieba.baidu.com/p/4693720331
            [10]原野与森林.【教程】获取Google Play的APK与对APK的初步修改.捣蛋猪吧,2017-03-05.
            https://tieba.baidu.com/p/5008106375
            [11]杨花萝卜.存档修改相关消息记录.捣蛋猪吧友群,2018-05-24.


            IP属地:广东6楼2020-05-02 22:32
            回复
              四楼好像被抽了 重发一下


              IP属地:广东7楼2020-05-02 22:35
              回复
                2. 新创的诞生与早期发展
                这一部分的内容,是新创开始的故事。
                新创的产生,一方面是因为捣蛋猪自身游戏更新的日渐乏力,另一方面是因为捣蛋猪逆向工程技术的日趋发展。
                2017年3月3日,Rovio更新了捣蛋猪2.3.0版本,核能部件体系得以完善。在此之后,原版捣蛋猪再无基础特性方面的更新(截至目前,现状依然是这样。Rovio在2.3.0之后还更新了几个版本,但基本上只是修复Bug,并无基础特性方面的改进)。2017年后期,捣蛋猪的载具技术与制造工艺已经发展到了一定程度,开始进入乏力的状态,2.x时代带来的红利逐渐减退。同时,捣蛋猪吧内进入衰退期,交流活跃度下降。自2015年开始的科技发展潮结束,诸多科技进入了缓更状态,许多吧友也开始潜水。
                对于我自身而言,大概在2016年时候,我开始对捣蛋猪逆向工程有所关注。当时作为一名刚入吧一年左右的萌新,在吧内一些技术帖的帮助下,我开始尝试解包捣蛋猪资源文件并了解安装包的文件组织结构,但仅仅是浅尝辄止,受自己的能力所限而无法做进一步探究。后来,在杨花萝卜发表的一些帖子的帮助下,我开始进行大格子修改的尝试,并制作了自己的大格子版本。但这些都仅限于捣蛋猪资源文件(如TextAsset)的修改,并未涉及源代码层面。
                2017年7月,圣光(即Esti-)进行了捣蛋猪源代码相关的探究,并反编译了Managed文件夹中的.NET程序集。受此影响,我也开始关注源代码层面的捣蛋猪逆向工程。但当时的我依然受Unity开发能力与计算机知识的缺乏所限制,只知道我们拥有了从源码层面认识并修改捣蛋猪机制的可能性,却无法真正实现一个BP MOD。


                IP属地:广东8楼2020-05-02 22:37
                回复
                  2018年4月,我在GitHub上发现了dnSpy这一工具,它不仅能够反编译.NET程序集,还支持编辑功能,这使得针对捣蛋猪脚本程序集的修改成为可能。再加上当时我已经有一些计算机基础,于是在此之后我初步制作了一个BP MOD版本,不久后将其命名为新创。这便是新创的由来。
                  新创的LOGO被设计为一个水滴形与四边形的组合体,看上去像一个次世代飞行器。它并没有什么特别寓意,只是为了表现出科技感与先进感,以显示新创的进步性。(顺便一提,新创LOGO的形状是可以被数学表示的。这些几何形状一开始在GeoGebra数学软件上绘制,后期才转到Photoshop上处理。)
                  新创的开发,经历了循序渐进的发展过程。一开始,仅仅只是修改参数;后来,新创开始实现基础特性(包括存档功能等),并逐渐代替存档的职能;再之后,新创开始着重于基础设施建设,以及部件机制的初步修改。大约在新创开始开发的一个月后,无限建造格与部件计数器实现成功。它们可以说是新创对捣蛋猪基础设施的系统性建设的开始。


                  IP属地:广东9楼2020-05-02 22:37
                  回复
                    当时我的内心,想必是有点激动的。毕竟经历了两年的探寻阶段,从一开始的迷惘,什么都不懂,到最后终于能做出点自己的东西来,这简单的快乐便油然而生。虽然,新创并没有什么划时代意义的突破——当时的新创开发工作,基本上依靠于dnSpy;而新创所使用的修改捣蛋猪程序集的方法,早在2012年就已经被实现过。但不论是对我自己而言,还是对捣蛋猪技术而言,自己毕竟还是做出了一点微小的贡献。欣慰的是,从现在来看,新创确实发挥出了它的作用。


                    IP属地:广东10楼2020-05-02 22:37
                    回复


                      IP属地:广东12楼2020-05-02 22:39
                      回复
                        3. 新创的进一步发展(一)
                        随着新创的进一步发展,新创的版本划分逐渐确立。新创O主要是基础特性方面;新创A在新创O的基础上,增加了基础设施、场景界面特性;新创B在新创A的基础上,增加了部件机制特性。(实际上,一开始最早出现的新创版本是新创A,而非新创O。新创O是后来制作的一个特性偏保守而不那么激进的版本,带有复古与怀旧的色彩。)
                        新创的特性与功能不断增加,已经成为了过去存档与大格子功能的超集。在2018年7月发布的第一个新创A正式版中,就已经有了30余个新特性。相比较于Rovio已经处于几乎年更捣蛋猪并且不再进行基础特性更新的状态,当时的新创正在快速而蓬勃地发展着。
                        2018年中期开始,在已经针对基础设施特性进行了一定的建设之后,新创开发方向转到了部件机制上。新创A机制趋向成熟,而新创B成为了新创开发的重心。新创B的部件机制,也被称为次世代机制。


                        IP属地:广东13楼2020-05-02 22:39
                        回复
                          新创的目标之一,便是促进载具技术的多元发展,提升载具制造的自由度。其中较重要的一点,便是让大规模、乃至超大规模的部件集合体建设成为可能,让重型载具能够被建造出来。
                          星舰,可以说是其中一个比较有代表性的载具类型。早期星舰的概念提出于2017年7月的所仔难题中,要求较为严苛。受限于原版机制,当时制造的星舰性能较为薄弱,即使能够达到难题要求,有较为完备的攻击体系与防御体系,驱动体系性能也依然低下。
                          随着新创次世代机制的不断发展,星舰载具逐渐开始了转型。大约从2018年后期起,新型星舰兴起。2019年3月,所罗门发表了IBC联合科技帖,并在帖子中给出了星舰的新概念设定。星舰的定义范围扩大(但基本上是在性能要求方面宽松,载具类型范围反而缩小了),在此之后几乎成为了新创B飞碟战舰的代名词。而在所仔难题时,我制造的第一艘S级星舰与崔颢制造的第二艘S级星舰,按新定义来看,都已经不再是星舰了。(悲)
                          由于某些历史原因,IBC联科已经被关闭。但是星舰载具的发展依然在继续,它带来的影响一直持续到了今天。直至今日,在各大科技帖(如BPUT联科)中,依然能发现星舰的身影。


                          IP属地:广东14楼2020-05-02 22:40
                          回复
                            在次世代机制下,包括星舰在内的各类型载具,在驱动体系、攻击体系、防御体系上均得到了性能的提升。模块化(也就是在部件与载具间新增一个层次,由部件构成模块,再由模块组成载具)设计风格兴起,并产生了并发炮、重型机炮塔、复合装甲链等大规模部件技术模块。在载具方面之外,基建等其它类型的部件集合体也开始发展。
                            相比于基础设施特性来说,部件机制更像是一把双刃剑,既有弊也有利,会造成对旧有载具体系的改变甚至颠覆,各项部件机制之间也需要进行不断的调整平衡、优化改进。目前看来,次世代机制还是利大于弊的,它促进了载具技术的发展,也确实使载具制造拥有了更多可能性。
                            在新创出现之后,捣蛋猪载具技术与制造工艺的发展基本上与新创特性相挂钩,两者之间存在着相互影响。游戏机制与特性能够促进载具技术的发展,并影响载具的制造工艺与设计风格。而载具技术又能反作用于游戏特性,为新特性研发提供需求,并促进新特性的不断完善,使得新特性进行调整与升级。新创给捣蛋猪带来了丰富的可玩性,捣蛋猪载具技术得到了进一步发展。


                            IP属地:广东15楼2020-05-02 22:40
                            回复
                              参考资料(第三部分)
                              [1]所罗门.【所仔难题】所仔载具难题.捣蛋猪吧,2017-07-14.
                              https://tieba.baidu.com/p/5222964464
                              [2]所罗门.【IBC联科】IBC 星际联合舰队展示贴.捣蛋猪吧,2019-03-14.
                              https://tieba.baidu.com/p/6067436587
                              [3]原野与森林.「BPUT」捣蛋猪联合科技,2020-03-28.
                              https://tieba.baidu.com/p/6580549273


                              IP属地:广东16楼2020-05-02 22:40
                              回复