Difference between revisions of "Talk:Ginger Island"

From Stardew Valley Wiki
Jump to navigation Jump to search
Line 18: Line 18:
 
:::The location of Gem Birds should be random. Here are parts of relating codes:
 
:::The location of Gem Birds should be random. Here are parts of relating codes:
 
:::<syntaxhighlight lang="C#">
 
:::<syntaxhighlight lang="C#">
if (IsMasterGame && (bool)netWorldState.Value.GetWeatherForLocation(GameLocation.LocationContext.Island).isRaining)
+
private static IEnumerator<int> _newDayAfterFade()
 
{
 
{
Vector2 tile_location = new Vector2(0f, 0f);
+
......
IslandLocation island_location = null;
+
if (IsMasterGame && (bool)netWorldState.Value.GetWeatherForLocation(GameLocation.LocationContext.Island).isRaining)
List<int> order = new List<int>();
 
for (int i = 0; i < 4; i++)
 
 
{
 
{
order.Add(i);
+
Vector2 tile_location = new Vector2(0f, 0f);
}
+
IslandLocation island_location = null;
Utility.Shuffle(new Random((int)uniqueIDForThisGame), order);
+
List<int> order = new List<int>();
switch (order[currentGemBirdIndex])
+
for (int i = 0; i < 4; i++)
{
+
{
case 0:
+
order.Add(i);
island_location = getLocationFromName("IslandSouth") as IslandLocation;
+
}
tile_location = new Vector2(10f, 30f);
+
Utility.Shuffle(new Random((int)uniqueIDForThisGame), order);
break;
+
switch (order[currentGemBirdIndex])
case 1:
+
{
island_location = getLocationFromName("IslandNorth") as IslandLocation;
+
case 0:
tile_location = new Vector2(56f, 56f);
+
island_location = getLocationFromName("IslandSouth") as IslandLocation;
break;
+
tile_location = new Vector2(10f, 30f);
case 2:
+
break;
island_location = getLocationFromName("Islandwest") as IslandLocation;
+
case 1:
tile_location = new Vector2(53f, 51f);
+
island_location = getLocationFromName("IslandNorth") as IslandLocation;
break;
+
tile_location = new Vector2(56f, 56f);
case 3:
+
break;
island_location = getLocationFromName("IslandEast") as IslandLocation;
+
case 2:
tile_location = new Vector2(21f, 35f);
+
island_location = getLocationFromName("Islandwest") as IslandLocation;
break;
+
tile_location = new Vector2(53f, 51f);
}
+
break;
currentGemBirdIndex = (currentGemBirdIndex + 1) % 4;
+
case 3:
if (island_location != null)
+
island_location = getLocationFromName("IslandEast") as IslandLocation;
{
+
tile_location = new Vector2(21f, 35f);
island_location.locationGemBird.Value = new IslandGemBird(tile_location, IslandGemBird.GetBirdTypeForLocation(island_location.Name));
+
break;
 +
}
 +
currentGemBirdIndex = (currentGemBirdIndex + 1) % 4;
 +
if (island_location != null)
 +
{
 +
island_location.locationGemBird.Value = new IslandGemBird(tile_location, IslandGemBird.GetBirdTypeForLocation(island_location.Name));
 +
}
 
}
 
}
 +
......
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 65: Line 70:
 
::::It is my conjecture, based on game behavior, that the gem bird shuffle is done for each individual game, once for all time, at the first time the player visits Ginger Island on a rainy day. From that time on, the same sequence of four repeats forever on rainy days. If you miss one rainy day, you can catch the missed bird four rainy days later and complete the shrine that way. I am going to add something about this to the article. [[User:Giles|Giles]] ([[User talk:Giles|talk]]) 03:04, 15 September 2021 (UTC)
 
::::It is my conjecture, based on game behavior, that the gem bird shuffle is done for each individual game, once for all time, at the first time the player visits Ginger Island on a rainy day. From that time on, the same sequence of four repeats forever on rainy days. If you miss one rainy day, you can catch the missed bird four rainy days later and complete the shrine that way. I am going to add something about this to the article. [[User:Giles|Giles]] ([[User talk:Giles|talk]]) 03:04, 15 September 2021 (UTC)
  
Article edit made. I ran a few more tests, hoping I could get the game to do something different. Even when I ran the file from two days before the first rainy day (and the weather changed so it ended up being three days before rain), the resulting bird was the same one in the same location. Not impossible odds, but every type of run is proving to give the same arrangement. In my game, everything begins with a ruby-gem bird in Island North. I assume not everyone experiences that! (?) [[User:Giles|Giles]] ([[User talk:Giles|talk]]) 07:38, 15 September 2021 (UTC)
+
::::Article edit made. I ran a few more tests, hoping I could get the game to do something different. Even when I ran the file from two days before the first rainy day (and the weather changed so it ended up being three days before rain), the resulting bird was the same one in the same location. Not impossible odds, but every type of run is proving to give the same arrangement. In my game, everything begins with a ruby-gem bird in Island North. I assume not everyone experiences that! (?) [[User:Giles|Giles]] ([[User talk:Giles|talk]]) 07:38, 15 September 2021 (UTC)
 +
 
 +
:::::Hi, Gile! Sorry for the incorrect interpretation. I tried to look into the codes again and tested in the game. Also, maybe there are still some mistakes. As you said, the "uniqueIDForThisGame" is unique for the save file. I got it wrong because that I took the name of the function for granted. The function to generate the "uniqueIDForThisGame" which calculated by "current UTC time - (2012, 6, 22)" is called "CleanupReturningToTitle" and executed when the variable "exitToTitle" is true. However, I didn't realized that the game saves the "uniqueIDForThisGame" as you said and then loaded it when you load the game. Therefore, the "uniqueIDForThisGame" doesn't change in the same game save.
 +
:::::Apart from "uniqueIDForThisGame", the game also saves "currentGemBirdIndex" in the save file and can loaded it from the file. The point is that the game executes the codes that I posted once in each rainy day. But the function Utility.Shuffle ouputs the same list when the seed "uniqueIDForThisGame" and imported list keep same. And the "currentGemBirdIndex" = ("currentGemBirdIndex" +1)%4 which means the index circulated in <nowiki>[0,1,2,3]</nowiki>.
 +
:::::Therefore, the location order doesn't change in the same save, and the gem's location is recurrent in each rainy day. Sorry for the wrong interpretation again. You can add extra information to the article if you want. Relating references: <code><nowiki>StardewValley.Game1::_newDayAfterFade</nowiki></code>, <code><nowiki>StardewValley.Utility::Shuffle</nowiki></code>. Thanks! --<small>[[User:Horizon98|Horizon98]] ([[User talk:Horizon98|Discussion]])</small> 07:46, 15 September 2021 (UTC)

Revision as of 07:47, 15 September 2021

This talk page is for discussing Ginger Island.
  • Sign and date your posts by typing four tildes (~~~~).
  • Put new text below old text.
  • Be polite.
  • Assume good faith.
  • Don't delete discussions.

Organization

I just consolidated Island West slightly - I moved info about the green duggy and the shipwreck into the beach section. Overall, I'm trying to decide if some of these topics warrant their own pages. For example, Gourmand - I'd love to make a page with a screenshot of his cave, as well as info about fishing in his pond, the Gourmand statue, and maybe quotes. That might not be enough for a full page; however, adding specifics like this to every one of the island sections here would make this page more unwieldly. In my head, the Island North section is what "good" looks like - brief details, but then links to main pages for areas/topics. Any thoughts? The two changes I've been specifically thinking about how to add are Gourmand and then more specifics about the Mushroom Cave (e.g. items and frequency). I'll probably sandbox some stuff to work through what might make sense, but wanted to see if anyone feels strongly one way or the other. Efarn (talk) 02:44, 17 March 2021 (UTC)

I agree that this article, being about a HUGE central topic, is best served by concise introductory remarks and tons of links to the wide variety of details subjects, small or large as those other subjects may be. I also agree that the Island North section is currently a good example of what that might look like. I am going to make a couple of edits to that section that I think would make it better, though. It currently contains a couple of lists of items (for Island Trader and Mountain Quarry). Both those subtopics already have their own articles, and I would suggest that the lists belong there, not here. Instead, I will substitute a short suggestive language that can lead the reader to click the related articles if they want more. This way, more details (even such as lists) may be made explicit elsewhere, and only once on the wiki. The governing thought here is to lead the reader to the details, but to keep those details from being replicated and needing multiple points of correction or update if maintenance proves necessary. Giles (talk) 19:51, 17 April 2021 (UTC)

Farm Shipwreck

The page currently says, "It is unclear if this shipwreck is related to Leo, Birdie, or the pirates in the Pirate's Cove." However, if you pay attention to Birdie when she's introducing herself, she mentions the wreck and explains that her husband was its captain. Vaidurya (talk) 23:44, 13 July 2021 (UTC)

Right you are, I've updated the page. Birdie's dialog can be found in the data file Locations.xnb, under the entry for IslandSecret_Event_BirdieIntro, so I'm going to delete the images you uploaded as proof. Thanks for pointing this out! Much appreciated, margotbean (talk) 16:29, 14 July 2021 (UTC)

Gem Birds

I am assuming that the location of the Gem Bird that appears each rainy day is randomized for that specific day, something like the weather. My first three rainy days in this game yielded three different locations, but subsequent rainy days have yielded only repeats, not the fourth Gem Bird. Please let me know if I am wrong about randomization. If not, I will put some text into the article to make this clear. There is no mention at the moment. Thanks. Giles (talk) 17:49, 12 September 2021 (UTC)

An excellent question, I don't know the answer. In all my playthroughs, I've always gone straight to the area where I needed the gem, and found the bird. Or else, I forgot about the puzzle entirely, and have no memory of what happened (was there a duplicate bird, or no bird?) If you have save files with an incomplete puzzle, in-game testing might give the answer more quickly than a code dive. margotbean (talk) 18:08, 12 September 2021 (UTC)
Thanks. My current active game does have an incomplete puzzle. At the fourth bird, I entered the fourth area, much as you do, and found the bird there, but I abandoned that play mid-day, no save. (It happens. I generally am unable to continue play beyond one game day at a time. So, forget about trains in SV, too.) I don't remember whether, in my replayed game day, I went to Ginger Island or not. But the next rainy game day, the same one or another, the bird was not in the one remaining area I needed. Intrigued, I searched and found it in the first area I had ever found a bird, and there it was. Since then, successive rainy days have produced birds that have followed the same succession of locations I first encountered! (Isn't that rather a coincidence? Or is it?) I have yet to reach the fourth day since I missed. Watch this space for developments. I rather think I'll need to replay from various saved days in order to sort out the details. I didn't even know there were questions when I took my first pass, and haven't remembered other details that might pertain. I need to explore what's relevant and what's not also. Giles (talk) 17:09, 13 September 2021 (UTC)
The location of Gem Birds should be random. Here are parts of relating codes:
private static IEnumerator<int> _newDayAfterFade()
{
	......
	if (IsMasterGame && (bool)netWorldState.Value.GetWeatherForLocation(GameLocation.LocationContext.Island).isRaining)
	{
		Vector2 tile_location = new Vector2(0f, 0f);
		IslandLocation island_location = null;
		List<int> order = new List<int>();
		for (int i = 0; i < 4; i++)
		{
			order.Add(i);
		}
		Utility.Shuffle(new Random((int)uniqueIDForThisGame), order);
		switch (order[currentGemBirdIndex])
		{
		case 0:
			island_location = getLocationFromName("IslandSouth") as IslandLocation;
			tile_location = new Vector2(10f, 30f);
			break;
		case 1:
			island_location = getLocationFromName("IslandNorth") as IslandLocation;
			tile_location = new Vector2(56f, 56f);
			break;
		case 2:
			island_location = getLocationFromName("Islandwest") as IslandLocation;
			tile_location = new Vector2(53f, 51f);
			break;
		case 3:
			island_location = getLocationFromName("IslandEast") as IslandLocation;
			tile_location = new Vector2(21f, 35f);
			break;
		}
		currentGemBirdIndex = (currentGemBirdIndex + 1) % 4;
		if (island_location != null)
		{
			island_location.locationGemBird.Value = new IslandGemBird(tile_location, IslandGemBird.GetBirdTypeForLocation(island_location.Name));
		}
	}
	......
}
"uniqueIDForThisGame" changes each time when you return to the title (You can consider it as a random seed). Initial value of currentGemBirdIndex is 0. In every rainy day, the game selects a random int from [0,1,2,3] ("Utility.Shuffle" changes 2 random numbers' order, repeating 4 times). Each number matches one location. So the Gem Birds's location is random. What you came across looks like to be an coincidence. --Horizon98 (Discussion) 18:04, 13 September 2021 (UTC)
Thanks, Horizon, but I expect there is something amiss with your code interpretation. There's too much additional coincidence here for it to be otherwise.
First, re "uniqueIDForThisGame": it's a seed, but not a random seed. It's unique for your game. Its value does not change each time you "return to the title" (do you mean "load the game from the save file, from the game title display"?). This ID was generated once when your game was initiated (when you pressed "NEW" at the game title). On PC at least, that number is attached to the name of game's save file, as well as the file's folder. As far as each individual game is concerned, it is a constant, which can be found in every save file.
Note also that this entire code segment begins with a line that already knows what the weather is today. Whatever randomness produced that weather, it was done the previous game day, because that weather was saved in the most recent save file and was used the previous day in the TV's weather forecast.
Yes, the bird shuffle itself is still random, but we still don't know if "order", the shuffle list, is saved somewhere. Every indicator I have seen indicates that it has. And, after all, weather is randomly generated, but only once per day. Once generated it is fixed. That is what I see from the shuffle order.
In fact, I now see fixed values that persist for the game. My current run has now encountered the fourth bird, completing the set. In fact, this is the second time I have gone through the set of four in this game. I just didn't actually go to Ginger Island the first time when the fourth bird appeared. (I have saved every day's files since the start of this game into an independent folder.) Upon restarting the fourth rainy day since unlocking Ginger Island, the fourth bird showed up. The following day showed that I had not saved the gem at the shrine. I certainly would have if I had gone to Ginger Island at all (I would not have forgotten), since the bird was on Island South, near the docks, an inevitable reminder.
Every time I have reloaded a single game day from my saved files, the same bird appears. It has never failed, and there are too many repeats for there to be a credible argument that another random shuffle is done after loading. "Order" must be saved somewhere, somehow.
It is even more fixed than that. The second run through a set of four birds was identical in order to the first run: same sequence by the same bird type yielding the same gem. A new bird or a new starting point was not chosen for each sequence of four. Once started, the remaining birds' sequence was not shuffled again either.
It is my conjecture, based on game behavior, that the gem bird shuffle is done for each individual game, once for all time, at the first time the player visits Ginger Island on a rainy day. From that time on, the same sequence of four repeats forever on rainy days. If you miss one rainy day, you can catch the missed bird four rainy days later and complete the shrine that way. I am going to add something about this to the article. Giles (talk) 03:04, 15 September 2021 (UTC)
Article edit made. I ran a few more tests, hoping I could get the game to do something different. Even when I ran the file from two days before the first rainy day (and the weather changed so it ended up being three days before rain), the resulting bird was the same one in the same location. Not impossible odds, but every type of run is proving to give the same arrangement. In my game, everything begins with a ruby-gem bird in Island North. I assume not everyone experiences that! (?) Giles (talk) 07:38, 15 September 2021 (UTC)
Hi, Gile! Sorry for the incorrect interpretation. I tried to look into the codes again and tested in the game. Also, maybe there are still some mistakes. As you said, the "uniqueIDForThisGame" is unique for the save file. I got it wrong because that I took the name of the function for granted. The function to generate the "uniqueIDForThisGame" which calculated by "current UTC time - (2012, 6, 22)" is called "CleanupReturningToTitle" and executed when the variable "exitToTitle" is true. However, I didn't realized that the game saves the "uniqueIDForThisGame" as you said and then loaded it when you load the game. Therefore, the "uniqueIDForThisGame" doesn't change in the same game save.
Apart from "uniqueIDForThisGame", the game also saves "currentGemBirdIndex" in the save file and can loaded it from the file. The point is that the game executes the codes that I posted once in each rainy day. But the function Utility.Shuffle ouputs the same list when the seed "uniqueIDForThisGame" and imported list keep same. And the "currentGemBirdIndex" = ("currentGemBirdIndex" +1)%4 which means the index circulated in [0,1,2,3].
Therefore, the location order doesn't change in the same save, and the gem's location is recurrent in each rainy day. Sorry for the wrong interpretation again. You can add extra information to the article if you want. Relating references: StardewValley.Game1::_newDayAfterFade, StardewValley.Utility::Shuffle. Thanks! --Horizon98 (Discussion) 07:46, 15 September 2021 (UTC)