For those wondering “What is Stardew Valley and why are sprinkler layouts relevant?”:
1) Stardew lets you grow crops, but it’s time consuming to water them
2) Sprinklers water crops for you, but starter sprinklers water 4 squares only
3) Better sprinklers are your reward for growing lots of crops
4) So having an optimized basic sprinkler layout is time-efficient and useful
Scarecrows are necessary to keep crows from stealing crops, and have their own protection radius - similar to sprinklers, but wider.
The python script linked here is a useful programming exercise for trying to start developing these layouts by code, and many improvements could be made to improve the aesthetic - but if you just want to write a quick layout generator and grow some crops, it’s perfectly sufficient as-is for basic sprinklers. Once you progress to advanced sprinklers, you don’t need this algorithm as much as you need a tesselation pattern that fits within the game’s constraints, and that’s what shows up in the player-built maps linked above.
If a picture is worth a thousand words, then go to https://stardew.info/ and scroll down to the “Useful” collection maps. The first map shown is a gloriously efficient honey farming operation: you have to plant a flower within the beehive’s radius, and you have to be able to walk up to the beehive, so this layout meets those rules, while doing so in a way that’s pleasing to the eye.
SimCity fans may remember “Magnasanti”, where the same rules and principles were applied: Tesselations of constructs designed for maximize people per square, with the bare minimum of infrastructure necessary to deliver that. Magnasanti was designed by a human being using graph paper and is optimized beyond imagining, just like those Stardew “Useful” maps. HN discussed Magnasanti before:
> The first map shown is a gloriously efficient honey farming operation: you have to plant a flower within the beehive’s radius, and you have to be able to walk up to the beehive, so this layout meets those rules, while doing so in a way that’s pleasing to the eye.
Not sure if you're referring to the same map I'm seeing first:
It looks to me like there are a number of beehives that can't be accessed. Also some of them may be a bit far from the flowers.
EDIT: Additionally, when collecting from the beehives on the inside you would be more or less guaranteed to pull up your flowers on accident once they were full grown.
Yeah, I have nowhere near enough control to manage that. I typically surround my centerpiece flower with 8 hives for the full season and accept inefficiency.
You can, it's just very difficult to grab items from several surrounding squares without accidentally grabbing the flower as well. The more you do it, the more likely you are to mess it up.
There’s a 1.4 change that stops you from trying to eat fruit when feeding jars, as long as you keep the button held down as you move. I wonder if it’ll be fixed for crops vs. machines someday.
It seems like this is a variant of the N-queens problem, which you can solve by backtracking. So it should be fairly easy to modify to include more sprinklers including using tiles for other things like scarecrows.
And actually it's a more complex problem - what happens if you include crops which you can't walk over, but have repeat harvest (like beans)? Back in the day of Harvest Moon you often had to waste a square because you couldn't access the centre.
In the original game(s) there were other constraints like seeds being scattered in a 3*3 grid centred on you. You couldn't sow individual tiles. At least now you don't waste 1/9 of your seeds on inaccessible tiles.
It would be fun for Stardew to model things like companion cropping, where you could get a productivity boost by planting certain things next to each other. Or if trees/buildings would shade areas. Or if pests were actually a thing, but maybe that would give real life gardeners PTSD when your whole farm dies of blackfly.
Yea I was hoping this would talk about scarecrows and those little huts you can get later than can automatically harvest crops up to 15 squares away. You'd want to optimize for all three (with the huts, you can even plant vine plants right new to each other; the little creatures can get to them even though you can't).
Would the optimal placement for iridium sprinkers just be in the center of their coverage area? Seems like this script would always have waste areas too.
I’m currently working on irrigation design for an actual farm. Would be nice to have tools to help with layout. Unfortunately, I don’t think this is the right thread for that..
Great blogpost and impressive code! But don’t starter sprinklers (3x3 plus shapes) already tesselate? You can place them as a knight moves in chess, essentially. What is this accomplishing that tessellating the sprinklers doesn’t? Or is this ignoring that as an option? Or am I missing something else obvious?
I had the same thought. This is super interesting but just needs one more paragraph up top explaining the rules and what the goals of the problem are.
I think this could be reframed into an interesting homework assignment given the right description of the rules. I really want to emphasize that this is a very cool article though. Big fan.
A basic sprinkler in Stardew Valley waters the four orthogonally adjacent plots. Space and walking time are somewhat limited, so you want to optimize for that.
Looking at those outputs is a little confusing since not all dots will actually be watered. The partitioning also adds to that.
I was assuming the OP was talking about iridium (or at least quality) sprinklers, the graphs don't look like good placements for basic sprinklers at all. I guess basic sprinklers do pose a somewhat more interesting problem - then again you use them only for a very short time before moving on...
Now if it included scarecrow placement and shortest distance for non-traversable crops like beans, that would be something else...
1) Stardew lets you grow crops, but it’s time consuming to water them
2) Sprinklers water crops for you, but starter sprinklers water 4 squares only
3) Better sprinklers are your reward for growing lots of crops
4) So having an optimized basic sprinkler layout is time-efficient and useful
Scarecrows are necessary to keep crows from stealing crops, and have their own protection radius - similar to sprinklers, but wider. The python script linked here is a useful programming exercise for trying to start developing these layouts by code, and many improvements could be made to improve the aesthetic - but if you just want to write a quick layout generator and grow some crops, it’s perfectly sufficient as-is for basic sprinklers. Once you progress to advanced sprinklers, you don’t need this algorithm as much as you need a tesselation pattern that fits within the game’s constraints, and that’s what shows up in the player-built maps linked above.
If a picture is worth a thousand words, then go to https://stardew.info/ and scroll down to the “Useful” collection maps. The first map shown is a gloriously efficient honey farming operation: you have to plant a flower within the beehive’s radius, and you have to be able to walk up to the beehive, so this layout meets those rules, while doing so in a way that’s pleasing to the eye.
https://storage.googleapis.com/planner-renders/pink-mayfly-3...
SimCity fans may remember “Magnasanti”, where the same rules and principles were applied: Tesselations of constructs designed for maximize people per square, with the bare minimum of infrastructure necessary to deliver that. Magnasanti was designed by a human being using graph paper and is optimized beyond imagining, just like those Stardew “Useful” maps. HN discussed Magnasanti before:
https://news.ycombinator.com/item?id=16933265
And I’d just like to highlight how much this image from Magnasanti map development could be an image from Stardew beehive map development:
https://rumorsontheinternets.files.wordpress.com/2010/10/mag...