FilthyGorilla
Local Legend
I told you guys I had something insane in the works! This run which has taken me months to fully route, troubleshoot, and run is finally finished, ending in completing the cc as soon as the game even allows. This post is a deep dive into the run, and I won’t be holding back when it comes to details, so expect a proper 2500+ word stardew essay (might adapt it into a video later too).
(day 7, post community center completion cutscene)
Getting into the run, it was sparked by a question: is it possible to complete the community center with items that are bought and/or have no time restriction to obtain them?
In 1.4 or before, something like this would have been out of the question, the classic community center has bundles that have time locked items (for example aquamarine is unable to be bought anywhere) or have no way to buy like the quality crops, leading to an earliest possible community center on day 2 of summer. 1.5 changed this though, with the addition of remixed bundles came the ability to opt out of getting some of these items, in exchange for some slightly unfavorable possibilities (like the sticky bundle needing 500 sap), which got me thinking - in typical FilthyGorilla fashion - about how far this could be pushed.
This run revolves primarily around one glitch – ‘Dynamic seeding’ - and the mobile - exclusive save states which interact in a really interesting way together. Dynamic seeding is a bug that allows you to change seeds of a save file from within the game itself (no save editing required). It is performed simply by pressing 'new save' and entering a seed you want, but then instead of creating the new file you back out and immediately load any of your preexisting saves, which will then have the new seed (evident by changes in game, and once you sleep, by the seed on the file name having changed). Because dynamic seeding requires loading a file, it's only possible a single time per day on pc or consoles. Mobile however has the ability to save at any point, pressing a button in settings to create a 'save state' which can be loaded whenever, something which - in theory - should allow for us to use upwards of 100 seeds a day (as save states advance the game to the next 10-minute tick upon reload, allowing 120 seeds (20 hours x 6 ticks)).
In practice, this unfortunately doesn't work. While you can dynamic seed when you initially load the file, you're then completely unable to create a save state in the new dynamic seeded file, the button to 'create backup' and not doing anything when pressed. Unfortunately, this is due to how save states fundamentally work, something I'll go into a bit of a tangent explaining saves to you so you can understand.
Generally, a save folder has 4 files:
As some of you may have figured out though, there is a sneaky little component to that process that allows us to still use save state dynamic seeding: the save state not being attributed to any one save file. This means that while our main save can’t possibly have the right farmname_seed file, we can create another ‘dummy save’ which does, and the save state created in our main file will end up in the second save folder (yes, this gets confusing VERY fast). This process was found and refined by someone I know on discord named Ate, I’ve refined some of the processes to save state dynamic seed, and found a few details which allow for additional freedom, but the fundamental process was still almost fully developed by them, something I want to give my thanks for sharing with me. One thing they found is that the process isn’t as simple as the dummy save having the same farm name and seed as the new savestate. The farmname_seed_SVEMERG save seems to require certain character information in the farmname_seed file it selects to be the same. This means that when creating the dummy save, you have to ensure that the character name, farm name, favorite thing, and any advanced settings are identical to that of the original file.
For later reference, the process of save state dynamic seeding goes like this:
To actually execute on all this context proving the run logistically possible, I first determined a subset of bundles that allowed for the most items possible to be purchased from the cart, avoiding items that I didn’t have the time for and weren’t purchasable like the ancient doll, aquamarine, forage minerals, roe, etc., and any bundles that weren’t reasonably completable. With help from Alexa on discord – and after some unfortunate initial mistakes I made – I eventually found the seed 6000768. This seed has bundle items all purchasable from the cart, given as rewards for other bundles (like batteries), or which are purchasable from vendors (such as hay from Marnie). With the seed for my community center bundles already cemented, and with additional help to create a program that would find all the required items in as few carts as possible, I was able to boil the list down to only 19 carts for the over 90 unique items I need:
1153, 265015, 269614, 311553, 1910073, 3750749, 4588764, 4596406, 8128558, 8550564, 9335551, 54677628, 60089602, 60523313, 60598365, 60799301, 60799598, 94169, 974
(All items for each bundle, bar the ancient fruit seed packet still needing to be grown. I also ended up buying the gold bar and battery I could have gotten from other bundle rewards as I had some cash remaining)
As I began putting the run onto paper however, I started to encounter the actual practical problems and complexities with such a large number of demanding steps in a small time frame.
The first and foremost problem was one of money, even after further optimizing the cart selection to minimize the cash cost, it still came up to over 110,000g, and that didn’t include any additional purchases required, or money for the vault bundle. Believe it or not, obtaining over 160,000g in the first 4 days of a save file isn’t exactly easy. While I could have done it in a more ‘legitimate’ manner such as clipping to the mines and geode farming day 1, or by using save states to force high value fish catches every tick, these methods would have taken forever (especially the ‘most legitimate’ fishing option which would have taken upwards of 40 hours for just 3 days of gameplay), so I instead opted to continue utilizing quirks of save states and use them to farm trash. Another thing the save states don’t save is the state of trash cans when saving, so upon reload, they all take the default filled state, allowing resets to get trash items repeatedly. The second use of the seed 6000768 is to set up fish tacos (the most valuable trash item) as the saloon dish of the day and put them in the trash. Attempting to dynamic seed the dish of the day for the following days is fruitless, as the dish of the day is determined overnight (dynamic seeding can only force the previously determined dish of the day into the trash pool). Luckily, I can save state dynamic seed the file at something like 1:40am using the step count from that time, and so long as I don’t have any machines running overnight or take any additional steps (both things that contribute to determining the dish of the day), then the following day will have the taco as the trash.
The second problem came about due to limited time, with 3 of the 4 available prep days taken by trash resetting, all purchases and prep had to be completed on the fourth day. This entailed heading to Pierre’s general store to sell the fish tacos and buy a backpack, going to Robin to purchase stone for the construction bundle, then lastly to Marnie’s for the hay, before heading back to the farm to clear it out. Clearing the farm ended up taking most of the 4th and spare time on the 5th, due to my reliance on the rare crops bundle as the only possible remixed alternative to the quality crops bundle. A sweet gem berry was out of the question as it’s unplantable in spring, so I needed an ancient fruit, which is unpurchasable from the cart. However, the seed packet is purchasable, though requires save state dynamic seeding after all the cart purchasing to force an overnight crop fairy. Fairies are notoriously annoying to guarantee a hit for though; they select from terrain.Feature (which includes all grass tiles and trees), as well as hoed dirt and the order it was tilled to find a tile. While trees are constant, any random grass spawn can mess up the order, so I spent the aforementioned 4th and 5th days on getting rid of grass then clearing the farm to spot any random grass spawns. This is also why I chose riverland farm for this run, as it has the fewest tiles and smallest area to cover without being really awkward to move around early on like hilltop.
(fairy on the 5th night)
The 5th was obviously the most time-intensive day, taking me a good 6 hours to get through, mostly due to having to cross referencing planning documents. As I mentioned before, the save state dynamic seeding moving files around in between save folders gets incredibly confusing very quickly. In order to make sure I didn’t mess up any of the dynamic seeding over the 25+ different seeds I was using, I tracked each by outfit (something which isn’t saved as character info and therefore doesn’t stop the _SVEMERG from recognizing the file), as well as made sure I was 100% correct with every seed entered. I also deleted the shell saves once I had moved the main _SVEMERG file out of it so that I wouldn’t accidentally enter any of them, though this does mean I don’t have a screenshot or video of all 25+ shell saves.
Finally, with all the items collected by the 6th morning, I spent the day ferrying them from chests I had placed around the traveling cart over to the community center:
(day 6 community center completion!)
(day 7, post community center completion cutscene)
Getting into the run, it was sparked by a question: is it possible to complete the community center with items that are bought and/or have no time restriction to obtain them?
In 1.4 or before, something like this would have been out of the question, the classic community center has bundles that have time locked items (for example aquamarine is unable to be bought anywhere) or have no way to buy like the quality crops, leading to an earliest possible community center on day 2 of summer. 1.5 changed this though, with the addition of remixed bundles came the ability to opt out of getting some of these items, in exchange for some slightly unfavorable possibilities (like the sticky bundle needing 500 sap), which got me thinking - in typical FilthyGorilla fashion - about how far this could be pushed.
This run revolves primarily around one glitch – ‘Dynamic seeding’ - and the mobile - exclusive save states which interact in a really interesting way together. Dynamic seeding is a bug that allows you to change seeds of a save file from within the game itself (no save editing required). It is performed simply by pressing 'new save' and entering a seed you want, but then instead of creating the new file you back out and immediately load any of your preexisting saves, which will then have the new seed (evident by changes in game, and once you sleep, by the seed on the file name having changed). Because dynamic seeding requires loading a file, it's only possible a single time per day on pc or consoles. Mobile however has the ability to save at any point, pressing a button in settings to create a 'save state' which can be loaded whenever, something which - in theory - should allow for us to use upwards of 100 seeds a day (as save states advance the game to the next 10-minute tick upon reload, allowing 120 seeds (20 hours x 6 ticks)).
In practice, this unfortunately doesn't work. While you can dynamic seed when you initially load the file, you're then completely unable to create a save state in the new dynamic seeded file, the button to 'create backup' and not doing anything when pressed. Unfortunately, this is due to how save states fundamentally work, something I'll go into a bit of a tangent explaining saves to you so you can understand.
Generally, a save folder has 4 files:
- The main farmname_seed (like filthy_1234) which holds the general character information of a file
- The savegameinfo file (SaveGameInfo), which holds some character info but mostly contains information about stuff like active quests in the save
- The ‘old’ farmname_seed (like filthy_1234_old) which is the same as the main farmname_seed file except with the previous day’s save (stardew always keeps the save of the current day and day prior, for example, if you’re playing the 7th of summer, you’ll have the file that has all your progress up to the 7th and loads you on the 7th of summer morning, and the file that has all the progress up to the 6th of summer and loads you on that morning)
- The ‘old’ savegameinfo file (SaveGameInfo_old), which is the day prior’s savegameinfo file
- The save state backup file (BACKUP_SAVE), this file is only ~40 bytes and only serves (AFAIK) to pop up the “load backup” prompt when you load a file that has a save state
- The emergency save state file (like filthy_1234_SVBAK), which is a save state created whenever your game crashes or periodically sometimes when playing. While it has some interesting properties for a run like this, it’s awkward to use as it requires waiting for the game to crash naturally for a non-guarantee at working.
- The manual save state file (like filthy_1234_SVEMERG), the file created when you press the ‘create backup’ button in settings, allowing you to create guaranteed save states whenever you want. This is the file that we want to utilize, but also the one causing the current issue.
As some of you may have figured out though, there is a sneaky little component to that process that allows us to still use save state dynamic seeding: the save state not being attributed to any one save file. This means that while our main save can’t possibly have the right farmname_seed file, we can create another ‘dummy save’ which does, and the save state created in our main file will end up in the second save folder (yes, this gets confusing VERY fast). This process was found and refined by someone I know on discord named Ate, I’ve refined some of the processes to save state dynamic seed, and found a few details which allow for additional freedom, but the fundamental process was still almost fully developed by them, something I want to give my thanks for sharing with me. One thing they found is that the process isn’t as simple as the dummy save having the same farm name and seed as the new savestate. The farmname_seed_SVEMERG save seems to require certain character information in the farmname_seed file it selects to be the same. This means that when creating the dummy save, you have to ensure that the character name, farm name, favorite thing, and any advanced settings are identical to that of the original file.
For later reference, the process of save state dynamic seeding goes like this:
- Have your main file ‘save 1’ (the one you’ll be moving around the save state _SVEMERG file of around, this file is for making all your progress in until you start moving files)
- Create a new save, ‘save 2’, enter all the same information used in your original file (for me that was name: CC, farm name: CC, favorite thing: CC, riverland farm, remixed bundles on, and all other settings default (except for the new seed of course), keeping everything as simple as possible to reduce the risk of mistakes)
- Once in the new save, change settings to preferred then immediately leave without creating a save state
- Dynamic seed ‘save 1’ with the second seed by pressing new save in game, entering the seed in the advanced settings tab, exiting the farm creation menu without creating the save, then immediately loading ‘save 1’
- You can now do anything you wanted in ‘save 1’ with the new seed, and when you create a manual save state, it’ll instead be saved in the folder of ‘save 2’, which just exists as a shell. You can repeat this process again with ‘save 2’ being your new ‘save 1’ file (as it’s only the _SVEMERG file that’s moving that we care about)
To actually execute on all this context proving the run logistically possible, I first determined a subset of bundles that allowed for the most items possible to be purchased from the cart, avoiding items that I didn’t have the time for and weren’t purchasable like the ancient doll, aquamarine, forage minerals, roe, etc., and any bundles that weren’t reasonably completable. With help from Alexa on discord – and after some unfortunate initial mistakes I made – I eventually found the seed 6000768. This seed has bundle items all purchasable from the cart, given as rewards for other bundles (like batteries), or which are purchasable from vendors (such as hay from Marnie). With the seed for my community center bundles already cemented, and with additional help to create a program that would find all the required items in as few carts as possible, I was able to boil the list down to only 19 carts for the over 90 unique items I need:
1153, 265015, 269614, 311553, 1910073, 3750749, 4588764, 4596406, 8128558, 8550564, 9335551, 54677628, 60089602, 60523313, 60598365, 60799301, 60799598, 94169, 974
(All items for each bundle, bar the ancient fruit seed packet still needing to be grown. I also ended up buying the gold bar and battery I could have gotten from other bundle rewards as I had some cash remaining)
As I began putting the run onto paper however, I started to encounter the actual practical problems and complexities with such a large number of demanding steps in a small time frame.
The first and foremost problem was one of money, even after further optimizing the cart selection to minimize the cash cost, it still came up to over 110,000g, and that didn’t include any additional purchases required, or money for the vault bundle. Believe it or not, obtaining over 160,000g in the first 4 days of a save file isn’t exactly easy. While I could have done it in a more ‘legitimate’ manner such as clipping to the mines and geode farming day 1, or by using save states to force high value fish catches every tick, these methods would have taken forever (especially the ‘most legitimate’ fishing option which would have taken upwards of 40 hours for just 3 days of gameplay), so I instead opted to continue utilizing quirks of save states and use them to farm trash. Another thing the save states don’t save is the state of trash cans when saving, so upon reload, they all take the default filled state, allowing resets to get trash items repeatedly. The second use of the seed 6000768 is to set up fish tacos (the most valuable trash item) as the saloon dish of the day and put them in the trash. Attempting to dynamic seed the dish of the day for the following days is fruitless, as the dish of the day is determined overnight (dynamic seeding can only force the previously determined dish of the day into the trash pool). Luckily, I can save state dynamic seed the file at something like 1:40am using the step count from that time, and so long as I don’t have any machines running overnight or take any additional steps (both things that contribute to determining the dish of the day), then the following day will have the taco as the trash.
The second problem came about due to limited time, with 3 of the 4 available prep days taken by trash resetting, all purchases and prep had to be completed on the fourth day. This entailed heading to Pierre’s general store to sell the fish tacos and buy a backpack, going to Robin to purchase stone for the construction bundle, then lastly to Marnie’s for the hay, before heading back to the farm to clear it out. Clearing the farm ended up taking most of the 4th and spare time on the 5th, due to my reliance on the rare crops bundle as the only possible remixed alternative to the quality crops bundle. A sweet gem berry was out of the question as it’s unplantable in spring, so I needed an ancient fruit, which is unpurchasable from the cart. However, the seed packet is purchasable, though requires save state dynamic seeding after all the cart purchasing to force an overnight crop fairy. Fairies are notoriously annoying to guarantee a hit for though; they select from terrain.Feature (which includes all grass tiles and trees), as well as hoed dirt and the order it was tilled to find a tile. While trees are constant, any random grass spawn can mess up the order, so I spent the aforementioned 4th and 5th days on getting rid of grass then clearing the farm to spot any random grass spawns. This is also why I chose riverland farm for this run, as it has the fewest tiles and smallest area to cover without being really awkward to move around early on like hilltop.
(fairy on the 5th night)
The 5th was obviously the most time-intensive day, taking me a good 6 hours to get through, mostly due to having to cross referencing planning documents. As I mentioned before, the save state dynamic seeding moving files around in between save folders gets incredibly confusing very quickly. In order to make sure I didn’t mess up any of the dynamic seeding over the 25+ different seeds I was using, I tracked each by outfit (something which isn’t saved as character info and therefore doesn’t stop the _SVEMERG from recognizing the file), as well as made sure I was 100% correct with every seed entered. I also deleted the shell saves once I had moved the main _SVEMERG file out of it so that I wouldn’t accidentally enter any of them, though this does mean I don’t have a screenshot or video of all 25+ shell saves.
Finally, with all the items collected by the 6th morning, I spent the day ferrying them from chests I had placed around the traveling cart over to the community center:
(day 6 community center completion!)
Attachments
-
31.5 KB Views: 2
-
13.1 KB Views: 6
-
31.2 KB Views: 2