I believe horse breeding is broken, because you can not pure-breed horses, without ridiculous effort. With this fix, horse breeding would be reasonable. If you agree with this please support me!
This only concerns hunger, speed, and jump height. Basically, breeding horses tends towards an average value. To get a better horse in all 3 stats at 90% would take hundreds of horses. My model says at least half the time, you have a better horse. It also says that if you blindly breed horses, you will still end up with an average stat value. If you don't love math, stop reading and post your support or criticism about this suggestion. If you love math, intense details of my model follows.
The way horse breeding currently works is each stat is considered separately. One horse may have Jump S and another jump T. The game then averages S and T with a third variable R, which appears to be randomly distributed. According to several other threads where thousands of horse breeding was tested, this means it takes 10-25 attempts or so to get one horse of equal or improved statistics. I feel this is unfeasible.
The improvement that I made, is modifying the equation that calculates each stat. I tried to create an equation that, when run infinitely, tended toward the average, but when intentionally selected, made attaining something close to the maximum feasible. It was especially difficult to get a simple model that did this, but if you have a better one, please share.
Variable names follow:
L = Lowest possible value
H = Highest possible value
X = Horse 1 value
Y = Horse 2 value
F = New horse value
R = Random float from -1 to 1 inclusive
A = Random adjustment constant
B = Maximum adjustment constant
C = Limiting adjustment constant
D = Nudge Effectiveness Constant
N,M are temporary variables.
Equation is
F(X,Y,R) = (H*0.1)*(R^3)*(1-(((X+Y-H-L)/(H-L))^2))*e^(-((X+Y-H-L)/(H-L))*R)
The equation is derived as follows.
First, we combine some variables into a simple input variable, N. What we do is we take the average of X and Y. We then subtract L to get a variable that runs from 0 to (H-L) that represents the average. We can divide by (H-L) and multiply by 2 to get a variable that runs from 0 to 2 that represents the average. Lastly, we subtract 1 to get a variable that runs from -1 to 1 that represents the average. This is the iNput we want, so I call it N.
N = ((X+Y-H-L)/(H-L))
Second, if R and N have the same sign, we want the function to approach 0. If they have opposite signs we want to approach a maximum.
F(N,R) = e^(-N*R)
Third, if N is big or R is small we want a small change, and if N is small or R is big we want a big change. We also want to retain the sign of R.
F(N,R) = R*((R^2)^A)*(M-N^2)*e^(-N*R)
Next we want to toss in constants to fine-tune each element of the equation.
F(N,R) = R*((R^2)^A)*(M-(N^2)^B )*e^(-N*R*C)
Finally, we can multiply this by one more constant to determine the strength of this "Nudge Factor" as a whole.
F(N,R) = D*R*((R^2)^A)*(M-(N^2)^B )*e^(-N*R*C)
M is the maximum that (N^2)^B will get to. This happens to be 1. Substituting M out we get.
F(N,R) = D*R*((R^2)^A)*(1-(N^2)^B )*e^(-N*R*C)
Using the simplest set of constants, A=B=C=1 we have
F(N,R) = D*R*((R^2))*(1-(N^2))*e^(-N*R)
We can then guess D = 0.1H to scale it to an initial approach.
Wouldn't a more "Minecraft-y" way to breed improved Horses be that if you feed a Horse a Golden Apple before the Golden Carrot one of the offspring's Stats will be from x to y higher than it otherwise would have been?
Wouldn't a more "Minecraft-y" way to breed improved Horses be that if you feed a Horse a Golden Apple before the Golden Carrot one of the offspring's Stats will be from x to y higher than it otherwise would have been?
That would be 1)harder to implement. 2)harder to balance, at the benefit of being 1) simpler to understand and 2)easier to control
My goal was to make a change that mojang could easily implement to fix the system, not create a new system to fix the flaw. My change is literally 5 lines of code, max. If you know of a lot of people who would support your change, I would support it. otherwise, I stand by my anoyingly complicated, but simple to implement model. thanks for the suggestion!
Not saying yours isn't perhaps the better way ... I said "Minecraft-y" .
Math doesn't phase me, especially math that no one else will ever need to see, but I see "1) simpler to understand and 2)easier to control" beating "1)harder to implement. 2)harder to balance" over a large group of people.
Likely, implement BOTH systems. Your idea for balance and an added factor for feeding the Horses to make people happy and keep them from thinking about the math :D.
If it only takes "5 lines of code max" why not use the developer api to do it yourself and see how it works. Honestly to me it seems way overly complicated.
If it only takes "5 lines of code max" why not use the developer api to do it yourself and see how it works. Honestly to me it seems way overly complicated.
Sorry, I didn't mean to sound arrogant. I am programming a game myself, and so I assumed an if-loop in java takes 5 lines of code. as that is what it is in other languages.
I agree it seems overly complicated. I am just trying to be realistic, and comprehensive. Instead of saying "FIGURE OUT A SOLUTION, AND APPLY IT!", "Here is a solution, apply it." I could make it simpler, if I removed it's tendency towards the average, but that would more dramatically change game-play. This was as simple as I thought it could get, sadly.
It is late/early here, so feel free to find gaping holes in this...
If you want to allow selection but a trend to mediocrity why not the following?
Make the current three factor formula into four.
O=(P1+P2+F*R+A)/4, capped at max
That's the offspring's value is the average of the parent's values, the average value and a random factor that is modified by what the parent(s) have been fed (call it 1 plus 0 for using a Golden Carrot or plus 0.1 for each Golden Apple, so between 1 and 1.2, the factor is applied randomly to one of the three stats).
good, i thought you were talking about with other players. Really need a different title there.
You thought this had to do with raising and breeding (the definition of husbandry) other players? I can see why you'd think that was a rather odd and inappropriate idea, but I'm not sure how you came to that conclusion.
Rollback Post to RevisionRollBack
You have just started
To read the haiku that you
Just finished reading
It is late/early here, so feel free to find gaping holes in this...
If you want to allow selection but a trend to mediocrity why not the following?
Make the current three factor formula into four.
O=(P1+P2+F*R+A)/4, capped at max
That's the offspring's value is the average of the parent's values, the average value and a random factor that is modified by what the parent(s) have been fed (call it 1 plus 0 for using a Golden Carrot or plus 0.1 for each Golden Apple, so between 1 and 1.2, the factor is applied randomly to one of the three stats).
Nice try! The idea you presented would tend toward (F*R/2)/2. An even simpler equation that would tend toward the average unless a certain type of food is fed, which would then tend toward the maximum is: (P1+P2+RFM)/3, where P1, P2 are parent values, R is random number from 0 to 1, M is maximum value, and F is factor determined by food from Avg/M to 2. The whole expression is capped at the maximum.
Something I don't like about this model, is that it rapidly approaches the maximum, when fed the right food, before leveling off. My model allows for, with proper constants, a somewhat steady approach to the maximum, then leveling off. Another thing I don't like, is you have to test for it it breaches the maximum value, and if so use the maximum value instead. Something I like about this model, is that it retains the tendency toward the average, unless guided upwards, and fed the appropriate food. It also allows for the average to be better than the spawn average to create a three-tiered horse-stat-level. Natural spawn level, Food one level, and Food two level(room for more too). This same type of tiered system is easily applied to my system, by merely replacing a constant depending on the type of food being fed.
Hehe, I didn't know Husbandry meant raising and breeding. I thought it meant raising and breeding horses. That's what I get for trusting a video-game. Husbandry is often involved with horses, so I just assumed.(Both H's too)
The idea you presented would tend toward (F*R/2)/2.
Hmm... If the random factor is across the whole range and if you start out with average parent's O1 would be 0.75A+0.25FA or 1.05A if you invest 2 Golden Apples. Randomly apply the F to the three stats and you should get roughly 1.5% improvement per generation if you select only the best possible result (which would take more than one attempt to get). Starting with better parents would be worth it.
Sorry guys. I just noticed something. The equation I was talking about, and the equation that I have presented were two different equations. First off, the equation I displayed is of the wrong form entirely from what I was describing. Second, the variables are incorrect. Note M was undefined. I'll keep the old equation here to show my progress. The new equation has one less constant, is simpler, and has no divide by zero error. I will also included the derivation for all to see and check my work or logic.
Variable names follow:
L = Lowest possible value
H = Highest possible value
X = Horse 1 value
Y = Horse 2 value
F = New horse value
R = Random float from -1 to 1 inclusive
A = Constant
B = Constant
C = Constant
D = Positive Constant
E = Constant
The equation would be
Derived as...
F = (A*(X+Y)+B*(((((X+Y-L-M)/(L-M))^2)^C)*(e^(((X+Y-L-M)/(L-M))*R*D))+E)*(((X+Y-L-M)/(L-M)-R)/|(X+Y-L-M)/(L-M)-R|))/(A+B )
Except where X+Y=RL-RM+L+M where it would instead be derived as...
F = (A*(X+Y)+B*(((((X+Y-L-M)/(L-M))^2)^C)*(e^(((X+Y-L-M)/(L-M)*R*D)))+E))/(A+B )
Note also, that this reduces the change from a ~ 5(actually 15) line change to 3 line change.
Final note: I've found all the constants to be values. Now, the equation should be finished. If anyone knows how to post images, I'd love to share what this looks like.
Hmm... If the random factor is across the whole range and if you start out with average parent's O1 would be 0.75A+0.25FA or 1.05A if you invest 2 Golden Apples. Randomly apply the F to the three stats and you should get roughly 1.5% improvement per generation if you select only the best possible result (which would take more than one attempt to get). Starting with better parents would be worth it.
I don't know where you are getting that. To find the tendencies of your formula, where T is that new tendency or average... (P1+P2+F*R+A)/4=T. Then you note that in that tendency, the parents become T so you have (2T+F*R+A)/4=T and 2T=F*R+A. When you take the average of your random number assuming it runs from the minimum to the maximum value, you get A, so 2T=F*A+A. F is 1 plus some small adjustment factor a so we finally have, T=A(1+0.5a). For golden apples that is a tendency towards 1.1 times the average. If carrots, then it tends towards the average. If you always get the best RNG this becomes T=(1.2*M+A)/2. For Jump height this is T=(1.2*30+22.5)/2=(1.2*30+22.5)/2=29.25, which is only 95%. This literally makes it impossible to get a horse above 95%.
The good side of this model, assuming your constants are perfected is that it sends values to either an average or the maximum depending on the food and selection.
The bad side is that it requires more complicated programming to enable different effects of feeding different food to horses for breeding. IE: What if one horse was fed a carrot and the other an apple. Will those two horses even breed with each-other? Will the developers have to duplicate the coding for horse breeding three times? Etc.
I warned you not to look below if you didn't love math. It's just a small fix to horse breeding to make it better. If you want to make productive horse breeding possible, support this. If you think it's fine, where it is effectively impossible to breed good horses, don't support this.
If anyone knows how to make this into a mod, let me know. It'd explain a bit.
This is very complicated but if you really take the time to read it guys I think you could probably figure it out. If you REALLY can't then either thumbs it up or don't do anything.
WAY better than the current system. And I imagine you put serious thought into this. Reminds me of my school report on pendulums for physics class. I read through the part about the formula, and I think it would work well. (+1)
If it only takes "5 lines of code max" why not use the developer api to do it yourself and see how it works. Honestly to me it seems way overly complicated.
This kind of math is not complicated to a computer, if that's what you meant. It's O(1) complexity. It's also easy to program once you know the constants. However, finding the proper constants won't be easy, I think.
This only concerns hunger, speed, and jump height. Basically, breeding horses tends towards an average value. To get a better horse in all 3 stats at 90% would take hundreds of horses. My model says at least half the time, you have a better horse. It also says that if you blindly breed horses, you will still end up with an average stat value. If you don't love math, stop reading and post your support or criticism about this suggestion. If you love math, intense details of my model follows.
The way horse breeding currently works is each stat is considered separately. One horse may have Jump S and another jump T. The game then averages S and T with a third variable R, which appears to be randomly distributed. According to several other threads where thousands of horse breeding was tested, this means it takes 10-25 attempts or so to get one horse of equal or improved statistics. I feel this is unfeasible.
The improvement that I made, is modifying the equation that calculates each stat. I tried to create an equation that, when run infinitely, tended toward the average, but when intentionally selected, made attaining something close to the maximum feasible. It was especially difficult to get a simple model that did this, but if you have a better one, please share.
Variable names follow:
L = Lowest possible value
H = Highest possible value
X = Horse 1 value
Y = Horse 2 value
F = New horse value
R = Random float from -1 to 1 inclusive
A = Random adjustment constant
B = Maximum adjustment constant
C = Limiting adjustment constant
D = Nudge Effectiveness Constant
N,M are temporary variables.
Equation is
F(X,Y,R) = (H*0.1)*(R^3)*(1-(((X+Y-H-L)/(H-L))^2))*e^(-((X+Y-H-L)/(H-L))*R)
The equation is derived as follows.
First, we combine some variables into a simple input variable, N. What we do is we take the average of X and Y. We then subtract L to get a variable that runs from 0 to (H-L) that represents the average. We can divide by (H-L) and multiply by 2 to get a variable that runs from 0 to 2 that represents the average. Lastly, we subtract 1 to get a variable that runs from -1 to 1 that represents the average. This is the iNput we want, so I call it N.
N = ((X+Y-H-L)/(H-L))
Second, if R and N have the same sign, we want the function to approach 0. If they have opposite signs we want to approach a maximum.
F(N,R) = e^(-N*R)
Third, if N is big or R is small we want a small change, and if N is small or R is big we want a big change. We also want to retain the sign of R.
F(N,R) = R*((R^2)^A)*(M-N^2)*e^(-N*R)
Next we want to toss in constants to fine-tune each element of the equation.
F(N,R) = R*((R^2)^A)*(M-(N^2)^B )*e^(-N*R*C)
Finally, we can multiply this by one more constant to determine the strength of this "Nudge Factor" as a whole.
F(N,R) = D*R*((R^2)^A)*(M-(N^2)^B )*e^(-N*R*C)
M is the maximum that (N^2)^B will get to. This happens to be 1. Substituting M out we get.
F(N,R) = D*R*((R^2)^A)*(1-(N^2)^B )*e^(-N*R*C)
Using the simplest set of constants, A=B=C=1 we have
F(N,R) = D*R*((R^2))*(1-(N^2))*e^(-N*R)
We can then guess D = 0.1H to scale it to an initial approach.
Edited for better models.
That would be 1)harder to implement. 2)harder to balance, at the benefit of being 1) simpler to understand and 2)easier to control
My goal was to make a change that mojang could easily implement to fix the system, not create a new system to fix the flaw. My change is literally 5 lines of code, max. If you know of a lot of people who would support your change, I would support it. otherwise, I stand by my anoyingly complicated, but simple to implement model. thanks for the suggestion!
Math doesn't phase me, especially math that no one else will ever need to see, but I see "1) simpler to understand and 2)easier to control" beating "1)harder to implement. 2)harder to balance" over a large group of people.
Likely, implement BOTH systems. Your idea for balance and an added factor for feeding the Horses to make people happy and keep them from thinking about the math :D.
Sorry, I didn't mean to sound arrogant. I am programming a game myself, and so I assumed an if-loop in java takes 5 lines of code. as that is what it is in other languages.
I agree it seems overly complicated. I am just trying to be realistic, and comprehensive. Instead of saying "FIGURE OUT A SOLUTION, AND APPLY IT!", "Here is a solution, apply it." I could make it simpler, if I removed it's tendency towards the average, but that would more dramatically change game-play. This was as simple as I thought it could get, sadly.
If you want to allow selection but a trend to mediocrity why not the following?
Make the current three factor formula into four.
O=(P1+P2+F*R+A)/4, capped at max
That's the offspring's value is the average of the parent's values, the average value and a random factor that is modified by what the parent(s) have been fed (call it 1 plus 0 for using a Golden Carrot or plus 0.1 for each Golden Apple, so between 1 and 1.2, the factor is applied randomly to one of the three stats).
Critiquing is easy. Creating is difficult.
You thought this had to do with raising and breeding (the definition of husbandry) other players? I can see why you'd think that was a rather odd and inappropriate idea, but I'm not sure how you came to that conclusion.
To read the haiku that you
Just finished reading
Nice try! The idea you presented would tend toward (F*R/2)/2. An even simpler equation that would tend toward the average unless a certain type of food is fed, which would then tend toward the maximum is: (P1+P2+RFM)/3, where P1, P2 are parent values, R is random number from 0 to 1, M is maximum value, and F is factor determined by food from Avg/M to 2. The whole expression is capped at the maximum.
Something I don't like about this model, is that it rapidly approaches the maximum, when fed the right food, before leveling off. My model allows for, with proper constants, a somewhat steady approach to the maximum, then leveling off. Another thing I don't like, is you have to test for it it breaches the maximum value, and if so use the maximum value instead. Something I like about this model, is that it retains the tendency toward the average, unless guided upwards, and fed the appropriate food. It also allows for the average to be better than the spawn average to create a three-tiered horse-stat-level. Natural spawn level, Food one level, and Food two level(room for more too). This same type of tiered system is easily applied to my system, by merely replacing a constant depending on the type of food being fed.
Hehe, I didn't know Husbandry meant raising and breeding. I thought it meant raising and breeding horses. That's what I get for trusting a video-game. Husbandry is often involved with horses, so I just assumed.(Both H's too)
Hmm... If the random factor is across the whole range and if you start out with average parent's O1 would be 0.75A+0.25FA or 1.05A if you invest 2 Golden Apples. Randomly apply the F to the three stats and you should get roughly 1.5% improvement per generation if you select only the best possible result (which would take more than one attempt to get). Starting with better parents would be worth it.
Note also, that this reduces the change from a ~ 5(actually 15) line change to 3 line change.
Final note: I've found all the constants to be values. Now, the equation should be finished. If anyone knows how to post images, I'd love to share what this looks like.
I don't know where you are getting that. To find the tendencies of your formula, where T is that new tendency or average... (P1+P2+F*R+A)/4=T. Then you note that in that tendency, the parents become T so you have (2T+F*R+A)/4=T and 2T=F*R+A. When you take the average of your random number assuming it runs from the minimum to the maximum value, you get A, so 2T=F*A+A. F is 1 plus some small adjustment factor a so we finally have, T=A(1+0.5a). For golden apples that is a tendency towards 1.1 times the average. If carrots, then it tends towards the average. If you always get the best RNG this becomes T=(1.2*M+A)/2. For Jump height this is T=(1.2*30+22.5)/2=(1.2*30+22.5)/2=29.25, which is only 95%. This literally makes it impossible to get a horse above 95%.
The good side of this model, assuming your constants are perfected is that it sends values to either an average or the maximum depending on the food and selection.
The bad side is that it requires more complicated programming to enable different effects of feeding different food to horses for breeding. IE: What if one horse was fed a carrot and the other an apple. Will those two horses even breed with each-other? Will the developers have to duplicate the coding for horse breeding three times? Etc.
That's kind of complicated
I warned you not to look below if you didn't love math. It's just a small fix to horse breeding to make it better. If you want to make productive horse breeding possible, support this. If you think it's fine, where it is effectively impossible to breed good horses, don't support this.
If anyone knows how to make this into a mod, let me know. It'd explain a bit.
This kind of math is not complicated to a computer, if that's what you meant. It's O(1) complexity. It's also easy to program once you know the constants. However, finding the proper constants won't be easy, I think.
I think the current system is fine. If you hate the horse you have go and tame anotherone untill you get the one you want.