SpongePowered / Sponge

The SpongeAPI implementation targeting vanilla Minecraft and 3rd party platforms.
MIT License
393 stars 211 forks source link

'TickDynamic' / Perfect Combat. #1713

Open ryantheleach opened 6 years ago

ryantheleach commented 6 years ago

https://github.com/The-Fireplace-Minecraft-Mods/TickDynamic/issues/17

This is a proposal to adding a mixin module to Sponge, that would enable various tweaks to split up the 'tps' of the server.

E.g. Decoupling entity ticks from player ticks, to block placements, to tile entities.

Giving each a priority, would ensure that Combat and 'physical lag' rather then 'slow machines' would remain lag free, and give the impression that even if the server is grinding to a halt tile entity wise, that PvP and Anti-Cheat systems arn't falsely affected by the low tick rates and client / server disparity between physics.

We already have things to add 'wall clock' timings to vanilla entities / tile entities which can possibly break redstone automation in exchange for faster smelting on lagging servers.

Even if it's decided not to go into Sponge itself ( :-( for SpongeVanilla users ) I suggest that we should at least co-operate with the actual TickDynamic author @The-Fireplace to provide a compatibility story, similar to the guidance given to @Barteks2x

@The-Fireplace Who has been reaching out on our forums to no avail. https://forums.spongepowered.org/t/spongeforge-plugin-development-crash-after-setting-up-environment/20457/16

gabizou commented 6 years ago

So, what TickDynamic is aiming to do is reduce the amount of entities ticking if the server is struggling. The "wall-clock" modification is mostly to mimic the duration of time passed for certain processes of tile entities. I'd be interested to know exactly what the changes would require to have it inlined in Sponge itself (rather, what the vanilla changes look like) since reviewing ASM class trasnformer code is not my cup of tea ;) @The-Fireplace, would you mind explaining what the changes look like to vanilla code? Is it all surrounding World.onUpdate modfiication of what entities need to tick versus need to tick next tick?

PurpleIsEverything commented 6 years ago

This would be really nice to see really soon with all these heavy 1.12 packs.

Rsslone commented 6 years ago

Extremely useful!

Aathoss commented 5 years ago

Hello, @gabizou Still no news about Sponge / TickDynamic compatibility? Or an integration of TickDynamic in Sponge? Because I think that many people who use SpongeForge will be delighted to have this feature me the first who needs it

Thank you in advance for your answer / work

dualspiral commented 4 years ago

Is this still relavant, or should we just close it considering the time it's been?

PurpleIsEverything commented 4 years ago

Well I don't think performance issues will ever go away. Anything added to make managing them either would be very beneficial.

So I believe it's still relevant.