红色警戒吧 关注:288,630贴子:4,580,423

浅谈源代码丢失问题

只看楼主收藏回复

《泰伯利亚之日》和《红色警戒2》的源码是否丢失一直是命令与征服圈子的热点话题。它最可信的来源是2024年3月命令与征服合集发售时CCHyper在discord上的一句对话:

关于CCHyper(或者叫“EA_Hyper”)此人,根据另一位较为熟悉内情的开发者Nyerguds所说,“CCHyper最近设法让自己被EA录用,之后一直负责命令与征服相关工作。他是命令与征服系列的主要负责人,参与了一代重置版、重新制作了4K安装动画并在重置版发布后参与过所有后续补丁的制作。”
源码丢失可以用一个简单的示意图理解

“要完全重制它,你需要对每一个“蛋糕”部分进行详细的化学分析,准确了解烘焙过程中涉及的化学过程,以查看在烘焙改变它们之前实际存在的成分,然后弄清这些成分以前是什么真实的原材料。
“反编译一个编译后的程序确实像是通过分析烘焙的蛋糕本身来重新创造蛋糕的食谱。你失去了源代码中的所有标签、指示和有用的提示。它是一项需要对底层过程有深刻理解和大量耐心的挑战任务。
“反编译一个程序所需的复杂性和时间使它成为一项艰巨的任务,尤其是对于像视频游戏这样的大型项目。这就像是在不知道最终图像应该是什么样子的情况下拼凑一个巨大的拼图。虽然有可能重建一个功能性的版本,但它总是会缺少一些原始的清晰度和结构。”
从较为专业的角度进一步解释,

“从技术上讲,所有执行的指令都在里面,因此这些指令确实可以转换回溯到可读代码。但请记住,在这个过程中我们失去了很多东西:注释、名称、逻辑结构……都没有了。
“逆向工程一个程序就像在一个没有街道名称牌的城市里骑自行车追赶公交车,从而重建整个城市的公交时间表。它很繁琐,你永远无法完全确定你在地图上给这些街道命名的名字是否真的是它们的名字。
“结果可以是功能性的,但除非花费多年研究,否则它始终会是一个大部分未被识别的混乱。如果有源代码,你想知道‘嗯,这部分是负责让投射物飞行的吗?’你可以直接查找,因为这些东西通常通过命名或开发人员留下的注释可以明确。但由于这一切都已经消失了,现在唯一能找到它的方法是慢慢观察游戏运行,直到你偶然发现一些看起来可能与让投射物飞行有关的东西。
“为了让你了解这种项目的规模......《红色警戒1》的主可执行文件是2.5兆字节。听起来不多,对吧?现在,粗略地说,大约三分之二是实际代码,其余是内置数据(例如要加载的文件名等)。每个CPU命令的大小在1到5字节之间,我推测平均为3字节。因此,这实际上是一个大约60万条CPU指令的脚本,60万条CPU指令需要开发者全部组合成函数并考虑它们的全部用途。所以,是的......2.5兆字节突然间变得比之前看起来大得多。
“至于编译中丢失的数据量,这2.5兆字节的可执行文件是大约25兆字节源代码的结果。”
也就是说,逆向工程理论上可行,实际上困难又繁琐。
那openRA属于什么呢?“它是一个全新的蛋糕,只不过外涂层看起来像旧的。”
回到开头,源代码究竟是否丢失?Nyerguds认为,

① 老游戏往往不注重对游戏源文件的保存,并且西木被解散后,其工作室的资料被转移到EA的过程是比较混乱的;
② 旧的存档资料很难挖掘,通常意味着旧的硬盘和磁带被杂乱地摆在旧壁橱中,找到它们后仍然需要能够读取它们的旧设备;
③ “当时没有找到”不等于“再也找不到”;
④ 至少在去年合集发布时,没有在存档中发现源代码。但是从来没有官方人员“确认”(confirm)源代码已经丢失;
⑤ 此次开源的一代命令与征服代码和重置版代码有很大的区别,恰恰说明他们找到了一些新东西。
CCHyper的回复似乎也证明了这一点,即否认“源码丢失”这一论点。


CCHyper较少发言,除此之外再未提及任何有关命令与征服二代及其源码的内容。
从他的自述来看,他正忙于将军ZH事项以及发现并研究储存的存档材料;Nyerguds则认为他或许签署了某种保密协议。


IP属地:陕西1楼2025-03-02 17:15回复
    该不会最后真要逆向自己吧
    那种事情不要啊


    IP属地:山东来自Android客户端3楼2025-03-02 21:59
    收起回复
      就需要这种辟谣贴,不然全网都是源码丢失的言论了


      IP属地:山西来自Android客户端4楼2025-03-02 22:08
      收起回复
        ares引擎开发了这么多年,不知道有没有涉及到多少源代码的反编译和逆向工程


        IP属地:江西来自Android客户端5楼2025-03-02 23:35
        收起回复
          那一直讨论的重新写一套源代码的可行性呢?就类似高仿同皮


          IP属地:黑龙江来自iPhone客户端6楼2025-03-03 06:35
          收起回复
            完全重新写我觉得也没有问题,这么老的游戏如果我的i9级神U E5都不能造一万个,我都把这个游戏扔进河里去了


            IP属地:北京来自Android客户端7楼2025-03-03 08:47
            收起回复
              将军ZH事项是什么


              IP属地:内蒙古来自Android客户端8楼2025-03-03 09:52
              收起回复
                红警2完全可以重新匹配一下兼容性,支持现在的硬件和系统,其他的都不用改。


                IP属地:山东来自Android客户端9楼2025-03-03 10:52
                收起回复
                  他们确实和ea签了保密协议


                  IP属地:湖南来自Android客户端10楼2025-03-03 14:32
                  回复
                    我可以很负责任地说:openra不适合用来做ts和ra2


                    IP属地:上海来自Android客户端11楼2025-03-03 15:18
                    收起回复
                      我想问一下,如果没有源代码的话,像心灵终结这种mod怎么做出来的?照葫芦画瓢吗?


                      IP属地:安徽来自Android客户端12楼2025-03-03 21:03
                      收起回复
                        这么说的话,如果源代码丢失了,那要重制的话,直接做一个新的不行吗?做一个画质更高的,看起来像红警2但是代码却是全新的游戏


                        IP属地:广西来自Android客户端13楼2025-03-03 23:40
                        收起回复


                          IP属地:河南来自Android客户端14楼2025-03-04 03:30
                          回复
                            就以我的经验来说,4M代码编译出来1200K,要达到gamemd的体量,估计100M左右的代码


                            IP属地:河北来自iPhone客户端15楼2025-03-04 07:23
                            回复
                              主要这次将军和变节者都放出来了,ra2还没找到让人没啥信心了


                              IP属地:上海来自iPhone客户端16楼2025-03-04 08:20
                              回复