粒子引擎注入[ParticleEngineInject]
本帖最后由 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技术将 Particle Engine (12/29/23) (fractalsoftworks.com)提供的更高效的粒子引擎注入到游戏中,替换了CombatEngine类中所有的add*Particle方法
ParticleEngine可以做到绘制百万数量级粒子同时保持合理的fps(见 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
前置:只有 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的前后都需要添加空格
{:tieba_12:}我0.95.1来试试 启动脚本中com.fs.starfarer.StarfarerLauncher之前加上-javaagent:ParticleEngineInject_PreMain.jar这句,能说详细点吗,我修改vmparams后直接启动器都打不开了 雪夜晴岚 发表于 2024-1-20 21:22
启动脚本中com.fs.starfarer.StarfarerLauncher之前加上-javaagent:ParticleEngineInject_PreMain.jar这句 ...
前后要用空格隔开
如下,紧跟在com.fs.starfarer.StarfarerLauncher前,用空格隔开
zender 发表于 2024-1-20 22:45
前后要用空格隔开
如下,紧跟在com.fs.starfarer.StarfarerLauncher前,用空格隔开
好的感谢 雪夜晴岚 发表于 2024-1-21 14:03
好的感谢
之前是清单文件写错了,现在修了 zender 发表于 2024-1-21 16:33
之前是清单文件写错了,现在修了
好的我去试试 不介绍下效果吗?明明效果很劲爆
来点前后对比呗 本帖最后由 zender 于 2024-1-21 18:06 编辑
lili 发表于 2024-1-21 17:20
不介绍下效果吗?明明效果很劲爆
来点前后对比呗
我自己测试的时候没感觉到太强的效果,你试了吗,如何
我猜测这是因为虽然原版的粒子实现的不好,但并不是最影响性能的部分
指游戏中大部分渲染都是完全落后时代的
貌似提升了10左右 战役在穿越者一大堆导弹对面全航母的情况下有最低fps34? 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
lili 发表于 2024-1-21 19:38
报错了 用了jre8-271
报错之后仅有弹窗,没有日志
减号前面也要加空格 zender 发表于 2024-1-21 20:39
减号前面也要加空格
好,可以了
不过我测试了下,似乎启用和没启用差别不大,几乎没什么区别
不知道是不是过程有什么问题
试了试951 报错如下不知道是怎么原因 迎风布阵 发表于 2024-2-12 13:16
试了试951 报错如下不知道是怎么原因
"nebula_particles2":"graphics/fx/cleaner_clouds00.png"
这是nebula_particles2,在settings的misc里加上就行,缺这个图的话从096拿过去 zender 发表于 2024-2-13 16:20
"nebula_particles2":"graphics/fx/cleaner_clouds00.png"
这是nebula_particles2,在settings的misc里加 ...
确实解决了 感谢 97JAVA23能用吗
按照指示,在com.fs.starfarer.StarfarerLauncher前面加上了-javaagent:ParticleEngineInject_PreMain.jar,且-javaagent:ParticleEngineInject_PreMain.jar的前后都有空格,但这样修改之后,启动器双击无反应,无法正常启动了{:tieba_11:} arlondytle 发表于 2024-2-26 22:16
按照指示,在com.fs.starfarer.StarfarerLauncher前面加上了-javaagent:ParticleEngineInject_PreMain.jar ...
导出下日志看看 本帖最后由 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 效果好到爆炸,2060的笔记本,096的benchmark守住了fps40的底线,平均帧数71,太猛了{:tieba_35:}
至少提升了15帧的样子
感谢楼主! 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) 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
编译版本太高了 感谢楼主,0951顺利运行 本帖最后由 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.StrafeTargetManeuverV2::o00000 -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.StrafeTargetManeuverV2::o00000 -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
本帖最后由 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)
感谢大佬,把我的帧速提升了一半(狼群战术480点几十艘的小船),从十几帧到二十几帧{:tieba_01:}{:tieba_43:}{:tieba_43:} Cclorz 发表于 2024-2-28 01:21
目前951本体使用了wuyi的2024vmparams和redhat的java8
MOD只勾选了四个前置和Particle Engine(外网下的951 ...
低版本pe不支持,你试试951用0.7的pe zender 发表于 2024-2-28 08:58
低版本pe不支持,你试试951用0.7的pe
用0.71的可以了 我用了之后为啥很多武器的特效变得很单薄了?
页:
[1]