【远星神人TV】EULA违了几千次,Fabric第一次。
本帖最后由 全自动电棍 于 2025-9-5 13:00 编辑来不及哀悼上一个从MC过来然后暴死的神秘时代模组了,现在抵达战场的是——Fabric Loader
你们可能不认识我,但我认识你们,这很正常。
一切都源自于我染上Mixin的那个下午,于是我随机从拥有的几个能做Mod的Java游戏里面挑选了一个受害者。
至于我选择了哪个,我想这是不言自明的。
是的,我们MC玩家去别的游戏写mod就是容易水土不服,不能用反射和ASM就跟全家被爱了一样难受。
最开始的设想是以JavaAgent形式引入Mixin,但是那太蠢了。遂即换成LunchWrapper准备写Tweak引入。
结果在查资料的时候发现还有更神人的操作——把Fabric搬过来。
所以就是这样。
顺带送一个让日志看起来很像MC的log4j1.2配置,另外本人实际上拥有游戏。log4j.appender.file.layout.ConversionPattern=[%d{HH:mm:ss}] [%t/%-5p] (%c{1}) %m%n
FAQ:
为了防止被不明真相的坛友一刀劈成血雾,特此挑几个可能存在的问题出来回答。
Q1:你是谁,你的目的是什么? 你到底在做什么?
A:高强度视奸论坛后下场发帖的某人。出于个人实践目的移植Fabric,顺带过来炫耀一下。在某种程度上充当反对派。
Q2:什么是Fabric和Mixin?
A:Fabric是主要针对Minecraft的一个轻量级模组加载器,其在设计之初就考虑到了非MC使用目的,因此有着高度抽象。而Mixin是一个库,它允许开发者以一种相对优雅的方式在运行时修改已编译的Java字节码,基本上是ASM的半自动轮椅版。顺带一提,上文官方论坛链接中的楼主Deathawaits4似乎找到了一种不需要对preMain做手脚就能引入Mixin的方法,比我聪明得多。
Q3:为什么截图中的游戏没有激活?这和破解有关系吗?
A:系自然硬件更迭所致,另外win11非常难用,不建议升级。不,没有,但从技术上看所有绕过游戏模组加载生命周期的东西都多少沾一点。
Q4:这合法(EULA)吗?
A:如下
Btw, isn't the Java upgrade modification even more a breach of license? It is a third party tool that does extensive code modification, magnitudes more than a reflection based mod could ever do.
Can't really speak to anything else, but Mikohime released that with Alex's blessing afaik, and the work put into it contributed heavily to the latest game update also including an official update to Java 17.
先抛开Mikohime这种官方钦定的皇军不谈。4.c)大概也许没有?运行时类转换只是在操作内存而已。但4.a)肯定是板上钉钉的了,总之我确信PEI的作者和你我有同样的疑问。Alex应该不会闲着没事告所有偷偷看过类文件的人。
Q5:这对我有什么用?
A:如下
如果你是玩家:没什么用,才刚写完Versionlookup,离能用还远。再说了A÷估计也不喜欢有东西动摇官方的模组生态掌控权。
如果你是开发者:同样没什么用,这游戏的mod和这游戏耦合的太严重了,我估计你切过来也是啥干不了。
如果你是对此有兴趣的开发者:请PM并留下Github用户名,我会让你访问私有仓库。
Q6:我能加MOD吗?这个项目的目的是什么?
A:目前不能,除非有人愿意在没有工具链的情况下生啃混淆写一个出来。作为JavaAgent或者其他什么形式的CoreMod方式的更好替代品,亦如当年RML代替class文件替换一样。
后言:Alex迫害底层魔改铁证如山我说实话,这个远神其实挺好的。
他本来只有一个,也算是唯一的一个缺点,就是用爪洼写的而已。
现在你们又混淆了,那就没有缺点了。
用明白yGuard的Fractal Softworks团队,也是笑了[呲牙]
我后面上手研究了下游戏自己的'MOD'系统——这CSV又是什么鬼?怎么还有Java运行时编译器?!啊呀,骇死我力😰😰😰
我将持续性诋毁Alex直到他把游戏资源系统重写为止,运行时编译java文件有点过于混乱邪恶了(尤其是游戏自身内容也依赖这个的时候)。
好活,但是不要抱太多希望)
整个社区真在本地用IDEA部署过东西的人屈指可数,至少大部分人都没卡过gradle,或者连这东西是啥都不知道,改个数据都得再三强调请不要用excel或者wps
至于游戏本身的这套东西)CSV还算是比较直观的,你可以去刨一下Rules和舰船Ai是如何实现的,还有非常沟槽的时流和相位(这俩本身是一个东西)
坚决支持诋毁Alex的一切行径 ?起猛了,什么叫fabric打过来了{:tieba_20:} 做MOD/汉化前: 你怎么能诋毁alex, 他是神, 他开创了一切
做MOD/汉化后: 坚决支持一切对alex的诋毁 {:5_121:} {:5_123:} AnyIDElse 发表于 2025-9-5 13:55
坚决支持诋毁Alex的一切行径
会长,我能不能催更一下你的那几个MOD好久没玩了{:tieba_12:} *狐狸声音*
*狐狸看不懂*
*缩到牢梦头上* {:tieba_12:}{:tieba_12:}{:tieba_12:}汉化组大吐苦水现场 既然没啥用,那 {:5_121:} {:5_121:} 坚决支持诋毁Alex的一切行径 该不会FORGE(NEOFORGE)也会来吧? 看了眼威胁战术系统的.java:坚决支持诋毁Alex的一切行径 翻过核心文件后不得不坚决支持诋毁Alex的一切行径了 坚决支持诋毁Alex的一切行径 坚决支持诋毁Alex的一切行径{:5_124:} 就alex的表现来看,他的思想已经停滞在10年前,估计再等10年他才会回味或是被动醒悟。就他开发者来说,大概也不是什么很不能接受的时间跨度,而对于玩家来说,大概早就换好几批,物是人非的荒凉与无力感正在发生。对于已经陪伴将近10年的玩家们,感到可惜。对于新的将要陪伴alex的玩家抱悲观态度,时代变得很快alex或许早已脱轨 哇袄! 本帖最后由 全自动电棍 于 2025-9-6 13:54 编辑
lili 发表于 2025-9-6 09:28
就alex的表现来看,他的思想已经停滞在10年前,估计再等10年他才会回味或是被动醒悟。就他开发者来说,大概 ...
的确如此,从2013年到2023,再到2025。这十二年来一直不断有人妄图说服A÷在他心中的那堵墙上开一扇窗、建一扇门。
而所有的这些声音一直以来都被如下三个理由拒绝:
1.反射以及其类似性质操作会损坏用户电脑/数据/存档。
2.反射以及其类似性质操作会导致游戏不稳定/崩溃,并导致大量模组引发的不确切错误被发送至他本人,而非游戏错误。
3.恶意模组。
显然这三条理由都十分的牵强,而其背后的理由十分显而易见:禁止那些超出控制的东西。
上述理由已经在我上述链接的帖子中有足够多的争论与辩护,各位可以亲自鉴阅这一持续多年的争论。
而如果您不太想费太多脑子,我接下来会通过一系列论证指出这三条理由为何缺乏必要性。
首先,1、3中认为,如果我们不禁止<某种技术>,那么便会有模组危害到用户的安全。
这是真的吗?显然不是,因为即使禁止了<某种技术>也有的是办法危害到用户的安全。
Runtime.getRuntime().exec("cmd.exe doEvil");上述getShell并未被游戏的类加载器禁止。我不知道我还能说什么。
尤其是在Fred Cohen证明了"存在一个程序,其可以判断所有的输入是否为恶意"这一命题为不可判定的情况下。
事实上,这一问题甚至可以归约到停机问题上;
因此,无论你站哪一方,争论这点都毫无意义。
其次,2、或者说——稳定性。这是三个理由中最具迷惑性的一个。
Alex构建了这样一种叙事:官方提供的、受限制的API是稳定的保证,而<某种技术>等底层操作是混乱的根源。
真的是这样的吗?要知道基于janino的java脚本在使用继承或接口的时候如果不写全限定类名就直接噶蹦一下死那了;
还是说游戏报错崩溃的时候大伙能看得懂那一串O泡果奶?我们全能的A圣似乎忘记了不是所有人脑子里都有一个IDE。
实际上这完全是把定义不稳定的权力垄断在自己的框架里。
Princess of Evil指出:You claim that reflection makes mods unstable, but it doesn't. Badly used reflection can do it, but my literal decades of experience tell that players are quick to recognize and quietly ignore mods with subpar coding, and they rarely survive more than a version or two. What it really seems to be, from my modder perspective, is a simple "my code! mine! don't touch it!" impulse, which is a silly impulse to have in a game revolving around a modding community this much.
I know about the ways of going around the block, but one big problem about Starsector's blocks is that the already difficult to understand reflection code just blows up. Concord has non-obvious bugs just cause the ways around reflection block make the code nigh unreadable.
我没有什么必要再补充这一论点了,该说的别人说过了
最后,我明确指控这一系列声称描述的后果纯粹出于恐吓目的,尤其是“会损坏用户电脑”这一说法,难道这种情况下JVM真的什么都不会做吗?多么荒谬的操作才会得到这一结果?
该不会FORGE(NEOFORGE)也会来吧?
我完全看不懂FML的生命周期,所以应该不会。
但有计划仿照WilderForge提供一个似是而非的事件系统。当然,前提是我能研究的明白远神这套api怎么跑的。
好活,但是不要抱太多希望)
整个社区真在本地用IDEA部署过东西的人屈指可数,至少大部分人都没卡过gradle,或者连这东西是啥都不知道,改个数据都得再三强调请不要用excel或者wps
至于游戏本身的这套东西)CSV还算是比较直观的,你可以去刨一下Rules和舰船Ai是如何实现的,还有非常沟槽的时流和相位(这俩本身是一个东西)
最初是准备将大部分工具链都搬过来的,已经有很多人在别的游戏这样干过了,结果GameProvider写完才发现A圣在EULA里写了个4.a)这种逆天箩筐罪😅
说实话游戏的资源系统真的骇到我了,太绿皮了。
另外感谢您的建议,我会去看看的。
翻过核心文件后不得不坚决支持诋毁Alex的一切行径了
还真是,你知道当初升级Java17时出现过的一个逆天问题是什么吗?是A符号的关键字混淆过于依赖甲骨文JDK实现中不成文的一些内部“规范”,导致高版本OpenJDK因为类文件中出现不符合规范的非法内容而崩溃。
混淆是很多问题的源头,真的。
虽然我是早期这些争论中的一员,无数次和alex私信谈论关于这些事,但我仍觉得该贴不妥。
1.我不认同在给玩家带来切实利益之前就用“A÷”这类字眼批判游戏作者。
2.Alex的做法其实很像我们事业单位的员工:公开甩锅,私下解决。他是对这些事情明面不支持,但是我有一次发现其他mod公然违反他的条例使用各种“可能危害玩家电脑”的编程手段时,他给我的解释是“他支持创意行为”——我在此之前有很多方法绕过他的限制但我选择了尊重他的条例,直到这次我才觉得我像个小丑,因为他其实只是在“All Rights Reserverd”。
现在那些很多比较进阶的mod都大量采用了MethodHandle等替代反射的方案,而Alex并没有对此说什么。汉化组因为字符排版等原因魔改游戏源码并找Alex商讨时,他也表示了支持并提供了帮助。
3.不明白fabric有什么好的,fabric和forge本来就是基于官方默认允许的情况下产生的一种mod替代方案,无非是侵入式修改和非侵入式修改的区别。ss是直接提供了大量api,事实上足以涵盖modding的大部分内容,怎么想都是ss更加开放。游戏作者也没有义务开放所有源码,凭什么要求别人当圣人?
把fabric搞进来的核心也就是往代码里进行注入,使用了mixin这种成熟框架而已。
4.不太明白什么叫耦合太严重,全程调api不才是正常的modding方式吗?我觉得该吐槽的是这游戏落后的版本管理吧?
5..csv这么传统的文件格式你也要吐槽一下?我是想象不出来还有啥更有效的,能直接打开且没有阅读障碍的表格格式了
java运行时编译器有没有可能只是给modding初学者的示范?
与其抨击alex的框架有多落后,不如抨击alex在扩张玩家群体这一行为上的懒惰。
如果人玩的多了,这类声音才会愈加明显,他才会迫于压力去改一些“祖宗之法”。
本帖最后由 希尔贝拉 于 2025-9-6 16:15 编辑
议长不死于锉刀 发表于 2025-9-6 15:41
虽然我是早期这些争论中的一员,无数次和alex私信谈论关于这些事,但我仍觉得该贴不妥。
1.我不认同在给玩 ...
有理有据,点了
不过个人感觉,至少,应该考虑让alex参考一下minecraft那种井井有条的resource和data的管理方式,或许比现在语言资源混杂在数据里一起写要好?一想到同一个模组的中文和英文要写一大堆不同的csv,然后舰船设计类型那里也要改半天就...{:tieba_12:}
相比之下这在minecraft就是单独放一个汉化资源包进去就能解决的事情,除非有神人作者在硬编码里写文本(点名用mcr制作的模组里一大堆都有这个问题,物品简介是硬编码的{:tieba_23:})
希尔贝拉 发表于 2025-9-6 16:13
有理有据,点了
不过个人感觉,至少,应该考虑让alex参考一下minecraft那种井井有条的resource和data的管 ...
这个确实,在国际化支持上alex每次都搪塞我“还有其他事更重要”{:5_132:} 本帖最后由 希尔贝拉 于 2025-9-6 16:29 编辑
议长不死于锉刀 发表于 2025-9-6 16:15
这个确实,在国际化支持上alex每次都搪塞我“还有其他事更重要”
果然最后还是回到“产能不足”笑话了吗{:tieba_23:}(FF14的吉田直树笑话怎么还在追我{:tieba_23:})
那现在看来alex的怠惰的确是我们要面对的最大敌人了 议长不死于锉刀 发表于 2025-9-6 16:41
虽然我是早期这些争论中的一员,无数次和alex私信谈论关于这些事,但我仍觉得该贴不妥。
1.我不认同在给玩 ...
表一个支持,虽然我只是一个玩家;总体还是不赞同这种一味批判原作者的思维。 本帖最后由 全自动电棍 于 2025-9-7 16:23 编辑
议长不死于锉刀 发表于 2025-9-6 15:41
虽然我是早期这些争论中的一员,无数次和alex私信谈论关于这些事,但我仍觉得该贴不妥。
1.我不认同在给玩家带来切实利益之前就用“A÷”这类字眼批判游戏作者。
这点确实欠考虑了,我都忘了这玩意在正常环境下的攻击性了。
至于切实利益,我准备重新实现PEI。
2.Alex的做法其实很像我们事业单位的员工:公开甩锅,私下解决。他是对这些事情明面不支持,但是我有一次发现其他mod公然违反他的条例使用各种“可能危害玩家电脑”的编程手段时,他给我的解释是“他支持创意行为”——我在此之前有很多方法绕过他的限制但我选择了尊重他的条例,直到这次我才觉得我像个小丑,因为他其实只是在“All Rights Reserverd”。
现在那些很多比较进阶的mod都大量采用了MethodHandle等替代反射的方案,而Alex并没有对此说什么。汉化组因为字符排版等原因魔改游戏源码并找Alex商讨时,他也表示了支持并提供了帮助。
尽管我们都知道规则必须带有模糊性,且这种模糊性是必要的。但灰色地带是不可靠的,这种状态的延续依赖于开发者与Modder间的暧昧,而这种暧昧却是令人不安的。因为真的可以直接一发版权炮干掉所有在github上的仓库,只取决于“是否应该这样做”。
我知道言下之意是“工作是工作,生活是生活”,但这种可能性令人担忧。
尤其是我必须依靠中间名映射才能取得足够的进展的情况下。
3.不明白fabric有什么好的,fabric和forge本来就是基于官方默认允许的情况下产生的一种mod替代方案,无非是侵入式修改和非侵入式修改的区别。ss是直接提供了大量api,事实上足以涵盖modding的大部分内容,怎么想都是ss更加开放。
虽然缺乏说服力和必要性,但不可否认的是远神对CoreMod这一需求不是很友好。
没有必要去替代官方API体系,主要目的在于那些“不让动的东西”,API永远有其局限性,不然PEI也不会以JavaAgent形式出现。
游戏作者也没有义务开放所有源码,凭什么要求别人当圣人?
十分抱歉,我对现代版权系统和DRM有一点小小的异议,因此可能产生了一些认知偏差。
4.不太明白什么叫耦合太严重,全程调api不才是正常的modding方式吗?我觉得该吐槽的是这游戏落后的版本管理吧?
此处特指Fabric Mod,CoreModding与正常调API写模组不同,它们之间的逻辑不一样,因为Alex并没有为MC式的Jar包揽一切做适配,况且它们之间的加载流程和生命周期也大相径庭,而这个项目基本上只是为了给CoreMod一个地方。
顺带一提我现在正在写解析到SemVar的正则表达式。
5..csv这么传统的文件格式你也要吐槽一下?我是想象不出来还有啥更有效的,能直接打开且没有阅读障碍的表格格式了
只是对此感到意外。
java运行时编译器有没有可能只是给modding初学者的示范?
我知道这一点,Alex在官方论坛有提到过他保留janino的原因。
但starsector-core\data\scripts\world\systems中的确存在一些*疑似*被实际使用的.java文件。
与其抨击alex的框架有多落后,不如抨击alex在扩张玩家群体这一行为上的懒惰。
如果人玩的多了,这类声音才会愈加明显,他才会迫于压力去改一些“祖宗之法”。
不能更赞同了
我恨后现代,叠不动甲了
Full Edit
基本上MethodHandle只能增强方法而非修改方法,这意味着你在尝试删改一个方法的行为时不得不手动实现至少一半的原始内容。这在混淆环境中更是灾难(天哪,是关键字混淆大人),这种情况下反射倒还保有些易用性。当然,这是从修改这一意图而非调用来说,况且真要修改的话都不如ASM。
尽管可以配合JEP 457引入的Class-File API在*无外部工具*的情况下来搞出类似的效果,但我想这玩意离现实还有那么点距离。况且游戏才刚刚升到Java17,而JEP 457在Java22。
但至少我们现在能用上lambda表达式了 不会编程的我表示看不懂 {:5_124:} O泡果奶
混淆是很多问题的源头,真的。
不能更赞同了,混淆带来的问题远大于其积极意义,最显而易见的就是对各种报错的甄别和排障
They will simply say: Wow. These guys had heart. I will not
懂得都懂,回想Alex对游戏生态有积极意义的行为“添堵”,只能忍俊不禁了
BTW:想到把汉化写进代码里的奇异搞笑难堪事,不由觉得语言本地化学学P社得了,虽然蠢驴干的烂屁眼事不少,但起码语言本地化易维护性这一块还是不错的 与其抨击alex的框架有多落后,不如抨击alex在扩张玩家群体这一行为上的懒惰。
如果人玩的多了,这类声音才会愈加明显,他才会迫于压力去改一些“祖宗之法”。
还是不上Steam导致的,看看隔壁缘神(Rimworld)的繁荣(无端猜测Alex的心态和病娇模拟器的作者相像) Alex这也没有触及到什么道德红线吧,上来就A÷多少有点太过了,虽然看你的头像和ID感觉可能这么表达并没有强烈的恶意,但还是快进到我再也不玩抽象了
页:
[1]