Jump to content

Conveyor/Liquid/Gas Meters emit more than Amount after receiving even a very brief reset signal.


blakemw
  • Branch: Live Branch Version: Linux Pending

Bug Description:

When a Conveyor/Liquid/Gas Meter receives a green signal, it will continuously reset the Amount, thus emitting more than Amount if there is something in the "Input" slot at the time of receiving the green signal.

It only behaves correctly if there is nothing in the "Input" for the duration of receiving the green signal.

 

1757274403_extrapackets.thumb.jpg.17944b50436cbb8df74cdc939222b6d8.jpg

The Valves are set to "0.1", so a reasonable player would expect that once every 4.2 seconds, a single 0.1 kg packet would be emitted, but instead sometimes a second packet is emitted despite the green signal being a very brief 0.2 seconds.

Behavior when the input is full:

If the green signal is 1 second long, the Conveyor meter always emits an extra packet.

If the green signal is 0.2 seconds long, the Conveyor meter occasionally emits an extra packet.

If the green signal is 0.1 second long, the conveyor meter very occasionally emits an extra packet and occasionally misses the green signal.

If the signal is 0.05 s long, the conveyor meter usually misses the green signal but doesn't seem to emit extra packets.

Clearly working as programmed to:

As a programmer, it's clear to me that the Meters are working exactly as programmed. However this behavior of "reset literally every moment that a green signal is being received" is super annoying to the player with difficult workarounds, and IMO largely "violates" the "promise" of the Meters which is to emit exactly Amount after receiving a green signal. While it would seem reasonable that the player keeps the green signal brief, having to force the Input to be empty simultaneously with receiving the reset signal seems too much!

Suggested Fix:

I believe the most logical behavior would be if the Meters can only be reset once per second, with any subsequent reset signal being ignored, e.g. it could remember the game tick when it last reset, and not reset for the next 5-10 ticks (I'm not sure in this context how many ticks are in a second, but in any case "one second worth of ticks"), though even not resetting on the next tick would be a huge improvement, allowing a single-tick signal to cleanly reset the Meter.

Now to be clear, I think it's important that if a Meter receives a continuous reset signal it should emit packages continuously, that is to say that if it receives a continuous green signal it should reset once per second and emit "Amount" or the input packet (if Amount is bigger) every second. That behavior should not change.


Steps to Reproduce
  1. Have a full pipe/conveyor go into a Meter.
  2. Set Amount to something small.
  3. Send a brief green signal (e.g. 0.2s) and longer red signal (e.g. 4s) to the Reset Port of the Meter, e.g. using Timer Sensor.
  4. Observe more than Amount getting emitted from time to time.

Meters being bad.sav




User Feedback


There are no comments to display.



Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
  • Create New...