Showcase [Showcase] The fastest possible heart generator (statue farm)

I have created the fasted possible HPR (Heart production rate) by statues in Terraria based on math and timing circuits.
ODqMtFt.gif


Statue Conditions:
  • 5 max statues per line (Because of rule #4)
  • Has a cool-down period of ten seconds
  • 10 hearts on the map at once
  • Statues can only summon 3 hearts if within 23 blocks near another statue
Let me explain some cryptic information about the heart statue. As displayed above, heart statues will not summon another heart if another nearby statue spawned heart is within 23 blocks of the main statue. Furthermore, when a statue is summons a heart, the statue will be inactive for 10 seconds.
1gvz2m8.png


Extra Information:
  • Hearts can jump 5 blocks above the base of the statue
  • Hearts fall at a rate of 20.0 blocks per second. (0.50 S for 10 B)
Delivery Method:

The most effective way to get the hearts to the player will be via by falling. Being that hearts travel very fast when falling, this can make it super effective to deliver them to the player. Keep in mind the most important limiting factor; Heart-Limit. Being that you can only have 10 hearts on the map at once, it's vital the player uses them as fast as possible.

You may ask, why not just cluster 10 statues together with a heart-reach potion? Simple, Rule #4 of statues - Statues can only summon 3 hearts if within 23 blocks near another statue.

The build:

After spending hours of calculating fall distances, speeds, cool-downs, distance regulations, and heart limitations, I bring you the mathematically perfect heart machine.
15ljiIN.png


Operations Checklist:
  • Respect the rule #4 - Yes
As shown above, I'm stacking 4 sets of 2 heart statues. This will allow for a max of 8 hearts to be on the map at once. By the time it the top statue fires, you will already be picking up hearts from the bottom statues. Being that the bottom right restarts the line, you get those before the right side fires keeping the cycle in perfect harmony.
  • Respect the rule #3 - Yes
Being that the hearts are falling from bottom to top in a nonparallel pattern, they are not invading each others 23 block space as they fall out of range before the 1 second timer fires the next row. This is where we are also respecting the following rules.
  • Respect the rule #1 - Yes
  • Respect the rule #2 - Yes
Being that we are using a shiftier, each statue is on its own line and is not connected to other statues. This regulates any delays in the the statue cool-down plus it allows for perfect control and reset. In my example I'm using a player sensor to start & stop/reset the machine. You can switch that out for a switch if you care so yourself. You might have counted only 8 seconds between statue fires, and that's correct, the final two seconds allows for all hearts to reach the lower/middle for reset loop. This is needed as part of rule #2 for the 10 second cool-down.

If you where wondering how to have the statues "float" then check out this thread (comment) by Jofairden as he/she goes into full detail with a visual. Please know there are probably better guides on the internet. I just did a quick search on this site.

Basic Information:
  • Does this farm require heart-reach potions? No.
  • Can expand it? No. This uses the max hearts per map limit.
  • Does it work in events? Yes. Just note there can only be 10 hearts on map.
  • Does it work in expert? Yes.
Farm was built by me. Must credit some person that helped with math but who was forgotten. Props to that dude for helping.
 

Attachments

  • Terraria Statue Farm.wld
    59.9 KB · Views: 1,567
Last edited:
Pretty nice! :happy: So with this you theoretically get around 1.6 hearts per second? (16 per 10 seconds)

Wouldn't it be faster though to deliver the heart's with a hoik track?
Let's say you had one long track with a line of floating statues above it. You'd activate statues in groups, where each statue is 23 tiles from the next. You could activate 10 statues at once, to fill the per world heart cap. The farthest statue would be around 23 * 10 * 2 = 460 tiles away. You can still hoik that away in around 4 seconds. (At 120 tiles per second.) So you'd end up with a cap of about 2.5 hears per second, assuming you have enough statues to keep up.

Also, little reminder from your friendly neighborhood programmer, async is not the same as nonparallel. ;)
 
Pretty nice! :happy: So with this you theoretically get around 1.6 hearts per second? (16 per 10 seconds)

Wouldn't it be faster though to deliver the heart's with a hoik track?
Let's say you had one long track with a line of floating statues above it. You'd activate statues in groups, where each statue is 23 tiles from the next. You could activate 10 statues at once, to fill the per world heart cap. The farthest statue would be around 23 * 10 * 2 = 460 tiles away. You can still hoik that away in around 4 seconds. (At 120 tiles per second.) So you'd end up with a cap of about 2.5 hears per second, assuming you have enough statues to keep up.

Also, little reminder from your friendly neighborhood programmer, async is not the same as nonparallel. ;)

Yes in theory that would be the fastest way of getting hearts. I have done much research with the idea of hooking the hearts. However I found two major flaws with it.
  1. Hoiking hearts is not a simple task. They will not follow a hoik track unless continuously actuated. They also only move left -> right. Not right -> left. This already cuts the possible delivery time in half. Then the capturing of the hearts can be done by floating statues as you said and I have tried this concept already.
    OYYL0gd.gif
  2. Lets say we add these modulus on a "long track" sure. Problem is every station will hold the previous heart groups (in the collector chamber) until they eventually back up and reach the map limit. Hoiked hearts do not move as fast as you would expect being that they have to be actuated to move.
From what I have found, falling is the the best method as they have to travel the least amount of distance to reach the player. All that is needed is the correct spacing, fall time calculation, and statue limit.
 
Yes in theory that would be the fastest way of getting hearts. I have done much research with the idea of hooking the hearts. However I found two major flaws with it.
  1. Hoiking hearts is not a simple task. They will not follow a hoik track unless continuously actuated. They also only move left -> right. Not right -> left. This already cuts the possible delivery time in half. Then the capturing of the hearts can be done by floating statues as you said and I have tried this concept already.
    OYYL0gd.gif
  2. Lets say we add these modulus on a "long track" sure. Problem is every station will hold the previous heart groups (in the collector chamber) until they eventually back up and reach the map limit. Hoiked hearts do not move as fast as you would expect being that they have to be actuated to move.
From what I have found, falling is the the best method as they have to travel the least amount of distance to reach the player. All that is needed is the correct spacing, fall time calculation, and statue limit.
Ok, granted, that 120 tiles/second was pretty generous... I've measured it, and it's actually around 25 tiles/second with a 60 act/second dummy engine.

But! When going upwards, hearts don't have as many issues. They will neatly go up one tile per activation, so they can move at 60 tiles/second. Also, I messed up the math back there, so it turns out this speed is still enough for a theoretical 2.5 hearts per second.
I've only managed to do 2 per second so far. (10 hearts on a 5 second timer.) Getting the hearts to mount properly is kinda tricky, and it needs a slightly more than 1 second delay.
0eh06P5.png
l5Q1dcL.png
zuwfkWu.gif
(The thing covered by those items on the engine is a 1 second timer.)
I know, it's hideous. It's a work in progress.
It might be possible to adjust the timing to get slightly more hearts, but I reckon it'll still be around 2 per second.
 
Last edited:
Ok, granted, that 120 tiles/second was pretty generous... I've measured it, and it's actually around 25 tiles/second with a 60 act/second dummy engine.

But! When going upwards, hearts don't have as many issues. They will neatly go up one tile per activation, so they can move at 60 tiles/second. Also, I messed up the math back there, so it turns out this speed is still enough for a theoretical 2.5 hearts per second.
I've only managed to do 2 per second so far. (10 hearts on a 5 second timer.) Getting the hearts to mount properly is kinda tricky, and it needs a slightly more than 1 second delay.
0eh06P5.png
l5Q1dcL.png
zuwfkWu.gif
(The thing covered by those items on the engine is a 1 second timer.)
I know, it's hideous. It's a work in progress.
It might be possible to adjust the timing to get slightly more hearts, but I reckon it'll still be around 2 per second.

This is good step in a positive direction. I have been thinking. Would it not be possible to save even more time by just making two stacks of 5? Lets say the left side is actuating up the 5 hearts, the right side is pre-summoning them for the "Que". The hearts take a long time to fly up, float down, get shifted right, then re-actuated. By having a Que system you can have a continuous flow of hearts. You will just have to make sure column A & B are far enough apart to work in a co-side environment.

Being that they are spaced you might have to start getting into heart-reach potions but it will be worth it as you will achieve a "god-mode" like amount of healing. Can you drop a world file, I can try to also see what I can do. I assume that both sides will still be three-six statues stacked to combat the cooldown, so ABC ABC will have to be used but on two linked timer circuits more then likely.
 
i remember building something similar to this, some new ideas are coming to me

1.6-2.5 hearts per second? not bad, if you put a roof over the top most heart generator you can get a slightly more consistent drop from those hearts, it will keep the hearts from spawning too high

and i should say that you can work around rule 4 if you pick up the hearts the instant they spawn;)
 
This is good step in a positive direction. I have been thinking. Would it not be possible to save even more time by just making two stacks of 5? Lets say the left side is actuating up the 5 hearts, the right side is pre-summoning them for the "Que". The hearts take a long time to fly up, float down, get shifted right, then re-actuated. By having a Que system you can have a continuous flow of hearts. You will just have to make sure column A & B are far enough apart to work in a co-side environment.
Yes, that is a great idea, I was thinking about that too.
I have made a shorter stack with 5 levels, and 3x2 statues per lever. For now I just have it set up to fire both sides at the same time. I tried to get the preloading thing to work with that, but once the heart is on the ground, it messes up spacing between the statues, at least with my current loading mechanism. I am not sure if the slight (around 1 second) increase in speed would make up for the larger required spacing and the halved throughput (since now you're only getting 5 hearts every time.) at least with this design.
If the two stack were separated though, it might work better.
Being that they are spaced you might have to start getting into heart-reach potions but it will be worth it as you will achieve a "god-mode" like amount of healing.
Yeah, but I'd kinda like to keep this working without heart reach.
Can you drop a world file, I can try to also see what I can do.
Sure thing. I have 3 machines there at the moment. A copy of the original mess I posted above, a refined version, that could be about half a second faster with a more precise clock, and the double stack. That last one currently runs on a 4 second timer (so 2.5 hearts / second) but I think it could work with 3 seconds, it just doesn't have enough statues to cycle through right now. (and I ran out of room to wire up more... :p)
I assume that both sides will still be three-six statues stacked to combat the cooldown, so ABC ABC will have to be used but on two linked timer circuits more then likely.
Yup. Eventually it might also get to the point where the limiting factor will be how many statues we can squeeze into one section.
and i should say that you can work around rule 4 if you pick up the hearts the instant they spawn;)
So, I'm guessing you mean something like this: Health Auto-Replenishment Machine (designed for more challenging boss battles) Yeah, with enough statues that thing is probably going to be a lot faster than these. But I think it would still be fun to see how fast we can go with a stationary player.
 

Attachments

  • Heartsworld.wld
    97 KB · Views: 273
Yes, that is a great idea, I was thinking about that too.
I have made a shorter stack with 5 levels, and 3x2 statues per lever. For now I just have it set up to fire both sides at the same time. I tried to get the preloading thing to work with that, but once the heart is on the ground, it messes up spacing between the statues, at least with my current loading mechanism. I am not sure if the slight (around 1 second) increase in speed would make up for the larger required spacing and the halved throughput (since now you're only getting 5 hearts every time.) at least with this design.
If the two stack were separated though, it might work better.

Yeah, but I'd kinda like to keep this working without heart reach.

Sure thing. I have 3 machines there at the moment. A copy of the original mess I posted above, a refined version, that could be about half a second faster with a more precise clock, and the double stack. That last one currently runs on a 4 second timer (so 2.5 hearts / second) but I think it could work with 3 seconds, it just doesn't have enough statues to cycle through right now. (and I ran out of room to wire up more... :p)

Yup. Eventually it might also get to the point where the limiting factor will be how many statues we can squeeze into one section.

So, I'm guessing you mean something like this: Health Auto-Replenishment Machine (designed for more challenging boss battles) Yeah, with enough statues that thing is probably going to be a lot faster than these. But I think it would still be fun to see how fast we can go with a stationary player.

So I have managed to get a "Que" System wired up however there is one huge issue with the hoik system. Some of the hearts always like to get stuck on deployment up the hoik from the statue chamber. This means that if only 4/5 hearts get moved up, then the entire machine breaks. This goes for your old design too, they will sometimes get stuck. This ruins the efficiency of a possible device as this.

YQ39Kvi.png


I'm not sure what's causing this but I assume its the time in which the state of the hoik pushers push the hearts into the elevator. I'm guessing the elevators actuation state has to match (or mismatch) the actuation state of the pusher. If this is the case then the entire spacing of the device has to be consistent (11 gap) and the pushers have to have pin-point percussion which i'm not sure is even possible (Its really not) at the speed-rate differences.

That being said you might be able to stop/start the elevator at the correct actuation states but will have to make a counter for the amount of times to actuate the elevator to get all the hearts to the top.
 
Last edited:
So I have managed to get a "Que" System wired up however there is one huge issue with the hoik system. Some of the hearts always like to get stuck on deployment up the hoik from the statue chamber. This means that if only 4/5 hearts get moved up, then the entire machine breaks. This goes for your old design too, they will sometimes get stuck. This ruins the efficiency of a possible device as this.
It's most likely just due to timing or just heart statue randomness. If the heart isn't at the right position when the pusher activates, it doesn't go far enough and gets stuck on that ceiling tile, as it's trying to ride the elevator up.
If this is the case then the entire spacing of the device has to be consistent (11 gap) and the pushers have to have pin-point percussion which i'm not sure is even possible (Its really not) at the speed-rate differences.

That being said you might be able to stop/start the elevator at the correct actuation states but will have to make a counter for the amount of times to actuate the elevator to get all the hearts to the top.
I don't really think this is necessary, but it shouldn't be too hard to do. The actual push happens in one frame, so you could just send an extra signal to the elevator with a reset gate when it needs to be in a certain state. Just like with the old one.

But with a queue system this shouldn't be an issue anyway, the hearts have plenty of time to settle. So if it's still happening it might not be the timing... There is a slightly more robust loading mechanism in that world at the bottom, with an extra gap between the statue and the pusher. That might help. It takes slightly longer to load, but again, that shouldn't matter with the queue.

Also, could I have a world download, please? :)
 
It's most likely just due to timing or just heart statue randomness. If the heart isn't at the right position when the pusher activates, it doesn't go far enough and gets stuck on that ceiling tile, as it's trying to ride the elevator up.

I don't really think this is necessary, but it shouldn't be too hard to do. The actual push happens in one frame, so you could just send an extra signal to the elevator with a reset gate when it needs to be in a certain state. Just like with the old one.

But with a queue system this shouldn't be an issue anyway, the hearts have plenty of time to settle. So if it's still happening it might not be the timing... There is a slightly more robust loading mechanism in that world at the bottom, with an extra gap between the statue and the pusher. That might help. It takes slightly longer to load, but again, that shouldn't matter with the queue.

Also, could I have a world download, please? :)

So after spending allot of time rewiring the entire build, I made some progress. I also introduced Timed release valves for injecting the hearts into the elevators. This pretty much fixed the jamming issue we had. I really wish this game had .5 second, 1.5 second timers ;( Anyways, the wiring is an some what awful mess. But please feel free to take a look and try to improve the builds efficiency, performance, exc.

8WRbKXU.gif


Note: You might want to mess around with the timing and see if you can make custom timers (dart traps exc) and see if you can get better times. Esp for the heart injecter. I think that should be .5 not 1.0. Also it is a leetle too far apart to collect without heartreach :eek: Not sure how to fix that however without slowing it down.
 

Attachments

  • Heartsworld.wld
    56.4 KB · Views: 228
Last edited:
As an update, I managed to fix even more bugs. Including the hearts getting stuck in walls. I have separated the chambers to allow for optimal dual spawning and have also added custom timers for the injection. I did try a 2 second timer for heart spawning but it was slow. 1 second timer is right where it needs to be for heart summoning.
rcAEGbA.gif

Like I said before wiring is a mess and some of the mechanics are not yet final. Feel free to take a look at both v1 & v2.
 

Attachments

  • Heartsworld.wld
    69.6 KB · Views: 250
Also it is a leetle too far apart to collect without heartreach :eek: Not sure how to fix that however without slowing it down.
I am not really sure about the heart reach. It would be nice to keep this working without it, since that was one of the points of your original machine... On the other hand, I am also pretty sure the heart reach grab is actually slower than the hoik, but of course at least it can go in any direction.
On the first machine the reach could be solved with a very tiny sideways hoik. I don't think it would slow things down too much.
1 second timer is right where it needs to be for heart summoning.
It's kinda difficult to tell with the heart reach, but I'm pretty sure 1 second is way too fast. You are sucking in hearts from the bottom part of the machine on the left and right sides at the same time.
I think V1 might be running a little bit fast as well.

I made a quick little mod to measure how fast each of these machines are running, since it's a bit difficult to tell just by looking at them.
This was V1:
upload_2019-5-23_16-0-33.png

And this is V2:
upload_2019-5-23_16-0-49.png


So both are around 2.5 to 3 hearts per second, but the first one is actually faster by about 0.3
 
As an update, I managed to fix even more bugs. Including the hearts getting stuck in walls. I have separated the chambers to allow for optimal dual spawning and have also added custom timers for the injection. I did try a 2 second timer for heart spawning but it was slow. 1 second timer is right where it needs to be for heart summoning.
rcAEGbA.gif

Like I said before wiring is a mess and some of the mechanics are not yet final. Feel free to take a look at both v1 & v2.
If you want to use heartreach potions, you can have a look at this, from 0:30
https://www.bilibili.com/video/av6393957
 
I am not really sure about the heart reach. It would be nice to keep this working without it, since that was one of the points of your original machine... On the other hand, I am also pretty sure the heart reach grab is actually slower than the hoik, but of course at least it can go in any direction.
On the first machine the reach could be solved with a very tiny sideways hoik. I don't think it would slow things down too much.

It's kinda difficult to tell with the heart reach, but I'm pretty sure 1 second is way too fast. You are sucking in hearts from the bottom part of the machine on the left and right sides at the same time.
I think V1 might be running a little bit fast as well.

I made a quick little mod to measure how fast each of these machines are running, since it's a bit difficult to tell just by looking at them.
This was V1:
View attachment 221935
And this is V2:
View attachment 221936

So both are around 2.5 to 3 hearts per second, but the first one is actually faster by about 0.3

Yes however, if we run it at lets say 2 seconds, then we will not need the 5 statues (1 side fires per seconds). Since I'm not wanting to use heartreach as posted by @putianyi888 there are much better ways to collect hearts with such methods and I'm aware. My v2 was mainly to just demonstrate the solutions and fixes I made the the device its self. We can push them back together. Might have to use a right pushing hoik to get them closer to the player.

Clock 2 Statues (Stacked):
  • 3 Seconds - 2 Statues (2 Second Time Loss)
  • 2 Seconds - 3 Statues (one will be extra, No loss)
  • 1 Seconds - 5 Statues (x Seconds Gained, Not good)
 
Last edited:
Yeah, so that's like 6 hearts per second, so still a lot faster than what would be ever possible with these.... :p

Here check this version out and tell me what you think. I think I nailed it. I made two versions. The 2 Second & 3 Second Clock Speeds.

2 Second Base Clock:
dkkHUGl.gif


3 Second Base Clock:
qUoz55A.gif


I added both the the world DL. (Left is 3s, Right is 2s)
 

Attachments

  • Heartsworld.wld
    64.7 KB · Views: 227
Here check this version out and tell me what you think. I think I nailed it. I made two versions. The 2 Second & 3 Second Clock Speeds.

2 Second Base Clock:
dkkHUGl.gif


3 Second Base Clock:
qUoz55A.gif


I added both the the world DL. (Left is 3s, Right is 2s)
So, I went back and measured some of the older designs with the mod, here's what I got:

messy first draft: 1.91 (Should have been closer to 2, got a heart stuck in the wall half way through)
cleaned up: 1.99 (As expected)
2x short tower with 10 hearts at a time: 2.42 (A bit off from 2.5 due to pusher issues)

With the new design I actually had some pretty strange problems, where sometimes the pushers just refused to work properly. Machine restart didn't fix it reliably, had to reload world/game once. It might be something to do with lag. These size 1 item top hoiks are really fiddly...

Also, those conveyor spikes on the left of the statues are supposed to be there to fix the heart-stuck-in-wall thing, right? Shouldn't there be one on the top statues as well?

Alright, so I measured the new design as well, and got 2.18... And on a second run 2.25. But I did notice that it was running slightly too fast, so I bodged in a slower timer and tweaked it to be just right.

upload_2019-5-23_22-47-2.png


And after that I measure the heart rate at... 2.19.
I don't think it's really possible to get more than that with this setup. It seem like the 5 heart thing is just not going to work out.
For what it's worth though, I do think your new design is really neat, with the dual loading and all that. :)

EDIT: Though wait, then again I did get around 2.9 from the way overclocked "V1" from the previous post. Even with a 3 teeth sideways hoik instead of the heart reach... So the whole precise timing thing may not even be as important? :confused:
 
Last edited:
So, I went back and measured some of the older designs with the mod, here's what I got:

messy first draft: 1.91 (Should have been closer to 2, got a heart stuck in the wall half way through)
cleaned up: 1.99 (As expected)
2x short tower with 10 hearts at a time: 2.42 (A bit off from 2.5 due to pusher issues)

With the new design I actually had some pretty strange problems, where sometimes the pushers just refused to work properly. Machine restart didn't fix it reliably, had to reload world/game once. It might be something to do with lag. These size 1 item top hoiks are really fiddly...

Also, those conveyor spikes on the left of the statues are supposed to be there to fix the heart-stuck-in-wall thing, right? Shouldn't there be one on the top statues as well?

Alright, so I measured the new design as well, and got 2.18... And on a second run 2.25. But I did notice that it was running slightly too fast, so I bodged in a slower timer and tweaked it to be just right.

View attachment 221950

And after that I measure the heart rate at... 2.19.
I don't think it's really possible to get more than that with this setup. It seem like the 5 heart thing is just not going to work out.
For what it's worth though, I do think your new design is really neat, with the dual loading and all that. :)

EDIT: Though wait, then again I did get around 2.9 from the way overclocked "V1" from the previous post. Even with a 3 teeth sideways hoik instead of the heart reach... So the whole precise timing thing may not even be as important? :confused:

Yeah It's not really important anymore. I have long solved, re-solved, and overhauled that issue. There was a new issue about the hearts getting stuck on the right and I fixed that. The elevator must start with the blanks lined up with the heart statue container. So I made a check/reset for that.

However, I will give you this V14. This is the last version I will be doing as I'm tired of the subject. Everything is working correctly now. Only issue is the main clock needs to be a little over 2 seconds. At its current state its pushing out hearts a little too fast to do 5 | 5. RN its at 4 | 5.

Any future work or success you have feel free to share. If you get something significant enough Ill edit my main post and put the new build as the main subject.

EDIT: Not sure what you where calculating for the 2.19 stuff but maybe do some tests on the new build I just gave you. If you are talking about finding the optimal speed for the main clock then you might be able to get the 5 | 5 hearts timing just correct.
 

Attachments

  • Heartsworld.wld
    56.9 KB · Views: 281
Last edited:
Back
Top Bottom