找回密码
 初始化身份识别芯片
查看: 4103|回复: 30

粒子引擎注入[ParticleEngineInject]

[复制链接]

战列舰长

发表于 2024-1-19 21:35:20 | 显示全部楼层 |阅读模式
本帖最后由 zender 于 2024-3-7 11:22 编辑


3月7——1 与PEI+Java11+中模组文件同步
3月2——1 现在本贴中pei模组文件与pei+java11+中的pei模组文件完全一致,同一文件可以用于095-097(java8-23)(高于java8使用时需要额外启动参数,详情见pei+java11+)
2月28——1 移除了直接混淆字段引用,在缺少某些粒子图片时不再会报错,但是会不显示对应的粒子
2月27——2 改成了java8编译
注:因为与PEI+Java11+同步更新的缘故,模组现在不会自动添加javassist.jar的引用,需要自行将其加入classpath

2月27——1 同步PEI+Java11+更新(阻止因为CombatEngine类中缺少某些函数的报错,可能会支持095)
之前是有bug的,导致注入完全无效(try catch抑制了报错而已),已与2月26 19:11更新修复
清单文件写错了,已修复,我的我的
注:关闭本mod无需还原启动脚本,只关闭mod本身就没效果了,但不还原启动脚本就不能删除premain.jar
有一说一,我就是这个的作者(指ParticleEngineInject,不是说Particle Engine),帖子读了几遍老是觉得把自己说的不是作者了,特此说明下
本mod通过premain+javassist技术将[0.96a] Particle Engine (12/29/23) (fractalsoftworks.com)提供的更高效的粒子引擎注入到游戏中,替换了CombatEngine类中所有的add*Particle方法
ParticleEngine可以做到绘制百万数量级粒子同时保持合理的fps(见[0.96a] Particle Engine (12/29/23) (fractalsoftworks.com)里Sample emitters with code\Stress test with 1 million particles)
程序会自动在starsector-core里搜索javassist.jar,不用手动添加classpath,但是手动添加agent参数是不可避免的

实际上这件事可以不使用premain完成,只是非常复杂,方式如下:
每帧读取所有现存粒子,将其转换为ParticleEngine粒子,通过调用setMaxAge将粒子寿命设置为0销毁原版粒子,然后其中还要通过反射访问private+混淆字段

mod压缩包包含源码

修复了一些已知问题,考虑到java23的实现,移除了支持java11所需的一些patch

前置:只有[0.96a] Particle Engine (12/29/23) (fractalsoftworks.com)
不过论坛里好像是没有,这个在外网论坛上在mod索引里的Libraries 部分

可以确定096能用,095不知道,不过因为没有深入混淆部分,所以很可能是兼容的

mod特殊安装说明(应该是需要java8的,反正是java8编译的)
将mod解压后打开mod文件夹,将其中的javassist.jar和ParticleEngineInject_PreMain.jar移动到starsector-core里
在启动脚本中com.fs.starfarer.StarfarerLauncher之前加上-javaagent:ParticleEngineInject_PreMain.jar
-javaagent:ParticleEngineInject_PreMain.jar的前后都需要添加空格








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

战列舰长

发表于 2024-1-19 22:04:28 | 显示全部楼层
我0.95.1来试试

星域军阀

晴岚号舰长

发表于 2024-1-20 21:22:29 | 显示全部楼层
启动脚本中com.fs.starfarer.StarfarerLauncher之前加上-javaagent:ParticleEngineInject_PreMain.jar这句,能说详细点吗,我修改vmparams后直接启动器都打不开了

点评

前后要用空格隔开 如下,紧跟在com.fs.starfarer.StarfarerLauncher前,用空格隔开 attach://41740.png  详情 回复 发表于 2024-1-20 22:45
别的国家喜欢在船上带修理队修修补补,英国人喜欢在船上装一座造船厂造半艘新的.jpg

战列舰长

 楼主| 发表于 2024-1-20 22:45:16 | 显示全部楼层
雪夜晴岚 发表于 2024-1-20 21:22
启动脚本中com.fs.starfarer.StarfarerLauncher之前加上-javaagent:ParticleEngineInject_PreMain.jar这句 ...

前后要用空格隔开
如下,紧跟在com.fs.starfarer.StarfarerLauncher前,用空格隔开


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

点评

好的感谢  详情 回复 发表于 2024-1-21 14:03

星域军阀

晴岚号舰长

发表于 2024-1-21 14:03:48 | 显示全部楼层
zender 发表于 2024-1-20 22:45
前后要用空格隔开
如下,紧跟在com.fs.starfarer.StarfarerLauncher前,用空格隔开

好的感谢

点评

之前是清单文件写错了,现在修了  详情 回复 发表于 2024-1-21 16:33
别的国家喜欢在船上带修理队修修补补,英国人喜欢在船上装一座造船厂造半艘新的.jpg

战列舰长

 楼主| 发表于 2024-1-21 16:33:25 | 显示全部楼层

之前是清单文件写错了,现在修了

点评

好的我去试试  详情 回复 发表于 2024-1-21 16:48

星域军阀

晴岚号舰长

发表于 2024-1-21 16:48:39 | 显示全部楼层
zender 发表于 2024-1-21 16:33
之前是清单文件写错了,现在修了

好的我去试试
别的国家喜欢在船上带修理队修修补补,英国人喜欢在船上装一座造船厂造半艘新的.jpg

海鲜水手

战列巨擘

论坛元老见习机师学院教员

发表于 2024-1-21 17:20:57 | 显示全部楼层
不介绍下效果吗?明明效果很劲爆
来点前后对比呗

点评

我自己测试的时候没感觉到太强的效果,你试了吗,如何  详情 回复 发表于 2024-1-21 17:48

战列舰长

 楼主| 发表于 2024-1-21 17:48:23 | 显示全部楼层
本帖最后由 zender 于 2024-1-21 18:06 编辑
lili 发表于 2024-1-21 17:20
不介绍下效果吗?明明效果很劲爆
来点前后对比呗

我自己测试的时候没感觉到太强的效果,你试了吗,如何

我猜测这是因为虽然原版的粒子实现的不好,但并不是最影响性能的部分

指游戏中大部分渲染都是完全落后时代的

点评

报错了 用了jre8-271 报错之后仅有弹窗,没有日志 [attachimg]41769[/attachimg][attachimg]41772[/attachimg][attachimg]41773[/attachimg] 哪里设置错了吗  详情 回复 发表于 2024-1-21 19:38

势力巨擘

发表于 2024-1-21 18:11:04 | 显示全部楼层
貌似提升了10左右 战役在穿越者一大堆导弹对面全航母的情况下有最低fps34?

海鲜水手

战列巨擘

论坛元老见习机师学院教员

发表于 2024-1-21 19:38:04 | 显示全部楼层
zender 发表于 2024-1-21 17:48
我自己测试的时候没感觉到太强的效果,你试了吗,如何

我猜测这是因为虽然原版的粒子实现的不好,但并不 ...

报错了 用了jre8-271
报错之后仅有弹窗,没有日志



哪里设置错了吗
java.exe -XX:CompilerThreadPriority=1 -XX:+CompilerThreadHintNoPreempt -Djava.library.path=native\\windows -Xms4096m -Xmx4096m -Xss2048k -XX:MaxPermSize=196m -classpath janino.jar;commons-compiler.jar;commons-compiler-jdk.jar;starfarer.api.jar;starfarer_obf.jar;jogg-0.0.7.jar;jorbis-0.0.15.jar;json.jar;lwjgl.jar;jinput.jar;log4j-1.2.9.jar;lwjgl_util.jar;fs.sound_obf.jar;fs.common_obf.jar;xstream-1.4.10.jar -Dcom.fs.starfarer.settings.paths.saves=..\\saves -Dcom.fs.starfarer.settings.paths.screenshots=..\\screenshots -Dcom.fs.starfarer.settings.paths.mods=..\\mods -Dcom.fs.starfarer.settings.paths.logs=.-javaagent:ParticleEngineInject_PreMain.jar com.fs.starfarer.StarfarerLauncher

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

点评

减号前面也要加空格  详情 回复 发表于 2024-1-21 20:39

战列舰长

 楼主| 发表于 2024-1-21 20:39:41 | 显示全部楼层
lili 发表于 2024-1-21 19:38
报错了 用了jre8-271
报错之后仅有弹窗,没有日志

减号前面也要加空格

点评

好,可以了 不过我测试了下,似乎启用和没启用差别不大,几乎没什么区别 不知道是不是过程有什么问题  详情 回复 发表于 2024-1-21 22:23

海鲜水手

战列巨擘

论坛元老见习机师学院教员

发表于 2024-1-21 22:23:50 | 显示全部楼层
zender 发表于 2024-1-21 20:39
减号前面也要加空格

好,可以了


不过我测试了下,似乎启用和没启用差别不大,几乎没什么区别
不知道是不是过程有什么问题










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

势力巨擘

发表于 2024-2-12 13:16:57 | 显示全部楼层
试了试951 报错如下不知道是怎么原因

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

点评

"nebula_particles2":"graphics/fx/cleaner_clouds00.png" 这是nebula_particles2,在settings的misc里加上就行,缺这个图的话从096拿过去  详情 回复 发表于 2024-2-13 16:20

战列舰长

 楼主| 发表于 2024-2-13 16:20:39 | 显示全部楼层
迎风布阵 发表于 2024-2-12 13:16
试了试951 报错如下不知道是怎么原因

"nebula_particles2":"graphics/fx/cleaner_clouds00.png"
这是nebula_particles2,在settings的misc里加上就行,缺这个图的话从096拿过去

点评

确实解决了 感谢  详情 回复 发表于 2024-2-14 08:40

势力巨擘

发表于 2024-2-14 08:40:40 | 显示全部楼层
zender 发表于 2024-2-13 16:20
"nebula_particles2":"graphics/fx/cleaner_clouds00.png"
这是nebula_particles2,在settings的misc里加 ...

确实解决了 感谢

战列舰长

发表于 2024-2-25 10:55:41 | 显示全部楼层
97JAVA23能用吗

巡洋大副

发表于 2024-2-26 22:16:06 | 显示全部楼层

按照指示,在com.fs.starfarer.StarfarerLauncher前面加上了-javaagent:ParticleEngineInject_PreMain.jar,且-javaagent:ParticleEngineInject_PreMain.jar的前后都有空格,但这样修改之后,启动器双击无反应,无法正常启动了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

点评

在导入jar的那段最后要加上;javassist.jar 也就是末尾会变成这样: xstream-1.4.10.jar;javassist.jar -javaagent:ParticleEngineInject_PreMain.jar com.fs.starfarer.StarfarerLauncher  详情 回复 发表于 2024-2-27 10:07
导出下日志看看  详情 回复 发表于 2024-2-26 22:19

战列舰长

 楼主| 发表于 2024-2-26 22:19:23 | 显示全部楼层
arlondytle 发表于 2024-2-26 22:16
按照指示,在com.fs.starfarer.StarfarerLauncher前面加上了-javaagent:ParticleEngineInject_PreMain.jar ...

导出下日志看看

战列舰长

发表于 2024-2-27 10:07:18 | 显示全部楼层
本帖最后由 wuyi 于 2024-2-27 10:11 编辑
arlondytle 发表于 2024-2-26 22:16
按照指示,在com.fs.starfarer.StarfarerLauncher前面加上了-javaagent:ParticleEngineInject_PreMain.jar ...

在导入jar的那段最后要加上;javassist.jar

大概这个样子:
xstream-1.4.10.jar;javassist.jar

点评

按照的老哥提供的2024版vmparams参数设置的,并且在最后加入楼主的指示加入的这段代码,最后就是双击程序无反应,不启动,汗流浃背了  详情 回复 发表于 2024-2-27 22:19

战列舰长

发表于 2024-2-27 10:38:03 | 显示全部楼层
效果好到爆炸,2060的笔记本,096的benchmark守住了fps40的底线,平均帧数71,太猛了
至少提升了15帧的样子

感谢楼主!

战列舰长

发表于 2024-2-27 11:50:38 | 显示全部楼层
951启动报错了,应该是有个方法951里没有,楼主看看能不能兼容一下。

Caused by: java.lang.RuntimeException: java.lang.RuntimeException: javassist.NotFoundException: addNebulaSmoothParticle(..) is not found in com.fs.starfarer.combat.CombatEngine
        at zender.patch.ParticleEngineInject_PreMain.premain(ParticleEngineInject_PreMain.java:44)

战列舰长

发表于 2024-2-27 13:18:54 | 显示全部楼层
java 8 报错了:
Exception in thread "main" java.lang.UnsupportedClassVersionError: zender/patch/ParticleEngineInject_PreMain has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

编译版本太高了

战列舰长

发表于 2024-2-27 14:20:31 | 显示全部楼层
感谢楼主,0951顺利运行

巡洋大副

发表于 2024-2-27 22:19:56 | 显示全部楼层
本帖最后由 arlondytle 于 2024-2-28 00:09 编辑
wuyi 发表于 2024-2-27 10:07
在导入jar的那段最后要加上;javassist.jar

大概这个样子:

按照的老哥提供的2024版vmparams参数设置的,并且在最后加入楼主的指示加入的这段代码,最后就是双击程序无反应、不启动
java.exe -XX:CompilerThreadPriority=1 -XX:+CompilerThreadHintNoPreempt -Xverify:none -XX:+AggressiveOpts -Djava.library.path=native\\windows -XX:+UseShenandoahGC -XX:+DisableExplicitGC -XX:CompileCommand=exclude,com.fs.starfarer.combat.ai.O0OO::Ò00000 -XX:CompileCommand=exclude,com.fs.starfarer.api.impl.campaign.terrain.AuroraRenderer::render -XX:CompileCommand=exclude,com.fs.starfarer.combat.ai.movement.maneuvers.StrafeTargetManeuverV200000 -XX:+PrintGCDateStamps -Xloggc:jvm.log -Xms8g -Xmx8g -Xss2048k -classpath janino.jar;commons-compiler.jar;commons-compiler-jdk.jar;starfarer.api.jar;starfarer_obf.jar;jogg-0.0.7.jar;jorbis-0.0.15.jar;json.jar;lwjgl.jar;jinput.jar;log4j-1.2.9.jar;lwjgl_util.jar;fs.sound_obf.jar;fs.common_obf.jar;xstream-1.4.10.jar -Dcom.fs.starfarer.settings.paths.saves=..\\saves -Dcom.fs.starfarer.settings.paths.screenshots=..\\screenshots -Dcom.fs.starfarer.settings.paths.mods=..\\mods -Dcom.fs.starfarer.settings.paths.logs=. -javaagent:ParticleEngineInject_PreMain.jar com.fs.starfarer.StarfarerLauncher



经过提醒,加上了javassist.jar,终于能够正常启动,最终的代码为:
java.exe -XX:CompilerThreadPriority=1 -XX:+CompilerThreadHintNoPreempt -Xverify:none -XX:+AggressiveOpts -Djava.library.path=native\\windows -XX:+UseShenandoahGC -XX:+DisableExplicitGC -XX:CompileCommand=exclude,com.fs.starfarer.combat.ai.O0OO::Ò00000 -XX:CompileCommand=exclude,com.fs.starfarer.api.impl.campaign.terrain.AuroraRenderer::render -XX:CompileCommand=exclude,com.fs.starfarer.combat.ai.movement.maneuvers.StrafeTargetManeuverV200000 -XX:+PrintGCDateStamps -Xloggc:jvm.log -Xms8g -Xmx8g -Xss2048k -classpath janino.jar;commons-compiler.jar;commons-compiler-jdk.jar;starfarer.api.jar;starfarer_obf.jar;jogg-0.0.7.jar;jorbis-0.0.15.jar;json.jar;lwjgl.jar;jinput.jar;log4j-1.2.9.jar;lwjgl_util.jar;fs.sound_obf.jar;fs.common_obf.jar;xstream-1.4.10.jar;javassist.jar -Dcom.fs.starfarer.settings.paths.saves=..\\saves -Dcom.fs.starfarer.settings.paths.screenshots=..\\screenshots -Dcom.fs.starfarer.settings.paths.mods=..\\mods -Dcom.fs.starfarer.settings.paths.logs=. -javaagent:ParticleEngineInject_PreMain.jar com.fs.starfarer.StarfarerLauncher

巡洋大副

发表于 2024-2-28 01:21:49 | 显示全部楼层
本帖最后由 Cclorz 于 2024-2-28 01:35 编辑

目前951本体使用了wuyi的2024vmparams和redhat的java8
MOD只勾选了四个前置和Particle Engine(外网下的951版本0.3),ParticleEngineInject
新开游戏模拟战场很快报错。我的96版本没这问题(用的Particle Engine0.71)
不知这个情况如何解决:
ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NoSuchMethodError: particleengine.Particles.burst(Lparticleengine/IEmitter;I)Z
java.lang.NoSuchMethodError: particleengine.Particles.burst(Lparticleengine/IEmitter;I)Z
        at zender.patchInfo.CombatEnginePatcherInfoByPE.addHitParticle(CombatEnginePatcherInfoByPE.java:89)
        at com.fs.starfarer.combat.CombatEngine.addHitParticle(Unknown Source)
        at com.fs.starfarer.combat.CombatEngine.addHitParticle(Unknown Source)
        at com.fs.starfarer.combat.entities.ship.A.o0OO.super(Unknown Source)
        at com.fs.starfarer.combat.entities.MovingRay.notifyDealtDamage(Unknown Source)
        at com.fs.starfarer.combat.E.A.A.o00000(Unknown Source)
        at com.fs.starfarer.combat.E.oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.super(Unknown Source)
        at com.fs.starfarer.combat.E.oOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.super(Unknown Source)
        at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
        at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
        at com.fs.starfarer.combat.CombatState.traverse(Unknown Source)
        at com.fs.state.AppDriver.begin(Unknown Source)
        at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
        at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
        at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:750)

点评

低版本pe不支持,你试试951用0.7的pe  详情 回复 发表于 2024-2-28 08:58

巡洋大副

发表于 2024-2-28 03:30:59 | 显示全部楼层
感谢大佬,把我的帧速提升了一半(狼群战术480点几十艘的小船),从十几帧到二十几帧

战列舰长

 楼主| 发表于 2024-2-28 08:58:47 | 显示全部楼层
Cclorz 发表于 2024-2-28 01:21
目前951本体使用了wuyi的2024vmparams和redhat的java8
MOD只勾选了四个前置和Particle Engine(外网下的951 ...

低版本pe不支持,你试试951用0.7的pe

点评

用0.71的可以了  详情 回复 发表于 2024-2-28 10:00

巡洋大副

发表于 2024-2-28 10:00:31 | 显示全部楼层
zender 发表于 2024-2-28 08:58
低版本pe不支持,你试试951用0.7的pe

用0.71的可以了

势力巨擘

发表于 2024-3-6 18:38:35 | 显示全部楼层
我用了之后为啥很多武器的特效变得很单薄了?

势力巨擘

发表于 2024-12-13 09:20:45 | 显示全部楼层
097会让高射炮的溅射云效果消失

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?初始化身份识别芯片

×

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2024-12-26 21:00

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio

快速回复 返回顶部 返回列表