Sounds good.
Would also remedy Ziglins staying angry at me even after I die.
Rollback Post to RevisionRollBack
Dwarf gamer found:
Buildings - square, not round
Materials - from rubble mound
Dark caves - lit 'n' cleaned out
Settlements - deep underground
Farmability - to grinder bound
Shields - made creepers but sound
Axes and crossbows - taking mobs out
I'm not an expert on chunks, and anything I get wrong will most likely be corrected. But I'm pretty sure that, in order to grow crops in unloaded chunks, the game would have to load it, even if just for a moment. And that change would cause many more chunks to be loaded.
It sounds too intensive, loading and unloading that many chunks that quickly.
Rollback Post to RevisionRollBack
Watch out for the crabocalypse. Some say the day will never come. But it will.
Feel free to drop by for a chat whenever.
If you'd like to talk with me about other games, here are a few I play.
Team Fortress 2
Borderlands series (Borderlands 2 is my favorite game, ever. TPS combat is a lot of fun and makes up for the lower-quality story, in my opinion)
Elder Scrolls series
Warframe (IGN is something like That_One_Flesh_Atronach)
Pokémon series (HGSS forever)
Rocket League
Fallout series
Left 4 Dead 2 (Boomer files always corrupt though)
SUPERHOT (SUPERHOT is the most innovative shooter I've played in years!)
Dead Rising series (Dead Rising 2 is one of my favorite games, and the 3rd was a lot of fun. 1st has poor survivor AI and the 4th is bad)
Just Cause series
Come to think of it, I mainly play fighting-based games.
Maybe it could be added as an option that can be toggled in the options menu. I imagine keeping a lot of chunks loaded, would slow down your game, not everyone has enough money to afford high-end computers so, players would have the option of turning off this feature if they are experiencing a lot of lag.
I'm not an expert on chunks or anything, I'm just going off of what I know (which isn't much in the first place) so feel free to correct me about anything.
I think some people are misunderstanding. The idea here is to add a "last loaded" timestamp to chunks that is set whenever they are unloaded. The next time the chunk is loaded, the game would look at the flag, say it has been X minutes since this chunk was loaded, and then use that information on any things that grow within the chunk.
For example, baby animals take 20 minutes to grow up. If you breed a baby cow at 12:00 PM and then immediately teleport away from the chunk the baby cow's growth timer is essentially 0/20 minutes and the last loaded flag would be set to 12 PM. At 12:25 PM later you reload the chunk by walking or teleporting back to it. The system does some math and sees that 12:25 PM minus 12 PM is 25 minutes. It then sees the baby cow and adds the 25 minutes to the cows growth timer, causing it to hit the 20/20 minute maximum so it becomes an adult cow.
There are a couple concerns, one being potential lag. If you had hundreds of ungrown crops or baby animals in a chunk and then leave and come back later, that is hundreds of updates that need to be done when the chunk updates. And that lag could be worse if you were on the edge of a farm and kept loading and unloading it, even if the amount of time between unloading and loading it again was minimal, since it still needs to do the check each time. Plus you need to consider render distance, I play on a render distance of 8 (I think), so each time I walk 16 blocks in a direction I'm loading 17 new chunks. That can be a lot of calculations.
Another problem is crops grow using a random tick system, where a crop could grow very fast if you get lucky or it could take a long time. You definitely don't want to do a bunch of attempts at growing based on when you reload the chunk, that would be very slow. A better method would be to get an approximate average of time it takes to grow a crop and the number of stages it has.
For example, take fictional Crop X that takes 10 minutes to mature and has 5 growth stages (not including the starting one when you plant it). 10 minutes divided by 5 is 2 minutes per stage. Then say you planted it and left the chunk, then came back 7 minutes later. The game could take the 7 minutes, round it down to 6 minutes (since Crop X grows every 2 minutes in this example, and 6 is the first number under the elapsed time of 7 minutes that is divisible by 2), and then does 6/2=3 and applies 3 growth stages to any of Crop X in the chunk.
There are a bunch of ways to further reduce lag for this, depending on how accurate you want it to be compared to if you were actually in the chunk the whole time, but that is the gist for people who didn't understand.
Rollback Post to RevisionRollBack
Want some advice on how to thrive in the Suggestions section? Check this handy list of guidelines and tips for posting your ideas and responding to the ideas of others!
I think some people are misunderstanding. The idea here is to add a "last loaded" timestamp to chunks that is set whenever they are unloaded. The next time the chunk is loaded, the game would look at the flag, say it has been X minutes since this chunk was loaded, and then use that information on any things that grow within the chunk.
For example, baby animals take 20 minutes to grow up. If you breed a baby cow at 12:00 PM and then immediately teleport away from the chunk the baby cow's growth timer is essentially 0/20 minutes and the last loaded flag would be set to 12 PM. At 12:25 PM later you reload the chunk by walking or teleporting back to it. The system does some math and sees that 12:25 PM minus 12 PM is 25 minutes. It then sees the baby cow and adds the 25 minutes to the cows growth timer, causing it to hit the 20/20 minute maximum so it becomes an adult cow.
There are a couple concerns, one being potential lag. If you had hundreds of ungrown crops or baby animals in a chunk and then leave and come back later, that is hundreds of updates that need to be done when the chunk updates. And that lag could be worse if you were on the edge of a farm and kept loading and unloading it, even if the amount of time between unloading and loading it again was minimal, since it still needs to do the check each time. Plus you need to consider render distance, I play on a render distance of 8 (I think), so each time I walk 16 blocks in a direction I'm loading 17 new chunks. That can be a lot of calculations.
Another problem is crops grow using a random tick system, where a crop could grow very fast if you get lucky or it could take a long time. You definitely don't want to do a bunch of attempts at growing based on when you reload the chunk, that would be very slow. A better method would be to get an approximate average of time it takes to grow a crop and the number of stages it has.
For example, take fictional Crop X that takes 10 minutes to mature and has 5 growth stages (not including the starting one when you plant it). 10 minutes divided by 5 is 2 minutes per stage. Then say you planted it and left the chunk, then came back 7 minutes later. The game could take the 7 minutes, round it down to 6 minutes (since Crop X grows every 2 minutes in this example, and 6 is the first number under the elapsed time of 7 minutes that is divisible by 2), and then does 6/2=3 and applies 3 growth stages to any of Crop X in the chunk.
There are a bunch of ways to further reduce lag for this, depending on how accurate you want it to be compared to if you were actually in the chunk the whole time, but that is the gist for people who didn't understand.
Ah, but you forget math! it's entirely possible to use a single formula to determine the amount of growth a crop undergoes after an unspecified number of ticks derived from, and having equal probabilities to, the random-tick-speed updates, as opposed to running that number of ticks.
Ah, but you forget math! it's entirely possible to use a single formula to determine the amount of growth a crop undergoes after an unspecified number of ticks derived from, and having equal probabilities to, the random-tick-speed updates, as opposed to running that number of ticks.
Are you suggesting calculating the amount of time the chunk has been unloaded, generating a random variable number to represent the "random" part of random crop growth, then applying them to random crops all at the same time? Or are you suggesting that each crop runs this individual calculation once it is reloaded? Because option 1 sounds like what Badprenup mentioned, and option 2 would significantly speed up crop growth when off-screen. And both would likely cause major lag.
Rollback Post to RevisionRollBack
Watch out for the crabocalypse. Some say the day will never come. But it will.
Feel free to drop by for a chat whenever.
If you'd like to talk with me about other games, here are a few I play.
Team Fortress 2
Borderlands series (Borderlands 2 is my favorite game, ever. TPS combat is a lot of fun and makes up for the lower-quality story, in my opinion)
Elder Scrolls series
Warframe (IGN is something like That_One_Flesh_Atronach)
Pokémon series (HGSS forever)
Rocket League
Fallout series
Left 4 Dead 2 (Boomer files always corrupt though)
SUPERHOT (SUPERHOT is the most innovative shooter I've played in years!)
Dead Rising series (Dead Rising 2 is one of my favorite games, and the 3rd was a lot of fun. 1st has poor survivor AI and the 4th is bad)
Just Cause series
Come to think of it, I mainly play fighting-based games.
Are you suggesting calculating the amount of time the chunk has been unloaded, generating a random variable number to represent the "random" part of random crop growth, then applying them to random crops all at the same time? Or are you suggesting that each crop runs this individual calculation once it is reloaded? Because option 1 sounds like what Badprenup mentioned, and option 2 would significantly speed up crop growth when off-screen. And both would likely cause major lag.
the algorithm is actually quite simple, really.
First, you have to calculate the number of random ticks the block received - you might need calculus or statistics to calculate this but I know there's a formula for this
Second, you have to calculate the chance of the plant growing - that's 1 - (1 - chance per random tick) ^ (number of random ticks)
Third, you test that against a random double from 0 to 1. If it succeeds, the plant grows once, and if the plant can still grow you calculate the number of random ticks it took to do it (once again with a formula that takes some work to derive), subtract them from the previously calculated total random ticks, and repeat from step 2
And I think you overestimate the overhead this would cause. These functions could easily be run on the chunk loader thread, and only blocks that actually need this would do anything. It wouldn't make any noticeable performance difference. Of course, saying that, Mojang would probably find the worst possible way to achieve this and significantly decrease performance yet again due to their terrible coding practices.
the algorithm is actually quite simple, really.
First, you have to calculate the number of random ticks the block received - you might need calculus or statistics to calculate this but I know there's a formula for this
Second, you have to calculate the chance of the plant growing - that's 1 - (1 - chance per random tick) ^ (number of random ticks)
Third, you test that against a random double from 0 to 1. If it succeeds, the plant grows once, and if the plant can still grow you calculate the number of random ticks it took to do it (once again with a formula that takes some work to derive), subtract them from the previously calculated total random ticks, and repeat from step 2
And I think you overestimate the overhead this would cause. These functions could easily be run on the chunk loader thread, and only blocks that actually need this would do anything. It wouldn't make any noticeable performance difference. Of course, saying that, Mojang would probably find the worst possible way to achieve this and significantly decrease performance yet again due to their terrible coding practices.
I'm trying to wrap my head around this, but I can't. What you described. Is it running calculations per crop or is it running them once and assigning the results to randomly-chosen crops?
Also, that last phrase about Mojang likely implementing it poorly doesn't exactly disprove my point about it being a major source of lag if it were to be added.
Rollback Post to RevisionRollBack
Watch out for the crabocalypse. Some say the day will never come. But it will.
Feel free to drop by for a chat whenever.
If you'd like to talk with me about other games, here are a few I play.
Team Fortress 2
Borderlands series (Borderlands 2 is my favorite game, ever. TPS combat is a lot of fun and makes up for the lower-quality story, in my opinion)
Elder Scrolls series
Warframe (IGN is something like That_One_Flesh_Atronach)
Pokémon series (HGSS forever)
Rocket League
Fallout series
Left 4 Dead 2 (Boomer files always corrupt though)
SUPERHOT (SUPERHOT is the most innovative shooter I've played in years!)
Dead Rising series (Dead Rising 2 is one of my favorite games, and the 3rd was a lot of fun. 1st has poor survivor AI and the 4th is bad)
Just Cause series
Come to think of it, I mainly play fighting-based games.
I'm trying to wrap my head around this, but I can't. What you described. Is it running calculations per crop or is it running them once and assigning the results to randomly-chosen crops?
Also, that last phrase about Mojang likely implementing it poorly doesn't exactly disprove my point about it being a major source of lag if it were to be added.
it's per-block (not just per crop) but the example given would be run once for each crop block. Ideally it would be called from a function in Block when a chunk is loaded.
When unloading a crop or animal, give them the current timestamp. When reloading check if they should be grown.
The stopping of time when you're not around is very unnatural, this minor detail could go a long way.
Would also help with the confusion new players get when they return to their base, and nothing has grown.
Sounds good.
Would also remedy Ziglins staying angry at me even after I die.
Dwarf gamer found:
Buildings - square, not round
Materials - from rubble mound
Dark caves - lit 'n' cleaned out
Settlements - deep underground
Farmability - to grinder bound
Shields - made creepers but sound
Axes and crossbows - taking mobs out
I'm not an expert on chunks, and anything I get wrong will most likely be corrected. But I'm pretty sure that, in order to grow crops in unloaded chunks, the game would have to load it, even if just for a moment. And that change would cause many more chunks to be loaded.
It sounds too intensive, loading and unloading that many chunks that quickly.
Watch out for the crabocalypse. Some say the day will never come. But it will.
Feel free to drop by for a chat whenever.
If you'd like to talk with me about other games, here are a few I play.
Team Fortress 2
Borderlands series (Borderlands 2 is my favorite game, ever. TPS combat is a lot of fun and makes up for the lower-quality story, in my opinion)
Elder Scrolls series
Warframe (IGN is something like That_One_Flesh_Atronach)
Pokémon series (HGSS forever)
Rocket League
Fallout series
Left 4 Dead 2 (Boomer files always corrupt though)
SUPERHOT (SUPERHOT is the most innovative shooter I've played in years!)
Dead Rising series (Dead Rising 2 is one of my favorite games, and the 3rd was a lot of fun. 1st has poor survivor AI and the 4th is bad)
Just Cause series
Come to think of it, I mainly play fighting-based games.
Maybe it could be added as an option that can be toggled in the options menu. I imagine keeping a lot of chunks loaded, would slow down your game, not everyone has enough money to afford high-end computers so, players would have the option of turning off this feature if they are experiencing a lot of lag.
I'm not an expert on chunks or anything, I'm just going off of what I know (which isn't much in the first place) so feel free to correct me about anything.
I think some people are misunderstanding. The idea here is to add a "last loaded" timestamp to chunks that is set whenever they are unloaded. The next time the chunk is loaded, the game would look at the flag, say it has been X minutes since this chunk was loaded, and then use that information on any things that grow within the chunk.
For example, baby animals take 20 minutes to grow up. If you breed a baby cow at 12:00 PM and then immediately teleport away from the chunk the baby cow's growth timer is essentially 0/20 minutes and the last loaded flag would be set to 12 PM. At 12:25 PM later you reload the chunk by walking or teleporting back to it. The system does some math and sees that 12:25 PM minus 12 PM is 25 minutes. It then sees the baby cow and adds the 25 minutes to the cows growth timer, causing it to hit the 20/20 minute maximum so it becomes an adult cow.
There are a couple concerns, one being potential lag. If you had hundreds of ungrown crops or baby animals in a chunk and then leave and come back later, that is hundreds of updates that need to be done when the chunk updates. And that lag could be worse if you were on the edge of a farm and kept loading and unloading it, even if the amount of time between unloading and loading it again was minimal, since it still needs to do the check each time. Plus you need to consider render distance, I play on a render distance of 8 (I think), so each time I walk 16 blocks in a direction I'm loading 17 new chunks. That can be a lot of calculations.
Another problem is crops grow using a random tick system, where a crop could grow very fast if you get lucky or it could take a long time. You definitely don't want to do a bunch of attempts at growing based on when you reload the chunk, that would be very slow. A better method would be to get an approximate average of time it takes to grow a crop and the number of stages it has.
For example, take fictional Crop X that takes 10 minutes to mature and has 5 growth stages (not including the starting one when you plant it). 10 minutes divided by 5 is 2 minutes per stage. Then say you planted it and left the chunk, then came back 7 minutes later. The game could take the 7 minutes, round it down to 6 minutes (since Crop X grows every 2 minutes in this example, and 6 is the first number under the elapsed time of 7 minutes that is divisible by 2), and then does 6/2=3 and applies 3 growth stages to any of Crop X in the chunk.
There are a bunch of ways to further reduce lag for this, depending on how accurate you want it to be compared to if you were actually in the chunk the whole time, but that is the gist for people who didn't understand.
Want some advice on how to thrive in the Suggestions section? Check this handy list of guidelines and tips for posting your ideas and responding to the ideas of others!
http://www.minecraftforum.net/forums/minecraft-discussion/suggestions/2775557-guidelines-for-the-suggestions-forum
Ah, but you forget math! it's entirely possible to use a single formula to determine the amount of growth a crop undergoes after an unspecified number of ticks derived from, and having equal probabilities to, the random-tick-speed updates, as opposed to running that number of ticks.
Creator of Metroid Cubed 3, a Metroid-themed mod! Become a donator today!
Are you suggesting calculating the amount of time the chunk has been unloaded, generating a random variable number to represent the "random" part of random crop growth, then applying them to random crops all at the same time? Or are you suggesting that each crop runs this individual calculation once it is reloaded? Because option 1 sounds like what Badprenup mentioned, and option 2 would significantly speed up crop growth when off-screen. And both would likely cause major lag.
Watch out for the crabocalypse. Some say the day will never come. But it will.
Feel free to drop by for a chat whenever.
If you'd like to talk with me about other games, here are a few I play.
Team Fortress 2
Borderlands series (Borderlands 2 is my favorite game, ever. TPS combat is a lot of fun and makes up for the lower-quality story, in my opinion)
Elder Scrolls series
Warframe (IGN is something like That_One_Flesh_Atronach)
Pokémon series (HGSS forever)
Rocket League
Fallout series
Left 4 Dead 2 (Boomer files always corrupt though)
SUPERHOT (SUPERHOT is the most innovative shooter I've played in years!)
Dead Rising series (Dead Rising 2 is one of my favorite games, and the 3rd was a lot of fun. 1st has poor survivor AI and the 4th is bad)
Just Cause series
Come to think of it, I mainly play fighting-based games.
the algorithm is actually quite simple, really.
First, you have to calculate the number of random ticks the block received - you might need calculus or statistics to calculate this but I know there's a formula for this
Second, you have to calculate the chance of the plant growing - that's 1 - (1 - chance per random tick) ^ (number of random ticks)
Third, you test that against a random double from 0 to 1. If it succeeds, the plant grows once, and if the plant can still grow you calculate the number of random ticks it took to do it (once again with a formula that takes some work to derive), subtract them from the previously calculated total random ticks, and repeat from step 2
And I think you overestimate the overhead this would cause. These functions could easily be run on the chunk loader thread, and only blocks that actually need this would do anything. It wouldn't make any noticeable performance difference. Of course, saying that, Mojang would probably find the worst possible way to achieve this and significantly decrease performance yet again due to their terrible coding practices.
Creator of Metroid Cubed 3, a Metroid-themed mod! Become a donator today!
I'm trying to wrap my head around this, but I can't. What you described. Is it running calculations per crop or is it running them once and assigning the results to randomly-chosen crops?
Also, that last phrase about Mojang likely implementing it poorly doesn't exactly disprove my point about it being a major source of lag if it were to be added.
Watch out for the crabocalypse. Some say the day will never come. But it will.
Feel free to drop by for a chat whenever.
If you'd like to talk with me about other games, here are a few I play.
Team Fortress 2
Borderlands series (Borderlands 2 is my favorite game, ever. TPS combat is a lot of fun and makes up for the lower-quality story, in my opinion)
Elder Scrolls series
Warframe (IGN is something like That_One_Flesh_Atronach)
Pokémon series (HGSS forever)
Rocket League
Fallout series
Left 4 Dead 2 (Boomer files always corrupt though)
SUPERHOT (SUPERHOT is the most innovative shooter I've played in years!)
Dead Rising series (Dead Rising 2 is one of my favorite games, and the 3rd was a lot of fun. 1st has poor survivor AI and the 4th is bad)
Just Cause series
Come to think of it, I mainly play fighting-based games.
it's per-block (not just per crop) but the example given would be run once for each crop block. Ideally it would be called from a function in Block when a chunk is loaded.
Creator of Metroid Cubed 3, a Metroid-themed mod! Become a donator today!