Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

World Block Importer operates slowly even if Ticks/Operation setting is decreased to 1 #319

Closed
AlisonHuang777 opened this issue Jan 6, 2025 · 8 comments

Comments

@AlisonHuang777
Copy link

AlisonHuang777 commented Jan 6, 2025

Issue type:

  • 🐛 Bug

Short description:

Even if Ticks/Operation setting is decreased to 1, they seem to be still operating only twice per second.

Steps to reproduce the problem:

footage.mp4

Expected behaviour:

That thing should operates 20 times per second.


Versions:

  • Playing (modpack) ATM9 0.3.5
  • Integrated Tunnels 1.8.31
  • Integrated Dynamics 1.23.12
  • Forge 47.3.11
  • Minecraft 1.20.1

Log file:

no responce

@rubensworks rubensworks added the bug label Jan 6, 2025
@rubensworks
Copy link
Member

Thanks for reporting!

@AlisonHuang777 AlisonHuang777 changed the title World-interaction related tunnels (e.g. World Block Importer) operates slowly World Block Importer operates slowly even if Ticks/Operation setting is decreased to 1 Jan 6, 2025
@Jack-McKalling
Copy link
Contributor

Seems to also happen when just the integrated suite is installed:
block importer limited tick rate
(Storage drawers only for infinite feed of items purposes, but wasn't necessary to reproduce)

Steps to reproduce the problem:

  1. Build exactly as in the screenshot (can use a filled chest instead of drawer)
  2. Set both exporter and importer to 1 tick per operation
  3. Shift-click a blank variable card into the exporter
  4. Shift-click a blank variable card into the importer

Blocks get placed as fast as the exporter is configured, but only broken once per ~10 ticks.

Versions:

  • InDy: 1.24.3
  • InTu: 1.8.32
  • CyCore: 1.19.5
  • CC: 2.9.4
  • Minecraft: 1.20.1
  • Mod loader version: Forge 47.3.22

@rubensworks
Copy link
Member

It's possible that I've hardcoded a limit for these to avoid lag. But I'll have to double-check this.

@AlisonHuang777
Copy link
Author

Adding to this:

footage.mp4

Right: [Create] clicking with Andesite Alloy to make an Andesite Casing.
Left: [Farmer's Delight] wood log stripping with Allthemodium Axe. Note that the axe has no durability (unbreakable), if using one with durability instead, the speed is dropped to ~2 ops/s.
Both Player Simulators are set to 1 tick/op. Again, the footage is recorded with ATM9 0.3.5.

@AlisonHuang777
Copy link
Author

Also, Player Simulator will throw snowballs (vanilla) 2 times per second while set to 1 tick/op.

@rubensworks
Copy link
Member

So the issue with the block importer/exporter is that things are actually working as intended.
All IT parts have an optimization that will cause them to sleep for 10 ticks (configurable in inventoryUnchangedTickTimeout in config file) if a movement failed.
Since this block importer/exporter setup will result both parts to run in separate ticks (block available - block not available), this optimization will take effect every time.
I'll have to think about it a bit, but I'm thinking of adding a part-level option that allows you to disable this optimization, and basically "force" this part to tick every time.

The player simulator problem was caused by something else.

@Jack-McKalling
Copy link
Contributor

Jack-McKalling commented Jan 8, 2025

(Alternatively) it is also possible to inform the user that this optimization is a thing that can happen, as a clarification on the ticks per operation setting. For instance with an exclamation symbol that has a hover tooltip with the explanation.

A new setting that disables the optimization should also definitely get a more verbose explanation (too), since people shouldn't disable the mechanic for "I want stuff fast" purposes, potentially sabotaging their own game experience in an uninformed way.

@rubensworks
Copy link
Member

Or another option, is to make this optimization a bit smarter, and for example look at the last 3 ticks (probably configurable), and only skip the next 10 ticks if nothing was moved in the last 3 ticks.

rubensworks added a commit that referenced this issue Jan 8, 2025
This is done by making the exporter/importer sleep optimization only
take effect if these parts were unable to move anything for at least
three ticks.

Closes #319
@github-project-automation github-project-automation bot moved this from To Do to Done in Maintenance Jan 8, 2025
rubensworks added a commit that referenced this issue Jan 8, 2025
This is done by making the exporter/importer sleep optimization only
take effect if these parts were unable to move anything for at least
three ticks.

Closes #319
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

3 participants